(module (func (export "f") (result f32) (f32.const +0x1.00000100000000000p-50)))
(assert_return (invoke "f") (f32.const +0x1.000000p-50))
(module (func (export "f") (result f32) (f32.const -0x1.00000100000000000p-50)))
(assert_return (invoke "f") (f32.const -0x1.000000p-50))
(module (func (export "f") (result f32) (f32.const +0x1.00000100000000001p-50)))
(assert_return (invoke "f") (f32.const +0x1.000002p-50))
(module (func (export "f") (result f32) (f32.const -0x1.00000100000000001p-50)))
(assert_return (invoke "f") (f32.const -0x1.000002p-50))
(module (func (export "f") (result f32) (f32.const +0x1.000001fffffffffffp-50)))
(assert_return (invoke "f") (f32.const +0x1.000002p-50))
(module (func (export "f") (result f32) (f32.const -0x1.000001fffffffffffp-50)))
(assert_return (invoke "f") (f32.const -0x1.000002p-50))
(module (func (export "f") (result f32) (f32.const +0x1.00000200000000000p-50)))
(assert_return (invoke "f") (f32.const +0x1.000002p-50))
(module (func (export "f") (result f32) (f32.const -0x1.00000200000000000p-50)))
(assert_return (invoke "f") (f32.const -0x1.000002p-50))
(module (func (export "f") (result f32) (f32.const +0x1.00000200000000001p-50)))
(assert_return (invoke "f") (f32.const +0x1.000002p-50))
(module (func (export "f") (result f32) (f32.const -0x1.00000200000000001p-50)))
(assert_return (invoke "f") (f32.const -0x1.000002p-50))
(module (func (export "f") (result f32) (f32.const +0x1.000002fffffffffffp-50)))
(assert_return (invoke "f") (f32.const +0x1.000002p-50))
(module (func (export "f") (result f32) (f32.const -0x1.000002fffffffffffp-50)))
(assert_return (invoke "f") (f32.const -0x1.000002p-50))
(module (func (export "f") (result f32) (f32.const +0x1.00000300000000000p-50)))
(assert_return (invoke "f") (f32.const +0x1.000004p-50))
(module (func (export "f") (result f32) (f32.const -0x1.00000300000000000p-50)))
(assert_return (invoke "f") (f32.const -0x1.000004p-50))
(module (func (export "f") (result f32) (f32.const +0x1.00000300000000001p-50)))
(assert_return (invoke "f") (f32.const +0x1.000004p-50))
(module (func (export "f") (result f32) (f32.const -0x1.00000300000000001p-50)))
(assert_return (invoke "f") (f32.const -0x1.000004p-50))
(module (func (export "f") (result f32) (f32.const +0x1.000003fffffffffffp-50)))
(assert_return (invoke "f") (f32.const +0x1.000004p-50))
(module (func (export "f") (result f32) (f32.const -0x1.000003fffffffffffp-50)))
(assert_return (invoke "f") (f32.const -0x1.000004p-50))
(module (func (export "f") (result f32) (f32.const +0x1.00000400000000000p-50)))
(assert_return (invoke "f") (f32.const +0x1.000004p-50))
(module (func (export "f") (result f32) (f32.const -0x1.00000400000000000p-50)))
(assert_return (invoke "f") (f32.const -0x1.000004p-50))
(module (func (export "f") (result f32) (f32.const +0x1.00000400000000001p-50)))
(assert_return (invoke "f") (f32.const +0x1.000004p-50))
(module (func (export "f") (result f32) (f32.const -0x1.00000400000000001p-50)))
(assert_return (invoke "f") (f32.const -0x1.000004p-50))
(module (func (export "f") (result f32) (f32.const +0x1.000004fffffffffffp-50)))
(assert_return (invoke "f") (f32.const +0x1.000004p-50))
(module (func (export "f") (result f32) (f32.const -0x1.000004fffffffffffp-50)))
(assert_return (invoke "f") (f32.const -0x1.000004p-50))
(module (func (export "f") (result f32) (f32.const +0x1.00000500000000000p-50)))
(assert_return (invoke "f") (f32.const +0x1.000004p-50))
(module (func (export "f") (result f32) (f32.const -0x1.00000500000000000p-50)))
(assert_return (invoke "f") (f32.const -0x1.000004p-50))
(module (func (export "f") (result f32) (f32.const +0x1.00000500000000001p-50)))
(assert_return (invoke "f") (f32.const +0x1.000006p-50))
(module (func (export "f") (result f32) (f32.const -0x1.00000500000000001p-50)))
(assert_return (invoke "f") (f32.const -0x1.000006p-50))

