d0706f535198fe7c839d39520e5c1cec850c8253
[platform/framework/web/lwnode.git] /
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")