Skip to content

Commit 5ba1b33

Browse files
author
James Marsh
committed
Add missing condition for V128 in WASM_OP_TEE_LOCAL
1 parent a6a9f1f commit 5ba1b33

File tree

4 files changed

+63
-0
lines changed

4 files changed

+63
-0
lines changed

core/iwasm/interpreter/wasm_interp_fast.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5057,6 +5057,10 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
50575057
PUT_I64_TO_ADDR((uint32 *)(frame_lp + local_offset),
50585058
GET_I64_FROM_ADDR(frame_lp + addr1));
50595059
}
5060+
else if (local_type == VALUE_TYPE_V128) {
5061+
PUT_V128_TO_ADDR((frame_lp + local_offset),
5062+
GET_V128_FROM_ADDR(frame_lp + addr1));
5063+
}
50605064
#if WASM_ENABLE_GC != 0
50615065
else if (wasm_is_type_reftype(local_type)) {
50625066
PUT_REF_TO_ADDR((uint32 *)(frame_lp + local_offset),
77 Bytes
Binary file not shown.
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
(module
2+
(memory 1)
3+
(export "memory" (memory 0))
4+
5+
(func $test
6+
;; Add 130 i64 locals (260 slots) to push v128 past offset 256
7+
(local $d0 i64) (local $d1 i64) (local $d2 i64) (local $d3 i64) (local $d4 i64)
8+
(local $d5 i64) (local $d6 i64) (local $d7 i64) (local $d8 i64) (local $d9 i64)
9+
(local $d10 i64) (local $d11 i64) (local $d12 i64) (local $d13 i64) (local $d14 i64)
10+
(local $d15 i64) (local $d16 i64) (local $d17 i64) (local $d18 i64) (local $d19 i64)
11+
(local $d20 i64) (local $d21 i64) (local $d22 i64) (local $d23 i64) (local $d24 i64)
12+
(local $d25 i64) (local $d26 i64) (local $d27 i64) (local $d28 i64) (local $d29 i64)
13+
(local $d30 i64) (local $d31 i64) (local $d32 i64) (local $d33 i64) (local $d34 i64)
14+
(local $d35 i64) (local $d36 i64) (local $d37 i64) (local $d38 i64) (local $d39 i64)
15+
(local $d40 i64) (local $d41 i64) (local $d42 i64) (local $d43 i64) (local $d44 i64)
16+
(local $d45 i64) (local $d46 i64) (local $d47 i64) (local $d48 i64) (local $d49 i64)
17+
(local $d50 i64) (local $d51 i64) (local $d52 i64) (local $d53 i64) (local $d54 i64)
18+
(local $d55 i64) (local $d56 i64) (local $d57 i64) (local $d58 i64) (local $d59 i64)
19+
(local $d60 i64) (local $d61 i64) (local $d62 i64) (local $d63 i64) (local $d64 i64)
20+
(local $d65 i64) (local $d66 i64) (local $d67 i64) (local $d68 i64) (local $d69 i64)
21+
(local $d70 i64) (local $d71 i64) (local $d72 i64) (local $d73 i64) (local $d74 i64)
22+
(local $d75 i64) (local $d76 i64) (local $d77 i64) (local $d78 i64) (local $d79 i64)
23+
(local $d80 i64) (local $d81 i64) (local $d82 i64) (local $d83 i64) (local $d84 i64)
24+
(local $d85 i64) (local $d86 i64) (local $d87 i64) (local $d88 i64) (local $d89 i64)
25+
(local $d90 i64) (local $d91 i64) (local $d92 i64) (local $d93 i64) (local $d94 i64)
26+
(local $d95 i64) (local $d96 i64) (local $d97 i64) (local $d98 i64) (local $d99 i64)
27+
(local $d100 i64) (local $d101 i64) (local $d102 i64) (local $d103 i64) (local $d104 i64)
28+
(local $d105 i64) (local $d106 i64) (local $d107 i64) (local $d108 i64) (local $d109 i64)
29+
(local $d110 i64) (local $d111 i64) (local $d112 i64) (local $d113 i64) (local $d114 i64)
30+
(local $d115 i64) (local $d116 i64) (local $d117 i64) (local $d118 i64) (local $d119 i64)
31+
(local $d120 i64) (local $d121 i64) (local $d122 i64) (local $d123 i64) (local $d124 i64)
32+
(local $d125 i64) (local $d126 i64) (local $d127 i64) (local $d128 i64) (local $d129 i64)
33+
34+
(local $vec v128)
35+
36+
;; Should hit WASM_OP_TEE_LOCAL rather than EXT_OP_TEE_LOCAL_FAST_V128
37+
(v128.const i32x4 1 2 3 4)
38+
(local.tee $vec)
39+
(drop)
40+
)
41+
42+
(export "_start" (func $test))
43+
)

tests/regression/ba-issues/running_config.json

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1754,6 +1754,22 @@
17541754
"stdout content": "",
17551755
"description": "no sanitizer 'heap-buffer-overflow'"
17561756
}
1757+
},
1758+
{
1759+
"deprecated": false,
1760+
"ids": [
1761+
4643
1762+
],
1763+
"runtime": "iwasm-default-wasi-disabled",
1764+
"file": "test.wasm",
1765+
"mode": "fast-interp",
1766+
"options": "-f _start",
1767+
"argument": "",
1768+
"expected return": {
1769+
"ret code": 0,
1770+
"stdout content": "",
1771+
"description": "no 'invalid local type'"
1772+
}
17571773
}
17581774
]
17591775
}

0 commit comments

Comments
 (0)