mirror of
https://github.com/bytecodealliance/wasm-micro-runtime.git
synced 2025-05-09 13:16:26 +00:00
Fixes
This commit is contained in:
parent
f7c4e9f328
commit
3e9a5b0a2a
|
@ -320,12 +320,18 @@ else ()
|
||||||
message (" Wakeup of blocking operations enabled")
|
message (" Wakeup of blocking operations enabled")
|
||||||
endif ()
|
endif ()
|
||||||
if (WAMR_BUILD_SIMD EQUAL 1)
|
if (WAMR_BUILD_SIMD EQUAL 1)
|
||||||
if (NOT WAMR_BUILD_TARGET MATCHES "RISCV64.*")
|
set(SIMD_ENABLED 0)
|
||||||
add_definitions (-DWASM_ENABLE_SIMD=1)
|
if (WAMR_BUILD_TARGET MATCHES "RISCV64.*")
|
||||||
message (" SIMD enabled")
|
set(WAMR_BUILD_SIMD 0)
|
||||||
else ()
|
|
||||||
message (" SIMD disabled due to not supported on target RISCV64")
|
message (" SIMD disabled due to not supported on target RISCV64")
|
||||||
|
elseif (WAMR_BUILD_FAST_INTERP EQUAL 1 AND WAMR_BUILD_SIMDE EQUAL 0)
|
||||||
|
set(WAMR_BUILD_SIMD 0)
|
||||||
|
message(" SIMD disabled as the simde is not built in fast interpreter mode")
|
||||||
|
else()
|
||||||
|
set(SIMD_ENABLED 1)
|
||||||
|
message (" SIMD enabled")
|
||||||
endif ()
|
endif ()
|
||||||
|
add_definitions(-DWASM_ENABLE_SIMD=${SIMD_ENABLED})
|
||||||
endif ()
|
endif ()
|
||||||
if (WAMR_BUILD_AOT_STACK_FRAME EQUAL 1)
|
if (WAMR_BUILD_AOT_STACK_FRAME EQUAL 1)
|
||||||
add_definitions (-DWASM_ENABLE_AOT_STACK_FRAME=1)
|
add_definitions (-DWASM_ENABLE_AOT_STACK_FRAME=1)
|
||||||
|
|
|
@ -155,8 +155,14 @@ if (WAMR_BUILD_LIB_RATS EQUAL 1)
|
||||||
include (${IWASM_DIR}/libraries/lib-rats/lib_rats.cmake)
|
include (${IWASM_DIR}/libraries/lib-rats/lib_rats.cmake)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (WAMR_BUILD_LIB_SIMDE EQUAL 1)
|
if (WAMR_BUILD_SIMD EQUAL 1 AND WAMR_BUILD_FAST_INTERP EQUAL 1)
|
||||||
|
if (NOT (WAMR_BUILD_TARGET MATCHES "AARCH64.*" OR WAMR_BUILD_TARGET MATCHES "ARM.*"))
|
||||||
|
message(STATUS "SIMDe doesnt support platform " ${WAMR_BUILD_TARGET})
|
||||||
|
set(WAMR_BUILD_SIMDE 0)
|
||||||
|
else()
|
||||||
include (${IWASM_DIR}/libraries/simde/simde.cmake)
|
include (${IWASM_DIR}/libraries/simde/simde.cmake)
|
||||||
|
set (WAMR_BUILD_SIMDE 1)
|
||||||
|
endif()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (WAMR_BUILD_WASM_CACHE EQUAL 1)
|
if (WAMR_BUILD_WASM_CACHE EQUAL 1)
|
||||||
|
|
|
@ -3541,7 +3541,7 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
|
||||||
HANDLE_OP_END();
|
HANDLE_OP_END();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if WASM_ENABLE_SIMDE != 0
|
#if WASM_ENABLE_SIMD != 0
|
||||||
HANDLE_OP(EXT_OP_SET_LOCAL_FAST_V128)
|
HANDLE_OP(EXT_OP_SET_LOCAL_FAST_V128)
|
||||||
HANDLE_OP(EXT_OP_TEE_LOCAL_FAST_V128)
|
HANDLE_OP(EXT_OP_TEE_LOCAL_FAST_V128)
|
||||||
{
|
{
|
||||||
|
@ -3595,8 +3595,8 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
|
||||||
GET_I64_FROM_ADDR((uint32 *)global_addr));
|
GET_I64_FROM_ADDR((uint32 *)global_addr));
|
||||||
HANDLE_OP_END();
|
HANDLE_OP_END();
|
||||||
}
|
}
|
||||||
#if WASM_ENABLE_SIMDE != 0
|
#if WASM_ENABLE_SIMD != 0
|
||||||
HANDLE_OP(WASM_OP_GET_GLOBAL_128)
|
HANDLE_OP(WASM_OP_GET_GLOBAL_V128)
|
||||||
{
|
{
|
||||||
global_idx = read_uint32(frame_ip);
|
global_idx = read_uint32(frame_ip);
|
||||||
bh_assert(global_idx < module->e->global_count);
|
bh_assert(global_idx < module->e->global_count);
|
||||||
|
@ -3675,7 +3675,7 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
|
||||||
HANDLE_OP_END();
|
HANDLE_OP_END();
|
||||||
}
|
}
|
||||||
#if WASM_ENABLE_SIMDE != 0
|
#if WASM_ENABLE_SIMDE != 0
|
||||||
HANDLE_OP(WASM_OP_SET_GLOBAL_128)
|
HANDLE_OP(WASM_OP_SET_GLOBAL_V128)
|
||||||
{
|
{
|
||||||
global_idx = read_uint32(frame_ip);
|
global_idx = read_uint32(frame_ip);
|
||||||
bh_assert(global_idx < module->e->global_count);
|
bh_assert(global_idx < module->e->global_count);
|
||||||
|
@ -4932,7 +4932,7 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
|
||||||
|
|
||||||
HANDLE_OP_END();
|
HANDLE_OP_END();
|
||||||
}
|
}
|
||||||
#if WASM_ENABLE_SIMDE != 0
|
#if WASM_ENABLE_SIMD != 0
|
||||||
HANDLE_OP(EXT_OP_COPY_STACK_TOP_V128)
|
HANDLE_OP(EXT_OP_COPY_STACK_TOP_V128)
|
||||||
{
|
{
|
||||||
addr1 = GET_OFFSET();
|
addr1 = GET_OFFSET();
|
||||||
|
@ -5837,7 +5837,8 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
|
||||||
{
|
{
|
||||||
uint32 offset, addr;
|
uint32 offset, addr;
|
||||||
offset = read_uint32(frame_ip);
|
offset = read_uint32(frame_ip);
|
||||||
addr = POP_I32();
|
addr = GET_OPERAND(uint32, I32, 0);
|
||||||
|
frame_ip += 2;
|
||||||
addr_ret = GET_OFFSET();
|
addr_ret = GET_OFFSET();
|
||||||
CHECK_MEMORY_OVERFLOW(16);
|
CHECK_MEMORY_OVERFLOW(16);
|
||||||
PUT_V128_TO_ADDR(frame_lp + addr_ret, LOAD_V128(maddr));
|
PUT_V128_TO_ADDR(frame_lp + addr_ret, LOAD_V128(maddr));
|
||||||
|
@ -5850,7 +5851,7 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
|
||||||
addr = GET_OPERAND(uint32, I32, 0); \
|
addr = GET_OPERAND(uint32, I32, 0); \
|
||||||
frame_ip += 2; \
|
frame_ip += 2; \
|
||||||
addr_ret = GET_OFFSET(); \
|
addr_ret = GET_OFFSET(); \
|
||||||
CHECK_MEMORY_OVERFLOW(4); \
|
CHECK_MEMORY_OVERFLOW(16); \
|
||||||
\
|
\
|
||||||
simde_v128_t simde_result = simde_func(maddr); \
|
simde_v128_t simde_result = simde_func(maddr); \
|
||||||
\
|
\
|
||||||
|
@ -5858,7 +5859,6 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
|
||||||
SIMDE_V128_TO_SIMD_V128(simde_result, result); \
|
SIMDE_V128_TO_SIMD_V128(simde_result, result); \
|
||||||
PUT_V128_TO_ADDR(frame_lp + addr_ret, result); \
|
PUT_V128_TO_ADDR(frame_lp + addr_ret, result); \
|
||||||
\
|
\
|
||||||
break; \
|
|
||||||
} while (0)
|
} while (0)
|
||||||
case SIMD_v128_load8x8_s:
|
case SIMD_v128_load8x8_s:
|
||||||
{
|
{
|
||||||
|
@ -5936,7 +5936,7 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
|
||||||
offset += base;
|
offset += base;
|
||||||
addr = GET_OPERAND(uint32, I32, 0);
|
addr = GET_OPERAND(uint32, I32, 0);
|
||||||
|
|
||||||
CHECK_MEMORY_OVERFLOW(4);
|
CHECK_MEMORY_OVERFLOW(16);
|
||||||
STORE_V128(maddr, data);
|
STORE_V128(maddr, data);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -7301,8 +7301,8 @@ wasm_loader_find_block_addr(WASMExecEnv *exec_env, BlockAddr *block_addr_cache,
|
||||||
case WASM_OP_GET_GLOBAL_64:
|
case WASM_OP_GET_GLOBAL_64:
|
||||||
case WASM_OP_SET_GLOBAL_64:
|
case WASM_OP_SET_GLOBAL_64:
|
||||||
#if WASM_ENABLE_SIMDE != 0
|
#if WASM_ENABLE_SIMDE != 0
|
||||||
case WASM_OP_GET_GLOBAL_128:
|
case WASM_OP_GET_GLOBAL_V128:
|
||||||
case WASM_OP_SET_GLOBAL_128:
|
case WASM_OP_SET_GLOBAL_V128:
|
||||||
#endif
|
#endif
|
||||||
case WASM_OP_SET_GLOBAL_AUX_STACK:
|
case WASM_OP_SET_GLOBAL_AUX_STACK:
|
||||||
skip_leb_uint32(p, p_end); /* local index */
|
skip_leb_uint32(p, p_end); /* local index */
|
||||||
|
@ -9588,6 +9588,7 @@ wasm_loader_get_const_offset(WASMLoaderContext *ctx, uint8 type, void *value,
|
||||||
bh_memcpy_s(&(c->value.v128), sizeof(WASMValue), value,
|
bh_memcpy_s(&(c->value.v128), sizeof(WASMValue), value,
|
||||||
sizeof(V128));
|
sizeof(V128));
|
||||||
ctx->const_cell_num++;
|
ctx->const_cell_num++;
|
||||||
|
break;
|
||||||
#if WASM_ENABLE_REF_TYPES != 0 && WASM_ENABLE_GC == 0
|
#if WASM_ENABLE_REF_TYPES != 0 && WASM_ENABLE_GC == 0
|
||||||
case VALUE_TYPE_EXTERNREF:
|
case VALUE_TYPE_EXTERNREF:
|
||||||
case VALUE_TYPE_FUNCREF:
|
case VALUE_TYPE_FUNCREF:
|
||||||
|
@ -13226,7 +13227,7 @@ re_scan:
|
||||||
#if WASM_ENABLE_SIMDE != 0
|
#if WASM_ENABLE_SIMDE != 0
|
||||||
if (global_type == VALUE_TYPE_V128) {
|
if (global_type == VALUE_TYPE_V128) {
|
||||||
skip_label();
|
skip_label();
|
||||||
emit_label(WASM_OP_GET_GLOBAL_128);
|
emit_label(WASM_OP_GET_GLOBAL_V128);
|
||||||
}
|
}
|
||||||
#endif /* end of WASM_ENABLE_SIMDE */
|
#endif /* end of WASM_ENABLE_SIMDE */
|
||||||
emit_uint32(loader_ctx, global_idx);
|
emit_uint32(loader_ctx, global_idx);
|
||||||
|
@ -13326,7 +13327,7 @@ re_scan:
|
||||||
#if WASM_ENABLE_SIMDE != 0
|
#if WASM_ENABLE_SIMDE != 0
|
||||||
else if (global_type == VALUE_TYPE_V128) {
|
else if (global_type == VALUE_TYPE_V128) {
|
||||||
skip_label();
|
skip_label();
|
||||||
emit_label(WASM_OP_SET_GLOBAL_128);
|
emit_label(WASM_OP_SET_GLOBAL_V128);
|
||||||
}
|
}
|
||||||
#endif /* end of WASM_ENABLE_SIMDE */
|
#endif /* end of WASM_ENABLE_SIMDE */
|
||||||
emit_uint32(loader_ctx, global_idx);
|
emit_uint32(loader_ctx, global_idx);
|
||||||
|
|
|
@ -278,13 +278,13 @@ typedef enum WASMOpcode {
|
||||||
DEBUG_OP_BREAK = 0xdc, /* debug break point */
|
DEBUG_OP_BREAK = 0xdc, /* debug break point */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if WASM_ENABLE_JIT != 0 || WASM_ENABLE_FAST_INTERP != 0 \
|
#if WASM_ENABLE_JIT != 0 \
|
||||||
&& WASM_ENABLE_SIMD != 0
|
|| WASM_ENABLE_FAST_INTERP != 0 && WASM_ENABLE_SIMD != 0
|
||||||
EXT_OP_SET_LOCAL_FAST_V128 = 0xdd,
|
EXT_OP_SET_LOCAL_FAST_V128 = 0xdd,
|
||||||
EXT_OP_TEE_LOCAL_FAST_V128 = 0xde,
|
EXT_OP_TEE_LOCAL_FAST_V128 = 0xde,
|
||||||
EXT_OP_COPY_STACK_TOP_V128 = 0xdf,
|
EXT_OP_COPY_STACK_TOP_V128 = 0xdf,
|
||||||
WASM_OP_GET_GLOBAL_128 = 0xe0,
|
WASM_OP_GET_GLOBAL_V128 = 0xe0,
|
||||||
WASM_OP_SET_GLOBAL_128 = 0xe1,
|
WASM_OP_SET_GLOBAL_V128 = 0xe1,
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Post-MVP extend op prefix */
|
/* Post-MVP extend op prefix */
|
||||||
|
@ -798,13 +798,13 @@ typedef enum WASMAtomicEXTOpcode {
|
||||||
#define SET_GOTO_TABLE_SIMD_PREFIX_ELEM()
|
#define SET_GOTO_TABLE_SIMD_PREFIX_ELEM()
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if WASM_ENABLE_FAST_INTERP != 0 && WASM_ENABLE_SIMD != 0
|
#if (WASM_ENABLE_FAST_INTERP != 0) && WASM_ENABLE_SIMD != 0
|
||||||
#define DEF_EXT_V128_HANDLE() \
|
#define DEF_EXT_V128_HANDLE() \
|
||||||
SET_GOTO_TABLE_ELEM(EXT_OP_SET_LOCAL_FAST_V128), \
|
SET_GOTO_TABLE_ELEM(EXT_OP_SET_LOCAL_FAST_V128), /* 0xdd */ \
|
||||||
SET_GOTO_TABLE_ELEM(EXT_OP_TEE_LOCAL_FAST_V128), \
|
SET_GOTO_TABLE_ELEM(EXT_OP_TEE_LOCAL_FAST_V128), /* 0xde */ \
|
||||||
SET_GOTO_TABLE_ELEM(EXT_OP_COPY_STACK_TOP_V128), \
|
SET_GOTO_TABLE_ELEM(EXT_OP_COPY_STACK_TOP_V128), /* 0xdf */ \
|
||||||
SET_GOTO_TABLE_ELEM(WASM_OP_GET_GLOBAL_V128), \
|
SET_GOTO_TABLE_ELEM(WASM_OP_GET_GLOBAL_V128), /* 0xe0 */ \
|
||||||
SET_GOTO_TABLE_ELEM(WASM_OP_SET_GLOBAL_V128),
|
SET_GOTO_TABLE_ELEM(WASM_OP_SET_GLOBAL_V128), /* 0xe1 */
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#define DEF_EXT_V128_HANDLE()
|
#define DEF_EXT_V128_HANDLE()
|
||||||
|
|
|
@ -4,12 +4,7 @@
|
||||||
|
|
||||||
set (LIB_SIMDE_DIR ${CMAKE_CURRENT_LIST_DIR})
|
set (LIB_SIMDE_DIR ${CMAKE_CURRENT_LIST_DIR})
|
||||||
|
|
||||||
if (WAMR_BUILD_TARGET MATCHES "AARCH64.*" OR WAMR_BUILD_TARGET MATCHES "ARM.*")
|
|
||||||
add_definitions (-DWASM_ENABLE_SIMDE=1)
|
add_definitions (-DWASM_ENABLE_SIMDE=1)
|
||||||
else()
|
|
||||||
message(WARNING "Disabling SIMD for fast interpreter as the target is not supported")
|
|
||||||
set(WAMR_BUILD_SIMD 0)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
include_directories(${LIB_SIMDE_DIR} ${LIB_SIMDE_DIR}/simde)
|
include_directories(${LIB_SIMDE_DIR} ${LIB_SIMDE_DIR}/simde)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user