diff options
author | Max Graey <maxgraey@gmail.com> | 2021-12-14 22:09:09 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-14 12:09:09 -0800 |
commit | de3847140bce792a75a2f167b9c4e2aa107719c5 (patch) | |
tree | a7e0302b8f107411393c75e05d63ea135b57350e /test/lit/passes/optimize-instructions.wast | |
parent | b1f6298ed8756bdc3336429c04b92ba58d000b49 (diff) | |
download | binaryen-de3847140bce792a75a2f167b9c4e2aa107719c5.tar.gz binaryen-de3847140bce792a75a2f167b9c4e2aa107719c5.tar.bz2 binaryen-de3847140bce792a75a2f167b9c4e2aa107719c5.zip |
[OptimizeInstructions] Combine some relational ops joined Or/And (Part 4) (#4339)
(i32(x) < 0) & (i32(y) < 0) ==> i32(x & y) < 0
(i64(x) < 0) & (i64(y) < 0) ==> i64(x & y) < 0
Diffstat (limited to 'test/lit/passes/optimize-instructions.wast')
-rw-r--r-- | test/lit/passes/optimize-instructions.wast | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/test/lit/passes/optimize-instructions.wast b/test/lit/passes/optimize-instructions.wast index 9a5d33f87..7efbefcab 100644 --- a/test/lit/passes/optimize-instructions.wast +++ b/test/lit/passes/optimize-instructions.wast @@ -11119,6 +11119,38 @@ (i32.lt_s (local.get $y) (i32.const 0)) )) ) + ;; CHECK: (func $optimize-combined-by-and-lessthan-zero (param $x i32) (param $y i32) (param $a i64) (param $b i64) + ;; CHECK-NEXT: (drop + ;; CHECK-NEXT: (i32.lt_s + ;; CHECK-NEXT: (i32.and + ;; CHECK-NEXT: (local.get $x) + ;; CHECK-NEXT: (local.get $y) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (i32.const 0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (drop + ;; CHECK-NEXT: (i64.lt_s + ;; CHECK-NEXT: (i64.and + ;; CHECK-NEXT: (local.get $a) + ;; CHECK-NEXT: (local.get $b) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (i64.const 0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + (func $optimize-combined-by-and-lessthan-zero (param $x i32) (param $y i32) (param $a i64) (param $b i64) + ;; (i32(x) < 0) & (i32(y) < 0) ==> i32(x & y) < 0 + (drop (i32.and + (i32.lt_s (local.get $x) (i32.const 0)) + (i32.lt_s (local.get $y) (i32.const 0)) + )) + ;; (i64(x) < 0) & (i64(y) < 0) ==> i64(x & y) < 0 + (drop (i32.and + (i64.lt_s (local.get $a) (i64.const 0)) + (i64.lt_s (local.get $b) (i64.const 0)) + )) + ) ;; CHECK: (func $optimize-relationals (param $x i32) (param $y i32) (param $X i64) (param $Y i64) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.eq |