Lines Matching defs:Phi
668 reportVectorizationFailure("Unsupported outer loop Phi(s)",
680 PHINode *Phi, const InductionDescriptor &ID,
682 Inductions[Phi] = ID;
692 Type *PhiTy = Phi->getType();
693 const DataLayout &DL = Phi->getDataLayout();
714 PrimaryInduction = Phi;
724 AllowedExit.insert(Phi);
725 AllowedExit.insert(Phi->getIncomingValueForBlock(TheLoop->getLoopLatch()));
734 // Returns true if a given Phi is a supported induction.
735 auto IsSupportedPhi = [&](PHINode &Phi) -> bool {
737 if (InductionDescriptor::isInductionPHI(&Phi, TheLoop, PSE, ID) &&
739 addInductionPhi(&Phi, ID, AllowedExit);
742 // Bail out for any Phi in the outer loop header that is not a supported
800 if (auto *Phi = dyn_cast<PHINode>(&I)) {
801 Type *PhiTy = Phi->getType();
825 if (Phi->getNumIncomingValues() != 2) {
828 "CFGNotUnderstood", ORE, TheLoop, Phi);
833 if (RecurrenceDescriptor::isReductionPHI(Phi, TheLoop, RedDes, DB, AC,
837 Reductions[Phi] = RedDes;
868 if (InductionDescriptor::isInductionPHI(Phi, TheLoop, PSE, ID) &&
870 addInductionPhi(Phi, ID, AllowedExit);
875 if (RecurrenceDescriptor::isFixedOrderRecurrence(Phi, TheLoop, DT)) {
876 AllowedExit.insert(Phi);
877 FixedOrderRecurrences.insert(Phi);
883 if (InductionDescriptor::isInductionPHI(Phi, TheLoop, PSE, ID, true) &&
885 addInductionPhi(Phi, ID, AllowedExit);
892 "NonReductionValueUsedOutsideLoop", ORE, TheLoop, Phi);
1367 LoopVectorizationLegality::getIntOrFpInductionDescriptor(PHINode *Phi) const {
1368 if (!isInductionPhi(Phi))
1370 auto &ID = getInductionVars().find(Phi)->second;
1378 LoopVectorizationLegality::getPointerInductionDescriptor(PHINode *Phi) const {
1379 if (!isInductionPhi(Phi))
1381 auto &ID = getInductionVars().find(Phi)->second;
1398 const PHINode *Phi) const {
1399 return FixedOrderRecurrences.count(Phi);