Skip to content

Commit 330a540

Browse files
committed
!fixup restructure op handling a bit
1 parent da5a2c5 commit 330a540

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4164,16 +4164,17 @@ static bool canNarrowOps(ArrayRef<VPValue *> Ops) {
41644164
if (!WideMember0)
41654165
return false;
41664166

4167+
for (const auto &[_, V] : enumerate(Ops)) {
4168+
auto *R = dyn_cast<VPWidenRecipe>(V);
4169+
if (!R || R->getOpcode() != WideMember0->getOpcode() ||
4170+
R->getNumOperands() > 2)
4171+
return false;
4172+
}
4173+
41674174
for (unsigned Idx = 0; Idx != WideMember0->getNumOperands(); ++Idx) {
41684175
SmallVector<VPValue *> Ops0;
4169-
for (const auto &[I, V] : enumerate(Ops)) {
4170-
auto *R = dyn_cast_or_null<VPWidenRecipe>(V->getDefiningRecipe());
4171-
if (!R || R->getOpcode() != WideMember0->getOpcode() ||
4172-
R->getNumOperands() > 2)
4173-
return false;
4174-
4175-
Ops0.push_back(R->getOperand(Idx));
4176-
}
4176+
for (VPValue *Op : Ops)
4177+
Ops0.push_back(Op->getDefiningRecipe()->getOperand(Idx));
41774178
if (any_of(enumerate(Ops0), [WideMember0, Idx](const auto &P) {
41784179
const auto &[OpIdx, OpV] = P;
41794180
return !canNarrowLoad(WideMember0, Idx, OpV, OpIdx);

0 commit comments

Comments
 (0)