summaryrefslogtreecommitdiff
path: root/test/lit/passes/optimize-instructions.wast
diff options
context:
space:
mode:
Diffstat (limited to 'test/lit/passes/optimize-instructions.wast')
-rw-r--r--test/lit/passes/optimize-instructions.wast445
1 files changed, 445 insertions, 0 deletions
diff --git a/test/lit/passes/optimize-instructions.wast b/test/lit/passes/optimize-instructions.wast
index c1835442d..a4c8170a6 100644
--- a/test/lit/passes/optimize-instructions.wast
+++ b/test/lit/passes/optimize-instructions.wast
@@ -10517,6 +10517,425 @@
(f32.const 0)
))
)
+
+ ;; CHECK: (func $simplify-add-sub-with-neg-float (param $a f32) (param $b f32) (param $x f64) (param $y f64)
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.sub
+ ;; CHECK-NEXT: (local.get $b)
+ ;; CHECK-NEXT: (local.get $a)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f64.sub
+ ;; CHECK-NEXT: (local.get $y)
+ ;; CHECK-NEXT: (local.get $x)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.sub
+ ;; CHECK-NEXT: (local.get $a)
+ ;; CHECK-NEXT: (local.get $b)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f64.sub
+ ;; CHECK-NEXT: (local.get $x)
+ ;; CHECK-NEXT: (local.get $y)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.add
+ ;; CHECK-NEXT: (local.get $a)
+ ;; CHECK-NEXT: (local.get $b)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f64.add
+ ;; CHECK-NEXT: (local.get $x)
+ ;; CHECK-NEXT: (local.get $y)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.sub
+ ;; CHECK-NEXT: (f32.neg
+ ;; CHECK-NEXT: (local.get $a)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (local.get $b)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f64.sub
+ ;; CHECK-NEXT: (f64.neg
+ ;; CHECK-NEXT: (local.get $x)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (local.get $y)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $simplify-add-sub-with-neg-float (param $a f32) (param $b f32) (param $x f64) (param $y f64)
+ ;; -x + y ==> y - x
+ (drop (f32.add (f32.neg (local.get $a)) (local.get $b)))
+ (drop (f64.add (f64.neg (local.get $x)) (local.get $y)))
+
+ ;; x + (-y) ==> x - y
+ (drop (f32.add (local.get $a) (f32.neg (local.get $b))))
+ (drop (f64.add (local.get $x) (f64.neg (local.get $y))))
+
+ ;; x - (-y) ==> x + y
+ (drop (f32.sub (local.get $a) (f32.neg (local.get $b))))
+ (drop (f64.sub (local.get $x) (f64.neg (local.get $y))))
+
+ ;; skips
+ ;; -x - y -> skip
+ (drop (f32.sub (f32.neg (local.get $a)) (local.get $b)))
+ (drop (f64.sub (f64.neg (local.get $x)) (local.get $y)))
+ )
+ ;; CHECK: (func $simplify-add-sub-with-neg-float-zeros (param $a f32) (param $b f32)
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.add
+ ;; CHECK-NEXT: (local.get $b)
+ ;; CHECK-NEXT: (f32.const -0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.sub
+ ;; CHECK-NEXT: (f32.const 0)
+ ;; CHECK-NEXT: (local.get $a)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.add
+ ;; CHECK-NEXT: (local.get $b)
+ ;; CHECK-NEXT: (f32.const 0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.sub
+ ;; CHECK-NEXT: (f32.const -0)
+ ;; CHECK-NEXT: (local.get $a)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.sub
+ ;; CHECK-NEXT: (f32.const 0)
+ ;; CHECK-NEXT: (local.get $b)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.add
+ ;; CHECK-NEXT: (local.get $a)
+ ;; CHECK-NEXT: (f32.const -0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.sub
+ ;; CHECK-NEXT: (f32.const -0)
+ ;; CHECK-NEXT: (local.get $b)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.add
+ ;; CHECK-NEXT: (local.get $a)
+ ;; CHECK-NEXT: (f32.const 0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.add
+ ;; CHECK-NEXT: (local.get $b)
+ ;; CHECK-NEXT: (f32.const 0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.add
+ ;; CHECK-NEXT: (local.get $a)
+ ;; CHECK-NEXT: (f32.const 0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.add
+ ;; CHECK-NEXT: (local.get $b)
+ ;; CHECK-NEXT: (f32.const -0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.add
+ ;; CHECK-NEXT: (local.get $a)
+ ;; CHECK-NEXT: (f32.const -0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $simplify-add-sub-with-neg-float-zeros (param $a f32) (param $b f32)
+ ;; edge cases for -x + y
+ (drop (f32.add (f32.neg (f32.const 0)) (local.get $b)))
+ (drop (f32.add (f32.neg (local.get $a)) (f32.const 0)))
+ (drop (f32.add (f32.neg (f32.const -0)) (local.get $b)))
+ (drop (f32.add (f32.neg (local.get $a)) (f32.const -0)))
+ ;; edge cases for x + (-y)
+ (drop (f32.add (f32.const 0) (f32.neg (local.get $b))))
+ (drop (f32.add (local.get $a) (f32.neg (f32.const 0))))
+ (drop (f32.add (f32.const -0) (f32.neg (local.get $b))))
+ (drop (f32.add (local.get $a) (f32.neg (f32.const -0))))
+ ;; edge cases for x - (-y)
+ (drop (f32.sub (f32.const 0) (f32.neg (local.get $b))))
+ (drop (f32.sub (local.get $a) (f32.neg (f32.const 0))))
+ (drop (f32.sub (f32.const -0) (f32.neg (local.get $b))))
+ (drop (f32.sub (local.get $a) (f32.neg (f32.const -0))))
+ )
+ ;; CHECK: (func $simplify-add-sub-with-neg-float-nans (param $a f32) (param $b f32)
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.const nan:0x400000)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.sub
+ ;; CHECK-NEXT: (f32.const nan:0x400000)
+ ;; CHECK-NEXT: (local.get $a)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.const nan:0x400000)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.sub
+ ;; CHECK-NEXT: (f32.const -nan:0x400000)
+ ;; CHECK-NEXT: (local.get $a)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.sub
+ ;; CHECK-NEXT: (f32.const nan:0x400000)
+ ;; CHECK-NEXT: (local.get $b)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.const nan:0x400000)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.sub
+ ;; CHECK-NEXT: (f32.const -nan:0x400000)
+ ;; CHECK-NEXT: (local.get $b)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.const nan:0x400000)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.add
+ ;; CHECK-NEXT: (f32.const nan:0x400000)
+ ;; CHECK-NEXT: (local.get $b)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.const nan:0x400000)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.add
+ ;; CHECK-NEXT: (f32.const -nan:0x400000)
+ ;; CHECK-NEXT: (local.get $b)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.const nan:0x400000)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $simplify-add-sub-with-neg-float-nans (param $a f32) (param $b f32)
+ ;; edge cases for -x + y
+ (drop (f32.add (f32.neg (f32.const nan)) (local.get $b)))
+ (drop (f32.add (f32.neg (local.get $a)) (f32.const nan)))
+ (drop (f32.add (f32.neg (f32.const -nan)) (local.get $b)))
+ (drop (f32.add (f32.neg (local.get $a)) (f32.const -nan)))
+ ;; edge cases for x + (-y)
+ (drop (f32.add (f32.const nan) (f32.neg (local.get $b))))
+ (drop (f32.add (local.get $a) (f32.neg (f32.const nan))))
+ (drop (f32.add (f32.const -nan) (f32.neg (local.get $b))))
+ (drop (f32.add (local.get $a) (f32.neg (f32.const -nan))))
+ ;; edge cases for x - (-y)
+ (drop (f32.sub (f32.const nan) (f32.neg (local.get $b))))
+ (drop (f32.sub (local.get $a) (f32.neg (f32.const nan))))
+ (drop (f32.sub (f32.const -nan) (f32.neg (local.get $b))))
+ (drop (f32.sub (local.get $a) (f32.neg (f32.const -nan))))
+ )
+ ;; CHECK: (func $simplify-add-sub-with-neg-float-infs (param $a f32) (param $b f32)
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.add
+ ;; CHECK-NEXT: (local.get $b)
+ ;; CHECK-NEXT: (f32.const -inf)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.sub
+ ;; CHECK-NEXT: (f32.const inf)
+ ;; CHECK-NEXT: (local.get $a)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.add
+ ;; CHECK-NEXT: (local.get $b)
+ ;; CHECK-NEXT: (f32.const inf)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.sub
+ ;; CHECK-NEXT: (f32.const -inf)
+ ;; CHECK-NEXT: (local.get $a)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.sub
+ ;; CHECK-NEXT: (f32.const inf)
+ ;; CHECK-NEXT: (local.get $b)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.add
+ ;; CHECK-NEXT: (local.get $a)
+ ;; CHECK-NEXT: (f32.const -inf)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.sub
+ ;; CHECK-NEXT: (f32.const -inf)
+ ;; CHECK-NEXT: (local.get $b)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.add
+ ;; CHECK-NEXT: (local.get $a)
+ ;; CHECK-NEXT: (f32.const inf)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.add
+ ;; CHECK-NEXT: (local.get $b)
+ ;; CHECK-NEXT: (f32.const inf)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.add
+ ;; CHECK-NEXT: (local.get $a)
+ ;; CHECK-NEXT: (f32.const inf)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.add
+ ;; CHECK-NEXT: (local.get $b)
+ ;; CHECK-NEXT: (f32.const -inf)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.add
+ ;; CHECK-NEXT: (local.get $a)
+ ;; CHECK-NEXT: (f32.const -inf)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $simplify-add-sub-with-neg-float-infs (param $a f32) (param $b f32)
+ ;; edge cases for -x + y
+ (drop (f32.add (f32.neg (f32.const inf)) (local.get $b)))
+ (drop (f32.add (f32.neg (local.get $a)) (f32.const inf)))
+ (drop (f32.add (f32.neg (f32.const -inf)) (local.get $b)))
+ (drop (f32.add (f32.neg (local.get $a)) (f32.const -inf)))
+ ;; edge cases for x + (-y)
+ (drop (f32.add (f32.const inf) (f32.neg (local.get $b))))
+ (drop (f32.add (local.get $a) (f32.neg (f32.const inf))))
+ (drop (f32.add (f32.const -inf) (f32.neg (local.get $b))))
+ (drop (f32.add (local.get $a) (f32.neg (f32.const -inf))))
+ ;; edge cases for x - (-y)
+ (drop (f32.sub (f32.const inf) (f32.neg (local.get $b))))
+ (drop (f32.sub (local.get $a) (f32.neg (f32.const inf))))
+ (drop (f32.sub (f32.const -inf) (f32.neg (local.get $b))))
+ (drop (f32.sub (local.get $a) (f32.neg (f32.const -inf))))
+ )
+ ;; CHECK: (func $simplify-add-sub-with-neg-float-mins (param $a f32) (param $b f32)
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.add
+ ;; CHECK-NEXT: (local.get $b)
+ ;; CHECK-NEXT: (f32.const -1.401298464324817e-45)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.sub
+ ;; CHECK-NEXT: (f32.const 1.401298464324817e-45)
+ ;; CHECK-NEXT: (local.get $a)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.add
+ ;; CHECK-NEXT: (local.get $b)
+ ;; CHECK-NEXT: (f32.const 1.401298464324817e-45)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.sub
+ ;; CHECK-NEXT: (f32.const -1.401298464324817e-45)
+ ;; CHECK-NEXT: (local.get $a)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.sub
+ ;; CHECK-NEXT: (f32.const 1.401298464324817e-45)
+ ;; CHECK-NEXT: (local.get $b)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.add
+ ;; CHECK-NEXT: (local.get $a)
+ ;; CHECK-NEXT: (f32.const -1.401298464324817e-45)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.sub
+ ;; CHECK-NEXT: (f32.const -1.401298464324817e-45)
+ ;; CHECK-NEXT: (local.get $b)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.add
+ ;; CHECK-NEXT: (local.get $a)
+ ;; CHECK-NEXT: (f32.const 1.401298464324817e-45)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.add
+ ;; CHECK-NEXT: (local.get $b)
+ ;; CHECK-NEXT: (f32.const 1.401298464324817e-45)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.add
+ ;; CHECK-NEXT: (local.get $a)
+ ;; CHECK-NEXT: (f32.const 1.401298464324817e-45)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.add
+ ;; CHECK-NEXT: (local.get $b)
+ ;; CHECK-NEXT: (f32.const -1.401298464324817e-45)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.add
+ ;; CHECK-NEXT: (local.get $a)
+ ;; CHECK-NEXT: (f32.const -1.401298464324817e-45)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $simplify-add-sub-with-neg-float-mins (param $a f32) (param $b f32)
+ ;; edge cases for -x + y
+ (drop (f32.add (f32.neg (f32.const 1.401298464324817e-45)) (local.get $b))) ;; +min value
+ (drop (f32.add (f32.neg (local.get $a)) (f32.const 1.401298464324817e-45))) ;; +min value
+ (drop (f32.add (f32.neg (f32.const -1.401298464324817e-45)) (local.get $b))) ;; -min value
+ (drop (f32.add (f32.neg (local.get $a)) (f32.const -1.401298464324817e-45))) ;; -min value
+ ;; edge cases for x + (-y)
+ (drop (f32.add (f32.const 1.401298464324817e-45) (f32.neg (local.get $b))))
+ (drop (f32.add (local.get $a) (f32.neg (f32.const 1.401298464324817e-45))))
+ (drop (f32.add (f32.const -1.401298464324817e-45) (f32.neg (local.get $b))))
+ (drop (f32.add (local.get $a) (f32.neg (f32.const -1.401298464324817e-45))))
+ ;; edge cases for x - (-y)
+ (drop (f32.sub (f32.const 1.401298464324817e-45) (f32.neg (local.get $b))))
+ (drop (f32.sub (local.get $a) (f32.neg (f32.const 1.401298464324817e-45))))
+ (drop (f32.sub (f32.const -1.401298464324817e-45) (f32.neg (local.get $b))))
+ (drop (f32.sub (local.get $a) (f32.neg (f32.const -1.401298464324817e-45))))
+ )
;; CHECK: (func $rhs-is-neg-one (param $x i32) (param $y i64) (param $fx f32) (param $fy f64)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (i32.add
@@ -10932,6 +11351,18 @@
;; CHECK-NEXT: (local.get $fy)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.sub
+ ;; CHECK-NEXT: (f32.const 3.5)
+ ;; CHECK-NEXT: (local.get $fx)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f64.sub
+ ;; CHECK-NEXT: (f64.const 5)
+ ;; CHECK-NEXT: (local.get $fy)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
;; CHECK-NEXT: )
(func $rhs-is-const (param $x i32) (param $y i64) (param $fx f32) (param $fy f64)
;; signed divs
@@ -11160,6 +11591,20 @@
(local.get $fy)
)
))
+
+ ;; -x + C -> C - x
+ (drop (f32.add
+ (f32.neg
+ (local.get $fx)
+ )
+ (f32.const 3.5)
+ ))
+ (drop (f64.sub
+ (f64.neg
+ (local.get $fy)
+ )
+ (f64.const -5)
+ ))
)
;; CHECK: (func $rhs-is-const-nan (param $x f32) (param $y f64)
;; CHECK-NEXT: (drop