diff options
author | Alon Zakai <alonzakai@gmail.com> | 2016-09-06 10:32:02 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2016-09-07 18:41:22 -0700 |
commit | 8f0726cc87494f6721baab55ec035fa3facae0e3 (patch) | |
tree | 18ab09d83788f2121cd4117cdb373698f4286c1b /src | |
parent | 87f65f1623983bfc516ff4b222a3bb2537971837 (diff) | |
download | binaryen-8f0726cc87494f6721baab55ec035fa3facae0e3.tar.gz binaryen-8f0726cc87494f6721baab55ec035fa3facae0e3.tar.bz2 binaryen-8f0726cc87494f6721baab55ec035fa3facae0e3.zip |
use eqz as an optimization
Diffstat (limited to 'src')
-rw-r--r-- | src/passes/OptimizeInstructions.wast | 21 | ||||
-rw-r--r-- | src/passes/OptimizeInstructions.wast.processed | 21 |
2 files changed, 40 insertions, 2 deletions
diff --git a/src/passes/OptimizeInstructions.wast b/src/passes/OptimizeInstructions.wast index 7d5c56881..48a4e2c9d 100644 --- a/src/passes/OptimizeInstructions.wast +++ b/src/passes/OptimizeInstructions.wast @@ -19,8 +19,8 @@ ;; main function. each block here is a pattern pair of input => output (func $patterns + ;; flip if-else arms to get rid of an eqz (block - ;; flip if-else arms to get rid of an eqz (if (i32.eqz (call_import $i32.expr (i32.const 0)) @@ -34,6 +34,25 @@ (call_import $any.expr (i32.const 1)) ) ) + ;; equal 0 => eqz + (block + (i32.eq + (call_import $any.expr (i32.const 0)) + (i32.const 0) + ) + (i32.eqz + (call_import $any.expr (i32.const 0)) + ) + ) + (block + (i32.eq + (i32.const 0) + (call_import $any.expr (i32.const 0)) + ) + (i32.eqz + (call_import $any.expr (i32.const 0)) + ) + ) ;; De Morgans Laws (block (i32.eqz (i32.eq (call_import $i32.expr (i32.const 0)) (call_import $i32.expr (i32.const 1)))) diff --git a/src/passes/OptimizeInstructions.wast.processed b/src/passes/OptimizeInstructions.wast.processed index 61fde86c6..13ccc8241 100644 --- a/src/passes/OptimizeInstructions.wast.processed +++ b/src/passes/OptimizeInstructions.wast.processed @@ -19,8 +19,8 @@ "\n" ";; main function. each block here is a pattern pair of input => output\n" "(func $patterns\n" -"(block\n" ";; flip if-else arms to get rid of an eqz\n" +"(block\n" "(if\n" "(i32.eqz\n" "(call_import $i32.expr (i32.const 0))\n" @@ -34,6 +34,25 @@ "(call_import $any.expr (i32.const 1))\n" ")\n" ")\n" +";; equal 0 => eqz\n" +"(block\n" +"(i32.eq\n" +"(call_import $any.expr (i32.const 0))\n" +"(i32.const 0)\n" +")\n" +"(i32.eqz\n" +"(call_import $any.expr (i32.const 0))\n" +")\n" +")\n" +"(block\n" +"(i32.eq\n" +"(i32.const 0)\n" +"(call_import $any.expr (i32.const 0))\n" +")\n" +"(i32.eqz\n" +"(call_import $any.expr (i32.const 0))\n" +")\n" +")\n" ";; De Morgans Laws\n" "(block\n" "(i32.eqz (i32.eq (call_import $i32.expr (i32.const 0)) (call_import $i32.expr (i32.const 1))))\n" |