[llvm] 14fcdd7 - [CVP] Add additional ctlz tests (NFC)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 15 02:44:59 PST 2023


Author: Nikita Popov
Date: 2023-02-15T11:44:51+01:00
New Revision: 14fcdd7f9d7b3973661efc5a426da18e077155bf

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

LOG: [CVP] Add additional ctlz tests (NFC)

Added: 
    

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

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/CorrelatedValuePropagation/range.ll b/llvm/test/Transforms/CorrelatedValuePropagation/range.ll
index 26b31ce8ee096..4a364458ed1a2 100644
--- a/llvm/test/Transforms/CorrelatedValuePropagation/range.ll
+++ b/llvm/test/Transforms/CorrelatedValuePropagation/range.ll
@@ -934,8 +934,8 @@ entry:
   ret i1 %res
 }
 
-define i1 @intrinsic_range(i16 %x) {
-; CHECK-LABEL: @intrinsic_range(
+define i1 @ctlz_with_range_metadata(i16 %x) {
+; CHECK-LABEL: @ctlz_with_range_metadata(
 ; CHECK-NEXT:    [[CTLZ:%.*]] = call i16 @llvm.ctlz.i16(i16 [[X:%.*]], i1 false), !range [[RNG5:![0-9]+]]
 ; CHECK-NEXT:    [[TRUNC:%.*]] = trunc i16 [[CTLZ]] to i8
 ; CHECK-NEXT:    ret i1 true
@@ -946,8 +946,8 @@ define i1 @intrinsic_range(i16 %x) {
   ret i1 %res
 }
 
-define i1 @supported_intrinsic_range(i16 %x) {
-; CHECK-LABEL: @supported_intrinsic_range(
+define i1 @abs_with_range_metadata(i16 %x) {
+; CHECK-LABEL: @abs_with_range_metadata(
 ; CHECK-NEXT:    [[ABS:%.*]] = call i16 @llvm.abs.i16(i16 [[X:%.*]], i1 false), !range [[RNG5]]
 ; CHECK-NEXT:    [[TRUNC:%.*]] = trunc i16 [[ABS]] to i8
 ; CHECK-NEXT:    ret i1 true
@@ -958,6 +958,60 @@ define i1 @supported_intrinsic_range(i16 %x) {
   ret i1 %res
 }
 
+define i1 @ctlz_fold(i16 %x) {
+; CHECK-LABEL: @ctlz_fold(
+; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i16 [[X:%.*]], 256
+; CHECK-NEXT:    br i1 [[CMP]], label [[IF:%.*]], label [[ELSE:%.*]]
+; CHECK:       if:
+; CHECK-NEXT:    [[CTLZ:%.*]] = call i16 @llvm.ctlz.i16(i16 [[X]], i1 false)
+; CHECK-NEXT:    [[RES:%.*]] = icmp uge i16 [[CTLZ]], 8
+; CHECK-NEXT:    ret i1 [[RES]]
+; CHECK:       else:
+; CHECK-NEXT:    [[CTLZ2:%.*]] = call i16 @llvm.ctlz.i16(i16 [[X]], i1 false)
+; CHECK-NEXT:    [[RES2:%.*]] = icmp ult i16 [[CTLZ2]], 8
+; CHECK-NEXT:    ret i1 [[RES2]]
+;
+  %cmp = icmp ult i16 %x, 256
+  br i1 %cmp, label %if, label %else
+
+if:
+  %ctlz = call i16 @llvm.ctlz.i16(i16 %x, i1 false)
+  %res = icmp uge i16 %ctlz, 8
+  ret i1 %res
+
+else:
+  %ctlz2 = call i16 @llvm.ctlz.i16(i16 %x, i1 false)
+  %res2 = icmp ult i16 %ctlz2, 8
+  ret i1 %res2
+}
+
+define i1 @ctlz_nofold(i16 %x) {
+; CHECK-LABEL: @ctlz_nofold(
+; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i16 [[X:%.*]], 256
+; CHECK-NEXT:    br i1 [[CMP]], label [[IF:%.*]], label [[ELSE:%.*]]
+; CHECK:       if:
+; CHECK-NEXT:    [[CTLZ:%.*]] = call i16 @llvm.ctlz.i16(i16 [[X]], i1 false)
+; CHECK-NEXT:    [[RES:%.*]] = icmp uge i16 [[CTLZ]], 9
+; CHECK-NEXT:    ret i1 [[RES]]
+; CHECK:       else:
+; CHECK-NEXT:    [[CTLZ2:%.*]] = call i16 @llvm.ctlz.i16(i16 [[X]], i1 false)
+; CHECK-NEXT:    [[RES2:%.*]] = icmp ult i16 [[CTLZ2]], 7
+; CHECK-NEXT:    ret i1 [[RES2]]
+;
+  %cmp = icmp ult i16 %x, 256
+  br i1 %cmp, label %if, label %else
+
+if:
+  %ctlz = call i16 @llvm.ctlz.i16(i16 %x, i1 false)
+  %res = icmp uge i16 %ctlz, 9
+  ret i1 %res
+
+else:
+  %ctlz2 = call i16 @llvm.ctlz.i16(i16 %x, i1 false)
+  %res2 = icmp ult i16 %ctlz2, 7
+  ret i1 %res2
+}
+
 declare i16 @llvm.ctlz.i16(i16, i1)
 declare i16 @llvm.abs.i16(i16, i1)
 declare void @llvm.assume(i1)


        


More information about the llvm-commits mailing list