Skip to content

Commit 71d1be0

Browse files
committed
Addressed review comments.
1 parent e668962 commit 71d1be0

File tree

1 file changed

+7
-19
lines changed

1 file changed

+7
-19
lines changed

llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3720,39 +3720,27 @@ static Value *foldSelectIntoAddConstant(SelectInst &SI,
37203720

37213721
// Note: OneUse check for `Cmp` is necessary because it makes sure that other
37223722
// InstCombine folds don't undo this transformation and cause an infinite
3723-
// loop.
3723+
// loop. Furthermore, it could also increase the operation count.
37243724
if (match(&SI, m_Select(m_OneUse(m_FCmp(Pred, m_Value(X), m_Value(Z))),
37253725
m_OneUse(m_Instruction(FAdd)), m_Constant(C))) ||
37263726
match(&SI, m_Select(m_OneUse(m_FCmp(Pred, m_Value(X), m_Value(Z))),
37273727
m_Constant(C), m_OneUse(m_Instruction(FAdd))))) {
37283728
if (!match(Z, m_AnyZeroFP()))
37293729
return nullptr;
37303730

3731-
// Only these Predicates can be transformed into fmaxnum/fminnum intrinsic.
3732-
switch (Pred) {
3733-
default:
3731+
// Only these relational predicates can be transformed into maxnum/minnum
3732+
// intrinsic.
3733+
if (!CmpInst::isRelational(Pred))
37343734
return nullptr;
3735-
case FCmpInst::FCMP_OGT:
3736-
case FCmpInst::FCMP_OGE:
3737-
case FCmpInst::FCMP_OLT:
3738-
case FCmpInst::FCMP_OLE:
3739-
case FCmpInst::FCMP_UGT:
3740-
case FCmpInst::FCMP_UGE:
3741-
case FCmpInst::FCMP_ULT:
3742-
case FCmpInst::FCMP_ULE:
3743-
break;
3744-
}
37453735

37463736
if (!match(FAdd, m_FAdd(m_Specific(X), m_Specific(C))))
37473737
return nullptr;
37483738

3749-
Value *NewSelect = Builder.CreateSelect(SI.getCondition(), X, Z,
3750-
SI.getName() + ".new", &SI);
3739+
Value *NewSelect =
3740+
Builder.CreateSelect(SI.getCondition(), X, Z, SI.getName(), &SI);
37513741
cast<Instruction>(NewSelect)->setFastMathFlags(SI.getFastMathFlags());
37523742

3753-
Value *NewFAdd =
3754-
Builder.CreateFAddFMF(NewSelect, C, FAdd, FAdd->getName() + ".new");
3755-
return NewFAdd;
3743+
return Builder.CreateFAddFMF(NewSelect, C, FAdd, FAdd->getName());
37563744
}
37573745

37583746
return nullptr;

0 commit comments

Comments
 (0)