...
1;; Tests for load lane operations.
2
3
4(module
5 (memory 1)
6 (data (i32.const 0) "\00\01\02\03\04\05\06\07\08\09\0A\0B\0C\0D\0E\0F")
7 (func (export "v128.load8_lane_0")
8 (param $address i32) (param $x v128) (result v128)
9 (v128.load8_lane 0 (local.get $address) (local.get $x)))
10 (func (export "v128.load8_lane_1")
11 (param $address i32) (param $x v128) (result v128)
12 (v128.load8_lane 1 (local.get $address) (local.get $x)))
13 (func (export "v128.load8_lane_2")
14 (param $address i32) (param $x v128) (result v128)
15 (v128.load8_lane 2 (local.get $address) (local.get $x)))
16 (func (export "v128.load8_lane_3")
17 (param $address i32) (param $x v128) (result v128)
18 (v128.load8_lane 3 (local.get $address) (local.get $x)))
19 (func (export "v128.load8_lane_4")
20 (param $address i32) (param $x v128) (result v128)
21 (v128.load8_lane 4 (local.get $address) (local.get $x)))
22 (func (export "v128.load8_lane_5")
23 (param $address i32) (param $x v128) (result v128)
24 (v128.load8_lane 5 (local.get $address) (local.get $x)))
25 (func (export "v128.load8_lane_6")
26 (param $address i32) (param $x v128) (result v128)
27 (v128.load8_lane 6 (local.get $address) (local.get $x)))
28 (func (export "v128.load8_lane_7")
29 (param $address i32) (param $x v128) (result v128)
30 (v128.load8_lane 7 (local.get $address) (local.get $x)))
31 (func (export "v128.load8_lane_8")
32 (param $address i32) (param $x v128) (result v128)
33 (v128.load8_lane 8 (local.get $address) (local.get $x)))
34 (func (export "v128.load8_lane_9")
35 (param $address i32) (param $x v128) (result v128)
36 (v128.load8_lane 9 (local.get $address) (local.get $x)))
37 (func (export "v128.load8_lane_10")
38 (param $address i32) (param $x v128) (result v128)
39 (v128.load8_lane 10 (local.get $address) (local.get $x)))
40 (func (export "v128.load8_lane_11")
41 (param $address i32) (param $x v128) (result v128)
42 (v128.load8_lane 11 (local.get $address) (local.get $x)))
43 (func (export "v128.load8_lane_12")
44 (param $address i32) (param $x v128) (result v128)
45 (v128.load8_lane 12 (local.get $address) (local.get $x)))
46 (func (export "v128.load8_lane_13")
47 (param $address i32) (param $x v128) (result v128)
48 (v128.load8_lane 13 (local.get $address) (local.get $x)))
49 (func (export "v128.load8_lane_14")
50 (param $address i32) (param $x v128) (result v128)
51 (v128.load8_lane 14 (local.get $address) (local.get $x)))
52 (func (export "v128.load8_lane_15")
53 (param $address i32) (param $x v128) (result v128)
54 (v128.load8_lane 15 (local.get $address) (local.get $x)))
55 (func (export "v128.load8_lane_0_offset_0")
56 (param $x v128) (result v128)
57 (v128.load8_lane offset=0 0 (i32.const 0) (local.get $x)))
58 (func (export "v128.load8_lane_1_offset_1")
59 (param $x v128) (result v128)
60 (v128.load8_lane offset=1 1 (i32.const 0) (local.get $x)))
61 (func (export "v128.load8_lane_2_offset_2")
62 (param $x v128) (result v128)
63 (v128.load8_lane offset=2 2 (i32.const 0) (local.get $x)))
64 (func (export "v128.load8_lane_3_offset_3")
65 (param $x v128) (result v128)
66 (v128.load8_lane offset=3 3 (i32.const 0) (local.get $x)))
67 (func (export "v128.load8_lane_4_offset_4")
68 (param $x v128) (result v128)
69 (v128.load8_lane offset=4 4 (i32.const 0) (local.get $x)))
70 (func (export "v128.load8_lane_5_offset_5")
71 (param $x v128) (result v128)
72 (v128.load8_lane offset=5 5 (i32.const 0) (local.get $x)))
73 (func (export "v128.load8_lane_6_offset_6")
74 (param $x v128) (result v128)
75 (v128.load8_lane offset=6 6 (i32.const 0) (local.get $x)))
76 (func (export "v128.load8_lane_7_offset_7")
77 (param $x v128) (result v128)
78 (v128.load8_lane offset=7 7 (i32.const 0) (local.get $x)))
79 (func (export "v128.load8_lane_8_offset_8")
80 (param $x v128) (result v128)
81 (v128.load8_lane offset=8 8 (i32.const 0) (local.get $x)))
82 (func (export "v128.load8_lane_9_offset_9")
83 (param $x v128) (result v128)
84 (v128.load8_lane offset=9 9 (i32.const 0) (local.get $x)))
85 (func (export "v128.load8_lane_10_offset_10")
86 (param $x v128) (result v128)
87 (v128.load8_lane offset=10 10 (i32.const 0) (local.get $x)))
88 (func (export "v128.load8_lane_11_offset_11")
89 (param $x v128) (result v128)
90 (v128.load8_lane offset=11 11 (i32.const 0) (local.get $x)))
91 (func (export "v128.load8_lane_12_offset_12")
92 (param $x v128) (result v128)
93 (v128.load8_lane offset=12 12 (i32.const 0) (local.get $x)))
94 (func (export "v128.load8_lane_13_offset_13")
95 (param $x v128) (result v128)
96 (v128.load8_lane offset=13 13 (i32.const 0) (local.get $x)))
97 (func (export "v128.load8_lane_14_offset_14")
98 (param $x v128) (result v128)
99 (v128.load8_lane offset=14 14 (i32.const 0) (local.get $x)))
100 (func (export "v128.load8_lane_15_offset_15")
101 (param $x v128) (result v128)
102 (v128.load8_lane offset=15 15 (i32.const 0) (local.get $x)))
103 (func (export "v128.load8_lane_0_align_1")
104 (param $address i32) (param $x v128) (result v128)
105 (v128.load8_lane align=1 0 (local.get $address) (local.get $x)))
106 (func (export "v128.load8_lane_1_align_1")
107 (param $address i32) (param $x v128) (result v128)
108 (v128.load8_lane align=1 1 (local.get $address) (local.get $x)))
109 (func (export "v128.load8_lane_2_align_1")
110 (param $address i32) (param $x v128) (result v128)
111 (v128.load8_lane align=1 2 (local.get $address) (local.get $x)))
112 (func (export "v128.load8_lane_3_align_1")
113 (param $address i32) (param $x v128) (result v128)
114 (v128.load8_lane align=1 3 (local.get $address) (local.get $x)))
115 (func (export "v128.load8_lane_4_align_1")
116 (param $address i32) (param $x v128) (result v128)
117 (v128.load8_lane align=1 4 (local.get $address) (local.get $x)))
118 (func (export "v128.load8_lane_5_align_1")
119 (param $address i32) (param $x v128) (result v128)
120 (v128.load8_lane align=1 5 (local.get $address) (local.get $x)))
121 (func (export "v128.load8_lane_6_align_1")
122 (param $address i32) (param $x v128) (result v128)
123 (v128.load8_lane align=1 6 (local.get $address) (local.get $x)))
124 (func (export "v128.load8_lane_7_align_1")
125 (param $address i32) (param $x v128) (result v128)
126 (v128.load8_lane align=1 7 (local.get $address) (local.get $x)))
127 (func (export "v128.load8_lane_8_align_1")
128 (param $address i32) (param $x v128) (result v128)
129 (v128.load8_lane align=1 8 (local.get $address) (local.get $x)))
130 (func (export "v128.load8_lane_9_align_1")
131 (param $address i32) (param $x v128) (result v128)
132 (v128.load8_lane align=1 9 (local.get $address) (local.get $x)))
133 (func (export "v128.load8_lane_10_align_1")
134 (param $address i32) (param $x v128) (result v128)
135 (v128.load8_lane align=1 10 (local.get $address) (local.get $x)))
136 (func (export "v128.load8_lane_11_align_1")
137 (param $address i32) (param $x v128) (result v128)
138 (v128.load8_lane align=1 11 (local.get $address) (local.get $x)))
139 (func (export "v128.load8_lane_12_align_1")
140 (param $address i32) (param $x v128) (result v128)
141 (v128.load8_lane align=1 12 (local.get $address) (local.get $x)))
142 (func (export "v128.load8_lane_13_align_1")
143 (param $address i32) (param $x v128) (result v128)
144 (v128.load8_lane align=1 13 (local.get $address) (local.get $x)))
145 (func (export "v128.load8_lane_14_align_1")
146 (param $address i32) (param $x v128) (result v128)
147 (v128.load8_lane align=1 14 (local.get $address) (local.get $x)))
148 (func (export "v128.load8_lane_15_align_1")
149 (param $address i32) (param $x v128) (result v128)
150 (v128.load8_lane align=1 15 (local.get $address) (local.get $x)))
151)
152
153(assert_return (invoke "v128.load8_lane_0" (i32.const 0)
154 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
155 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
156(assert_return (invoke "v128.load8_lane_1" (i32.const 1)
157 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
158 (v128.const i8x16 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
159(assert_return (invoke "v128.load8_lane_2" (i32.const 2)
160 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
161 (v128.const i8x16 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0))
162(assert_return (invoke "v128.load8_lane_3" (i32.const 3)
163 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
164 (v128.const i8x16 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0))
165(assert_return (invoke "v128.load8_lane_4" (i32.const 4)
166 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
167 (v128.const i8x16 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0))
168(assert_return (invoke "v128.load8_lane_5" (i32.const 5)
169 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
170 (v128.const i8x16 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0))
171(assert_return (invoke "v128.load8_lane_6" (i32.const 6)
172 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
173 (v128.const i8x16 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0))
174(assert_return (invoke "v128.load8_lane_7" (i32.const 7)
175 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
176 (v128.const i8x16 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0))
177(assert_return (invoke "v128.load8_lane_8" (i32.const 8)
178 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
179 (v128.const i8x16 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0))
180(assert_return (invoke "v128.load8_lane_9" (i32.const 9)
181 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
182 (v128.const i8x16 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0))
183(assert_return (invoke "v128.load8_lane_10" (i32.const 10)
184 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
185 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 10 0 0 0 0 0))
186(assert_return (invoke "v128.load8_lane_11" (i32.const 11)
187 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
188 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 11 0 0 0 0))
189(assert_return (invoke "v128.load8_lane_12" (i32.const 12)
190 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
191 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 12 0 0 0))
192(assert_return (invoke "v128.load8_lane_13" (i32.const 13)
193 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
194 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 13 0 0))
195(assert_return (invoke "v128.load8_lane_14" (i32.const 14)
196 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
197 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 0))
198(assert_return (invoke "v128.load8_lane_15" (i32.const 15)
199 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
200 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15))
201(assert_return (invoke "v128.load8_lane_0_offset_0" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
202 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
203(assert_return (invoke "v128.load8_lane_1_offset_1" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
204 (v128.const i8x16 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
205(assert_return (invoke "v128.load8_lane_2_offset_2" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
206 (v128.const i8x16 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0))
207(assert_return (invoke "v128.load8_lane_3_offset_3" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
208 (v128.const i8x16 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0))
209(assert_return (invoke "v128.load8_lane_4_offset_4" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
210 (v128.const i8x16 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0))
211(assert_return (invoke "v128.load8_lane_5_offset_5" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
212 (v128.const i8x16 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0))
213(assert_return (invoke "v128.load8_lane_6_offset_6" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
214 (v128.const i8x16 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0))
215(assert_return (invoke "v128.load8_lane_7_offset_7" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
216 (v128.const i8x16 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0))
217(assert_return (invoke "v128.load8_lane_8_offset_8" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
218 (v128.const i8x16 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0))
219(assert_return (invoke "v128.load8_lane_9_offset_9" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
220 (v128.const i8x16 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0))
221(assert_return (invoke "v128.load8_lane_10_offset_10" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
222 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 10 0 0 0 0 0))
223(assert_return (invoke "v128.load8_lane_11_offset_11" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
224 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 11 0 0 0 0))
225(assert_return (invoke "v128.load8_lane_12_offset_12" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
226 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 12 0 0 0))
227(assert_return (invoke "v128.load8_lane_13_offset_13" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
228 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 13 0 0))
229(assert_return (invoke "v128.load8_lane_14_offset_14" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
230 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 0))
231(assert_return (invoke "v128.load8_lane_15_offset_15" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
232 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15))
233(assert_return (invoke "v128.load8_lane_0_align_1" (i32.const 0)
234 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
235 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
236(assert_return (invoke "v128.load8_lane_1_align_1" (i32.const 1)
237 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
238 (v128.const i8x16 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
239(assert_return (invoke "v128.load8_lane_2_align_1" (i32.const 2)
240 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
241 (v128.const i8x16 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0))
242(assert_return (invoke "v128.load8_lane_3_align_1" (i32.const 3)
243 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
244 (v128.const i8x16 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0))
245(assert_return (invoke "v128.load8_lane_4_align_1" (i32.const 4)
246 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
247 (v128.const i8x16 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0))
248(assert_return (invoke "v128.load8_lane_5_align_1" (i32.const 5)
249 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
250 (v128.const i8x16 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0))
251(assert_return (invoke "v128.load8_lane_6_align_1" (i32.const 6)
252 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
253 (v128.const i8x16 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0))
254(assert_return (invoke "v128.load8_lane_7_align_1" (i32.const 7)
255 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
256 (v128.const i8x16 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0))
257(assert_return (invoke "v128.load8_lane_8_align_1" (i32.const 8)
258 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
259 (v128.const i8x16 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0))
260(assert_return (invoke "v128.load8_lane_9_align_1" (i32.const 9)
261 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
262 (v128.const i8x16 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0))
263(assert_return (invoke "v128.load8_lane_10_align_1" (i32.const 10)
264 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
265 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 10 0 0 0 0 0))
266(assert_return (invoke "v128.load8_lane_11_align_1" (i32.const 11)
267 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
268 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 11 0 0 0 0))
269(assert_return (invoke "v128.load8_lane_12_align_1" (i32.const 12)
270 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
271 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 12 0 0 0))
272(assert_return (invoke "v128.load8_lane_13_align_1" (i32.const 13)
273 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
274 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 13 0 0))
275(assert_return (invoke "v128.load8_lane_14_align_1" (i32.const 14)
276 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
277 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 0))
278(assert_return (invoke "v128.load8_lane_15_align_1" (i32.const 15)
279 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
280 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15))
281
282;; type check
283(assert_invalid (module (memory 1)
284 (func (param $x v128) (result v128)
285 (v128.load8_lane 0 (local.get $x) (i32.const 0))))
286 "type mismatch")
287
288;; invalid lane index
289(assert_invalid (module (memory 1)
290 (func (param $x v128) (result v128)
291 (v128.load8_lane 16 (i32.const 0) (local.get $x))))
292 "invalid lane index")
293
294;; invalid memarg alignment
295(assert_invalid
296 (module (memory 1)
297 (func (param $x v128) (result v128)
298 (v128.load8_lane align=2 0 (i32.const 0) (local.get $x))))
299 "alignment must not be larger than natural")
View as plain text