diff options
| author | Roman Lebedev <lebedev.ri@gmail.com> | 2018-07-11 10:31:12 +0000 |
|---|---|---|
| committer | Roman Lebedev <lebedev.ri@gmail.com> | 2018-07-11 10:31:12 +0000 |
| commit | a042fae6e08d22750b529c3ff685f236bae5141f (patch) | |
| tree | a54f1f4f8aa0d66b255f8fe68c85afcbe37c3eff /llvm | |
| parent | a90530f7c108afc61af9b1d4c57d8fe62cf25908 (diff) | |
| download | bcm5719-llvm-a042fae6e08d22750b529c3ff685f236bae5141f.tar.gz bcm5719-llvm-a042fae6e08d22750b529c3ff685f236bae5141f.zip | |
[NFC][InstCombine] icmp-logical.ll: add a few more tests.
The @masked_and_notA_slightly_optimized and @masked_or_A
will break when PR38123 will be fixed:
https://rise4fun.com/Alive/Rny
Clearly, they aren't optimized currently.
https://rise4fun.com/Alive/ERo
llvm-svn: 336784
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/test/Transforms/InstCombine/icmp-logical.ll | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstCombine/icmp-logical.ll b/llvm/test/Transforms/InstCombine/icmp-logical.ll index 728ec834dc6..94ab8b5e6a3 100644 --- a/llvm/test/Transforms/InstCombine/icmp-logical.ll +++ b/llvm/test/Transforms/InstCombine/icmp-logical.ll @@ -71,6 +71,21 @@ define i1 @masked_and_notA(i32 %A) { ret i1 %res } +define i1 @masked_and_notA_slightly_optimized(i32 %A) { +; CHECK-LABEL: @masked_and_notA_slightly_optimized( +; CHECK-NEXT: [[TMP0:%.*]] = icmp ugt i32 [[A:%.*]], 7 +; CHECK-NEXT: [[MASK2:%.*]] = and i32 [[A]], 39 +; CHECK-NEXT: [[TST2:%.*]] = icmp ne i32 [[MASK2]], [[A]] +; CHECK-NEXT: [[RES:%.*]] = and i1 [[TMP0]], [[TST2]] +; CHECK-NEXT: ret i1 [[RES]] +; + %tmp0 = icmp uge i32 %A, 8 + %mask2 = and i32 %A, 39 + %tst2 = icmp ne i32 %mask2, %A + %res = and i1 %tmp0, %tst2 + ret i1 %res +} + define i1 @masked_or_A(i32 %A) { ; CHECK-LABEL: @masked_or_A( ; CHECK-NEXT: [[MASK2:%.*]] = and i32 [[A:%.*]], 39 @@ -85,6 +100,21 @@ define i1 @masked_or_A(i32 %A) { ret i1 %res } +define i1 @masked_or_A_slightly_optimized(i32 %A) { +; CHECK-LABEL: @masked_or_A_slightly_optimized( +; CHECK-NEXT: [[TMP0:%.*]] = icmp ult i32 [[A:%.*]], 8 +; CHECK-NEXT: [[MASK2:%.*]] = and i32 [[A]], 39 +; CHECK-NEXT: [[TST2:%.*]] = icmp eq i32 [[MASK2]], [[A]] +; CHECK-NEXT: [[RES:%.*]] = or i1 [[TMP0]], [[TST2]] +; CHECK-NEXT: ret i1 [[RES]] +; + %tmp0 = icmp ult i32 %A, 8 + %mask2 = and i32 %A, 39 + %tst2 = icmp eq i32 %mask2, %A + %res = or i1 %tmp0, %tst2 + ret i1 %res +} + define i1 @masked_or_allzeroes_notoptimised(i32 %A) { ; CHECK-LABEL: @masked_or_allzeroes_notoptimised( ; CHECK-NEXT: [[MASK1:%.*]] = and i32 [[A:%.*]], 15 |

