[llvm] f9f865d - [CVP] Add test for select with assumes (NFC)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 18 01:00:57 PST 2022


Author: Nikita Popov
Date: 2022-01-18T10:00:48+01:00
New Revision: f9f865d86c822db6078a3f219d328249406635e1

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

LOG: [CVP] Add test for select with assumes (NFC)

The incoming values of selects are currently not intersected with
assumes.

Added: 
    

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

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/CorrelatedValuePropagation/basic.ll b/llvm/test/Transforms/CorrelatedValuePropagation/basic.ll
index 29322e3448294..da5cdab36f68f 100644
--- a/llvm/test/Transforms/CorrelatedValuePropagation/basic.ll
+++ b/llvm/test/Transforms/CorrelatedValuePropagation/basic.ll
@@ -1644,6 +1644,31 @@ exit:
   ret i1 false
 }
 
+define void @select_assume(i32 %a, i32 %b, i1 %c, i1* %p) {
+; CHECK-LABEL: @select_assume(
+; CHECK-NEXT:    [[C1:%.*]] = icmp ult i32 [[A:%.*]], 10
+; CHECK-NEXT:    call void @llvm.assume(i1 [[C1]])
+; CHECK-NEXT:    [[C2:%.*]] = icmp ult i32 [[B:%.*]], 20
+; CHECK-NEXT:    call void @llvm.assume(i1 [[C2]])
+; CHECK-NEXT:    [[S:%.*]] = select i1 [[C:%.*]], i32 [[A]], i32 [[B]]
+; CHECK-NEXT:    [[C3:%.*]] = icmp ult i32 [[S]], 19
+; CHECK-NEXT:    store i1 [[C3]], i1* [[P:%.*]], align 1
+; CHECK-NEXT:    [[C4:%.*]] = icmp ult i32 [[S]], 20
+; CHECK-NEXT:    store i1 [[C4]], i1* [[P]], align 1
+; CHECK-NEXT:    ret void
+;
+  %c1 = icmp ult i32 %a, 10
+  call void @llvm.assume(i1 %c1)
+  %c2 = icmp ult i32 %b, 20
+  call void @llvm.assume(i1 %c2)
+  %s = select i1 %c, i32 %a, i32 %b
+  %c3 = icmp ult i32 %s, 19
+  store i1 %c3, i1* %p
+  %c4 = icmp ult i32 %s, 20
+  store i1 %c4, i1* %p
+  ret void
+}
+
 
 declare i32 @llvm.uadd.sat.i32(i32, i32)
 declare i32 @llvm.usub.sat.i32(i32, i32)


        


More information about the llvm-commits mailing list