diff --git a/core/iwasm/interpreter/wasm_interp_fast.c b/core/iwasm/interpreter/wasm_interp_fast.c index d972fee23..3f107bdb2 100644 --- a/core/iwasm/interpreter/wasm_interp_fast.c +++ b/core/iwasm/interpreter/wasm_interp_fast.c @@ -5909,7 +5909,7 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module, addr = GET_OPERAND(uint32, I32, 0); \ frame_ip += 2; \ addr_ret = GET_OFFSET(); \ - CHECK_MEMORY_OVERFLOW(16); \ + CHECK_MEMORY_OVERFLOW(4); \ \ simde_v128_t simde_result = simde_func(maddr); \ \ @@ -5952,7 +5952,7 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module, offset += base; addr = GET_OPERAND(uint32, I32, 0); - CHECK_MEMORY_OVERFLOW(32); + CHECK_MEMORY_OVERFLOW(4); STORE_V128(maddr, data); break; } diff --git a/core/iwasm/interpreter/wasm_loader.c b/core/iwasm/interpreter/wasm_loader.c index 1a1ec8b35..a860b7ded 100644 --- a/core/iwasm/interpreter/wasm_loader.c +++ b/core/iwasm/interpreter/wasm_loader.c @@ -7300,8 +7300,10 @@ wasm_loader_find_block_addr(WASMExecEnv *exec_env, BlockAddr *block_addr_cache, case WASM_OP_SET_GLOBAL: case WASM_OP_GET_GLOBAL_64: case WASM_OP_SET_GLOBAL_64: +#if WASM_ENABLE_SIMDE != 0 case WASM_OP_GET_GLOBAL_128: case WASM_OP_SET_GLOBAL_128: +#endif case WASM_OP_SET_GLOBAL_AUX_STACK: skip_leb_uint32(p, p_end); /* local index */ break; @@ -9090,6 +9092,7 @@ preserve_referenced_local(WASMLoaderContext *loader_ctx, uint8 opcode, bool *preserved, char *error_buf, uint32 error_buf_size) { + uint32 i = 0; int16 preserved_offset = (int16)local_index; @@ -9113,11 +9116,13 @@ preserve_referenced_local(WASMLoaderContext *loader_ctx, uint8 opcode, loader_ctx->preserved_local_offset++; emit_label(EXT_OP_COPY_STACK_TOP); } +#if WASM_ENABLE_SIMDE != 0 else if (local_type == VALUE_TYPE_V128) { if (loader_ctx->p_code_compiled) loader_ctx->preserved_local_offset += 4; emit_label(EXT_OP_COPY_STACK_TOP_V128); } +#endif else { if (loader_ctx->p_code_compiled) loader_ctx->preserved_local_offset += 2; @@ -9790,11 +9795,12 @@ reserve_block_ret(WASMLoaderContext *loader_ctx, uint8 opcode, /* insert op_copy before else opcode */ if (opcode == WASM_OP_ELSE) skip_label(); - +#if WASM_ENABLE_SIMDE != 0 if (cell == 4) { emit_label(EXT_OP_COPY_STACK_TOP_V128); } - else { +#endif + if (cell <= 2) { emit_label(cell == 1 ? EXT_OP_COPY_STACK_TOP : EXT_OP_COPY_STACK_TOP_I64); } @@ -13115,10 +13121,12 @@ re_scan: emit_label(EXT_OP_TEE_LOCAL_FAST); emit_byte(loader_ctx, (uint8)local_offset); } +#if WASM_ENABLE_SIMDE != 0 else if (local_type == VALUE_TYPE_V128) { emit_label(EXT_OP_TEE_LOCAL_FAST_V128); emit_byte(loader_ctx, (uint8)local_offset); } +#endif else { emit_label(EXT_OP_TEE_LOCAL_FAST_I64); emit_byte(loader_ctx, (uint8)local_offset); @@ -13213,11 +13221,12 @@ re_scan: skip_label(); emit_label(WASM_OP_GET_GLOBAL_64); } - +#if WASM_ENABLE_SIMDE != 0 if (global_type == VALUE_TYPE_V128) { skip_label(); emit_label(WASM_OP_GET_GLOBAL_128); } +#endif #endif /* end of WASM_ENABLE_SIMDE */ emit_uint32(loader_ctx, global_idx); PUSH_OFFSET_TYPE(global_type);