Skip to content

Commit a73ac2d

Browse files
Fix test diff
1 parent 506f6e9 commit a73ac2d

1 file changed

Lines changed: 116 additions & 72 deletions

File tree

test/spec/wide-arithmetic.wast

Lines changed: 116 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,24 @@
3131
(i64.const -1) (i64.const -1))
3232
(i64.const 0) (i64.const 1))
3333

34+
;; simple subtraction
35+
(assert_return (invoke "i64.sub128"
36+
(i64.const 0) (i64.const 0)
37+
(i64.const 0) (i64.const 0))
38+
(i64.const 0) (i64.const 0))
39+
(assert_return (invoke "i64.sub128"
40+
(i64.const 0) (i64.const 0)
41+
(i64.const 1) (i64.const 0))
42+
(i64.const -1) (i64.const -1))
43+
(assert_return (invoke "i64.sub128"
44+
(i64.const 0) (i64.const 1)
45+
(i64.const 1) (i64.const 1))
46+
(i64.const -1) (i64.const -1))
47+
(assert_return (invoke "i64.sub128"
48+
(i64.const 0) (i64.const 0)
49+
(i64.const 1) (i64.const 1))
50+
(i64.const -1) (i64.const -2))
51+
3452
;; 20 randomly generated test cases for i64.add128
3553
(assert_return (invoke "i64.add128"
3654
(i64.const -2418420703207364752) (i64.const -1)
@@ -113,27 +131,88 @@
113131
(i64.const 1) (i64.const 0))
114132
(i64.const 414720966820876429) (i64.const -1))
115133

