summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/passes/OptimizeInstructions.wast21
-rw-r--r--src/passes/OptimizeInstructions.wast.processed21
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"