Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
149 changes: 149 additions & 0 deletions test/core/rounding-variants.wast
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
(module
(func (export "f32.sqrt_ceil") (param $a f32) (result f32) (f32.sqrt_ceil (local.get $a)))
(func (export "f32.add_ceil") (param $a f32) (param $b f32) (result f32) (f32.add_ceil (local.get $a) (local.get $b)))
(func (export "f32.sub_ceil") (param $a f32) (param $b f32) (result f32) (f32.sub_ceil (local.get $a) (local.get $b)))
(func (export "f32.mul_ceil") (param $a f32) (param $b f32) (result f32) (f32.mul_ceil (local.get $a) (local.get $b)))
(func (export "f32.div_ceil") (param $a f32) (param $b f32) (result f32) (f32.div_ceil (local.get $a) (local.get $b)))
(func (export "f64.sqrt_ceil") (param $a f64) (result f64) (f64.sqrt_ceil (local.get $a)))
(func (export "f64.add_ceil") (param $a f64) (param $b f64) (result f64) (f64.add_ceil (local.get $a) (local.get $b)))
(func (export "f64.sub_ceil") (param $a f64) (param $b f64) (result f64) (f64.sub_ceil (local.get $a) (local.get $b)))
(func (export "f64.mul_ceil") (param $a f64) (param $b f64) (result f64) (f64.mul_ceil (local.get $a) (local.get $b)))
(func (export "f64.div_ceil") (param $a f64) (param $b f64) (result f64) (f64.div_ceil (local.get $a) (local.get $b)))
(func (export "f32.convert_ceil_i32_s") (param $a i32) (result f32) (f32.convert_ceil_i32_s (local.get $a)))
(func (export "f32.convert_ceil_i32_u") (param $a i32) (result f32) (f32.convert_ceil_i32_u (local.get $a)))
(func (export "f32.convert_ceil_i64_s") (param $a i64) (result f32) (f32.convert_ceil_i64_s (local.get $a)))
(func (export "f32.convert_ceil_i64_u") (param $a i64) (result f32) (f32.convert_ceil_i64_u (local.get $a)))
(func (export "f32.demote_ceil_f64") (param $a f64) (result f32) (f32.demote_ceil_f64 (local.get $a)))
(func (export "f64.convert_ceil_i32_s") (param $a i32) (result f64) (f64.convert_ceil_i32_s (local.get $a)))
(func (export "f64.convert_ceil_i32_u") (param $a i32) (result f64) (f64.convert_ceil_i32_u (local.get $a)))
(func (export "f64.convert_ceil_i64_s") (param $a i64) (result f64) (f64.convert_ceil_i64_s (local.get $a)))
(func (export "f64.convert_ceil_i64_u") (param $a i64) (result f64) (f64.convert_ceil_i64_u (local.get $a)))
(func (export "f64.promote_ceil_f32") (param $a f32) (result f64) (f64.promote_ceil_f32 (local.get $a)))
(func (export "f32.sqrt_floor") (param $a f32) (result f32) (f32.sqrt_floor (local.get $a)))
(func (export "f32.add_floor") (param $a f32) (param $b f32) (result f32) (f32.add_floor (local.get $a) (local.get $b)))
(func (export "f32.sub_floor") (param $a f32) (param $b f32) (result f32) (f32.sub_floor (local.get $a) (local.get $b)))
(func (export "f32.mul_floor") (param $a f32) (param $b f32) (result f32) (f32.mul_floor (local.get $a) (local.get $b)))
(func (export "f32.div_floor") (param $a f32) (param $b f32) (result f32) (f32.div_floor (local.get $a) (local.get $b)))
(func (export "f64.sqrt_floor") (param $a f64) (result f64) (f64.sqrt_floor (local.get $a)))
(func (export "f64.add_floor") (param $a f64) (param $b f64) (result f64) (f64.add_floor (local.get $a) (local.get $b)))
(func (export "f64.sub_floor") (param $a f64) (param $b f64) (result f64) (f64.sub_floor (local.get $a) (local.get $b)))
(func (export "f64.mul_floor") (param $a f64) (param $b f64) (result f64) (f64.mul_floor (local.get $a) (local.get $b)))
(func (export "f64.div_floor") (param $a f64) (param $b f64) (result f64) (f64.div_floor (local.get $a) (local.get $b)))
(func (export "f32.convert_floor_i32_s") (param $a i32) (result f32) (f32.convert_floor_i32_s (local.get $a)))
(func (export "f32.convert_floor_i32_u") (param $a i32) (result f32) (f32.convert_floor_i32_u (local.get $a)))
(func (export "f32.convert_floor_i64_s") (param $a i64) (result f32) (f32.convert_floor_i64_s (local.get $a)))
(func (export "f32.convert_floor_i64_u") (param $a i64) (result f32) (f32.convert_floor_i64_u (local.get $a)))
(func (export "f32.demote_floor_f64") (param $a f64) (result f32) (f32.demote_floor_f64 (local.get $a)))
(func (export "f64.convert_floor_i32_s") (param $a i32) (result f64) (f64.convert_floor_i32_s (local.get $a)))
(func (export "f64.convert_floor_i32_u") (param $a i32) (result f64) (f64.convert_floor_i32_u (local.get $a)))
(func (export "f64.convert_floor_i64_s") (param $a i64) (result f64) (f64.convert_floor_i64_s (local.get $a)))
(func (export "f64.convert_floor_i64_u") (param $a i64) (result f64) (f64.convert_floor_i64_u (local.get $a)))
(func (export "f64.promote_floor_f32") (param $a f32) (result f64) (f64.promote_floor_f32 (local.get $a)))
(func (export "f32.sqrt_trunc") (param $a f32) (result f32) (f32.sqrt_trunc (local.get $a)))
(func (export "f32.add_trunc") (param $a f32) (param $b f32) (result f32) (f32.add_trunc (local.get $a) (local.get $b)))
(func (export "f32.sub_trunc") (param $a f32) (param $b f32) (result f32) (f32.sub_trunc (local.get $a) (local.get $b)))
(func (export "f32.mul_trunc") (param $a f32) (param $b f32) (result f32) (f32.mul_trunc (local.get $a) (local.get $b)))
(func (export "f32.div_trunc") (param $a f32) (param $b f32) (result f32) (f32.div_trunc (local.get $a) (local.get $b)))
(func (export "f64.sqrt_trunc") (param $a f64) (result f64) (f64.sqrt_trunc (local.get $a)))
(func (export "f64.add_trunc") (param $a f64) (param $b f64) (result f64) (f64.add_trunc (local.get $a) (local.get $b)))
(func (export "f64.sub_trunc") (param $a f64) (param $b f64) (result f64) (f64.sub_trunc (local.get $a) (local.get $b)))
(func (export "f64.mul_trunc") (param $a f64) (param $b f64) (result f64) (f64.mul_trunc (local.get $a) (local.get $b)))
(func (export "f64.div_trunc") (param $a f64) (param $b f64) (result f64) (f64.div_trunc (local.get $a) (local.get $b)))
(func (export "f32.convert_trunc_i32_s") (param $a i32) (result f32) (f32.convert_trunc_i32_s (local.get $a)))
(func (export "f32.convert_trunc_i32_u") (param $a i32) (result f32) (f32.convert_trunc_i32_u (local.get $a)))
(func (export "f32.convert_trunc_i64_s") (param $a i64) (result f32) (f32.convert_trunc_i64_s (local.get $a)))
(func (export "f32.convert_trunc_i64_u") (param $a i64) (result f32) (f32.convert_trunc_i64_u (local.get $a)))
(func (export "f32.demote_trunc_f64") (param $a f64) (result f32) (f32.demote_trunc_f64 (local.get $a)))
(func (export "f64.convert_trunc_i32_s") (param $a i32) (result f64) (f64.convert_trunc_i32_s (local.get $a)))
(func (export "f64.convert_trunc_i32_u") (param $a i32) (result f64) (f64.convert_trunc_i32_u (local.get $a)))
(func (export "f64.convert_trunc_i64_s") (param $a i64) (result f64) (f64.convert_trunc_i64_s (local.get $a)))
(func (export "f64.convert_trunc_i64_u") (param $a i64) (result f64) (f64.convert_trunc_i64_u (local.get $a)))
(func (export "f64.promote_trunc_f32") (param $a f32) (result f64) (f64.promote_trunc_f32 (local.get $a)))
)

