diff --git a/ml-proto/test/conversions.wast b/ml-proto/test/conversions.wast index 21f60ffe24..9ac3a15575 100644 --- a/ml-proto/test/conversions.wast +++ b/ml-proto/test/conversions.wast @@ -355,6 +355,10 @@ (assert_return (invoke "f32.demote_f64" (f64.const -0x1.6972b30cfb562p+1)) (f32.const -0x1.6972b4p+1)) (assert_return (invoke "f32.demote_f64" (f64.const -0x1.bedbe4819d4c4p+112)) (f32.const -0x1.bedbe4p+112)) (assert_return (invoke "f32.demote_f64" (f64.const nan)) (f32.const nan)) +(assert_return (invoke "f32.demote_f64" (f64.const 0x1p-1022)) (f32.const 0.0)) +(assert_return (invoke "f32.demote_f64" (f64.const -0x1p-1022)) (f32.const -0.0)) +(assert_return (invoke "f32.demote_f64" (f64.const 0x0.0000000000001p-1022)) (f32.const 0.0)) +(assert_return (invoke "f32.demote_f64" (f64.const -0x0.0000000000001p-1022)) (f32.const -0.0)) (assert_return (invoke "f32.reinterpret_i32" (i32.const 0)) (f32.const 0.0)) (assert_return (invoke "f32.reinterpret_i32" (i32.const 0x80000000)) (f32.const -0.0)) diff --git a/ml-proto/test/float_literals.wast b/ml-proto/test/float_literals.wast index c062882a91..58df551bfc 100644 --- a/ml-proto/test/float_literals.wast +++ b/ml-proto/test/float_literals.wast @@ -1,4 +1,5 @@ (module + ;; f32 special values (func $f32.nan (result i32) (i32.reinterpret/f32 (f32.const nan))) (func $f32.positive_nan (result i32) (i32.reinterpret/f32 (f32.const +nan))) (func $f32.negative_nan (result i32) (i32.reinterpret/f32 (f32.const -nan))) @@ -11,17 +12,30 @@ (func $f32.infinity (result i32) (i32.reinterpret/f32 (f32.const infinity))) (func $f32.positive_infinity (result i32) (i32.reinterpret/f32 (f32.const +infinity))) (func $f32.negative_infinity (result i32) (i32.reinterpret/f32 (f32.const -infinity))) - (func $f32.zero (result i32) (i32.reinterpret/f32 (f32.const 0.0))) - (func $f32.positive_zero (result i32) (i32.reinterpret/f32 (f32.const +0.0))) - (func $f32.negative_zero (result i32) (i32.reinterpret/f32 (f32.const -0.0))) - (func $f32.decimal (result i32) (i32.reinterpret/f32 (f32.const 6.283185482e+00))) - (func $f32.hexadecimal (result i32) (i32.reinterpret/f32 (f32.const 0x1.921fb6p+2))) + + ;; f32 numbers + (func $f32.zero (result i32) (i32.reinterpret/f32 (f32.const 0x0.0p0))) + (func $f32.positive_zero (result i32) (i32.reinterpret/f32 (f32.const +0x0.0p0))) + (func $f32.negative_zero (result i32) (i32.reinterpret/f32 (f32.const -0x0.0p0))) + (func $f32.misc (result i32) (i32.reinterpret/f32 (f32.const 0x1.921fb6p+2))) (func $f32.min_positive (result i32) (i32.reinterpret/f32 (f32.const 0x1p-149))) + (func $f32.min_normal (result i32) (i32.reinterpret/f32 (f32.const 0x1p-126))) (func $f32.max_finite (result i32) (i32.reinterpret/f32 (f32.const 0x1.fffffep+127))) - (func $f32.trailing_dot (result i32) (i32.reinterpret/f32 (f32.const 1.e10))) - (func $f32.hex_trailing_dot (result i32) (i32.reinterpret/f32 (f32.const 0x1.p4))) - (func $f32.max_subnormal (result i32) (i32.reinterpret/f32 (f32.const 1.1754942106924410e-38))) + (func $f32.max_subnormal (result i32) (i32.reinterpret/f32 (f32.const 0x1.fffffcp-127))) + (func $f32.trailing_dot (result i32) (i32.reinterpret/f32 (f32.const 0x1.p10))) + + ;; f32 in decimal format + (func $f32_dec.zero (result i32) (i32.reinterpret/f32 (f32.const 0.0e0))) + (func $f32_dec.positive_zero (result i32) (i32.reinterpret/f32 (f32.const +0.0e0))) + (func $f32_dec.negative_zero (result i32) (i32.reinterpret/f32 (f32.const -0.0e0))) + (func $f32_dec.misc (result i32) (i32.reinterpret/f32 (f32.const 6.28318548202514648))) + (func $f32_dec.min_positive (result i32) (i32.reinterpret/f32 (f32.const 1.4013e-45))) + (func $f32_dec.min_normal (result i32) (i32.reinterpret/f32 (f32.const 1.1754944e-38))) + (func $f32_dec.max_subnormal (result i32) (i32.reinterpret/f32 (f32.const 1.1754942e-38))) + (func $f32_dec.max_finite (result i32) (i32.reinterpret/f32 (f32.const 3.4028234e+38))) + (func $f32_dec.trailing_dot (result i32) (i32.reinterpret/f32 (f32.const 1.e10))) + ;; f64 special values (func $f64.nan (result i64) (i64.reinterpret/f64 (f64.const nan))) (func $f64.positive_nan (result i64) (i64.reinterpret/f64 (f64.const +nan))) (func $f64.negative_nan (result i64) (i64.reinterpret/f64 (f64.const -nan))) @@ -34,16 +48,29 @@ (func $f64.infinity (result i64) (i64.reinterpret/f64 (f64.const infinity))) (func $f64.positive_infinity (result i64) (i64.reinterpret/f64 (f64.const +infinity))) (func $f64.negative_infinity (result i64) (i64.reinterpret/f64 (f64.const -infinity))) - (func $f64.zero (result i64) (i64.reinterpret/f64 (f64.const 0.0))) - (func $f64.positive_zero (result i64) (i64.reinterpret/f64 (f64.const +0.0))) - (func $f64.negative_zero (result i64) (i64.reinterpret/f64 (f64.const -0.0))) - (func $f64.decimal (result i64) (i64.reinterpret/f64 (f64.const 6.28318530717958623))) - (func $f64.hexadecimal (result i64) (i64.reinterpret/f64 (f64.const 0x1.921fb54442d18p+2))) + + ;; f64 numbers + (func $f64.zero (result i64) (i64.reinterpret/f64 (f64.const 0x0.0p0))) + (func $f64.positive_zero (result i64) (i64.reinterpret/f64 (f64.const +0x0.0p0))) + (func $f64.negative_zero (result i64) (i64.reinterpret/f64 (f64.const -0x0.0p0))) + (func $f64.misc (result i64) (i64.reinterpret/f64 (f64.const 0x1.921fb54442d18p+2))) (func $f64.min_positive (result i64) (i64.reinterpret/f64 (f64.const 0x0.0000000000001p-1022))) + (func $f64.min_normal (result i64) (i64.reinterpret/f64 (f64.const 0x1p-1022))) + (func $f64.max_subnormal (result i64) (i64.reinterpret/f64 (f64.const 0x0.fffffffffffffp-1022))) (func $f64.max_finite (result i64) (i64.reinterpret/f64 (f64.const 0x1.fffffffffffffp+1023))) - (func $f64.trailing_dot (result i64) (i64.reinterpret/f64 (f64.const 1.e100))) - (func $f64.hex_trailing_dot (result i64) (i64.reinterpret/f64 (f64.const 0x1.p4))) - (func $f64.max_subnormal (result i64) (i64.reinterpret/f64 (f64.const 2.2250738585072011e-308))) + (func $f64.trailing_dot (result i64) (i64.reinterpret/f64 (f64.const 0x1.p100))) + + ;; f64 numbers in decimal format + (func $f64_dec.zero (result i64) (i64.reinterpret/f64 (f64.const 0.0e0))) + (func $f64_dec.positive_zero (result i64) (i64.reinterpret/f64 (f64.const +0.0e0))) + (func $f64_dec.negative_zero (result i64) (i64.reinterpret/f64 (f64.const -0.0e0))) + (func $f64_dec.misc (result i64) (i64.reinterpret/f64 (f64.const 6.28318530717958623))) + (func $f64_dec.min_positive (result i64) (i64.reinterpret/f64 (f64.const 4.94066e-324))) + (func $f64_dec.min_normal (result i64) (i64.reinterpret/f64 (f64.const 2.2250738585072012e-308))) + (func $f64_dec.max_subnormal (result i64) (i64.reinterpret/f64 (f64.const 2.2250738585072011e-308))) + (func $f64_dec.max_finite (result i64) (i64.reinterpret/f64 (f64.const 1.7976931348623157e+308))) + (func $f64_dec.trailing_dot (result i64) (i64.reinterpret/f64 (f64.const 1.e100))) + (export "f32.nan" $f32.nan) (export "f32.positive_nan" $f32.positive_nan) (export "f32.negative_nan" $f32.negative_nan) @@ -59,13 +86,21 @@ (export "f32.zero" $f32.zero) (export "f32.positive_zero" $f32.positive_zero) (export "f32.negative_zero" $f32.negative_zero) - (export "f32.decimal" $f32.decimal) - (export "f32.hexadecimal" $f32.hexadecimal) + (export "f32.misc" $f32.misc) (export "f32.min_positive" $f32.min_positive) + (export "f32.min_normal" $f32.min_normal) + (export "f32.max_subnormal" $f32.max_subnormal) (export "f32.max_finite" $f32.max_finite) (export "f32.trailing_dot" $f32.trailing_dot) - (export "f32.hex_trailing_dot" $f32.hex_trailing_dot) - (export "f32.max_subnormal" $f32.max_subnormal) + (export "f32_dec.zero" $f32_dec.zero) + (export "f32_dec.positive_zero" $f32_dec.positive_zero) + (export "f32_dec.negative_zero" $f32_dec.negative_zero) + (export "f32_dec.misc" $f32_dec.misc) + (export "f32_dec.min_positive" $f32_dec.min_positive) + (export "f32_dec.min_normal" $f32_dec.min_normal) + (export "f32_dec.max_subnormal" $f32_dec.max_subnormal) + (export "f32_dec.max_finite" $f32_dec.max_finite) + (export "f32_dec.trailing_dot" $f32_dec.trailing_dot) (export "f64.nan" $f64.nan) (export "f64.positive_nan" $f64.positive_nan) @@ -82,13 +117,21 @@ (export "f64.zero" $f64.zero) (export "f64.positive_zero" $f64.positive_zero) (export "f64.negative_zero" $f64.negative_zero) - (export "f64.decimal" $f64.decimal) - (export "f64.hexadecimal" $f64.hexadecimal) + (export "f64.misc" $f64.misc) (export "f64.min_positive" $f64.min_positive) + (export "f64.min_normal" $f64.min_normal) + (export "f64.max_subnormal" $f64.max_subnormal) (export "f64.max_finite" $f64.max_finite) (export "f64.trailing_dot" $f64.trailing_dot) - (export "f64.hex_trailing_dot" $f64.hex_trailing_dot) - (export "f64.max_subnormal" $f64.max_subnormal) + (export "f64_dec.zero" $f64_dec.zero) + (export "f64_dec.positive_zero" $f64_dec.positive_zero) + (export "f64_dec.negative_zero" $f64_dec.negative_zero) + (export "f64_dec.misc" $f64_dec.misc) + (export "f64_dec.min_positive" $f64_dec.min_positive) + (export "f64_dec.min_normal" $f64_dec.min_normal) + (export "f64_dec.max_subnormal" $f64_dec.max_subnormal) + (export "f64_dec.max_finite" $f64_dec.max_finite) + (export "f64_dec.trailing_dot" $f64_dec.trailing_dot) ) (assert_return (invoke "f32.nan") (i32.const 0x7fc00000)) @@ -106,13 +149,21 @@ (assert_return (invoke "f32.zero") (i32.const 0)) (assert_return (invoke "f32.positive_zero") (i32.const 0)) (assert_return (invoke "f32.negative_zero") (i32.const 0x80000000)) -(assert_return (invoke "f32.decimal") (i32.const 0x40c90fdb)) -(assert_return (invoke "f32.hexadecimal") (i32.const 0x40c90fdb)) +(assert_return (invoke "f32.misc") (i32.const 0x40c90fdb)) (assert_return (invoke "f32.min_positive") (i32.const 1)) -(assert_return (invoke "f32.max_finite") (i32.const 0x7f7fffff)) -(assert_return (invoke "f32.trailing_dot") (i32.const 0x501502f9)) -(assert_return (invoke "f32.hex_trailing_dot") (i32.const 0x41800000)) +(assert_return (invoke "f32.min_normal") (i32.const 0x800000)) (assert_return (invoke "f32.max_subnormal") (i32.const 0x7fffff)) +(assert_return (invoke "f32.max_finite") (i32.const 0x7f7fffff)) +(assert_return (invoke "f32.trailing_dot") (i32.const 0x44800000)) +(assert_return (invoke "f32_dec.zero") (i32.const 0)) +(assert_return (invoke "f32_dec.positive_zero") (i32.const 0)) +(assert_return (invoke "f32_dec.negative_zero") (i32.const 0x80000000)) +(assert_return (invoke "f32_dec.misc") (i32.const 0x40c90fdb)) +(assert_return (invoke "f32_dec.min_positive") (i32.const 1)) +(assert_return (invoke "f32_dec.min_normal") (i32.const 0x800000)) +(assert_return (invoke "f32_dec.max_subnormal") (i32.const 0x7fffff)) +(assert_return (invoke "f32_dec.max_finite") (i32.const 0x7f7fffff)) +(assert_return (invoke "f32_dec.trailing_dot") (i32.const 0x501502f9)) (assert_return (invoke "f64.nan") (i64.const 0x7ff8000000000000)) (assert_return (invoke "f64.positive_nan") (i64.const 0x7ff8000000000000)) @@ -129,10 +180,18 @@ (assert_return (invoke "f64.zero") (i64.const 0)) (assert_return (invoke "f64.positive_zero") (i64.const 0)) (assert_return (invoke "f64.negative_zero") (i64.const 0x8000000000000000)) -(assert_return (invoke "f64.decimal") (i64.const 0x401921fb54442d18)) -(assert_return (invoke "f64.hexadecimal") (i64.const 0x401921fb54442d18)) +(assert_return (invoke "f64.misc") (i64.const 0x401921fb54442d18)) (assert_return (invoke "f64.min_positive") (i64.const 1)) -(assert_return (invoke "f64.max_finite") (i64.const 0x7fefffffffffffff)) -(assert_return (invoke "f64.trailing_dot") (i64.const 0x54b249ad2594c37d)) -(assert_return (invoke "f64.hex_trailing_dot") (i64.const 0x4030000000000000)) +(assert_return (invoke "f64.min_normal") (i64.const 0x10000000000000)) (assert_return (invoke "f64.max_subnormal") (i64.const 0xfffffffffffff)) +(assert_return (invoke "f64.max_finite") (i64.const 0x7fefffffffffffff)) +(assert_return (invoke "f64.trailing_dot") (i64.const 0x4630000000000000)) +(assert_return (invoke "f64_dec.zero") (i64.const 0)) +(assert_return (invoke "f64_dec.positive_zero") (i64.const 0)) +(assert_return (invoke "f64_dec.negative_zero") (i64.const 0x8000000000000000)) +(assert_return (invoke "f64_dec.misc") (i64.const 0x401921fb54442d18)) +(assert_return (invoke "f64_dec.min_positive") (i64.const 1)) +(assert_return (invoke "f64_dec.min_normal") (i64.const 0x10000000000000)) +(assert_return (invoke "f64_dec.max_subnormal") (i64.const 0xfffffffffffff)) +(assert_return (invoke "f64_dec.max_finite") (i64.const 0x7fefffffffffffff)) +(assert_return (invoke "f64_dec.trailing_dot") (i64.const 0x54b249ad2594c37d))