-
Notifications
You must be signed in to change notification settings - Fork 82
Open
Labels
discussionDebate for improvementDebate for improvementinefficiencyBetter implementation is desiredBetter implementation is desiredquestionFurther information is requestedFurther information is requested
Description
Why?
TLDR: You don't benefit from 32-bit JIT anyways, unless you're running an obscure riscv32 guest, for same reason they are not tested too well. This will not cause any functional breakage.
- There is no way to accelerate a 64-bit guest with a native 32-bit JIT as of now, as the middleware does not provide a way to lower 64-bit operations into 32-bit instructions
- RVJIT needs a big rework, including reimplementation of public backend interfaces and new native intrinsics
- Both arm32 and i386 are very lacking in advanced instructions and hold back the whole thing
- No one maintains the arm32 backend, i386 backend is held on tape and sticks as part of x86_64 backend
- Oh we have a riscv32 backend? I only remembered about it midway typing this, anyways the hardware where it could run is pretty much non-existent
- RVJIT Linker is not implemented for arm32, requiring fallback handling
- Focusing on 64-bit backends will allow to drop fallbacks for 32-bit hosts, use more advanced instructions like SSE2, ARM64 VFP/NEON, etc as a baseline
- This is not a feature breakage in any way, any non-JITed host target will continue to run guests via generic interpreter
Why not?
- Someone may want to accelerate riscv32 guests on dated host hardware (???)
- Respecting the author of the arm32 backend (Although I think the arm64 already serves this purpose and will serve us for the observable future)
- Maybe the RVVM v0.7 release will keep those backends alive a bit more for those reasons
Alternative
It might be a much better idea to implement a generic "glue" JIT backend which will copy-paste precompiled functions into native code sequences and have zero architecture-specific code in it. This would allow at least some amount of 64-bit guest acceleration, and support for various host architectures beyond arm32 and i386 with minimal efforts
eepysillycat, purplesyringa and Kamillaova
Metadata
Metadata
Assignees
Labels
discussionDebate for improvementDebate for improvementinefficiencyBetter implementation is desiredBetter implementation is desiredquestionFurther information is requestedFurther information is requested