116-
;; simple subtraction
134+
135+
;; 20 randomly generated test cases for i64.sub128
117136
(assert_return (invoke "i64.sub128"
118-
(i64.const 0) (i64.const 0)
119-
(i64.const 0) (i64.const 0))
120-
(i64.const 0) (i64.const 0))
137+
(i64.const 0) (i64.const -2459085471354756766)
138+
(i64.const -9151153060221070927) (i64.const -1))
139+
(i64.const 9151153060221070927) (i64.const -2459085471354756766))
121140
(assert_return (invoke "i64.sub128"
122-
(i64.const 1) (i64.const 0)
123-
(i64.const 1) (i64.const 0))
141+
(i64.const 4566502638724063423) (i64.const -4282658540409485563)
142+
(i64.const -6884077310018979971) (i64.const -1))
143+
(i64.const -6996164124966508222) (i64.const -4282658540409485563))
144+
(assert_return (invoke "i64.sub128"
145+
(i64.const 1) (i64.const 3118380319444903041)
146+
(i64.const 0) (i64.const 3283115686417695443))
147+
(i64.const 1) (i64.const -164735366972792402))
148+
(assert_return (invoke "i64.sub128"
149+
(i64.const -7208415241680161810) (i64.const -1)
150+
(i64.const 1) (i64.const 0))
151+
(i64.const -7208415241680161811) (i64.const -1))
152+
(assert_return (invoke "i64.sub128"
153+
(i64.const 0) (i64.const 3944850126731328706)
154+
(i64.const 1) (i64.const 1))
155+
(i64.const -1) (i64.const 3944850126731328704))
156+
(assert_return (invoke "i64.sub128"
157+
(i64.const 1) (i64.const -1)
158+
(i64.const -1) (i64.const -1))
159+
(i64.const 2) (i64.const -1))
160+
(assert_return (invoke "i64.sub128"
161+
(i64.const -1) (i64.const -1)
162+
(i64.const 4855833073346115923) (i64.const -6826437637438999645))
163+
(i64.const -4855833073346115924) (i64.const 6826437637438999644))
164+
(assert_return (invoke "i64.sub128"
165+
(i64.const 1) (i64.const 0)
166+
(i64.const -1) (i64.const -1))
167+
(i64.const 2) (i64.const 0))
168+
(assert_return (invoke "i64.sub128"
169+
(i64.const 1) (i64.const 0)
170+
(i64.const 1) (i64.const 0))
124171
(i64.const 0) (i64.const 0))
125172
(assert_return (invoke "i64.sub128"
126-
(i64.const 0) (i64.const 0)
127-
(i64.const 1) (i64.const 0))
128-
(i64.const 0xffffffffffffffff) (i64.const 0xffffffffffffffff))
173+
(i64.const -1) (i64.const -1)
174+
(i64.const 0) (i64.const 0))
175+
(i64.const -1) (i64.const -1))
129176
(assert_return (invoke "i64.sub128"
130-
(i64.const 0) (i64.const 1)
131-
(i64.const 1) (i64.const 0))
132-
(i64.const 0xffffffffffffffff) (i64.const 0))
177+
(i64.const 1) (i64.const -1)
178+
(i64.const -6365475388498096428) (i64.const -1))
179+
(i64.const 6365475388498096429) (i64.const -1))
133180
(assert_return (invoke "i64.sub128"
134-
(i64.const 1) (i64.const 2)
135-
(i64.const 3) (i64.const 4))
136-
(i64.const 0xfffffffffffffffe) (i64.const 0xfffffffffffffffd))
181+
(i64.const 6804238617560992346) (i64.const -1)
182+
(i64.const 0) (i64.const -1))
183+
(i64.const 6804238617560992346) (i64.const 0))
184+
(assert_return (invoke "i64.sub128"
185+
(i64.const 0) (i64.const 1)
186+
(i64.const 1) (i64.const -7756145513466453619))
187+
(i64.const -1) (i64.const 7756145513466453619))
188+
(assert_return (invoke "i64.sub128"
189+
(i64.const 1) (i64.const -1)
190+
(i64.const 1) (i64.const 1))
191+
(i64.const 0) (i64.const -2))
192+
(assert_return (invoke "i64.sub128"
193+
(i64.const 0) (i64.const 1)
194+
(i64.const 1) (i64.const 0))
195+
(i64.const -1) (i64.const 0))
196+
(assert_return (invoke "i64.sub128"
197+
(i64.const 1) (i64.const 5602881641763648953)
198+
(i64.const -2110589244314239080) (i64.const -1))
199+
(i64.const 2110589244314239081) (i64.const 5602881641763648953))
200+
(assert_return (invoke "i64.sub128"
201+
(i64.const 0) (i64.const 1)
202+
(i64.const -1) (i64.const -1))
203+
(i64.const 1) (i64.const 1))
204+
(assert_return (invoke "i64.sub128"
205+
(i64.const 0) (i64.const -1)
206+
(i64.const 3553816990259121806) (i64.const -2105235417856431622))
207+
(i64.const -3553816990259121806) (i64.const 2105235417856431620))
208+
(assert_return (invoke "i64.sub128"
209+
(i64.const 1861102705894987245) (i64.const 1)
210+
(i64.const 3713781778534059871) (i64.const 1))
211+
(i64.const -1852679072639072626) (i64.const -1))
212+
(assert_return (invoke "i64.sub128"
213+
(i64.const 0) (i64.const -1)
214+
(i64.const 1) (i64.const 1832524486821761762))
215+
(i64.const -1) (i64.const -1832524486821761764))
137216

