Closed
Description
I'd like a place to throw small items as I see them and to collect various TODO items during the development of Pulley. For now this will serve that location. My hope is that this list is TODO items which pertain to code in-tree and are less-so about wishlist items of what's yet to fill in. For example this won't track missing pulley work (e.g. all wasm proposals at this time). Unsure if this style of issue will work out.
- Evaluate 32-bit platforms and the decision to "only write low 32-bits". If we write the full 64-bit width of registers does it actually have a performance loss? Is it worth burning opcode space for opcodes that only write the low-32 instead of high 64? Should we split opcodes like
xconst8
into one that writes 64-bits and one that writes 32-bits? Should we removexload8_s32_offset32
instead? - Add support for Pulley to
#[wasmtime_test]
Add Pulley support to wasmtime_test macro #10057 - Move sp/fp/lr/special regs out of the general purpose register set; see pulley: Implement
get_frame_pointer
#9658 (review) for details (also cc pulley: Movefp
/lr
out ofXReg
set #9806) - Explore adding new addressing modes (e.g. register + register). Should be based on an evaluation of what wasm loads/stores do probably. Perhaps even fold a trapping arithmetic into one macro-op for "do the wasm load on 32-bit" and "do the wasm load on 64-bit" pulley: Add more addressing modes for loads/stores #9994
- Assert in call lowering that pulley<->pulley is always tail-to-tail or similar; see pulley: Implement interpreter-to-host calls #9665 (comment) for details -- pulley: Assert calling-conventions match instructions #9836
- Better debugging support, e.g. print the register state between instructions and print each instruction. pulley: Add simple debugging support #9796
- Support big-endian - will need to add
pulley{64,32}be
targets to target-lexicon, then add big-endian loads/stores, then update the CLIF backend to delegate to the right endianness based on the target - Need to restore callee-save state when a trap happens somehow (either via explicit saves or by removing callee-save state in that situation) Run the full test suite on 32-bit platforms #9837
- Enable Cranelift
runtest
support pulley: Supportruntests
in Cranelift filetests #9795 - Run the full
all
test suite on 32-bit platforms -- Run the full test suite on 32-bit platforms #9837 - Figure out story for threading -- loads/stores all need to be at least with a "relaxed" atomicity -- pulley: Disable the WebAssembly
threads
proposal #9818 - Implement the wide-arithmetic proposal pulley: Implement the wide-arithmetic proposal #9944
- Fuzz pulley Enable fuzzing for Pulley & Winch #9966