File tree Expand file tree Collapse file tree 1 file changed +9
-8
lines changed
llvm/lib/Transforms/Vectorize Expand file tree Collapse file tree 1 file changed +9
-8
lines changed Original file line number Diff line number Diff line change @@ -4274,16 +4274,17 @@ static bool canNarrowOps(ArrayRef<VPValue *> Ops) {
42744274 if (!WideMember0)
42754275 return false ;
42764276
4277+ for (const auto &[_, V] : enumerate(Ops)) {
4278+ auto *R = dyn_cast<VPWidenRecipe>(V);
4279+ if (!R || R->getOpcode () != WideMember0->getOpcode () ||
4280+ R->getNumOperands () > 2 )
4281+ return false ;
4282+ }
4283+
42774284 for (unsigned Idx = 0 ; Idx != WideMember0->getNumOperands (); ++Idx) {
42784285 SmallVector<VPValue *> Ops0;
4279- for (const auto &[I, V] : enumerate(Ops)) {
4280- auto *R = dyn_cast_or_null<VPWidenRecipe>(V);
4281- if (!R || R->getOpcode () != WideMember0->getOpcode () ||
4282- R->getNumOperands () > 2 )
4283- return false ;
4284-
4285- Ops0.push_back (R->getOperand (Idx));
4286- }
4286+ for (VPValue *Op : Ops)
4287+ Ops0.push_back (Op->getDefiningRecipe ()->getOperand (Idx));
42874288 if (any_of (enumerate(Ops0), [WideMember0, Idx](const auto &P) {
42884289 const auto &[OpIdx, OpV] = P;
42894290 return !canNarrowLoad (WideMember0, Idx, OpV, OpIdx);
You can’t perform that action at this time.
0 commit comments