(module (func (export "f") (result f32) (f32.const +0x4000.004000000p-64)))
(assert_return (invoke "f") (f32.const +0x1.000000p-50))
(module (func (export "f") (result f32) (f32.const -0x4000.004000000p-64)))
(assert_return (invoke "f") (f32.const -0x1.000000p-50))
(module (func (export "f") (result f32) (f32.const +0x4000.004000001p-64)))
(assert_return (invoke "f") (f32.const +0x1.000002p-50))
(module (func (export "f") (result f32) (f32.const -0x4000.004000001p-64)))
(assert_return (invoke "f") (f32.const -0x1.000002p-50))
(module (func (export "f") (result f32) (f32.const +0x4000.007ffffffp-64)))
(assert_return (invoke "f") (f32.const +0x1.000002p-50))
(module (func (export "f") (result f32) (f32.const -0x4000.007ffffffp-64)))
(assert_return (invoke "f") (f32.const -0x1.000002p-50))
(module (func (export "f") (result f32) (f32.const +0x4000.008000000p-64)))
(assert_return (invoke "f") (f32.const +0x1.000002p-50))
(module (func (export "f") (result f32) (f32.const -0x4000.008000000p-64)))
(assert_return (invoke "f") (f32.const -0x1.000002p-50))
(module (func (export "f") (result f32) (f32.const +0x4000.008000001p-64)))
(assert_return (invoke "f") (f32.const +0x1.000002p-50))
(module (func (export "f") (result f32) (f32.const -0x4000.008000001p-64)))
(assert_return (invoke "f") (f32.const -0x1.000002p-50))
(module (func (export "f") (result f32) (f32.const +0x4000.00bffffffp-64)))
(assert_return (invoke "f") (f32.const +0x1.000002p-50))
(module (func (export "f") (result f32) (f32.const -0x4000.00bffffffp-64)))
(assert_return (invoke "f") (f32.const -0x1.000002p-50))
(module (func (export "f") (result f32) (f32.const +0x4000.00c000000p-64)))
(assert_return (invoke "f") (f32.const +0x1.000004p-50))
(module (func (export "f") (result f32) (f32.const -0x4000.00c000000p-64)))
(assert_return (invoke "f") (f32.const -0x1.000004p-50))
(module (func (export "f") (result f32) (f32.const +0x4000.00c000001p-64)))
(assert_return (invoke "f") (f32.const +0x1.000004p-50))
(module (func (export "f") (result f32) (f32.const -0x4000.00c000001p-64)))
(assert_return (invoke "f") (f32.const -0x1.000004p-50))
(module (func (export "f") (result f32) (f32.const +0x4000.00fffffffp-64)))
(assert_return (invoke "f") (f32.const +0x1.000004p-50))
(module (func (export "f") (result f32) (f32.const -0x4000.00fffffffp-64)))
(assert_return (invoke "f") (f32.const -0x1.000004p-50))
(module (func (export "f") (result f32) (f32.const +0x4000.010000001p-64)))
(assert_return (invoke "f") (f32.const +0x1.000004p-50))
(module (func (export "f") (result f32) (f32.const -0x4000.010000001p-64)))
(assert_return (invoke "f") (f32.const -0x1.000004p-50))
(module (func (export "f") (result f32) (f32.const +0x4000.013ffffffp-64)))
(assert_return (invoke "f") (f32.const +0x1.000004p-50))
(module (func (export "f") (result f32) (f32.const -0x4000.013ffffffp-64)))
(assert_return (invoke "f") (f32.const -0x1.000004p-50))
(module (func (export "f") (result f32) (f32.const +0x4000.014000001p-64)))
(assert_return (invoke "f") (f32.const +0x1.000006p-50))
(module (func (export "f") (result f32) (f32.const -0x4000.014000001p-64)))
(assert_return (invoke "f") (f32.const -0x1.000006p-50))

