diff options
-rw-r--r-- | src/passes/OptimizeInstructions.cpp | 25 | ||||
-rw-r--r-- | test/lit/passes/optimize-instructions.wast | 445 | ||||
-rw-r--r-- | test/passes/optimize-instructions_fuzz-exec.txt | 61 |
3 files changed, 480 insertions, 51 deletions
diff --git a/src/passes/OptimizeInstructions.cpp b/src/passes/OptimizeInstructions.cpp index f16b0c1be..2f1b6b6a4 100644 --- a/src/passes/OptimizeInstructions.cpp +++ b/src/passes/OptimizeInstructions.cpp @@ -414,6 +414,31 @@ struct OptimizeInstructions } } { + // -x + y ==> y - x + // where x, y are floating points + Expression* x; + if (matches(curr, binary(Add, unary(Neg, any(&x)), any()))) { + curr->op = Abstract::getBinary(curr->type, Sub); + curr->left = x; + std::swap(curr->left, curr->right); + return replaceCurrent(curr); + } + } + { + // x + (-y) ==> x - y + // x - (-y) ==> x + y + // where x, y are floating points + Expression* y; + if (matches(curr, binary(Add, any(), unary(Neg, any(&y)))) || + matches(curr, binary(Sub, any(), unary(Neg, any(&y))))) { + curr->op = Abstract::getBinary( + curr->type, + curr->op == Abstract::getBinary(curr->type, Add) ? Sub : Add); + curr->right = y; + return replaceCurrent(curr); + } + } + { // -x * -y ==> x * y // where x, y are integers Binary* bin; 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 diff --git a/test/passes/optimize-instructions_fuzz-exec.txt b/test/passes/optimize-instructions_fuzz-exec.txt index 33a3945dc..53f5b848e 100644 --- a/test/passes/optimize-instructions_fuzz-exec.txt +++ b/test/passes/optimize-instructions_fuzz-exec.txt @@ -38,20 +38,10 @@ (export "ignore" (func $3)) (func $0 (call $logf32 - (f32.add - (f32.const -nan:0x7fff82) - (f32.neg - (f32.const -nan:0x7ff622) - ) - ) + (f32.const nan:0x400000) ) (call $logf32 - (f32.sub - (f32.const -nan:0x7fff82) - (f32.neg - (f32.const -nan:0x7ff622) - ) - ) + (f32.const nan:0x400000) ) (call $logf32 (f32.mul @@ -81,20 +71,10 @@ ) (func $1 (call $logf64 - (f64.add - (f64.const -nan:0xfffffffffff82) - (f64.neg - (f64.const -nan:0xfffffffffa622) - ) - ) + (f64.const nan:0x8000000000000) ) (call $logf64 - (f64.sub - (f64.const -nan:0xfffffffffff82) - (f64.neg - (f64.const -nan:0xfffffffffa622) - ) - ) + (f64.const nan:0x8000000000000) ) (call $logf64 (f64.mul @@ -124,51 +104,30 @@ ) (func $2 (call $logf32 - (f32.add - (f32.neg - (f32.const -nan:0x7ff622) - ) - (f32.const 0) - ) + (f32.const nan:0x400000) ) (call $logf32 (f32.add (f32.const -nan:0x7ff622) - (f32.neg - (f32.const 0) - ) + (f32.const -0) ) ) (call $logf32 - (f32.add - (f32.neg - (f32.const -nan:0x7ff622) - ) - (f32.const -0) - ) + (f32.const nan:0x400000) ) (call $logf32 (f32.add (f32.const -nan:0x7ff622) - (f32.neg - (f32.const -0) - ) + (f32.const 0) ) ) (call $logf32 - (f32.add - (f32.neg - (f32.const nan:0x7ff622) - ) - (f32.const 0) - ) + (f32.const nan:0x400000) ) (call $logf32 (f32.add (f32.const nan:0x7ff622) - (f32.neg - (f32.const 0) - ) + (f32.const -0) ) ) ) |