[CVP] Add test for !range being ignored on supported intrinsic (NFC)
authorNikita Popov <npopov@redhat.com>
Thu, 26 Jan 2023 14:06:19 +0000 (15:06 +0100)
committerNikita Popov <npopov@redhat.com>
Thu, 26 Jan 2023 14:06:48 +0000 (15:06 +0100)
llvm/test/Transforms/CorrelatedValuePropagation/range.ll

index 435a096..458ecae 100644 (file)
@@ -946,5 +946,19 @@ define i1 @intrinsic_range(i16 %x) {
   ret i1 %res
 }
 
+define i1 @supported_intrinsic_range(i16 %x) {
+; CHECK-LABEL: @supported_intrinsic_range(
+; CHECK-NEXT:    [[ABS:%.*]] = call i16 @llvm.abs.i16(i16 [[X:%.*]], i1 false), !range [[RNG5]]
+; CHECK-NEXT:    [[TRUNC:%.*]] = trunc i16 [[ABS]] to i8
+; CHECK-NEXT:    [[RES:%.*]] = icmp ult i8 [[TRUNC]], 8
+; CHECK-NEXT:    ret i1 [[RES]]
+;
+  %abs = call i16 @llvm.abs.i16(i16 %x, i1 false), !range !{i16 0, i16 8}
+  %trunc = trunc i16 %abs to i8
+  %res = icmp ult i8 %trunc, 8
+  ret i1 %res
+}
+
 declare i16 @llvm.ctlz.i16(i16, i1)
+declare i16 @llvm.abs.i16(i16, i1)
 declare void @llvm.assume(i1)