(module (func (export "f") (result f32) (f32.const +8.8817847263968443573e-16)))
(assert_return (invoke "f") (f32.const +0x1.000000p-50))
(module (func (export "f") (result f32) (f32.const -8.8817847263968443573e-16)))
(assert_return (invoke "f") (f32.const -0x1.000000p-50))
(module (func (export "f") (result f32) (f32.const +8.8817847263968443574e-16)))
(assert_return (invoke "f") (f32.const +0x1.000002p-50))
(module (func (export "f") (result f32) (f32.const -8.8817847263968443574e-16)))
(assert_return (invoke "f") (f32.const -0x1.000002p-50))
(module (func (export "f") (result f32) (f32.const +8.8817857851880284252e-16)))
(assert_return (invoke "f") (f32.const +0x1.000002p-50))
(module (func (export "f") (result f32) (f32.const -8.8817857851880284252e-16)))
(assert_return (invoke "f") (f32.const -0x1.000002p-50))
(module (func (export "f") (result f32) (f32.const +8.8817857851880284253e-16)))
(assert_return (invoke "f") (f32.const +0x1.000004p-50))
(module (func (export "f") (result f32) (f32.const -8.8817857851880284253e-16)))
(assert_return (invoke "f") (f32.const -0x1.000004p-50))

