Lines Matching defs:InitReg
1273 // Map from <LoopReg, InitReg> to phi register for all created phis. Note that
1274 // this map is only used when InitReg is non-undef.
1276 // Map from LoopReg to phi register where the InitReg is undef.
1282 // Insert a phi that carries LoopReg from the loop body and InitReg otherwise.
1283 // If InitReg is not given it is chosen arbitrarily. It will either be undef
1285 Register phi(Register LoopReg, std::optional<Register> InitReg = {},
1470 Register KernelRewriter::phi(Register LoopReg, std::optional<Register> InitReg,
1473 if (InitReg) {
1474 auto I = Phis.find({LoopReg, *InitReg});
1484 // InitReg is either undef or no existing phi takes InitReg as input. Try and
1489 if (!InitReg)
1493 // Found a phi taking undef as input, so rewrite it to take InitReg.
1495 MI->getOperand(1).setReg(*InitReg);
1496 Phis.insert({{LoopReg, *InitReg}, R});
1498 MRI.constrainRegClass(R, MRI.getRegClass(*InitReg));
1509 if (InitReg) {
1511 MRI.constrainRegClass(R, MRI.getRegClass(*InitReg));
1516 .addReg(InitReg ? *InitReg : undef(RC))
1520 if (!InitReg)
1523 Phis[{LoopReg, *InitReg}] = R;
2321 unsigned InitReg = 0;
2326 getPhiRegs(*DefInst, OrigKernel, InitReg, LoopReg);
2340 NewReg = InitReg;
2501 unsigned InitReg, LoopReg;
2502 getPhiRegs(*Phi, OrigKernel, InitReg, LoopReg);
2503 Register NewInit = MRI.createVirtualRegister(MRI.getRegClass(InitReg));
2506 .addReg(InitReg)
2510 replacePhiSrc(*Phi, InitReg, NewInit, NewPreheader);