implement local and function calls for v128 in the fast interpreter#4005
implement local and function calls for v128 in the fast interpreter#4005Zzzabiyaka wants to merge 1 commit intobytecodealliance:dev/simd_for_interpfrom
Conversation
38895ee to
29181b5
Compare
| HANDLE_OP_END(); | ||
| } | ||
|
|
||
| #if WASM_ENABLE_SIMDE != 0 |
There was a problem hiding this comment.
#if WASM_ENABLE_SIMDE != 0 this should be #if WASM_ENABLE_SIMD != 0 but I'll fix it once we make the spec tests work and are ready to launch
There was a problem hiding this comment.
I do think we might not need WASM_ENABLE_SIMDE flag in the first place, it probably should be set based on fast-interp + simd
84a5a0f to
f72af42
Compare
667c8e1 to
0e0e2d0
Compare
0e0e2d0 to
3562824
Compare
|
looks like the CI failure is due to github infra and not my code, I think we're merge-ready |
|
|
||
| #if WASM_ENABLE_SIMDE != 0 | ||
| HANDLE_OP(EXT_OP_SET_LOCAL_FAST_V128) | ||
| HANDLE_OP(EXT_OP_TEE_LOCAL_FAST_V128) |
There was a problem hiding this comment.
This file already quite bloated and difficult to maintain, I wonder if you considered refactoring it a bit? E.g. both EXT_OP_TEE_LOCAL_FAST_V128 and EXT_OP_COPY_STACK_TOP_V128 are very similar for the i64 opcode implementations.
| #if WASM_ENABLE_FAST_INTERP != 0 && WASM_ENABLE_SIMDE != 0 | ||
| EXT_OP_SET_LOCAL_FAST_V128 = 0xdd, | ||
| EXT_OP_TEE_LOCAL_FAST_V128 = 0xde, | ||
| EXT_OP_COPY_STACK_TOP_V128 = 0xdf, |
There was a problem hiding this comment.
Seems that EXT_OP_COPY_STACK_TOP_V128 is unneeded? It isn't emitted in wasm_loader.c.
|
closing, please see #4056 |
add fast versions of local.set/get
add additional opcodes for these operations
add v128 values to handling of function params and return values
why?
These changes allowed us to run spec tests for simd as before that, functions with v128 params / return values could not be called