;; f32, large exponent
(module (func (export "f") (result f32) (f32.const +0x1.00000100000000000p+50)))
(assert_return (invoke "f") (f32.const +0x1.000000p+50))
(module (func (export "f") (result f32) (f32.const -0x1.00000100000000000p+50)))
(assert_return (invoke "f") (f32.const -0x1.000000p+50))
(module (func (export "f") (result f32) (f32.const +0x1.00000100000000001p+50)))
(assert_return (invoke "f") (f32.const +0x1.000002p+50))
(module (func (export "f") (result f32) (f32.const -0x1.00000100000000001p+50)))
(assert_return (invoke "f") (f32.const -0x1.000002p+50))
(module (func (export "f") (result f32) (f32.const +0x1.000001fffffffffffp+50)))
(assert_return (invoke "f") (f32.const +0x1.000002p+50))
(module (func (export "f") (result f32) (f32.const -0x1.000001fffffffffffp+50)))
(assert_return (invoke "f") (f32.const -0x1.000002p+50))
(module (func (export "f") (result f32) (f32.const +0x1.00000200000000000p+50)))
(assert_return (invoke "f") (f32.const +0x1.000002p+50))
(module (func (export "f") (result f32) (f32.const -0x1.00000200000000000p+50)))
(assert_return (invoke "f") (f32.const -0x1.000002p+50))
(module (func (export "f") (result f32) (f32.const +0x1.00000200000000001p+50)))
(assert_return (invoke "f") (f32.const +0x1.000002p+50))
(module (func (export "f") (result f32) (f32.const -0x1.00000200000000001p+50)))
(assert_return (invoke "f") (f32.const -0x1.000002p+50))
(module (func (export "f") (result f32) (f32.const +0x1.000002fffffffffffp+50)))
(assert_return (invoke "f") (f32.const +0x1.000002p+50))
(module (func (export "f") (result f32) (f32.const -0x1.000002fffffffffffp+50)))
(assert_return (invoke "f") (f32.const -0x1.000002p+50))
(module (func (export "f") (result f32) (f32.const +0x1.00000300000000000p+50)))
(assert_return (invoke "f") (f32.const +0x1.000004p+50))
(module (func (export "f") (result f32) (f32.const -0x1.00000300000000000p+50)))
(assert_return (invoke "f") (f32.const -0x1.000004p+50))
(module (func (export "f") (result f32) (f32.const +0x1.00000300000000001p+50)))
(assert_return (invoke "f") (f32.const +0x1.000004p+50))
(module (func (export "f") (result f32) (f32.const -0x1.00000300000000001p+50)))
(assert_return (invoke "f") (f32.const -0x1.000004p+50))
(module (func (export "f") (result f32) (f32.const +0x1.000003fffffffffffp+50)))
(assert_return (invoke "f") (f32.const +0x1.000004p+50))
(module (func (export "f") (result f32) (f32.const -0x1.000003fffffffffffp+50)))
(assert_return (invoke "f") (f32.const -0x1.000004p+50))
(module (func (export "f") (result f32) (f32.const +0x1.00000400000000000p+50)))
(assert_return (invoke "f") (f32.const +0x1.000004p+50))
(module (func (export "f") (result f32) (f32.const -0x1.00000400000000000p+50)))
(assert_return (invoke "f") (f32.const -0x1.000004p+50))
(module (func (export "f") (result f32) (f32.const +0x1.00000400000000001p+50)))
(assert_return (invoke "f") (f32.const +0x1.000004p+50))
(module (func (export "f") (result f32) (f32.const -0x1.00000400000000001p+50)))
(assert_return (invoke "f") (f32.const -0x1.000004p+50))
(module (func (export "f") (result f32) (f32.const +0x1.000004fffffffffffp+50)))
(assert_return (invoke "f") (f32.const +0x1.000004p+50))
(module (func (export "f") (result f32) (f32.const -0x1.000004fffffffffffp+50)))
(assert_return (invoke "f") (f32.const -0x1.000004p+50))
(module (func (export "f") (result f32) (f32.const +0x1.00000500000000000p+50)))
(assert_return (invoke "f") (f32.const +0x1.000004p+50))
(module (func (export "f") (result f32) (f32.const -0x1.00000500000000000p+50)))
(assert_return (invoke "f") (f32.const -0x1.000004p+50))
(module (func (export "f") (result f32) (f32.const +0x1.00000500000000001p+50)))
(assert_return (invoke "f") (f32.const +0x1.000006p+50))
(module (func (export "f") (result f32) (f32.const -0x1.00000500000000001p+50)))
(assert_return (invoke "f") (f32.const -0x1.000006p+50))

(module (func (export "f") (result f32) (f32.const +0x4000004000000)))
(assert_return (invoke "f") (f32.const +0x1.000000p+50))
(module (func (export "f") (result f32) (f32.const -0x4000004000000)))
(assert_return (invoke "f") (f32.const -0x1.000000p+50))
(module (func (export "f") (result f32) (f32.const +0x4000004000001)))
(assert_return (invoke "f") (f32.const +0x1.000002p+50))
(module (func (export "f") (result f32) (f32.const -0x4000004000001)))
(assert_return (invoke "f") (f32.const -0x1.000002p+50))
(module (func (export "f") (result f32) (f32.const +0x4000007ffffff)))
(assert_return (invoke "f") (f32.const +0x1.000002p+50))
(module (func (export "f") (result f32) (f32.const -0x4000007ffffff)))
(assert_return (invoke "f") (f32.const -0x1.000002p+50))
(module (func (export "f") (result f32) (f32.const +0x4000008000000)))
(assert_return (invoke "f") (f32.const +0x1.000002p+50))
(module (func (export "f") (result f32) (f32.const -0x4000008000000)))
(assert_return (invoke "f") (f32.const -0x1.000002p+50))
(module (func (export "f") (result f32) (f32.const +0x4000008000001)))
(assert_return (invoke "f") (f32.const +0x1.000002p+50))
(module (func (export "f") (result f32) (f32.const -0x4000008000001)))
(assert_return (invoke "f") (f32.const -0x1.000002p+50))
(module (func (export "f") (result f32) (f32.const +0x400000bffffff)))
(assert_return (invoke "f") (f32.const +0x1.000002p+50))
(module (func (export "f") (result f32) (f32.const -0x400000bffffff)))
(assert_return (invoke "f") (f32.const -0x1.000002p+50))
(module (func (export "f") (result f32) (f32.const +0x400000c000000)))
(assert_return (invoke "f") (f32.const +0x1.000004p+50))
(module (func (export "f") (result f32) (f32.const -0x400000c000000)))
(assert_return (invoke "f") (f32.const -0x1.000004p+50))