(assert_return (invoke "f64.sqrt_ceil" (f64.const 0x1.fffffffffffffp1023)) (f64.const 0x1p512))
(assert_return (invoke "f64.sqrt_ceil" (f64.const 0x1.ffffffffffffep1023)) (f64.const 0x1.fffffffffffffp511))
(assert_return (invoke "f32.convert_ceil_i32_s" (i32.const -1)) (f32.const -0x1p0))
(assert_return (invoke "f32.convert_ceil_i32_s" (i32.const 2147483647)) (f32.const 0x1p31))
(assert_return (invoke "f32.convert_ceil_i64_s" (i64.const 2251799817879552)) (f32.const 0x1.000002p51))
(assert_return (invoke "f32.convert_ceil_i64_s" (i64.const -9221120237036896256)) (f32.const -0x1.ffdffep62))
(assert_return (invoke "f64.convert_ceil_i64_s" (i64.const -9221120237036896256)) (f64.const -0x1.ffdfffffffp62))
(assert_return (invoke "f64.convert_ceil_i64_s" (i64.const 9223372036854775807)) (f64.const 0x1p63))
(assert_return (invoke "f64.convert_ceil_i64_u" (i64.const -9221120237036896256)) (f64.const 0x1.00100000008p63))
(assert_return (invoke "f64.convert_ceil_i64_u" (i64.const 9223372036854775807)) (f64.const 0x1p63))
(assert_return (invoke "f64.sqrt_floor" (f64.const 0x1.ffffffffffffdp1023)) (f64.const 0x1.ffffffffffffep511))
(assert_return (invoke "f64.sqrt_floor" (f64.const 0x1.fffffffffffffp1023)) (f64.const 0x1.fffffffffffffp511))
(assert_return (invoke "f64.add_floor" (f64.const 0x1.f333333333338p-983) (f64.const 0x1.3262a3d08p-1036)) (f64.const 0x1.f333333333338p-983))
(assert_return (invoke "f64.add_floor" (f64.const -0x1.39dee72a8b9f5p527) (f64.const -0x1.fffffffffffffp1023)) (f64.const -inf))
(assert_return (invoke "f64.add_floor" (f64.const 0x1.9738b89bc6e7fp-972) (f64.const 0x1.f333333333338p-983)) (f64.const 0x1.97771f022d4e5p-972))
(assert_return (invoke "f64.add_floor" (f64.const -0x1.39dee72a8b9f5p527) (f64.const -0x1.fffffffffffffp1023)) (f64.const -inf))
(assert_return (invoke "f64.sub_floor" (f64.const 0x1p-1074) (f64.const 0x1.ffffffffffffdp1023)) (f64.const -0x1.ffffffffffffdp1023))
(assert_return (invoke "f64.sub_floor" (f64.const -0x1.2d0a2c4f1323ap-535) (f64.const 0x1.fffffffffffffp1023)) (f64.const -inf))
(assert_return (invoke "f64.convert_floor_i64_s" (i64.const -4611686293305294848)) (f64.const -0x1.000001p62))
(assert_return (invoke "f64.convert_floor_i64_s" (i64.const -4611694814520410111)) (f64.const -0x1.00002p62))
(assert_return (invoke "f32.add_trunc" (f32.const -0x1.84153ep-52) (f32.const -0x1.2fe95p-72)) (f32.const -0x1.84155p-52))
(assert_return (invoke "f32.add_trunc" (f32.const -0x1.84153ep-52) (f32.const 0x1.7f3bccp-25)) (f32.const 0x1.7f3bcap-25))
(assert_return (invoke "f32.sub_trunc" (f32.const 0x1p-149) (f32.const 0x1.7a6bcap-3)) (f32.const -0x1.7a6bc8p-3))
(assert_return (invoke "f32.sub_trunc" (f32.const 0x1p-149) (f32.const -0x1p1)) (f32.const 0x1p1))
(assert_return (invoke "f32.mul_trunc" (f32.const 0x1p-149) (f32.const -0x1.84153ep-52)) (f32.const -0x0p+0))
(assert_return (invoke "f32.mul_trunc" (f32.const 0x1p-149) (f32.const 0x1.000002p0)) (f32.const 0x1p-149))
(assert_return (invoke "f32.div_trunc" (f32.const 0x1.7p-145) (f32.const 0x1.cep-142)) (f32.const 0x1.97d3aap-4))
(assert_return (invoke "f32.div_trunc" (f32.const 0x1p-149) (f32.const -0x1.a3d70ap-15)) (f32.const -0x1.383p-135))
(assert_return (invoke "f64.add_trunc" (f64.const -0x1.2d0a2c4f1323ap-535) (f64.const 0x1p0)) (f64.const 0x1.fffffffffffffp-1))
(assert_return (invoke "f64.add_trunc" (f64.const -0x1.39dee72a8b9f5p527) (f64.const -0x1.fffffffffffffp1023)) (f64.const -0x1.fffffffffffffp1023))
(assert_return (invoke "f64.sub_trunc" (f64.const 0x1p-1074) (f64.const 0x1p0)) (f64.const -0x1.fffffffffffffp-1))
(assert_return (invoke "f64.sub_trunc" (f64.const 0x1p0) (f64.const 0x1.4ccccccccccccp-921)) (f64.const 0x1.fffffffffffffp-1))
(assert_return (invoke "f64.mul_trunc" (f64.const -0x1.39dee72a8b9f5p527) (f64.const -0x1.39dee72a8b9f5p527)) (f64.const 0x1.fffffffffffffp1023))
(assert_return (invoke "f64.mul_trunc" (f64.const -0x1.39dee72a8b9f5p527) (f64.const 0x1.3ec7a13ca219bp809)) (f64.const -0x1.fffffffffffffp1023))
(assert_return (invoke "f64.div_trunc" (f64.const -0x1.39dee72a8b9f5p527) (f64.const 0x1p-1074)) (f64.const -0x1.fffffffffffffp1023))
(assert_return (invoke "f64.div_trunc" (f64.const 0x1.3ec7a13ca219bp809) (f64.const 0x1p-1074)) (f64.const 0x1.fffffffffffffp1023))
(assert_return (invoke "f32.convert_trunc_i32_s" (i32.const 1073741823)) (f32.const 0x1.fffffep29))
(assert_return (invoke "f32.convert_trunc_i32_s" (i32.const -1073741825)) (f32.const -0x1p30))
(assert_return (invoke "f32.convert_trunc_i64_s" (i64.const 1923660277)) (f32.const 0x1.caa2e6p30))
(assert_return (invoke "f32.convert_trunc_i64_s" (i64.const -9223372036854775807)) (f32.const -0x0.ffffffp63))
(assert_return (invoke "f32.demote_trunc_f64" (f64.const 0x1.d50afcab2f9p44)) (f32.const 0x1.d50afcp44))
(assert_return (invoke "f32.demote_trunc_f64" (f64.const -0x1.d50afcab2f9p44)) (f32.const -0x1.d50afcp44))
(assert_return (invoke "f64.convert_trunc_i64_s" (i64.const -9223372036854775807)) (f64.const -0x0.fffffffffffff8p63))
(assert_return (invoke "f64.convert_trunc_i64_s" (i64.const 9223372036854775806)) (f64.const 0x0.fffffffffffff8p63))

