[llvm] 3e44054 - [CVP] Add test for cmp of local phi; NFC

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 26 11:33:15 PST 2020


Author: Nikita Popov
Date: 2020-02-26T20:32:59+01:00
New Revision: 3e440545dc4404f5fdc3edceba96d901aeaef923

URL: https://github.com/llvm/llvm-project/commit/3e440545dc4404f5fdc3edceba96d901aeaef923
DIFF: https://github.com/llvm/llvm-project/commit/3e440545dc4404f5fdc3edceba96d901aeaef923.diff

LOG: [CVP] Add test for cmp of local phi; NFC

Added: 
    

Modified: 
    llvm/test/Transforms/CorrelatedValuePropagation/icmp.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/CorrelatedValuePropagation/icmp.ll b/llvm/test/Transforms/CorrelatedValuePropagation/icmp.ll
index 8f783f828475..b09d2fd607a3 100644
--- a/llvm/test/Transforms/CorrelatedValuePropagation/icmp.ll
+++ b/llvm/test/Transforms/CorrelatedValuePropagation/icmp.ll
@@ -619,4 +619,39 @@ exit:
   ret i1 %iv
 }
 
+define void @test_cmp_phi(i8 %a) {
+; CHECK-LABEL: @test_cmp_phi(
+; CHECK-NEXT:  entry:
+; CHECK-NEXT:    [[C0:%.*]] = icmp ult i8 [[A:%.*]], 2
+; CHECK-NEXT:    br i1 [[C0]], label [[LOOP:%.*]], label [[EXIT:%.*]]
+; CHECK:       loop:
+; CHECK-NEXT:    [[P:%.*]] = phi i8 [ [[A]], [[ENTRY:%.*]] ], [ [[B:%.*]], [[LOOP]] ]
+; CHECK-NEXT:    [[C1:%.*]] = icmp ne i8 [[P]], 0
+; CHECK-NEXT:    [[C2:%.*]] = icmp ne i8 [[P]], 2
+; CHECK-NEXT:    [[C3:%.*]] = and i1 [[C1]], [[C2]]
+; CHECK-NEXT:    [[C4:%.*]] = call i1 @get_bool()
+; CHECK-NEXT:    [[B]] = zext i1 [[C4]] to i8
+; CHECK-NEXT:    br i1 [[C3]], label [[LOOP]], label [[EXIT]]
+; CHECK:       exit:
+; CHECK-NEXT:    ret void
+;
+entry:
+  %c0 = icmp ult i8 %a, 2
+  br i1 %c0, label %loop, label %exit
+
+loop:
+  %p = phi i8 [ %a, %entry ], [ %b, %loop ]
+  %c1 = icmp ne i8 %p, 0
+  %c2 = icmp ne i8 %p, 2
+  %c3 = and i1 %c1, %c2
+  %c4 = call i1 @get_bool()
+  %b = zext i1 %c4 to i8
+  br i1 %c3, label %loop, label %exit
+
+exit:
+  ret void
+}
+
+declare i1 @get_bool()
+
 attributes #4 = { noreturn }


        


More information about the llvm-commits mailing list