138217
;; assert overlong encodings for each instruction's binary encoding are accepted
139218
(module binary
@@ -145,16 +224,17 @@
145224
"\04\7e\7e\7e\7e" ;; 4 params - all i64
146225
"\02\7e\7e" ;; 2 results - both i64
147226

148-
"\03\02" ;; function section, 2 byte
149-
"\01" ;; 1 count
150-
"\00" ;; types of each function (0)
227+
"\03\03" ;; function section, 3 bytes
228+
"\02" ;; 2 count
229+
"\00\00" ;; types of each function (0, 0)
151230

152-
"\07\0e" ;; export section 0x0e bytes
153-
"\01" ;; 1 count
231+
"\07\1b" ;; export section 0x1b bytes
232+
"\02" ;; 2 count
154233
"\0ai64.add128\00\00" ;; "i64.add128" which is function 0
234+
"\0ai64.sub128\00\01" ;; "i64.sub128" which is function 1
155235

156-
"\0a\10" ;; code section, 16 bytes
157-
"\01" ;; 1 count
236+
"\0a\1e" ;; code section + byte length (30 bytes = 0x1e)
237+
"\02" ;; 2 count
158238

159239
"\0e" ;; byte length
160240
"\00" ;; no locals
@@ -164,12 +244,25 @@
164244
"\20\03" ;; local.get 3
165245
"\fc\93\80\00" ;; i64.add128 (overlong)
166246
"\0b" ;; end
247+
248+
"\0d" ;; byte length
249+
"\00" ;; no locals
250+
"\20\00" ;; local.get 0
251+
"\20\01" ;; local.get 1
252+
"\20\02" ;; local.get 2
253+
"\20\03" ;; local.get 3
254+
"\fc\94\00" ;; i64.sub128 (overlong)
255+
"\0b" ;; end
167256
)
168257

169258
(assert_return (invoke "i64.add128"
170259
(i64.const 1) (i64.const 2)
171260
(i64.const 3) (i64.const 4))
172261
(i64.const 4) (i64.const 6))
262+
(assert_return (invoke "i64.sub128"
263+
(i64.const 2) (i64.const 5)
264+
(i64.const 1) (i64.const 2))
265+
(i64.const 1) (i64.const 3))
173266

174267
;; some invalid types for these instructions
175268

@@ -211,53 +304,4 @@
211304
local.get 2
212305
i64.sub128)
213306
)
214-
"type mismatch")
215-
216-
(module binary
217-
"\00asm" "\01\00\00\00"
218-
219-
"\01\0a" ;; type section, 10 bytes
220-
"\01" ;; 1 count
221-
"\60" ;; type0 = function
222-
"\04\7e\7e\7e\7e" ;; 4 params - all i64
223-
"\02\7e\7e" ;; 2 results - both i64
224-
225-
"\03\03" ;; function section, 3 byte
226-
"\02" ;; 2 count
227-
"\00\00" ;; types of each function (0, 0)
228-
229-
"\07\1b" ;; export section 0x1b bytes
230-
"\02" ;; 2 count
231-
"\0ai64.add128\00\00" ;; "i64.add128" which is function 0
232-
"\0ai64.sub128\00\01" ;; "i64.sub128" which is function 1
233-
234-
"\0a\1e" ;; code section + byte length
235-
"\02" ;; 2 count
236-
237-
"\0e" ;; byte length
238-
"\00" ;; no locals
239-
"\20\00" ;; local.get 0
240-
"\20\01" ;; local.get 1
241-
"\20\02" ;; local.get 2
242-
"\20\03" ;; local.get 3
243-
"\fc\93\80\00" ;; i64.add128 (overlong)
244-
"\0b" ;; end
245-
246-
"\0d" ;; byte length
247-
"\00" ;; no locals
248-
"\20\00" ;; local.get 0
249-
"\20\01" ;; local.get 1
250-
"\20\02" ;; local.get 2
251-
"\20\03" ;; local.get 3
252-
"\fc\94\00" ;; i64.sub128 (overlong)
253-
"\0b" ;; end
254-
)
255-
256-
(assert_return (invoke "i64.add128"
257-
(i64.const 1) (i64.const 2)
258-
(i64.const 3) (i64.const 4))
259-
(i64.const 4) (i64.const 6))
260-
(assert_return (invoke "i64.sub128"
261-
(i64.const 2) (i64.const 5)
262-
(i64.const 1) (i64.const 2))
263-
(i64.const 1) (i64.const 3))
307+
"type mismatch")

0 commit comments

Comments
 (0)