(module (func (export "f") (result f32) (f32.const +1125899973951488)))
(assert_return (invoke "f") (f32.const +0x1.000000p+50))
(module (func (export "f") (result f32) (f32.const -1125899973951488)))
(assert_return (invoke "f") (f32.const -0x1.000000p+50))
(module (func (export "f") (result f32) (f32.const +1125899973951489)))
(assert_return (invoke "f") (f32.const +0x1.000002p+50))
(module (func (export "f") (result f32) (f32.const -1125899973951489)))
(assert_return (invoke "f") (f32.const -0x1.000002p+50))
(module (func (export "f") (result f32) (f32.const +1125900108169215)))
(assert_return (invoke "f") (f32.const +0x1.000002p+50))
(module (func (export "f") (result f32) (f32.const -1125900108169215)))
(assert_return (invoke "f") (f32.const -0x1.000002p+50))
(module (func (export "f") (result f32) (f32.const +1125900108169216)))
(assert_return (invoke "f") (f32.const +0x1.000004p+50))
(module (func (export "f") (result f32) (f32.const -1125900108169216)))
(assert_return (invoke "f") (f32.const -0x1.000004p+50))

;; f32, subnormal
(module (func (export "f") (result f32) (f32.const +0x0.00000100000000000p-126)))
(assert_return (invoke "f") (f32.const +0x0.000000p-126))
(module (func (export "f") (result f32) (f32.const -0x0.00000100000000000p-126)))
(assert_return (invoke "f") (f32.const -0x0.000000p-126))
(module (func (export "f") (result f32) (f32.const +0x0.00000100000000001p-126)))
(assert_return (invoke "f") (f32.const +0x0.000002p-126))
(module (func (export "f") (result f32) (f32.const -0x0.00000100000000001p-126)))
(assert_return (invoke "f") (f32.const -0x0.000002p-126))
(module (func (export "f") (result f32) (f32.const +0x0.000001fffffffffffp-126)))
(assert_return (invoke "f") (f32.const +0x0.000002p-126))
(module (func (export "f") (result f32) (f32.const -0x0.000001fffffffffffp-126)))
(assert_return (invoke "f") (f32.const -0x0.000002p-126))
(module (func (export "f") (result f32) (f32.const +0x0.00000200000000000p-126)))
(assert_return (invoke "f") (f32.const +0x0.000002p-126))
(module (func (export "f") (result f32) (f32.const -0x0.00000200000000000p-126)))
(assert_return (invoke "f") (f32.const -0x0.000002p-126))
(module (func (export "f") (result f32) (f32.const +0x0.00000200000000001p-126)))
(assert_return (invoke "f") (f32.const +0x0.000002p-126))
(module (func (export "f") (result f32) (f32.const -0x0.00000200000000001p-126)))
(assert_return (invoke "f") (f32.const -0x0.000002p-126))
(module (func (export "f") (result f32) (f32.const +0x0.000002fffffffffffp-126)))
(assert_return (invoke "f") (f32.const +0x0.000002p-126))
(module (func (export "f") (result f32) (f32.const -0x0.000002fffffffffffp-126)))
(assert_return (invoke "f") (f32.const -0x0.000002p-126))
(module (func (export "f") (result f32) (f32.const +0x0.00000300000000000p-126)))
(assert_return (invoke "f") (f32.const +0x0.000004p-126))
(module (func (export "f") (result f32) (f32.const -0x0.00000300000000000p-126)))
(assert_return (invoke "f") (f32.const -0x0.000004p-126))
(module (func (export "f") (result f32) (f32.const +0x0.00000300000000001p-126)))
(assert_return (invoke "f") (f32.const +0x0.000004p-126))
(module (func (export "f") (result f32) (f32.const -0x0.00000300000000001p-126)))
(assert_return (invoke "f") (f32.const -0x0.000004p-126))
(module (func (export "f") (result f32) (f32.const +0x0.000003fffffffffffp-126)))
(assert_return (invoke "f") (f32.const +0x0.000004p-126))
(module (func (export "f") (result f32) (f32.const -0x0.000003fffffffffffp-126)))
(assert_return (invoke "f") (f32.const -0x0.000004p-126))
(module (func (export "f") (result f32) (f32.const +0x0.00000400000000000p-126)))
(assert_return (invoke "f") (f32.const +0x0.000004p-126))
(module (func (export "f") (result f32) (f32.const -0x0.00000400000000000p-126)))
(assert_return (invoke "f") (f32.const -0x0.000004p-126))
(module (func (export "f") (result f32) (f32.const +0x0.00000400000000001p-126)))
(assert_return (invoke "f") (f32.const +0x0.000004p-126))
(module (func (export "f") (result f32) (f32.const -0x0.00000400000000001p-126)))
(assert_return (invoke "f") (f32.const -0x0.000004p-126))
(module (func (export "f") (result f32) (f32.const +0x0.000004fffffffffffp-126)))
(assert_return (invoke "f") (f32.const +0x0.000004p-126))
(module (func (export "f") (result f32) (f32.const -0x0.000004fffffffffffp-126)))
(assert_return (invoke "f") (f32.const -0x0.000004p-126))
(module (func (export "f") (result f32) (f32.const +0x0.00000500000000000p-126)))
(assert_return (invoke "f") (f32.const +0x0.000004p-126))
(module (func (export "f") (result f32) (f32.const -0x0.00000500000000000p-126)))
(assert_return (invoke "f") (f32.const -0x0.000004p-126))
(module (func (export "f") (result f32) (f32.const +0x0.00000500000000001p-126)))
(assert_return (invoke "f") (f32.const +0x0.000006p-126))
(module (func (export "f") (result f32) (f32.const -0x0.00000500000000001p-126)))
(assert_return (invoke "f") (f32.const -0x0.000006p-126))

