[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