Skip to content

Commit 51fa11d

Browse files
committed
match APInt instead
1 parent 500a2d4 commit 51fa11d

File tree

1 file changed

+12
-27
lines changed

1 file changed

+12
-27
lines changed

llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp

Lines changed: 12 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1927,33 +1927,18 @@ Instruction *InstCombinerImpl::visitCallInst(CallInst &CI) {
19271927
// Canonicalize smax(smin(X, MinC), MaxC) to smin(smax(X, MaxC), MinC)
19281928
// if MinC s>= MaxC.
19291929
if (IID == Intrinsic::smax) {
1930-
Constant *MinC, *MaxC;
1931-
if (match(I0, m_OneUse(m_Intrinsic<Intrinsic::smin>(
1932-
m_Value(X), m_ImmConstant(MinC)))) &&
1933-
match(I1, m_ImmConstant(MaxC))) {
1934-
1935-
bool MinSgeMax = false;
1936-
1937-
ConstantInt *MinCI = dyn_cast<ConstantInt>(MinC);
1938-
ConstantInt *MaxCI = dyn_cast<ConstantInt>(MaxC);
1939-
if (MinCI && MaxCI && MinCI->getValue().sge(MaxCI->getValue())) {
1940-
MinSgeMax = true;
1941-
} else if (MinC->getType()->isVectorTy()) {
1942-
ConstantInt *MinSplat =
1943-
dyn_cast_or_null<ConstantInt>(MinC->getSplatValue());
1944-
ConstantInt *MaxSplat =
1945-
dyn_cast_or_null<ConstantInt>(MaxC->getSplatValue());
1946-
if (MinSplat && MaxSplat &&
1947-
MinSplat->getValue().sge(MaxSplat->getValue())) {
1948-
MinSgeMax = true;
1949-
}
1950-
}
1951-
1952-
if (MinSgeMax) {
1953-
Value *NewSMax =
1954-
Builder.CreateBinaryIntrinsic(Intrinsic::smax, X, MaxC);
1955-
return replaceInstUsesWith(*II, Builder.CreateBinaryIntrinsic(
1956-
Intrinsic::smin, NewSMax, MinC));
1930+
const APInt *MinC, *MaxC;
1931+
if (match(I0, m_OneUse(m_Intrinsic<Intrinsic::smin>(m_Value(X),
1932+
m_APInt(MinC)))) &&
1933+
match(I1, m_APInt(MaxC))) {
1934+
1935+
if (MinC->sgt(*MaxC)) {
1936+
Value *NewSMax = Builder.CreateBinaryIntrinsic(
1937+
Intrinsic::smax, X, ConstantInt::get(X->getType(), *MaxC));
1938+
return replaceInstUsesWith(
1939+
*II, Builder.CreateBinaryIntrinsic(
1940+
Intrinsic::smin, NewSMax,
1941+
ConstantInt::get(X->getType(), *MinC)));
19571942
}
19581943
}
19591944
}

0 commit comments

Comments
 (0)