zkVMs like OpenVM pick RISC-V because it's simple. It's a clean ISA, well-understood, with mature toolchains. But RISC-V was designed for hardware: 32 general-purpose registers is a reasonable number when spills go to cache and cost you a few cycles.
In a zkVM, memory is expensive. Every load and store has to be proven, and memory consistency constraints dominate the proof cost of compute-heavy programs. That 32-register limit, harmless on silicon, becomes a bottleneck.
At Powdr we already built crush, which compiles from WASM to a custom ISA with infinite registers and zero spills. That's the clean solution. But I got curious about a different question: what if we just took plain old RISC-V and gave it a bigger register file? LLVM IR already uses infinite virtual registers internally. The register allocator's job is to map them to a finite physical register set. If we give it 1024 regist