Lines Matching defs:InitReg
1274 // Map from <LoopReg, InitReg> to phi register for all created phis. Note that
1275 // this map is only used when InitReg is non-undef.
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.
1284 // If InitReg is not given it is chosen arbitrarily. It will either be undef
1286 Register phi(Register LoopReg, std::optional<Register> InitReg = {},
1471 Register KernelRewriter::phi(Register LoopReg, std::optional<Register> InitReg,
1474 if (InitReg) {
1475 auto I = Phis.find({LoopReg, *InitReg});
1485 // InitReg is either undef or no existing phi takes InitReg as input. Try and
1490 if (!InitReg)
1494 // Found a phi taking undef as input, so rewrite it to take InitReg.
1496 MI->getOperand(1).setReg(*InitReg);
1497 Phis.insert({{LoopReg, *InitReg}, R});
1499 MRI.constrainRegClass(R, MRI.getRegClass(*InitReg));
1510 if (InitReg) {
1512 MRI.constrainRegClass(R, MRI.getRegClass(*InitReg));
1517 .addReg(InitReg ? *InitReg : undef(RC))
1521 if (!InitReg)
1524 Phis[{LoopReg, *InitReg}] = R;
2322 unsigned InitReg = 0;
2327 getPhiRegs(*DefInst, OrigKernel, InitReg, LoopReg);
2341 NewReg = InitReg;
2502 unsigned InitReg, LoopReg;
2503 getPhiRegs(*Phi, OrigKernel, InitReg, LoopReg);
2504 Register NewInit = MRI.createVirtualRegister(MRI.getRegClass(InitReg));
2507 .addReg(InitReg)
2511 replacePhiSrc(*Phi, InitReg, NewInit, NewPreheader);