Skip to content

Commit 7503131

Browse files
committed
Sink all_of, use dyn_cast, icmp -> cmp
1 parent a7df17e commit 7503131

File tree

1 file changed

+10
-11
lines changed

1 file changed

+10
-11
lines changed

llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1107,26 +1107,25 @@ static void simplifyRecipe(VPRecipeBase &R, VPTypeAnalysis &TypeInfo) {
11071107
return Def->replaceAllUsesWith(A);
11081108

11091109
// Try to fold Not into compares by adjusting the predicate in-place.
1110-
auto CanFold = [&A](VPUser *U) {
1111-
return match(
1112-
U, m_CombineOr(m_Not(m_Specific(A)),
1113-
m_Select(m_Specific(A), m_VPValue(), m_VPValue())));
1114-
};
1115-
if (isa<VPWidenRecipe>(A) && all_of(A->users(), CanFold)) {
1116-
auto *WideCmp = cast<VPWidenRecipe>(A);
1117-
if (WideCmp->getOpcode() == Instruction::ICmp ||
1118-
WideCmp->getOpcode() == Instruction::FCmp) {
1110+
if (auto *WideCmp = dyn_cast<VPWidenRecipe>(A)) {
1111+
if ((WideCmp->getOpcode() == Instruction::ICmp ||
1112+
WideCmp->getOpcode() == Instruction::FCmp) &&
1113+
all_of(WideCmp->users(), [&WideCmp](VPUser *U) {
1114+
return match(U, m_CombineOr(m_Not(m_Specific(WideCmp)),
1115+
m_Select(m_Specific(WideCmp),
1116+
m_VPValue(), m_VPValue())));
1117+
})) {
11191118
WideCmp->setPredicate(
11201119
CmpInst::getInversePredicate(WideCmp->getPredicate()));
11211120
for (VPUser *U : to_vector(WideCmp->users())) {
11221121
auto *R = cast<VPSingleDefRecipe>(U);
11231122
if (match(R, m_Select(m_Specific(WideCmp), m_VPValue(X),
11241123
m_VPValue(Y)))) {
1125-
// select (icmp pred), x, y -> select (icmp inv_pred), y, x
1124+
// select (cmp pred), x, y -> select (cmp inv_pred), y, x
11261125
R->setOperand(1, Y);
11271126
R->setOperand(2, X);
11281127
} else {
1129-
// not (icmp pred) -> icmp inv_pred
1128+
// not (cmp pred) -> cmp inv_pred
11301129
assert(match(R, m_Not(m_Specific(WideCmp))) && "Unexpected user");
11311130
R->replaceAllUsesWith(WideCmp);
11321131
}

0 commit comments

Comments
 (0)