(assert_return (invoke "f32.sqrt_ceil" (f32.const 0x1p-149)) (f32.const 0x1.6a09e8p-75))
(assert_return (invoke "f32.add_ceil" (f32.const 0x1.fffffcp-127) (f32.const 0x1.7a6bcap-3)) (f32.const 0x1.7a6bccp-3))
(assert_return (invoke "f32.sub_ceil" (f32.const 0x1p-149) (f32.const -0x0.ffffffp1)) (f32.const 0x1p1))
(assert_return (invoke "f32.mul_ceil" (f32.const 0x1p-149) (f32.const 0x1.000002p0)) (f32.const 0x1p-148))
(assert_return (invoke "f32.div_ceil" (f32.const 0x1p-149) (f32.const 0x1.fffffcp-127)) (f32.const 0x1.000004p-23))
(assert_return (invoke "f64.add_ceil" (f64.const 0x1.7a6bca5c20a9fp-3) (f64.const 0x1.fffffffffffffp1023)) (f64.const inf))
(assert_return (invoke "f64.sub_ceil" (f64.const 0x1.7a6bca5c20a9fp-3) (f64.const -0x1.fffffffffffffp1023)) (f64.const inf))
(assert_return (invoke "f64.mul_ceil" (f64.const 0x1p-1074) (f64.const 0x1.9e3779b97f4a8p0)) (f64.const 0x1p-1073))
(assert_return (invoke "f64.div_ceil" (f64.const 0x1p-1074) (f64.const 0x1.7a6bca5c20a9fp-3)) (f64.const 0x1.8p-1072))
(assert_return (invoke "f32.convert_ceil_i32_u" (i32.const -1)) (f32.const 0x1p32))
(assert_return (invoke "f32.convert_ceil_i64_u" (i64.const -9223372036854775807)) (f32.const 0x1.000002p63))
(assert_return (invoke "f32.demote_ceil_f64" (f64.const 0x1.fffffcp-1052)) (f32.const 0x1p-149))
(assert_return (invoke "f64.convert_ceil_i32_s" (i32.const -1073741825)) (f64.const -0x1.00000004p30))
(assert_return (invoke "f64.convert_ceil_i32_u" (i32.const -1)) (f64.const 0x1.fffffffep31))
(assert_return (invoke "f64.promote_ceil_f32" (f32.const 0x1.7a6bcap-3)) (f64.const 0x1.7a6bcap-3))
(assert_return (invoke "f32.sqrt_floor" (f32.const 0x1p-149)) (f32.const 0x1.6a09e6p-75))
(assert_return (invoke "f32.add_floor" (f32.const 0x1p-149) (f32.const -0x0.ffffffp1)) (f32.const -0x0.ffffffp1))
(assert_return (invoke "f32.sub_floor" (f32.const 0x1p-149) (f32.const 0x1.7a6bcap-3)) (f32.const -0x1.7a6bcap-3))
(assert_return (invoke "f32.mul_floor" (f32.const 0x1p-149) (f32.const -0x0.ffffffp1)) (f32.const -0x1p-148))
(assert_return (invoke "f32.div_floor" (f32.const 0x1p-149) (f32.const -0x1p1)) (f32.const -0x1p-149))
(assert_return (invoke "f64.mul_floor" (f64.const 0x1.3504f333f9de6p1) (f64.const -0x1.ffffffffffffdp1023)) (f64.const -inf))
(assert_return (invoke "f64.div_floor" (f64.const 0x1.7a6bca5c20a9fp-3) (f64.const -0x1.f1e9af28p-1045)) (f64.const -inf))
(assert_return (invoke "f32.convert_floor_i32_s" (i32.const -1073741825)) (f32.const -0x1.000002p30))
(assert_return (invoke "f32.convert_floor_i32_u" (i32.const -1)) (f32.const 0x1.fffffep31))
(assert_return (invoke "f32.convert_floor_i64_s" (i64.const -9223372036854775807)) (f32.const -0x1p63))
(assert_return (invoke "f32.convert_floor_i64_u" (i64.const -9223372036854775807)) (f32.const 0x1p63))
(assert_return (invoke "f32.demote_floor_f64" (f64.const -0x1p-1074)) (f32.const -0x1p-149))
(assert_return (invoke "f64.convert_floor_i64_u" (i64.const -4503599627370499)) (f64.const 0x1.ffdffffffffffp63))