;; f32, round down at limit to infinity
(module (func (export "f") (result f32) (f32.const +0x1.fffffe8p127)))
(assert_return (invoke "f") (f32.const +0x1.fffffep127))
(module (func (export "f") (result f32) (f32.const -0x1.fffffe8p127)))
(assert_return (invoke "f") (f32.const -0x1.fffffep127))
(module (func (export "f") (result f32) (f32.const +0x1.fffffefffffff8p127)))
(assert_return (invoke "f") (f32.const +0x1.fffffep127))
(module (func (export "f") (result f32) (f32.const -0x1.fffffefffffff8p127)))
(assert_return (invoke "f") (f32.const -0x1.fffffep127))
(module (func (export "f") (result f32) (f32.const +0x1.fffffefffffffffffp127)))
(assert_return (invoke "f") (f32.const +0x1.fffffep127))
(module (func (export "f") (result f32) (f32.const -0x1.fffffefffffffffffp127)))
(assert_return (invoke "f") (f32.const -0x1.fffffep127))


(module
  (func $id-f32 (param f32) (result f32) (local.get 0))
  (func (export "type-first-f32") (result f32) (call $id-f32 (f32.const 1.32)))
)
(assert_return (invoke "type-first-f32") (f32.const 1.32))


(module
  (func (export "ceil") (param $x f32) (result f32) (f32.ceil (local.get $x)))
  (func (export "floor") (param $x f32) (result f32) (f32.floor (local.get $x)))
  (func (export "trunc") (param $x f32) (result f32) (f32.trunc (local.get $x)))
  (func (export "nearest") (param $x f32) (result f32) (f32.nearest (local.get $x)))
)

