Lines Matching defs:phi
436 // Adjust the computations below when the phi and the loop definition
640 // requires a phi in the epilog for the last definition from either
797 /// v1 = phi(a, v2) v1 = phi(a, v2)
798 /// v2 = phi(b, v3) v2 = phi(b, v3)
1101 // The loop value is another phi, which has not been scheduled.
1104 // The loop value is another phi, which has been scheduled.
1274 // Map from <LoopReg, InitReg> to phi register for all created phis. Note that
1277 // Map from LoopReg to phi register where the InitReg is undef.
1283 // Insert a phi that carries LoopReg from the loop body and InitReg otherwise.
1285 // or will be chosen so as to share another phi.
1286 Register phi(Register LoopReg, std::optional<Register> InitReg = {},
1327 // and the end of the block. Kill from the first non-phi to FirstMI.
1347 // Ensure a phi exists for all instructions that are either referenced by
1348 // an illegal phi or by an instruction outside the loop. This allows us to
1354 phi(R);
1361 phi(Def.getReg());
1376 // Non-phi producers are simple to remap. Insert as many phis as the
1388 Reg = phi(Reg);
1392 // First, dive through the phi chain to find the defaults for the generated
1420 // Peel off the first phi from Defaults and insert a phi between producer
1421 // and consumer. This phi will not be at the front of the block so we
1443 // Now we know the number of stages to jump back, insert the phi chain.
1446 LoopReg = phi(LoopReg, *DefaultI++, MRI.getRegClass(Reg));
1452 // by embedding a phi in the middle of the block. We will fix this up
1462 // Illegal phi should belong to the producer stage so that it can be
1471 Register KernelRewriter::phi(Register LoopReg, std::optional<Register> InitReg,
1473 // If the init register is not undef, try and find an existing phi.
1485 // InitReg is either undef or no existing phi takes InitReg as input. Try and
1486 // find a phi that takes undef as input.
1491 // Found a phi taking undef as input, and this input is undef so return
1494 // Found a phi taking undef as input, so rewrite it to take InitReg.
1506 // Failed to find any existing phi to reuse, so create a new one.
1567 // If this is an illegal phi, don't count it in distance.
1654 // The legal Phi is not necessary if the illegal phi's stage
1680 // If the instruction referenced by the phi is moved inside the block
1681 // we don't need the phi anymore.
1717 // If we are using a phi from the source block we need to add a new phi
1790 // Keep track at which iteration each phi belongs to. We need it to know
1825 // If the use comes from a phi we need to skip as many phi as the
1826 // distance between the epilogue and the kernel. Trace through the phi
2363 /// Return a phi if Reg is referenced by the phi.
2364 /// canApply() guarantees that at most only one such phi exists.
2390 // Examples that show which stages are merged by phi.
2652 // canApply() guarantees that DefMI is not phi and is an instruction in
2714 LLVM_DEBUG(dbgs() << "Can not apply MVE expander: A phi result is "
2715 "referenced outside of the loop or by phi.\n");
2720 // A register defined inside the loop must be referenced by only one phi at
2727 dbgs() << "Can not apply MVE expander: A phi source value coming "