(assert_return (invoke "f64.convert_floor_i32_s" (i32.const -1073741825)) (f64.const -0x1.00000004p30))
(assert_return (invoke "f64.convert_floor_i32_u" (i32.const -1)) (f64.const 0x1.fffffffep31))
(assert_return (invoke "f64.promote_floor_f32" (f32.const 0x1.7a6bcap-3)) (f64.const 0x1.7a6bcap-3))
(assert_return (invoke "f32.sqrt_trunc" (f32.const 0x1p-149)) (f32.const 0x1.6a09e6p-75))
(assert_return (invoke "f64.sqrt_trunc" (f64.const 0x1.ffffffffffffdp1023)) (f64.const 0x1.ffffffffffffep511))
(assert_return (invoke "f64.sqrt_trunc" (f64.const 0x1.fffffffffffffp1023)) (f64.const 0x1.fffffffffffffp511))
(assert_return (invoke "f32.convert_trunc_i32_u" (i32.const -1)) (f32.const 0x1.fffffep31))
(assert_return (invoke "f32.convert_trunc_i64_u" (i64.const -9223372036854775807)) (f32.const 0x1p63))
(assert_return (invoke "f64.convert_trunc_i32_s" (i32.const -1073741825)) (f64.const -0x1.00000004p30))
(assert_return (invoke "f64.convert_trunc_i32_u" (i32.const -1)) (f64.const 0x1.fffffffep31))
(assert_return (invoke "f64.convert_trunc_i64_u" (i64.const -4503599627370499)) (f64.const 0x1.ffdffffffffffp63))
(assert_return (invoke "f64.promote_trunc_f32" (f32.const 0x1.7a6bcap-3)) (f64.const 0x1.7a6bcap-3))
Loading