From 184cc11cee2a65d30c7696eb3284e132099e4acb Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 15 Jul 2016 13:19:23 -0700 Subject: eq/ne are ok to optimize even if they are nans (#640) --- src/passes/OptimizeInstructions.wast | 16 ++++++++++++++++ src/passes/OptimizeInstructions.wast.processed | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) (limited to 'src') diff --git a/src/passes/OptimizeInstructions.wast b/src/passes/OptimizeInstructions.wast index 616341a83..7d5c56881 100644 --- a/src/passes/OptimizeInstructions.wast +++ b/src/passes/OptimizeInstructions.wast @@ -115,6 +115,22 @@ (i32.eqz (i64.ge_u (call_import $i64.expr (i32.const 0)) (call_import $i64.expr (i32.const 1)))) (i64.lt_u (call_import $i64.expr (i32.const 0)) (call_import $i64.expr (i32.const 1))) ) + (block + (i32.eqz (f32.eq (call_import $f32.expr (i32.const 0)) (call_import $f32.expr (i32.const 1)))) + (f32.ne (call_import $f32.expr (i32.const 0)) (call_import $f32.expr (i32.const 1))) + ) + (block + (i32.eqz (f32.ne (call_import $f32.expr (i32.const 0)) (call_import $f32.expr (i32.const 1)))) + (f32.eq (call_import $f32.expr (i32.const 0)) (call_import $f32.expr (i32.const 1))) + ) + (block + (i32.eqz (f64.eq (call_import $f64.expr (i32.const 0)) (call_import $f64.expr (i32.const 1)))) + (f64.ne (call_import $f64.expr (i32.const 0)) (call_import $f64.expr (i32.const 1))) + ) + (block + (i32.eqz (f64.ne (call_import $f64.expr (i32.const 0)) (call_import $f64.expr (i32.const 1)))) + (f64.eq (call_import $f64.expr (i32.const 0)) (call_import $f64.expr (i32.const 1))) + ) ) ) diff --git a/src/passes/OptimizeInstructions.wast.processed b/src/passes/OptimizeInstructions.wast.processed index c6f6de0fd..61fde86c6 100644 --- a/src/passes/OptimizeInstructions.wast.processed +++ b/src/passes/OptimizeInstructions.wast.processed @@ -115,6 +115,22 @@ "(i32.eqz (i64.ge_u (call_import $i64.expr (i32.const 0)) (call_import $i64.expr (i32.const 1))))\n" "(i64.lt_u (call_import $i64.expr (i32.const 0)) (call_import $i64.expr (i32.const 1)))\n" ")\n" +"(block\n" +"(i32.eqz (f32.eq (call_import $f32.expr (i32.const 0)) (call_import $f32.expr (i32.const 1))))\n" +"(f32.ne (call_import $f32.expr (i32.const 0)) (call_import $f32.expr (i32.const 1)))\n" +")\n" +"(block\n" +"(i32.eqz (f32.ne (call_import $f32.expr (i32.const 0)) (call_import $f32.expr (i32.const 1))))\n" +"(f32.eq (call_import $f32.expr (i32.const 0)) (call_import $f32.expr (i32.const 1)))\n" +")\n" +"(block\n" +"(i32.eqz (f64.eq (call_import $f64.expr (i32.const 0)) (call_import $f64.expr (i32.const 1))))\n" +"(f64.ne (call_import $f64.expr (i32.const 0)) (call_import $f64.expr (i32.const 1)))\n" +")\n" +"(block\n" +"(i32.eqz (f64.ne (call_import $f64.expr (i32.const 0)) (call_import $f64.expr (i32.const 1))))\n" +"(f64.eq (call_import $f64.expr (i32.const 0)) (call_import $f64.expr (i32.const 1)))\n" +")\n" ")\n" ")\n" "\n" -- cgit v1.2.3