[llvm] e4b0655 - [InstCombine] Fix missing argument typo in `InstCombinerImpl::foldICmpShlConstant` (#94899)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Jun 9 12:17:04 PDT 2024
Author: Yingwei Zheng
Date: 2024-06-10T03:17:01+08:00
New Revision: e4b0655b297e4f4b0eb26548c8be48d527ebc178
URL: https://github.com/llvm/llvm-project/commit/e4b0655b297e4f4b0eb26548c8be48d527ebc178
DIFF: https://github.com/llvm/llvm-project/commit/e4b0655b297e4f4b0eb26548c8be48d527ebc178.diff
LOG: [InstCombine] Fix missing argument typo in `InstCombinerImpl::foldICmpShlConstant` (#94899)
Closes #94897.
Added:
Modified:
llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
llvm/test/Transforms/InstCombine/icmp.ll
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp b/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
index 4203147bc6a54..3fce4a3c20b33 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
@@ -2441,9 +2441,10 @@ Instruction *InstCombinerImpl::foldICmpShlConstant(ICmpInst &Cmp,
Type *TruncTy = ShType->getWithNewBitWidth(TypeBits - Amt);
Constant *NewC =
ConstantInt::get(TruncTy, RHSC.ashr(*ShiftAmt).trunc(TypeBits - Amt));
- return new ICmpInst(
- CmpPred, Builder.CreateTrunc(X, TruncTy, "", Shl->hasNoSignedWrap()),
- NewC);
+ return new ICmpInst(CmpPred,
+ Builder.CreateTrunc(X, TruncTy, "", /*IsNUW=*/false,
+ Shl->hasNoSignedWrap()),
+ NewC);
}
}
diff --git a/llvm/test/Transforms/InstCombine/icmp.ll b/llvm/test/Transforms/InstCombine/icmp.ll
index 4dbe2fc88ff71..8fc4a40141931 100644
--- a/llvm/test/Transforms/InstCombine/icmp.ll
+++ b/llvm/test/Transforms/InstCombine/icmp.ll
@@ -5255,6 +5255,16 @@ define i1 @test_icmp_shl_nuw(i64 %x) {
ret i1 %cmp
}
+define i1 @test_icmp_shl_nuw_i31(i31 %x) {
+; CHECK-LABEL: @test_icmp_shl_nuw_i31(
+; CHECK-NEXT: [[CMP:%.*]] = icmp ugt i31 [[X:%.*]], 250
+; CHECK-NEXT: ret i1 [[CMP]]
+;
+ %shl = shl nuw i31 %x, 23
+ %cmp = icmp ugt i31 %shl, -50331648
+ ret i1 %cmp
+}
+
define i1 @test_icmp_shl_nsw(i64 %x) {
; CHECK-LABEL: @test_icmp_shl_nsw(
; CHECK-NEXT: [[CMP:%.*]] = icmp ult i64 [[X:%.*]], 3
@@ -5265,6 +5275,17 @@ define i1 @test_icmp_shl_nsw(i64 %x) {
ret i1 %cmp
}
+define i1 @test_icmp_shl_nsw_i31(i31 %x) {
+; CHECK-LABEL: @test_icmp_shl_nsw_i31(
+; CHECK-NEXT: [[TMP1:%.*]] = trunc nsw i31 [[X:%.*]] to i8
+; CHECK-NEXT: [[CMP:%.*]] = icmp ugt i8 [[TMP1]], -6
+; CHECK-NEXT: ret i1 [[CMP]]
+;
+ %shl = shl nsw i31 %x, 23
+ %cmp = icmp ugt i31 %shl, -50331648
+ ret i1 %cmp
+}
+
define <2 x i1> @test_icmp_shl_vec(<2 x i64> %x) {
; CHECK-LABEL: @test_icmp_shl_vec(
; CHECK-NEXT: [[TMP1:%.*]] = trunc <2 x i64> [[X:%.*]] to <2 x i32>
@@ -5295,3 +5316,13 @@ define i1 @test_icmp_shl_sgt(i64 %x) {
%cmp = icmp sgt i64 %shl, 8589934591
ret i1 %cmp
}
+
+define i1 @pr94897(i32 range(i32 -2147483648, 0) %x) {
+; CHECK-LABEL: @pr94897(
+; CHECK-NEXT: [[CMP:%.*]] = icmp ugt i32 [[X:%.*]], -3
+; CHECK-NEXT: ret i1 [[CMP]]
+;
+ %shl = shl nsw i32 %x, 24
+ %cmp = icmp ugt i32 %shl, -50331648
+ ret i1 %cmp
+}
More information about the llvm-commits
mailing list