diff options
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" |