Skip to content

Commit e48367c

Browse files
authored
Fix SIMD load lane to avoid incompatible pointer types (#4278)
1 parent c7b2db1 commit e48367c

File tree

1 file changed

+14
-13
lines changed

1 file changed

+14
-13
lines changed

core/iwasm/interpreter/wasm_interp_fast.c

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6101,8 +6101,9 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
61016101
#if WASM_CPU_SUPPORTS_UNALIGNED_ADDR_ACCESS != 0
61026102
#define SIMD_LANE_HANDLE_UNALIGNED_ACCESS()
61036103
#else
6104-
#define SIMD_LANE_HANDLE_UNALIGNED_ACCESS() *frame_ip++;
6105-
#endif
6104+
#define SIMD_LANE_HANDLE_UNALIGNED_ACCESS() (void)*frame_ip++
6105+
#endif /* WASM_CPU_SUPPORTS_UNALIGNED_ADDR_ACCESS != 0 */
6106+
61066107
#define SIMD_EXTRACT_LANE_OP(register, return_type, push_elem) \
61076108
do { \
61086109
uint8 lane = *frame_ip++; \
@@ -6514,17 +6515,17 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
65146515
break;
65156516
}
65166517

6517-
#define SIMD_LOAD_LANE_COMMON(vec, register, lane, width) \
6518-
do { \
6519-
addr_ret = GET_OFFSET(); \
6520-
CHECK_MEMORY_OVERFLOW(width / 8); \
6521-
if (width == 64) { \
6522-
vec.register[lane] = GET_I64_FROM_ADDR(maddr); \
6523-
} \
6524-
else { \
6525-
vec.register[lane] = *(uint##width *)(maddr); \
6526-
} \
6527-
PUT_V128_TO_ADDR(frame_lp + addr_ret, vec); \
6518+
#define SIMD_LOAD_LANE_COMMON(vec, register, lane, width) \
6519+
do { \
6520+
addr_ret = GET_OFFSET(); \
6521+
CHECK_MEMORY_OVERFLOW(width / 8); \
6522+
if (width == 64) { \
6523+
vec.register[lane] = GET_I64_FROM_ADDR((uint32 *)maddr); \
6524+
} \
6525+
else { \
6526+
vec.register[lane] = *(uint##width *)(maddr); \
6527+
} \
6528+
PUT_V128_TO_ADDR(frame_lp + addr_ret, vec); \
65286529
} while (0)
65296530

65306531
#define SIMD_LOAD_LANE_OP(register, width) \

0 commit comments

Comments
 (0)