1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
;; with fast-math we can optimize some of these patterns
(module
(func "div" (result f32)
(f32.div
(f32.const -nan:0x23017a)
(f32.const 1)
)
)
(func "mul1" (result f32)
(f32.mul
(f32.const -nan:0x34546d)
(f32.const 1)
)
)
(func "mul2" (result f32)
(f32.mul
(f32.const 1)
(f32.const -nan:0x34546d)
)
)
(func "add1" (result f32)
(f32.add
(f32.const -nan:0x34546d)
(f32.const -0)
)
)
(func "add2" (result f32)
(f32.add
(f32.const -0)
(f32.const -nan:0x34546d)
)
)
(func "add3" (result f32)
(f32.add
(f32.const -nan:0x34546d)
(f32.const 0)
)
)
(func "add4" (result f32)
(f32.add
(f32.const 0)
(f32.const -nan:0x34546d)
)
)
(func "sub1" (result f32)
(f32.sub
(f32.const -nan:0x34546d)
(f32.const 0)
)
)
(func "sub2" (result f32)
(f32.sub
(f32.const -nan:0x34546d)
(f32.const -0)
)
)
(func "mul_neg_one1" (param $x f32) (result f32)
(f32.mul
(local.get $x)
(f32.const -1)
)
)
(func "mul_neg_one2" (param $x f64) (result f64)
(f64.mul
(local.get $x)
(f64.const -1)
)
)
(func "abs_sub_zero1" (param $x f32) (result f32)
;; abs(0 - x) ==> abs(x)
(f32.abs
(f32.sub
(f32.const 0)
(local.get $x)
)
)
)
(func "abs_sub_zero2" (param $x f64) (result f64)
;; abs(0 - x) ==> abs(x)
(f64.abs
(f64.sub
(f64.const 0)
(local.get $x)
)
)
)
)
|