Lines Matching defs:phi

26  * classification, the lexicographically first entry-phi is rotated to the front.
31 // Find very first entry-phi.
33 HInstruction* phi = nullptr;
38 if (other->IsLoopHeaderPhi() && (phi == nullptr || phis.FoundBefore(other, phi))) {
39 phi = other;
44 // If found, bring that entry-phi to front.
45 if (phi != nullptr) {
126 // Visit phi-operations and instructions.
248 // Rotate proper entry-phi to front.
254 // Analyze from entry-phi onwards.
255 HInstruction* phi = scc_[0];
256 if (!phi->IsLoopHeaderPhi()) {
261 InductionInfo* initial = LookupInfo(loop, phi->InputAt(0));
268 InductionInfo* update = TransferPhi(loop, phi, /* input_index */ 1);
270 AssignInfo(loop, phi, CreateInduction(kWrapAround, initial, update, type_));
276 // temporary meaning to its nodes, seeded from the phi instruction and back.
281 update = SolvePhiAllInputs(loop, phi, instruction);
284 loop, phi, instruction, instruction->InputAt(0), instruction->InputAt(1), kAdd, true);
287 loop, phi, instruction, instruction->InputAt(0), instruction->InputAt(1), kSub, true);
298 InductionInfo* induction = SolvePhi(phi, /* input_index */ 1);
302 // Classify first phi and then the rest of the cycle "on-demand".
304 AssignInfo(loop, phi, CreateInduction(kLinear, induction, initial, type_));
311 // rotating each first element to the end. Lastly, phi is classified.
317 AssignInfo(loop, phi, induction);
341 HInstruction* phi,
343 // Match all phi inputs from input_index onwards exactly.
344 const size_t count = phi->InputCount();
346 InductionInfo* a = LookupInfo(loop, phi->InputAt(input_index));
348 InductionInfo* b = LookupInfo(loop, phi->InputAt(i));
464 HInductionVarAnalysis::InductionInfo* HInductionVarAnalysis::SolvePhi(HInstruction* phi,
466 // Match all phi inputs from input_index onwards exactly.
467 const size_t count = phi->InputCount();
469 auto ita = cycle_.find(phi->InputAt(input_index));
472 auto itb = cycle_.find(phi->InputAt(i));
486 HInstruction* phi) {
487 // Match all phi inputs.
488 InductionInfo* match = SolvePhi(phi, /* input_index */ 0);
493 // Otherwise, try to solve for a periodic seeded from phi onward.
496 if (phi->IsLoopHeaderPhi() && phi->InputCount() == 2) {
497 InductionInfo* a = LookupInfo(loop, phi->InputAt(0));
499 if (phi->InputAt(1) == entry_phi) {
503 InductionInfo* b = SolvePhi(phi, /* input_index */ 1);
520 // invariant value, seeded from phi, keeps adding to the stride of the induction.
543 // one phi and one update, for a periodic idiom of the form k = c - k;