Lines Matching defs:PN
705 bool SCEVExpander::isNormalAddRecExprPHI(PHINode *PN, Instruction *IncV,
727 if (IncV == PN)
730 return isNormalAddRecExprPHI(PN, IncV, L);
869 bool SCEVExpander::isExpandedAddRecExprPHI(PHINode *PN, Instruction *IncV,
874 if (IVOper == PN)
883 Value *SCEVExpander::expandIVInc(PHINode *PN, Value *StepV, const Loop *L,
887 if (PN->getType()->isPointerTy()) {
889 IncV = Builder.CreatePtrAdd(PN, StepV, "scevgep");
892 Builder.CreateSub(PN, StepV, Twine(IVName) + ".iv.next") :
893 Builder.CreateAdd(PN, StepV, Twine(IVName) + ".iv.next");
985 for (PHINode &PN : L->getHeader()->phis()) {
986 if (!SE.isSCEVable(PN.getType()))
991 if (!PN.isComplete()) {
993 DebugType, dbgs() << "One incomplete PHI is found: " << PN << "\n");
997 const SCEVAddRecExpr *PhiSCEV = dyn_cast<SCEVAddRecExpr>(SE.getSCEV(&PN));
1010 dyn_cast<Instruction>(PN.getIncomingValueForBlock(LatchBlock));
1016 if (!isExpandedAddRecExprPHI(&PN, TempIncV, L))
1019 if (!isNormalAddRecExprPHI(&PN, TempIncV, L))
1028 AddRecPhiMatch = &PN;
1038 AddRecPhiMatch = &PN;
1104 PHINode *PN =
1111 PN->addIncoming(StartV, Pred);
1121 Value *IncV = expandIVInc(PN, StepV, L, useSubtract);
1129 PN->addIncoming(IncV, Pred);
1138 InsertedValues.insert(PN);
1139 InsertedIVs.push_back(PN);
1140 return PN;
1166 PHINode *PN = getAddRecExprPHILiterally(Normalized, L, TruncTy, InvertStep);
1171 Result = PN;
1176 Result = PN->getIncomingValueForBlock(LatchBlock);
1214 Result = expandIVInc(PN, StepV, L, useSubtract);
1252 if (PHINode *PN = L->getCanonicalInductionVariable())
1253 if (SE.getTypeSizeInBits(PN->getType()) >= SE.getTypeSizeInBits(Ty))
1254 CanonicalIV = PN;
1690 if (PHINode *PN = dyn_cast<PHINode>(OrigInc))
1691 IP = PN->getParent()->getFirstInsertionPt();
1716 for (PHINode &PN : L->getHeader()->phis())
1717 Phis.push_back(&PN);
1735 auto SimplifyPHINode = [&](PHINode *PN) -> Value * {
1736 if (Value *V = simplifyInstruction(PN, {DL, &SE.TLI, &SE.DT, &SE.AC}))
1738 if (!SE.isSCEVable(PN->getType()))
1740 auto *Const = dyn_cast<SCEVConstant>(SE.getSCEV(PN));
2291 for (PHINode *PN : InsertedPHIs)
2292 rememberInstruction(PN);
2293 for (PHINode *PN : PHIsToRemove) {
2294 if (!PN->use_empty())
2296 InsertedValues.erase(PN);
2297 InsertedPostIncValues.erase(PN);
2298 PN->eraseFromParent();