Skip to content

Commit 239dcdc

Browse files
authored
Merge pull request #11 from whirlicote/minimal-testcases
add test cases for rounding variants
2 parents 637cb43 + b6fa245 commit 239dcdc

File tree

1 file changed

+149
-0
lines changed

1 file changed

+149
-0
lines changed

test/core/rounding-variants.wast

Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
(module
2+
(func (export "f32.sqrt_ceil") (param $a f32) (result f32) (f32.sqrt_ceil (local.get $a)))
3+
(func (export "f32.add_ceil") (param $a f32) (param $b f32) (result f32) (f32.add_ceil (local.get $a) (local.get $b)))
4+
(func (export "f32.sub_ceil") (param $a f32) (param $b f32) (result f32) (f32.sub_ceil (local.get $a) (local.get $b)))
5+
(func (export "f32.mul_ceil") (param $a f32) (param $b f32) (result f32) (f32.mul_ceil (local.get $a) (local.get $b)))
6+
(func (export "f32.div_ceil") (param $a f32) (param $b f32) (result f32) (f32.div_ceil (local.get $a) (local.get $b)))
7+
(func (export "f64.sqrt_ceil") (param $a f64) (result f64) (f64.sqrt_ceil (local.get $a)))
8+
(func (export "f64.add_ceil") (param $a f64) (param $b f64) (result f64) (f64.add_ceil (local.get $a) (local.get $b)))
9+
(func (export "f64.sub_ceil") (param $a f64) (param $b f64) (result f64) (f64.sub_ceil (local.get $a) (local.get $b)))
10+
(func (export "f64.mul_ceil") (param $a f64) (param $b f64) (result f64) (f64.mul_ceil (local.get $a) (local.get $b)))
11+
(func (export "f64.div_ceil") (param $a f64) (param $b f64) (result f64) (f64.div_ceil (local.get $a) (local.get $b)))
12+
(func (export "f32.convert_ceil_i32_s") (param $a i32) (result f32) (f32.convert_ceil_i32_s (local.get $a)))
13+
(func (export "f32.convert_ceil_i32_u") (param $a i32) (result f32) (f32.convert_ceil_i32_u (local.get $a)))
14+
(func (export "f32.convert_ceil_i64_s") (param $a i64) (result f32) (f32.convert_ceil_i64_s (local.get $a)))
15+
(func (export "f32.convert_ceil_i64_u") (param $a i64) (result f32) (f32.convert_ceil_i64_u (local.get $a)))
16+
(func (export "f32.demote_ceil_f64") (param $a f64) (result f32) (f32.demote_ceil_f64 (local.get $a)))
17+
(func (export "f64.convert_ceil_i32_s") (param $a i32) (result f64) (f64.convert_ceil_i32_s (local.get $a)))
18+
(func (export "f64.convert_ceil_i32_u") (param $a i32) (result f64) (f64.convert_ceil_i32_u (local.get $a)))
19+
(func (export "f64.convert_ceil_i64_s") (param $a i64) (result f64) (f64.convert_ceil_i64_s (local.get $a)))
20+
(func (export "f64.convert_ceil_i64_u") (param $a i64) (result f64) (f64.convert_ceil_i64_u (local.get $a)))
21+
(func (export "f64.promote_ceil_f32") (param $a f32) (result f64) (f64.promote_ceil_f32 (local.get $a)))
22+
(func (export "f32.sqrt_floor") (param $a f32) (result f32) (f32.sqrt_floor (local.get $a)))
23+
(func (export "f32.add_floor") (param $a f32) (param $b f32) (result f32) (f32.add_floor (local.get $a) (local.get $b)))
24+
(func (export "f32.sub_floor") (param $a f32) (param $b f32) (result f32) (f32.sub_floor (local.get $a) (local.get $b)))
25+
(func (export "f32.mul_floor") (param $a f32) (param $b f32) (result f32) (f32.mul_floor (local.get $a) (local.get $b)))
26+
(func (export "f32.div_floor") (param $a f32) (param $b f32) (result f32) (f32.div_floor (local.get $a) (local.get $b)))
27+
(func (export "f64.sqrt_floor") (param $a f64) (result f64) (f64.sqrt_floor (local.get $a)))
28+
(func (export "f64.add_floor") (param $a f64) (param $b f64) (result f64) (f64.add_floor (local.get $a) (local.get $b)))
29+
(func (export "f64.sub_floor") (param $a f64) (param $b f64) (result f64) (f64.sub_floor (local.get $a) (local.get $b)))
30+
(func (export "f64.mul_floor") (param $a f64) (param $b f64) (result f64) (f64.mul_floor (local.get $a) (local.get $b)))
31+
(func (export "f64.div_floor") (param $a f64) (param $b f64) (result f64) (f64.div_floor (local.get $a) (local.get $b)))
32+
(func (export "f32.convert_floor_i32_s") (param $a i32) (result f32) (f32.convert_floor_i32_s (local.get $a)))
33+
(func (export "f32.convert_floor_i32_u") (param $a i32) (result f32) (f32.convert_floor_i32_u (local.get $a)))
34+
(func (export "f32.convert_floor_i64_s") (param $a i64) (result f32) (f32.convert_floor_i64_s (local.get $a)))
35+
(func (export "f32.convert_floor_i64_u") (param $a i64) (result f32) (f32.convert_floor_i64_u (local.get $a)))
36+
(func (export "f32.demote_floor_f64") (param $a f64) (result f32) (f32.demote_floor_f64 (local.get $a)))
37+
(func (export "f64.convert_floor_i32_s") (param $a i32) (result f64) (f64.convert_floor_i32_s (local.get $a)))
38+
(func (export "f64.convert_floor_i32_u") (param $a i32) (result f64) (f64.convert_floor_i32_u (local.get $a)))
39+
(func (export "f64.convert_floor_i64_s") (param $a i64) (result f64) (f64.convert_floor_i64_s (local.get $a)))
40+
(func (export "f64.convert_floor_i64_u") (param $a i64) (result f64) (f64.convert_floor_i64_u (local.get $a)))
41+
(func (export "f64.promote_floor_f32") (param $a f32) (result f64) (f64.promote_floor_f32 (local.get $a)))
42+
(func (export "f32.sqrt_trunc") (param $a f32) (result f32) (f32.sqrt_trunc (local.get $a)))
43+
(func (export "f32.add_trunc") (param $a f32) (param $b f32) (result f32) (f32.add_trunc (local.get $a) (local.get $b)))
44+
(func (export "f32.sub_trunc") (param $a f32) (param $b f32) (result f32) (f32.sub_trunc (local.get $a) (local.get $b)))
45+
(func (export "f32.mul_trunc") (param $a f32) (param $b f32) (result f32) (f32.mul_trunc (local.get $a) (local.get $b)))
46+
(func (export "f32.div_trunc") (param $a f32) (param $b f32) (result f32) (f32.div_trunc (local.get $a) (local.get $b)))
47+
(func (export "f64.sqrt_trunc") (param $a f64) (result f64) (f64.sqrt_trunc (local.get $a)))
48+
(func (export "f64.add_trunc") (param $a f64) (param $b f64) (result f64) (f64.add_trunc (local.get $a) (local.get $b)))
49+
(func (export "f64.sub_trunc") (param $a f64) (param $b f64) (result f64) (f64.sub_trunc (local.get $a) (local.get $b)))
50+
(func (export "f64.mul_trunc") (param $a f64) (param $b f64) (result f64) (f64.mul_trunc (local.get $a) (local.get $b)))
51+
(func (export "f64.div_trunc") (param $a f64) (param $b f64) (result f64) (f64.div_trunc (local.get $a) (local.get $b)))
52+
(func (export "f32.convert_trunc_i32_s") (param $a i32) (result f32) (f32.convert_trunc_i32_s (local.get $a)))
53+
(func (export "f32.convert_trunc_i32_u") (param $a i32) (result f32) (f32.convert_trunc_i32_u (local.get $a)))
54+
(func (export "f32.convert_trunc_i64_s") (param $a i64) (result f32) (f32.convert_trunc_i64_s (local.get $a)))
55+
(func (export "f32.convert_trunc_i64_u") (param $a i64) (result f32) (f32.convert_trunc_i64_u (local.get $a)))
56+
(func (export "f32.demote_trunc_f64") (param $a f64) (result f32) (f32.demote_trunc_f64 (local.get $a)))
57+
(func (export "f64.convert_trunc_i32_s") (param $a i32) (result f64) (f64.convert_trunc_i32_s (local.get $a)))
58+
(func (export "f64.convert_trunc_i32_u") (param $a i32) (result f64) (f64.convert_trunc_i32_u (local.get $a)))
59+
(func (export "f64.convert_trunc_i64_s") (param $a i64) (result f64) (f64.convert_trunc_i64_s (local.get $a)))
60+
(func (export "f64.convert_trunc_i64_u") (param $a i64) (result f64) (f64.convert_trunc_i64_u (local.get $a)))
61+
(func (export "f64.promote_trunc_f32") (param $a f32) (result f64) (f64.promote_trunc_f32 (local.get $a)))
62+
)
63+
64+
(assert_return (invoke "f64.sqrt_ceil" (f64.const 0x1.fffffffffffffp1023)) (f64.const 0x1p512))
65+
(assert_return (invoke "f64.sqrt_ceil" (f64.const 0x1.ffffffffffffep1023)) (f64.const 0x1.fffffffffffffp511))
66+
(assert_return (invoke "f32.convert_ceil_i32_s" (i32.const -1)) (f32.const -0x1p0))
67+
(assert_return (invoke "f32.convert_ceil_i32_s" (i32.const 2147483647)) (f32.const 0x1p31))
68+
(assert_return (invoke "f32.convert_ceil_i64_s" (i64.const 2251799817879552)) (f32.const 0x1.000002p51))
69+
(assert_return (invoke "f32.convert_ceil_i64_s" (i64.const -9221120237036896256)) (f32.const -0x1.ffdffep62))
70+
(assert_return (invoke "f64.convert_ceil_i64_s" (i64.const -9221120237036896256)) (f64.const -0x1.ffdfffffffp62))
71+
(assert_return (invoke "f64.convert_ceil_i64_s" (i64.const 9223372036854775807)) (f64.const 0x1p63))
72+
(assert_return (invoke "f64.convert_ceil_i64_u" (i64.const -9221120237036896256)) (f64.const 0x1.00100000008p63))
73+
(assert_return (invoke "f64.convert_ceil_i64_u" (i64.const 9223372036854775807)) (f64.const 0x1p63))
74+
(assert_return (invoke "f64.sqrt_floor" (f64.const 0x1.ffffffffffffdp1023)) (f64.const 0x1.ffffffffffffep511))
75+
(assert_return (invoke "f64.sqrt_floor" (f64.const 0x1.fffffffffffffp1023)) (f64.const 0x1.fffffffffffffp511))
76+
(assert_return (invoke "f64.add_floor" (f64.const 0x1.f333333333338p-983) (f64.const 0x1.3262a3d08p-1036)) (f64.const 0x1.f333333333338p-983))
77+
(assert_return (invoke "f64.add_floor" (f64.const -0x1.39dee72a8b9f5p527) (f64.const -0x1.fffffffffffffp1023)) (f64.const -inf))
78+
(assert_return (invoke "f64.add_floor" (f64.const 0x1.9738b89bc6e7fp-972) (f64.const 0x1.f333333333338p-983)) (f64.const 0x1.97771f022d4e5p-972))
79+
(assert_return (invoke "f64.add_floor" (f64.const -0x1.39dee72a8b9f5p527) (f64.const -0x1.fffffffffffffp1023)) (f64.const -inf))
80+
(assert_return (invoke "f64.sub_floor" (f64.const 0x1p-1074) (f64.const 0x1.ffffffffffffdp1023)) (f64.const -0x1.ffffffffffffdp1023))
81+
(assert_return (invoke "f64.sub_floor" (f64.const -0x1.2d0a2c4f1323ap-535) (f64.const 0x1.fffffffffffffp1023)) (f64.const -inf))
82+
(assert_return (invoke "f64.convert_floor_i64_s" (i64.const -4611686293305294848)) (f64.const -0x1.000001p62))
83+
(assert_return (invoke "f64.convert_floor_i64_s" (i64.const -4611694814520410111)) (f64.const -0x1.00002p62))
84+
(assert_return (invoke "f32.add_trunc" (f32.const -0x1.84153ep-52) (f32.const -0x1.2fe95p-72)) (f32.const -0x1.84155p-52))
85+
(assert_return (invoke "f32.add_trunc" (f32.const -0x1.84153ep-52) (f32.const 0x1.7f3bccp-25)) (f32.const 0x1.7f3bcap-25))
86+
(assert_return (invoke "f32.sub_trunc" (f32.const 0x1p-149) (f32.const 0x1.7a6bcap-3)) (f32.const -0x1.7a6bc8p-3))
87+
(assert_return (invoke "f32.sub_trunc" (f32.const 0x1p-149) (f32.const -0x1p1)) (f32.const 0x1p1))
88+
(assert_return (invoke "f32.mul_trunc" (f32.const 0x1p-149) (f32.const -0x1.84153ep-52)) (f32.const -0x0p+0))
89+
(assert_return (invoke "f32.mul_trunc" (f32.const 0x1p-149) (f32.const 0x1.000002p0)) (f32.const 0x1p-149))
90+
(assert_return (invoke "f32.div_trunc" (f32.const 0x1.7p-145) (f32.const 0x1.cep-142)) (f32.const 0x1.97d3aap-4))
91+
(assert_return (invoke "f32.div_trunc" (f32.const 0x1p-149) (f32.const -0x1.a3d70ap-15)) (f32.const -0x1.383p-135))
92+
(assert_return (invoke "f64.add_trunc" (f64.const -0x1.2d0a2c4f1323ap-535) (f64.const 0x1p0)) (f64.const 0x1.fffffffffffffp-1))
93+
(assert_return (invoke "f64.add_trunc" (f64.const -0x1.39dee72a8b9f5p527) (f64.const -0x1.fffffffffffffp1023)) (f64.const -0x1.fffffffffffffp1023))
94+
(assert_return (invoke "f64.sub_trunc" (f64.const 0x1p-1074) (f64.const 0x1p0)) (f64.const -0x1.fffffffffffffp-1))
95+
(assert_return (invoke "f64.sub_trunc" (f64.const 0x1p0) (f64.const 0x1.4ccccccccccccp-921)) (f64.const 0x1.fffffffffffffp-1))
96+
(assert_return (invoke "f64.mul_trunc" (f64.const -0x1.39dee72a8b9f5p527) (f64.const -0x1.39dee72a8b9f5p527)) (f64.const 0x1.fffffffffffffp1023))
97+
(assert_return (invoke "f64.mul_trunc" (f64.const -0x1.39dee72a8b9f5p527) (f64.const 0x1.3ec7a13ca219bp809)) (f64.const -0x1.fffffffffffffp1023))
98+
(assert_return (invoke "f64.div_trunc" (f64.const -0x1.39dee72a8b9f5p527) (f64.const 0x1p-1074)) (f64.const -0x1.fffffffffffffp1023))
99+
(assert_return (invoke "f64.div_trunc" (f64.const 0x1.3ec7a13ca219bp809) (f64.const 0x1p-1074)) (f64.const 0x1.fffffffffffffp1023))
100+
(assert_return (invoke "f32.convert_trunc_i32_s" (i32.const 1073741823)) (f32.const 0x1.fffffep29))
101+
(assert_return (invoke "f32.convert_trunc_i32_s" (i32.const -1073741825)) (f32.const -0x1p30))
102+
(assert_return (invoke "f32.convert_trunc_i64_s" (i64.const 1923660277)) (f32.const 0x1.caa2e6p30))
103+
(assert_return (invoke "f32.convert_trunc_i64_s" (i64.const -9223372036854775807)) (f32.const -0x0.ffffffp63))
104+
(assert_return (invoke "f32.demote_trunc_f64" (f64.const 0x1.d50afcab2f9p44)) (f32.const 0x1.d50afcp44))
105+
(assert_return (invoke "f32.demote_trunc_f64" (f64.const -0x1.d50afcab2f9p44)) (f32.const -0x1.d50afcp44))
106+
(assert_return (invoke "f64.convert_trunc_i64_s" (i64.const -9223372036854775807)) (f64.const -0x0.fffffffffffff8p63))
107+
(assert_return (invoke "f64.convert_trunc_i64_s" (i64.const 9223372036854775806)) (f64.const 0x0.fffffffffffff8p63))
108+
109+
(assert_return (invoke "f32.sqrt_ceil" (f32.const 0x1p-149)) (f32.const 0x1.6a09e8p-75))
110+
(assert_return (invoke "f32.add_ceil" (f32.const 0x1.fffffcp-127) (f32.const 0x1.7a6bcap-3)) (f32.const 0x1.7a6bccp-3))
111+
(assert_return (invoke "f32.sub_ceil" (f32.const 0x1p-149) (f32.const -0x0.ffffffp1)) (f32.const 0x1p1))
112+
(assert_return (invoke "f32.mul_ceil" (f32.const 0x1p-149) (f32.const 0x1.000002p0)) (f32.const 0x1p-148))
113+
(assert_return (invoke "f32.div_ceil" (f32.const 0x1p-149) (f32.const 0x1.fffffcp-127)) (f32.const 0x1.000004p-23))
114+
(assert_return (invoke "f64.add_ceil" (f64.const 0x1.7a6bca5c20a9fp-3) (f64.const 0x1.fffffffffffffp1023)) (f64.const inf))
115+
(assert_return (invoke "f64.sub_ceil" (f64.const 0x1.7a6bca5c20a9fp-3) (f64.const -0x1.fffffffffffffp1023)) (f64.const inf))
116+
(assert_return (invoke "f64.mul_ceil" (f64.const 0x1p-1074) (f64.const 0x1.9e3779b97f4a8p0)) (f64.const 0x1p-1073))
117+
(assert_return (invoke "f64.div_ceil" (f64.const 0x1p-1074) (f64.const 0x1.7a6bca5c20a9fp-3)) (f64.const 0x1.8p-1072))
118+
(assert_return (invoke "f32.convert_ceil_i32_u" (i32.const -1)) (f32.const 0x1p32))
119+
(assert_return (invoke "f32.convert_ceil_i64_u" (i64.const -9223372036854775807)) (f32.const 0x1.000002p63))
120+
(assert_return (invoke "f32.demote_ceil_f64" (f64.const 0x1.fffffcp-1052)) (f32.const 0x1p-149))
121+
(assert_return (invoke "f64.convert_ceil_i32_s" (i32.const -1073741825)) (f64.const -0x1.00000004p30))
122+
(assert_return (invoke "f64.convert_ceil_i32_u" (i32.const -1)) (f64.const 0x1.fffffffep31))
123+
(assert_return (invoke "f64.promote_ceil_f32" (f32.const 0x1.7a6bcap-3)) (f64.const 0x1.7a6bcap-3))
124+
(assert_return (invoke "f32.sqrt_floor" (f32.const 0x1p-149)) (f32.const 0x1.6a09e6p-75))
125+
(assert_return (invoke "f32.add_floor" (f32.const 0x1p-149) (f32.const -0x0.ffffffp1)) (f32.const -0x0.ffffffp1))
126+
(assert_return (invoke "f32.sub_floor" (f32.const 0x1p-149) (f32.const 0x1.7a6bcap-3)) (f32.const -0x1.7a6bcap-3))
127+
(assert_return (invoke "f32.mul_floor" (f32.const 0x1p-149) (f32.const -0x0.ffffffp1)) (f32.const -0x1p-148))
128+
(assert_return (invoke "f32.div_floor" (f32.const 0x1p-149) (f32.const -0x1p1)) (f32.const -0x1p-149))
129+
(assert_return (invoke "f64.mul_floor" (f64.const 0x1.3504f333f9de6p1) (f64.const -0x1.ffffffffffffdp1023)) (f64.const -inf))
130+
(assert_return (invoke "f64.div_floor" (f64.const 0x1.7a6bca5c20a9fp-3) (f64.const -0x1.f1e9af28p-1045)) (f64.const -inf))
131+
(assert_return (invoke "f32.convert_floor_i32_s" (i32.const -1073741825)) (f32.const -0x1.000002p30))
132+
(assert_return (invoke "f32.convert_floor_i32_u" (i32.const -1)) (f32.const 0x1.fffffep31))
133+
(assert_return (invoke "f32.convert_floor_i64_s" (i64.const -9223372036854775807)) (f32.const -0x1p63))
134+
(assert_return (invoke "f32.convert_floor_i64_u" (i64.const -9223372036854775807)) (f32.const 0x1p63))
135+
(assert_return (invoke "f32.demote_floor_f64" (f64.const -0x1p-1074)) (f32.const -0x1p-149))
136+
(assert_return (invoke "f64.convert_floor_i64_u" (i64.const -4503599627370499)) (f64.const 0x1.ffdffffffffffp63))
137+
138+
(assert_return (invoke "f64.convert_floor_i32_s" (i32.const -1073741825)) (f64.const -0x1.00000004p30))
139+
(assert_return (invoke "f64.convert_floor_i32_u" (i32.const -1)) (f64.const 0x1.fffffffep31))
140+
(assert_return (invoke "f64.promote_floor_f32" (f32.const 0x1.7a6bcap-3)) (f64.const 0x1.7a6bcap-3))
141+
(assert_return (invoke "f32.sqrt_trunc" (f32.const 0x1p-149)) (f32.const 0x1.6a09e6p-75))
142+
(assert_return (invoke "f64.sqrt_trunc" (f64.const 0x1.ffffffffffffdp1023)) (f64.const 0x1.ffffffffffffep511))
143+
(assert_return (invoke "f64.sqrt_trunc" (f64.const 0x1.fffffffffffffp1023)) (f64.const 0x1.fffffffffffffp511))
144+
(assert_return (invoke "f32.convert_trunc_i32_u" (i32.const -1)) (f32.const 0x1.fffffep31))
145+
(assert_return (invoke "f32.convert_trunc_i64_u" (i64.const -9223372036854775807)) (f32.const 0x1p63))
146+
(assert_return (invoke "f64.convert_trunc_i32_s" (i32.const -1073741825)) (f64.const -0x1.00000004p30))
147+
(assert_return (invoke "f64.convert_trunc_i32_u" (i32.const -1)) (f64.const 0x1.fffffffep31))
148+
(assert_return (invoke "f64.convert_trunc_i64_u" (i64.const -4503599627370499)) (f64.const 0x1.ffdffffffffffp63))
149+
(assert_return (invoke "f64.promote_trunc_f32" (f32.const 0x1.7a6bcap-3)) (f64.const 0x1.7a6bcap-3))

0 commit comments

Comments
 (0)