Lines Matching refs:Cond

57                         ConditionInfo &Cond) {  in analyzeICmp()  argument
58 Cond.ICmp = ICmp; in analyzeICmp()
59 if (match(ICmp, m_ICmp(Cond.Pred, m_Value(Cond.AddRecValue), in analyzeICmp()
60 m_Value(Cond.BoundValue)))) { in analyzeICmp()
61 Cond.AddRecSCEV = SE.getSCEV(Cond.AddRecValue); in analyzeICmp()
62 Cond.BoundSCEV = SE.getSCEV(Cond.BoundValue); in analyzeICmp()
64 if (isa<SCEVAddRecExpr>(Cond.BoundSCEV) && in analyzeICmp()
65 !isa<SCEVAddRecExpr>(Cond.AddRecSCEV)) { in analyzeICmp()
66 std::swap(Cond.AddRecValue, Cond.BoundValue); in analyzeICmp()
67 std::swap(Cond.AddRecSCEV, Cond.BoundSCEV); in analyzeICmp()
68 Cond.Pred = ICmpInst::getSwappedPredicate(Cond.Pred); in analyzeICmp()
74 ConditionInfo &Cond, bool IsExitCond) { in calculateUpperBound() argument
76 const SCEV *ExitCount = SE.getExitCount(&L, Cond.ICmp->getParent()); in calculateUpperBound()
80 Cond.BoundSCEV = ExitCount; in calculateUpperBound()
85 if (Cond.Pred == ICmpInst::ICMP_SLT || Cond.Pred == ICmpInst::ICMP_ULT) in calculateUpperBound()
91 if (Cond.Pred != ICmpInst::ICMP_ULE && Cond.Pred != ICmpInst::ICMP_SLE) in calculateUpperBound()
95 dyn_cast<IntegerType>(Cond.BoundSCEV->getType())) { in calculateUpperBound()
97 APInt Max = ICmpInst::isSigned(Cond.Pred) in calculateUpperBound()
103 ICmpInst::isSigned(Cond.Pred) ? ICmpInst::ICMP_SLT : ICmpInst::ICMP_ULT; in calculateUpperBound()
104 if (SE.isKnownPredicate(Pred, Cond.BoundSCEV, MaxSCEV)) { in calculateUpperBound()
106 SE.getAddExpr(Cond.BoundSCEV, SE.getOne(BoundSCEVIntType)); in calculateUpperBound()
107 Cond.BoundSCEV = BoundPlusOneSCEV; in calculateUpperBound()
108 Cond.Pred = Pred; in calculateUpperBound()
119 ICmpInst *ICmp, ConditionInfo &Cond, in hasProcessableCondition() argument
121 analyzeICmp(SE, ICmp, Cond); in hasProcessableCondition()
124 if (!SE.isAvailableAtLoopEntry(Cond.BoundSCEV, &L)) in hasProcessableCondition()
127 const SCEVAddRecExpr *AddRecSCEV = dyn_cast<SCEVAddRecExpr>(Cond.AddRecSCEV); in hasProcessableCondition()
147 if (!calculateUpperBound(L, SE, Cond, IsExitCond)) in hasProcessableCondition()
174 ScalarEvolution &SE, ConditionInfo &Cond) { in canSplitLoopBound() argument
210 if (!hasProcessableCondition(L, SE, ICmp, Cond, /*IsExitCond*/ true)) in canSplitLoopBound()
213 Cond.BI = ExitingBI; in canSplitLoopBound()
349 Value *Cond = in splitLoopBound() local
351 Builder.CreateCondBr(Cond, PostLoop->getHeader(), PostLoop->getExitBlock()); in splitLoopBound()