(assert_return (invoke "floor" (f32.const -0x0p+0)) (f32.const -0x0p+0))
(assert_return (invoke "floor" (f32.const 0x0p+0)) (f32.const 0x0p+0))
(assert_return (invoke "floor" (f32.const -0x1p-149)) (f32.const -0x1p+0))
(assert_return (invoke "floor" (f32.const 0x1p-149)) (f32.const 0x0p+0))
(assert_return (invoke "floor" (f32.const -0x1p-126)) (f32.const -0x1p+0))
(assert_return (invoke "floor" (f32.const 0x1p-126)) (f32.const 0x0p+0))
(assert_return (invoke "floor" (f32.const -0x1p-1)) (f32.const -0x1p+0))
(assert_return (invoke "floor" (f32.const 0x1p-1)) (f32.const 0x0p+0))
(assert_return (invoke "floor" (f32.const -0x1p+0)) (f32.const -0x1p+0))
(assert_return (invoke "floor" (f32.const 0x1p+0)) (f32.const 0x1p+0))
(assert_return (invoke "floor" (f32.const -0x1.921fb6p+2)) (f32.const -0x1.cp+2))
(assert_return (invoke "floor" (f32.const 0x1.921fb6p+2)) (f32.const 0x1.8p+2))
(assert_return (invoke "floor" (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127))
(assert_return (invoke "floor" (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127))
(assert_return (invoke "floor" (f32.const -inf)) (f32.const -inf))
(assert_return (invoke "floor" (f32.const inf)) (f32.const inf))
(assert_return (invoke "floor" (f32.const -nan)) (f32.const nan:canonical))
(assert_return (invoke "floor" (f32.const -nan:0x200000)) (f32.const nan:arithmetic))
(assert_return (invoke "floor" (f32.const nan)) (f32.const nan:canonical))
(assert_return (invoke "floor" (f32.const nan:0x200000)) (f32.const nan:arithmetic))
(assert_return (invoke "ceil" (f32.const -0x0p+0)) (f32.const -0x0p+0))
(assert_return (invoke "ceil" (f32.const 0x0p+0)) (f32.const 0x0p+0))
(assert_return (invoke "ceil" (f32.const -0x1p-149)) (f32.const -0x0p+0))
(assert_return (invoke "ceil" (f32.const 0x1p-149)) (f32.const 0x1p+0))
(assert_return (invoke "ceil" (f32.const -0x1p-126)) (f32.const -0x0p+0))
(assert_return (invoke "ceil" (f32.const 0x1p-126)) (f32.const 0x1p+0))
(assert_return (invoke "ceil" (f32.const -0x1p-1)) (f32.const -0x0p+0))
(assert_return (invoke "ceil" (f32.const 0x1p-1)) (f32.const 0x1p+0))
(assert_return (invoke "ceil" (f32.const -0x1p+0)) (f32.const -0x1p+0))
(assert_return (invoke "ceil" (f32.const 0x1p+0)) (f32.const 0x1p+0))
(assert_return (invoke "ceil" (f32.const -0x1.921fb6p+2)) (f32.const -0x1.8p+2))
(assert_return (invoke "ceil" (f32.const 0x1.921fb6p+2)) (f32.const 0x1.cp+2))
(assert_return (invoke "ceil" (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127))
(assert_return (invoke "ceil" (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127))
(assert_return (invoke "ceil" (f32.const -inf)) (f32.const -inf))
(assert_return (invoke "ceil" (f32.const inf)) (f32.const inf))
(assert_return (invoke "ceil" (f32.const -nan)) (f32.const nan:canonical))
(assert_return (invoke "ceil" (f32.const -nan:0x200000)) (f32.const nan:arithmetic))
(assert_return (invoke "ceil" (f32.const nan)) (f32.const nan:canonical))
(assert_return (invoke "ceil" (f32.const nan:0x200000)) (f32.const nan:arithmetic))
(assert_return (invoke "trunc" (f32.const -0x0p+0)) (f32.const -0x0p+0))
(assert_return (invoke "trunc" (f32.const 0x0p+0)) (f32.const 0x0p+0))
(assert_return (invoke "trunc" (f32.const -0x1p-149)) (f32.const -0x0p+0))
(assert_return (invoke "trunc" (f32.const 0x1p-149)) (f32.const 0x0p+0))
(assert_return (invoke "trunc" (f32.const -0x1p-126)) (f32.const -0x0p+0))
(assert_return (invoke "trunc" (f32.const 0x1p-126)) (f32.const 0x0p+0))
(assert_return (invoke "trunc" (f32.const -0x1p-1)) (f32.const -0x0p+0))
(assert_return (invoke "trunc" (f32.const 0x1p-1)) (f32.const 0x0p+0))
(assert_return (invoke "trunc" (f32.const -0x1p+0)) (f32.const -0x1p+0))
(assert_return (invoke "trunc" (f32.const 0x1p+0)) (f32.const 0x1p+0))
(assert_return (invoke "trunc" (f32.const -0x1.921fb6p+2)) (f32.const -0x1.8p+2))
(assert_return (invoke "trunc" (f32.const 0x1.921fb6p+2)) (f32.const 0x1.8p+2))
(assert_return (invoke "trunc" (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127))
(assert_return (invoke "trunc" (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127))
(assert_return (invoke "trunc" (f32.const -inf)) (f32.const -inf))
(assert_return (invoke "trunc" (f32.const inf)) (f32.const inf))
(assert_return (invoke "trunc" (f32.const -nan)) (f32.const nan:canonical))
(assert_return (invoke "trunc" (f32.const -nan:0x200000)) (f32.const nan:arithmetic))
(assert_return (invoke "trunc" (f32.const nan)) (f32.const nan:canonical))
(assert_return (invoke "trunc" (f32.const nan:0x200000)) (f32.const nan:arithmetic))
(assert_return (invoke "nearest" (f32.const -0x0p+0)) (f32.const -0x0p+0))
(assert_return (invoke "nearest" (f32.const 0x0p+0)) (f32.const 0x0p+0))
(assert_return (invoke "nearest" (f32.const -0x1p-149)) (f32.const -0x0p+0))
(assert_return (invoke "nearest" (f32.const 0x1p-149)) (f32.const 0x0p+0))
(assert_return (invoke "nearest" (f32.const -0x1p-126)) (f32.const -0x0p+0))
(assert_return (invoke "nearest" (f32.const 0x1p-126)) (f32.const 0x0p+0))
(assert_return (invoke "nearest" (f32.const -0x1p-1)) (f32.const -0x0p+0))
(assert_return (invoke "nearest" (f32.const 0x1p-1)) (f32.const 0x0p+0))
(assert_return (invoke "nearest" (f32.const -0x1p+0)) (f32.const -0x1p+0))
(assert_return (invoke "nearest" (f32.const 0x1p+0)) (f32.const 0x1p+0))
(assert_return (invoke "nearest" (f32.const -0x1.921fb6p+2)) (f32.const -0x1.8p+2))
(assert_return (invoke "nearest" (f32.const 0x1.921fb6p+2)) (f32.const 0x1.8p+2))
(assert_return (invoke "nearest" (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127))
(assert_return (invoke "nearest" (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127))
(assert_return (invoke "nearest" (f32.const -inf)) (f32.const -inf))
(assert_return (invoke "nearest" (f32.const inf)) (f32.const inf))
(assert_return (invoke "nearest" (f32.const -nan)) (f32.const nan:canonical))
(assert_return (invoke "nearest" (f32.const -nan:0x200000)) (f32.const nan:arithmetic))
(assert_return (invoke "nearest" (f32.const nan)) (f32.const nan:canonical))
(assert_return (invoke "nearest" (f32.const nan:0x200000)) (f32.const nan:arithmetic))
