50349c41bd824b13b2e878e27dcb3547c958ca64
[platform/framework/web/lwnode.git] /
1 ;; v128.store operater with normal argument (e.g. (i8x16, i16x8, i32x4, f32x4))
2
3 (module
4   (memory 1)
5   (func (export "v128.store_i8x16") (result v128)
6     (v128.store (i32.const 0) (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15))
7     (v128.load (i32.const 0))
8   )
9   (func (export "v128.store_i16x8") (result v128)
10     (v128.store (i32.const 0) (v128.const i16x8 0 1 2 3 4 5 6 7))
11     (v128.load (i32.const 0))
12   )
13   (func (export "v128.store_i16x8_2") (result v128)
14     (v128.store (i32.const 0) (v128.const i16x8 012_345 012_345 012_345 012_345 012_345 012_345 012_345 012_345))
15     (v128.load (i32.const 0))
16   )
17   (func (export "v128.store_i16x8_3") (result v128)
18     (v128.store (i32.const 0) (v128.const i16x8 0x0_1234 0x0_1234 0x0_1234 0x0_1234 0x0_1234 0x0_1234 0x0_1234 0x0_1234))
19     (v128.load (i32.const 0))
20   )
21   (func (export "v128.store_i32x4") (result v128)
22     (v128.store (i32.const 0) (v128.const i32x4 0 1 2 3))
23     (v128.load (i32.const 0))
24   )
25   (func (export "v128.store_i32x4_2") (result v128)
26     (v128.store (i32.const 0) (v128.const i32x4 0_123_456_789 0_123_456_789 0_123_456_789 0_123_456_789))
27     (v128.load (i32.const 0))
28   )
29   (func (export "v128.store_i32x4_3") (result v128)
30     (v128.store (i32.const 0) (v128.const i32x4 0x0_1234_5678 0x0_1234_5678 0x0_1234_5678 0x0_1234_5678))
31     (v128.load (i32.const 0))
32   )
33
34   (func (export "v128.store_f32x4") (result v128)
35     (v128.store (i32.const 0) (v128.const f32x4 0 1 2 3))
36     (v128.load (i32.const 0))
37   )
38 )
39
40 (assert_return (invoke "v128.store_i8x16") (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15))
41 (assert_return (invoke "v128.store_i16x8") (v128.const i16x8 0 1 2 3 4 5 6 7))
42 (assert_return (invoke "v128.store_i16x8_2") (v128.const i16x8 12345 12345 12345 12345 12345 12345 12345 12345))
43 (assert_return (invoke "v128.store_i16x8_3") (v128.const i16x8 0x1234 0x1234 0x1234 0x1234 0x1234 0x1234 0x1234 0x1234))
44 (assert_return (invoke "v128.store_i32x4") (v128.const i32x4 0 1 2 3))
45 (assert_return (invoke "v128.store_i32x4_2") (v128.const i32x4 123456789 123456789 123456789 123456789))
46 (assert_return (invoke "v128.store_i32x4_3") (v128.const i32x4 0x12345678 0x12345678 0x12345678 0x12345678))
47 (assert_return (invoke "v128.store_f32x4") (v128.const f32x4 0 1 2 3))
48
49
50 ;; v128.store operator as the argument of control constructs and instructions
51
52 (module
53   (memory 1)
54   (func (export "as-block-value")
55     (block (v128.store (i32.const 0) (v128.const i32x4 0 0 0 0)))
56   )
57   (func (export "as-loop-value")
58     (loop (v128.store (i32.const 0) (v128.const i32x4 0 0 0 0)))
59   )
60   (func (export "as-br-value")
61     (block (br 0 (v128.store (i32.const 0) (v128.const i32x4 0 0 0 0))))
62   )
63   (func (export "as-br_if-value")
64     (block
65       (br_if 0 (v128.store (i32.const 0) (v128.const i32x4 0 0 0 0)) (i32.const 1))
66     )
67   )
68   (func (export "as-br_if-value-cond")
69     (block
70       (br_if 0 (i32.const 6) (v128.store (i32.const 0) (v128.const i32x4 0 0 0 0)))
71     )
72   )
73   (func (export "as-br_table-value")
74     (block
75       (br_table 0 (v128.store (i32.const 0) (v128.const i32x4 0 0 0 0)) (i32.const 1))
76     )
77   )
78   (func (export "as-return-value")
79     (return (v128.store (i32.const 0) (v128.const i32x4 0 0 0 0)))
80   )
81   (func (export "as-if-then")
82     (if (i32.const 1) (then (v128.store (i32.const 0) (v128.const i32x4 0 0 0 0))))
83   )
84   (func (export "as-if-else")
85     (if (i32.const 0) (then) (else (v128.store (i32.const 0) (v128.const i32x4 0 0 0 0))))
86   )
87 )
88
89 (assert_return (invoke "as-block-value"))
90 (assert_return (invoke "as-loop-value"))
91 (assert_return (invoke "as-br-value"))
92 (assert_return (invoke "as-br_if-value"))
93 (assert_return (invoke "as-br_if-value-cond"))
94 (assert_return (invoke "as-br_table-value"))
95 (assert_return (invoke "as-return-value"))
96 (assert_return (invoke "as-if-then"))
97 (assert_return (invoke "as-if-else"))
98
99
100 ;; Unknown operator(e.g. v128.store8, v128.store16, v128.store32)
101
102 (assert_malformed
103   (module quote
104     "(memory 1)"
105     "(func (v128.store8 (i32.const 0) (v128.const i32x4 0 0 0 0)))"
106   )
107   "unknown operator"
108 )
109 (assert_malformed
110   (module quote
111     "(memory 1)"
112     "(func (v128.store16 (i32.const 0) (v128.const i32x4 0 0 0 0)))"
113   )
114   "unknown operator"
115 )
116 (assert_malformed
117   (module quote
118     "(memory 1)"
119     "(func (v128.store32 (i32.const 0) (v128.const i32x4 0 0 0 0)))"
120   )
121   "unknown operator"
122 )
123
124
125 ;; Type mismatched (e.g. v128.load(f32.const 0), type address empty)
126
127 (assert_invalid
128   (module (memory 1) (func (v128.store (f32.const 0) (v128.const i32x4 0 0 0 0))))
129   "type mismatch"
130 )
131 (assert_invalid
132   (module (memory 1) (func (local v128) (block (br_if 0 (v128.store)))))
133   "type mismatch"
134 )
135 (assert_invalid
136   (module (memory 1) (func (result v128) (v128.store (i32.const 0) (v128.const i32x4 0 0 0 0))))
137   "type mismatch"
138 )
139
140
141 ;; Test operation with empty argument
142
143 (assert_invalid
144   (module (memory 0)
145     (func $v128.store-1st-arg-empty
146       (v128.store (v128.const i32x4 0 0 0 0))
147     )
148   )
149   "type mismatch"
150 )
151 (assert_invalid
152   (module (memory 0)
153     (func $v128.store-2nd-arg-empty
154       (v128.store (i32.const 0))
155     )
156   )
157   "type mismatch"
158 )
159 (assert_invalid
160   (module (memory 0)
161     (func $v128.store-arg-empty
162       (v128.store)
163     )
164   )
165   "type mismatch"
166 )