Lines Matching defs:SymbolicPHI
5365 /// node whose symbolic (unknown) SCEV is \p SymbolicPHI, which is updated via
5369 /// Op == (SExt ix (Trunc iy (%SymbolicPHI) to ix) to iy)
5370 /// Op == (ZExt ix (Trunc iy (%SymbolicPHI) to ix) to iy)
5375 static Type *isSimpleCastedPHI(const SCEV *Op, const SCEVUnknown *SymbolicPHI,
5377 // The case where Op == SymbolicPHI (that is, with no type conversions on
5384 // Here we look for the case where Op = (ext(trunc(SymbolicPHI))), and in
5385 // this case predicates that allow us to prove that Op == SymbolicPHI will
5387 if (Op == SymbolicPHI)
5390 unsigned SourceBits = SE.getTypeSizeInBits(SymbolicPHI->getType());
5405 if (X != SymbolicPHI)
5420 // Analyze \p SymbolicPHI, a SCEV expression of a phi node, and check if the
5422 // (SExt/ZExt ix (Trunc iy (%SymbolicPHI) to ix) to iy) + InvariantAccum
5434 // and call this function with %SymbolicPHI = %X.
5446 // The returned pair means that SymbolicPHI can be rewritten into NewAddRec
5466 // (Trunc iy (SExt/ZExt ix (%SymbolicPHI + InvariantAccum) to iy) to ix)
5474 ScalarEvolution::createAddRecFromPHIWithCastsImpl(const SCEVUnknown *SymbolicPHI) {
5480 auto *PN = cast<PHINode>(SymbolicPHI->getValue());
5523 isSimpleCastedPHI(Add->getOperand(i), SymbolicPHI, Signed, *this)))
5672 // which the casts had been folded away. The caller can rewrite SymbolicPHI
5680 PredicatedSCEVRewrites[{SymbolicPHI, L}] = PredRewrite;
5685 ScalarEvolution::createAddRecFromPHIWithCasts(const SCEVUnknown *SymbolicPHI) {
5686 auto *PN = cast<PHINode>(SymbolicPHI->getValue());
5692 auto I = PredicatedSCEVRewrites.find({SymbolicPHI, L});
5697 if (Rewrite.first == SymbolicPHI)
5707 Rewrite = createAddRecFromPHIWithCastsImpl(SymbolicPHI);
5712 PredicatedSCEVRewrites[{SymbolicPHI, L}] = {SymbolicPHI, Predicates};