summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms
diff options
context:
space:
mode:
authorRoman Lebedev <lebedev.ri@gmail.com>2018-07-11 10:31:12 +0000
committerRoman Lebedev <lebedev.ri@gmail.com>2018-07-11 10:31:12 +0000
commita042fae6e08d22750b529c3ff685f236bae5141f (patch)
treea54f1f4f8aa0d66b255f8fe68c85afcbe37c3eff /llvm/test/Transforms
parenta90530f7c108afc61af9b1d4c57d8fe62cf25908 (diff)
downloadbcm5719-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/test/Transforms')
-rw-r--r--llvm/test/Transforms/InstCombine/icmp-logical.ll30
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
OpenPOWER on IntegriCloud