@@ -250,35 +250,40 @@ typedef enum WASMOpcode {
250
250
/* extend op code */
251
251
EXT_OP_GET_LOCAL_FAST = 0xc7 ,
252
252
EXT_OP_SET_LOCAL_FAST_I64 = 0xc8 ,
253
- EXT_OP_SET_LOCAL_FAST_V128 = 0xc9 ,
254
- EXT_OP_SET_LOCAL_FAST = 0xca ,
255
- EXT_OP_TEE_LOCAL_FAST = 0xcb ,
256
- EXT_OP_TEE_LOCAL_FAST_I64 = 0xcc ,
257
- EXT_OP_TEE_LOCAL_FAST_V128 = 0xcd ,
258
- EXT_OP_COPY_STACK_TOP = 0xce ,
259
- EXT_OP_COPY_STACK_TOP_I64 = 0xcf ,
260
- EXT_OP_COPY_STACK_TOP_V128 = 0xd0 ,
261
- EXT_OP_COPY_STACK_VALUES = 0xd1 ,
262
-
263
- WASM_OP_IMPDEP = 0xd2 ,
264
-
265
- WASM_OP_REF_NULL = 0xd3 , /* ref.null */
266
- WASM_OP_REF_IS_NULL = 0xd4 , /* ref.is_null */
267
- WASM_OP_REF_FUNC = 0xd5 , /* ref.func */
268
- WASM_OP_REF_EQ = 0xd6 , /* ref.eq */
269
- WASM_OP_REF_AS_NON_NULL = 0xd7 , /* ref.as_non_null */
270
- WASM_OP_BR_ON_NULL = 0xd8 , /* br_on_null */
271
- WASM_OP_BR_ON_NON_NULL = 0xd9 , /* br_on_non_null */
272
-
273
- EXT_OP_BLOCK = 0xda , /* block with blocktype */
274
- EXT_OP_LOOP = 0xdb , /* loop with blocktype */
275
- EXT_OP_IF = 0xdc , /* if with blocktype */
276
- EXT_OP_BR_TABLE_CACHE = 0xdd , /* br_table from cache */
277
-
278
- EXT_OP_TRY = 0xde , /* try block with blocktype */
253
+ EXT_OP_SET_LOCAL_FAST = 0xc9 ,
254
+ EXT_OP_TEE_LOCAL_FAST = 0xca ,
255
+ EXT_OP_TEE_LOCAL_FAST_I64 = 0xcb ,
256
+ EXT_OP_COPY_STACK_TOP = 0xcc ,
257
+ EXT_OP_COPY_STACK_TOP_I64 = 0xcd ,
258
+ EXT_OP_COPY_STACK_VALUES = 0xce ,
259
+
260
+ WASM_OP_IMPDEP = 0xcf ,
261
+
262
+ WASM_OP_REF_NULL = 0xd0 , /* ref.null */
263
+ WASM_OP_REF_IS_NULL = 0xd1 , /* ref.is_null */
264
+ WASM_OP_REF_FUNC = 0xd2 , /* ref.func */
265
+ WASM_OP_REF_EQ = 0xd3 , /* ref.eq */
266
+ WASM_OP_REF_AS_NON_NULL = 0xd4 , /* ref.as_non_null */
267
+ WASM_OP_BR_ON_NULL = 0xd5 , /* br_on_null */
268
+ WASM_OP_BR_ON_NON_NULL = 0xd6 , /* br_on_non_null */
269
+
270
+ EXT_OP_BLOCK = 0xd7 , /* block with blocktype */
271
+ EXT_OP_LOOP = 0xd8 , /* loop with blocktype */
272
+ EXT_OP_IF = 0xd9 , /* if with blocktype */
273
+ EXT_OP_BR_TABLE_CACHE = 0xda , /* br_table from cache */
274
+
275
+ EXT_OP_TRY = 0xdb , /* try block with blocktype */
279
276
280
277
#if WASM_ENABLE_DEBUG_INTERP != 0
281
- DEBUG_OP_BREAK = 0xdf , /* debug break point */
278
+ DEBUG_OP_BREAK = 0xdc , /* debug break point */
279
+ #endif
280
+
281
+ #if (WASM_ENABLE_JIT != 0 \
282
+ || (WASM_ENABLE_FAST_INTERP != 0 && WASM_ENABLE_SIMDE != 0 )) \
283
+ && WASM_ENABLE_SIMD != 0
284
+ EXT_OP_SET_LOCAL_FAST_V128 = 0xdd ,
285
+ EXT_OP_TEE_LOCAL_FAST_V128 = 0xde ,
286
+ EXT_OP_COPY_STACK_TOP_V128 = 0xdf ,
282
287
#endif
283
288
284
289
/* Post-MVP extend op prefix */
@@ -793,6 +798,15 @@ typedef enum WASMAtomicEXTOpcode {
793
798
#define SET_GOTO_TABLE_SIMD_PREFIX_ELEM ()
794
799
#endif
795
800
801
+ #if (WASM_ENABLE_FAST_INTERP != 0 && WASM_ENABLE_SIMDE != 0 ) \
802
+ && WASM_ENABLE_SIMD != 0
803
+ #define DEF_EXT_V128_HANDLE () \
804
+ SET_GOTO_TABLE_ELEM(EXT_OP_SET_LOCAL_FAST_V128), \
805
+ SET_GOTO_TABLE_ELEM(EXT_OP_TEE_LOCAL_FAST_V128), \
806
+ SET_GOTO_TABLE_ELEM(EXT_OP_COPY_STACK_TOP_V128),
807
+ #else
808
+ #define DEF_EXT_V128_HANDLE ()
809
+ #endif
796
810
/*
797
811
* Macro used to generate computed goto tables for the C interpreter.
798
812
*/
@@ -1001,14 +1015,11 @@ typedef enum WASMAtomicEXTOpcode {
1001
1015
HANDLE_OPCODE (WASM_OP_SELECT_64 ), /* 0xc6 */ \
1002
1016
HANDLE_OPCODE (EXT_OP_GET_LOCAL_FAST ), /* 0xc7 */ \
1003
1017
HANDLE_OPCODE (EXT_OP_SET_LOCAL_FAST_I64 ), /* 0xc8 */ \
1004
- HANDLE_OPCODE (EXT_OP_SET_LOCAL_FAST_V128 ), /* 0xc9 */ \
1005
1018
HANDLE_OPCODE (EXT_OP_SET_LOCAL_FAST ), /* 0xca */ \
1006
1019
HANDLE_OPCODE (EXT_OP_TEE_LOCAL_FAST ), /* 0xcb */ \
1007
1020
HANDLE_OPCODE (EXT_OP_TEE_LOCAL_FAST_I64 ), /* 0xcc */ \
1008
- HANDLE_OPCODE (EXT_OP_TEE_LOCAL_FAST_V128 ), /* 0xcd */ \
1009
1021
HANDLE_OPCODE (EXT_OP_COPY_STACK_TOP ), /* 0xce */ \
1010
1022
HANDLE_OPCODE (EXT_OP_COPY_STACK_TOP_I64 ), /* 0xcf */ \
1011
- HANDLE_OPCODE (EXT_OP_COPY_STACK_TOP_V128 ), /* 0xd0 */ \
1012
1023
HANDLE_OPCODE (EXT_OP_COPY_STACK_VALUES ), /* 0xd1 */ \
1013
1024
HANDLE_OPCODE (WASM_OP_IMPDEP ), /* 0xd2 */ \
1014
1025
HANDLE_OPCODE (WASM_OP_REF_NULL ), /* 0xd3 */ \
@@ -1027,7 +1038,7 @@ typedef enum WASMAtomicEXTOpcode {
1027
1038
SET_GOTO_TABLE_ELEM (WASM_OP_MISC_PREFIX ), /* 0xfc */ \
1028
1039
SET_GOTO_TABLE_SIMD_PREFIX_ELEM () /* 0xfd */ \
1029
1040
SET_GOTO_TABLE_ELEM (WASM_OP_ATOMIC_PREFIX ), /* 0xfe */ \
1030
- DEF_DEBUG_BREAK_HANDLE () \
1041
+ DEF_DEBUG_BREAK_HANDLE () DEF_EXT_V128_HANDLE () \
1031
1042
};
1032
1043
1033
1044
#ifdef __cplusplus
0 commit comments