diff options
-rw-r--r-- | src/passes/OptimizeInstructions.wast | 32 | ||||
-rw-r--r-- | src/passes/OptimizeInstructions.wast.processed | 32 | ||||
-rw-r--r-- | test/emcc_hello_world.fromasm | 30 | ||||
-rw-r--r-- | test/emcc_hello_world.fromasm.imprecise | 30 | ||||
-rw-r--r-- | test/passes/optimize-instructions.txt | 48 | ||||
-rw-r--r-- | test/passes/optimize-instructions.wast | 9 |
6 files changed, 91 insertions, 90 deletions
diff --git a/src/passes/OptimizeInstructions.wast b/src/passes/OptimizeInstructions.wast index 83459ad14..616341a83 100644 --- a/src/passes/OptimizeInstructions.wast +++ b/src/passes/OptimizeInstructions.wast @@ -115,38 +115,6 @@ (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 (f32.lt (call_import $f32.expr (i32.const 0)) (call_import $f32.expr (i32.const 1)))) - (f32.ge (call_import $f32.expr (i32.const 0)) (call_import $f32.expr (i32.const 1))) - ) - (block - (i32.eqz (f32.le (call_import $f32.expr (i32.const 0)) (call_import $f32.expr (i32.const 1)))) - (f32.gt (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))) - ) - (block - (i32.eqz (f64.lt (call_import $f64.expr (i32.const 0)) (call_import $f64.expr (i32.const 1)))) - (f64.ge (call_import $f64.expr (i32.const 0)) (call_import $f64.expr (i32.const 1))) - ) - (block - (i32.eqz (f64.le (call_import $f64.expr (i32.const 0)) (call_import $f64.expr (i32.const 1)))) - (f64.gt (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 6bd251c95..c6f6de0fd 100644 --- a/src/passes/OptimizeInstructions.wast.processed +++ b/src/passes/OptimizeInstructions.wast.processed @@ -115,38 +115,6 @@ "(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 (f32.lt (call_import $f32.expr (i32.const 0)) (call_import $f32.expr (i32.const 1))))\n" -"(f32.ge (call_import $f32.expr (i32.const 0)) (call_import $f32.expr (i32.const 1)))\n" -")\n" -"(block\n" -"(i32.eqz (f32.le (call_import $f32.expr (i32.const 0)) (call_import $f32.expr (i32.const 1))))\n" -"(f32.gt (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" -"(block\n" -"(i32.eqz (f64.lt (call_import $f64.expr (i32.const 0)) (call_import $f64.expr (i32.const 1))))\n" -"(f64.ge (call_import $f64.expr (i32.const 0)) (call_import $f64.expr (i32.const 1)))\n" -")\n" -"(block\n" -"(i32.eqz (f64.le (call_import $f64.expr (i32.const 0)) (call_import $f64.expr (i32.const 1))))\n" -"(f64.gt (call_import $f64.expr (i32.const 0)) (call_import $f64.expr (i32.const 1)))\n" -")\n" ")\n" ")\n" "\n" diff --git a/test/emcc_hello_world.fromasm b/test/emcc_hello_world.fromasm index 93932a33f..c85852a3f 100644 --- a/test/emcc_hello_world.fromasm +++ b/test/emcc_hello_world.fromasm @@ -5835,19 +5835,21 @@ ) ) (if - (f64.eq - (set_local $14 - (f64.mul - (f64.sub - (get_local $14) - (f64.convert_u/i32 - (get_local $5) + (i32.eqz + (f64.ne + (set_local $14 + (f64.mul + (f64.sub + (get_local $14) + (f64.convert_u/i32 + (get_local $5) + ) ) + (f64.const 1e9) ) - (f64.const 1e9) ) + (f64.const 0) ) - (f64.const 0) ) (block (set_local $7 @@ -6649,12 +6651,14 @@ ) ) (if - (f64.eq - (f64.add + (i32.eqz + (f64.ne + (f64.add + (get_local $14) + (get_local $29) + ) (get_local $14) - (get_local $29) ) - (get_local $14) ) (block (set_local $5 diff --git a/test/emcc_hello_world.fromasm.imprecise b/test/emcc_hello_world.fromasm.imprecise index cdfd59b07..08f647aed 100644 --- a/test/emcc_hello_world.fromasm.imprecise +++ b/test/emcc_hello_world.fromasm.imprecise @@ -5829,19 +5829,21 @@ ) ) (if - (f64.eq - (set_local $14 - (f64.mul - (f64.sub - (get_local $14) - (f64.convert_u/i32 - (get_local $5) + (i32.eqz + (f64.ne + (set_local $14 + (f64.mul + (f64.sub + (get_local $14) + (f64.convert_u/i32 + (get_local $5) + ) ) + (f64.const 1e9) ) - (f64.const 1e9) ) + (f64.const 0) ) - (f64.const 0) ) (block (set_local $7 @@ -6643,12 +6645,14 @@ ) ) (if - (f64.eq - (f64.add + (i32.eqz + (f64.ne + (f64.add + (get_local $14) + (get_local $29) + ) (get_local $14) - (get_local $29) ) - (get_local $14) ) (block (set_local $5 diff --git a/test/passes/optimize-instructions.txt b/test/passes/optimize-instructions.txt index c64115f49..bad6c5f6f 100644 --- a/test/passes/optimize-instructions.txt +++ b/test/passes/optimize-instructions.txt @@ -51,5 +51,53 @@ (i32.const 1) (i32.const 2) ) + (i32.eqz + (f32.gt + (f32.const 1) + (f32.const 2) + ) + ) + (i32.eqz + (f32.ge + (f32.const 1) + (f32.const 2) + ) + ) + (i32.eqz + (f32.lt + (f32.const 1) + (f32.const 2) + ) + ) + (i32.eqz + (f32.le + (f32.const 1) + (f32.const 2) + ) + ) + (i32.eqz + (f64.gt + (f64.const 1) + (f64.const 2) + ) + ) + (i32.eqz + (f64.ge + (f64.const 1) + (f64.const 2) + ) + ) + (i32.eqz + (f64.lt + (f64.const 1) + (f64.const 2) + ) + ) + (i32.eqz + (f64.le + (f64.const 1) + (f64.const 2) + ) + ) ) ) diff --git a/test/passes/optimize-instructions.wast b/test/passes/optimize-instructions.wast index b579a2054..614d59b11 100644 --- a/test/passes/optimize-instructions.wast +++ b/test/passes/optimize-instructions.wast @@ -29,6 +29,15 @@ (i32.eqz (i32.ge_u (i32.const 1) (i32.const 2))) (i32.eqz (i32.lt_u (i32.const 1) (i32.const 2))) (i32.eqz (i32.le_u (i32.const 1) (i32.const 2))) + + (i32.eqz (f32.gt (f32.const 1) (f32.const 2))) + (i32.eqz (f32.ge (f32.const 1) (f32.const 2))) + (i32.eqz (f32.lt (f32.const 1) (f32.const 2))) + (i32.eqz (f32.le (f32.const 1) (f32.const 2))) + (i32.eqz (f64.gt (f64.const 1) (f64.const 2))) + (i32.eqz (f64.ge (f64.const 1) (f64.const 2))) + (i32.eqz (f64.lt (f64.const 1) (f64.const 2))) + (i32.eqz (f64.le (f64.const 1) (f64.const 2))) ) ) |