Lines Matching defs:FOR

1054 /// Sink users of \p FOR after the recipe defining the previous value \p
1055 /// Previous of the recurrence. \returns true if all users of \p FOR could be
1058 sinkRecurrenceUsersAfterPrevious(VPFirstOrderRecurrencePHIRecipe *FOR,
1067 // that case, FOR is not a fixed order recurrence.
1083 // Recursively sink users of FOR after Previous.
1084 WorkList.push_back(FOR);
1103 if (SinkCandidate == FOR)
1112 /// Try to hoist \p Previous and its operands before all users of \p FOR.
1113 static bool hoistPreviousBeforeFORUsers(VPFirstOrderRecurrencePHIRecipe *FOR,
1123 // Find the closest hoist point by looking at all users of FOR and selecting
1125 for (VPUser *U : FOR->users()) {
1130 assert(all_of(FOR->users(),
1136 "HoistPoint must dominate all users of FOR");
1152 // Candidate is outside loop region or a header phi, dominates FOR users w/o
1172 // Recursively try to hoist Previous and its operands before all users of FOR.
1183 // If we reach FOR, it means the original Previous depends on some other
1184 // recurrence that in turn depends on FOR. If that is the case, we would
1185 // also need to hoist recipes involving the other FOR, which may break
1187 if (Op == FOR)
1217 if (auto *FOR = dyn_cast<VPFirstOrderRecurrencePHIRecipe>(&R))
1218 RecurrencePhis.push_back(FOR);
1220 for (VPFirstOrderRecurrencePHIRecipe *FOR : RecurrencePhis) {
1222 VPRecipeBase *Previous = FOR->getBackedgeValue()->getDefiningRecipe();
1227 assert(PrevPhi->getParent() == FOR->getParent());
1232 if (!sinkRecurrenceUsersAfterPrevious(FOR, Previous, VPDT) &&
1233 !hoistPreviousBeforeFORUsers(FOR, Previous, VPDT))
1247 {FOR, FOR->getBackedgeValue()}));
1249 FOR->replaceAllUsesWith(RecurSplice);
1250 // Set the first operand of RecurSplice to FOR again, after replacing
1252 RecurSplice->setOperand(0, FOR);