Lines Matching defs:ScratchReg
657 Register ScratchReg;
690 &MBB, false, twoUniqueScratchRegsRequired(&MBB), &ScratchReg, &TempReg);
694 SingleScratchReg = ScratchReg == TempReg;
818 BuildMI(MBB, MBBI, dl, MFLRInst, ScratchReg);
847 .addReg(ScratchReg, getKillRegState(!HasROPProtect))
865 .addReg(ScratchReg, getKillRegState(true))
901 // the negated frame size will be placed in ScratchReg.
907 // registers TempReg and ScratchReg, we have to save LR here which is stored
908 // in ScratchReg.
927 .addDef(ScratchReg) // ScratchReg stores the old sp.
930 // update the ScratchReg to meet the assumption that ScratchReg contains
933 BuildMI(MBB, MBBI, dl, TII.get(PPC::SUBF), ScratchReg)
934 .addReg(ScratchReg)
941 BuildMI(MBB, MBBI, dl, TII.get(PPC::RLDICL), ScratchReg)
946 BuildMI(MBB, MBBI, dl, TII.get(PPC::RLWINM), ScratchReg)
952 BuildMI(MBB, MBBI, dl, SubtractImmCarryingInst, ScratchReg)
953 .addReg(ScratchReg, RegState::Kill)
958 BuildMI(MBB, MBBI, dl, SubtractCarryingInst, ScratchReg)
959 .addReg(ScratchReg, RegState::Kill)
966 .addReg(ScratchReg);
973 TII.materializeImmPostRA(MBB, MBBI, dl, ScratchReg, NegFrameSize);
977 .addReg(ScratchReg);
994 // The negated frame size is in ScratchReg, and the SPReg has been
995 // decremented by the frame size: SPReg = old SPReg + ScratchReg.
999 // problem is that the only available register may be ScratchReg,
1002 // First, set ScratchReg to the old SP. This may need to be modified
1004 BuildMI(MBB, MBBI, dl, TII.get(PPC::SUBF), ScratchReg)
1005 .addReg(ScratchReg, RegState::Kill)
1008 if (ScratchReg == PPC::R0) {
1015 BuildMI(MBB, MBBI, dl, TII.get(PPC::ADDIC), ScratchReg)
1016 .addReg(ScratchReg)
1023 .addReg(ScratchReg); // This will be the index (R0 is ok here).
1027 BuildMI(MBB, MBBI, dl, TII.get(PPC::ADDIC), ScratchReg)
1028 .addReg(ScratchReg)
1034 .addReg(ScratchReg); // This will be the index (R0 is ok here).
1038 BuildMI(MBB, MBBI, dl, TII.get(PPC::ADDIC), ScratchReg)
1039 .addReg(ScratchReg)
1045 .addReg(ScratchReg); // This will be the index (R0 is ok here).
1048 .addReg(ScratchReg, RegState::Kill)
1052 // ScratchReg is not R0, so use it as the base register. It is
1056 // registers using ScratchReg as the base address.
1061 .addReg(ScratchReg);
1066 .addReg(ScratchReg);
1071 .addReg(ScratchReg);
1073 .addReg(ScratchReg, RegState::Kill)
1074 .addReg(ScratchReg);
1264 Register ScratchReg = MI.getOperand(0).getReg();
1352 Register ScratchReg, Register TempReg) {
1394 allocateAndProbe(*ProbeExitMBB, ProbeExitMBB->end(), 0, ScratchReg, false,
1407 BuildMI(&MBB, DL, TII.get(isPPC64 ? PPC::SUBF8 : PPC::SUBF), ScratchReg)
1413 .addReg(ScratchReg)
1428 ScratchReg)
1429 .addReg(ScratchReg)
1433 .addReg(ScratchReg)
1452 BuildMI(*CurrentMBB, {MI}, DL, TII.get(PPC::RLDICL), ScratchReg)
1457 BuildMI(*CurrentMBB, {MI}, DL, TII.get(PPC::RLWINM), ScratchReg)
1464 .addReg(ScratchReg)
1466 MaterializeImm(*CurrentMBB, {MI}, NegFrameSize, ScratchReg);
1469 .addReg(ScratchReg)
1471 CurrentMBB = probeRealignedStack(*CurrentMBB, {MI}, ScratchReg, FPReg);
1484 MaterializeImm(*CurrentMBB, {MI}, NegResidualSize, ScratchReg);
1485 allocateAndProbe(*CurrentMBB, {MI}, NegResidualSize, ScratchReg,
1492 MaterializeImm(*CurrentMBB, {MI}, NegProbeSize, ScratchReg);
1494 allocateAndProbe(*CurrentMBB, {MI}, NegProbeSize, ScratchReg, UseDForm,
1505 MaterializeImm(*CurrentMBB, {MI}, NumBlocks, ScratchReg);
1507 .addReg(ScratchReg, RegState::Kill);
1509 MaterializeImm(*CurrentMBB, {MI}, NegProbeSize, ScratchReg);
1518 allocateAndProbe(*LoopMBB, LoopMBB->end(), NegProbeSize, ScratchReg,
1577 Register ScratchReg;
1605 bool SingleScratchReg = findScratchRegister(&MBB, true, false, &ScratchReg,
1610 SingleScratchReg = ScratchReg == TempReg;
1733 TII.materializeImmPostRA(MBB, MBBI, dl, ScratchReg, FrameSize);
1737 .addReg(ScratchReg);
1755 // We don't want to use ScratchReg as a base register, because it
1758 // If FP is not saved, copy it to ScratchReg.
1760 BuildMI(MBB, MBBI, dl, OrInst, ScratchReg)
1770 assert(RBReg != ScratchReg && "Should have avoided ScratchReg");
1771 // If there is no red zone, ScratchReg may be needed for holding a useful
1778 // Here TempReg == ScratchReg, and in the absence of red zone ScratchReg
1789 // Delay restoring of the LR if ScratchReg is needed. This is ok, since
1790 // LR is stored in the caller's stack frame. ScratchReg will be needed
1791 // if RBReg is anything other than SP. We shouldn't use ScratchReg as
1795 BuildMI(MBB, StackUpdateLoc, dl, LoadInst, ScratchReg)
1810 // restored. Otherwise, restore the value of FP into ScratchReg.
1816 BuildMI(MBB, MBBI, dl, LoadInst, ScratchReg)
1845 assert(RBReg != ScratchReg && "Should be using FP or SP as base register");
1848 .addReg(ScratchReg)
1849 .addReg(ScratchReg);
1853 BuildMI(MBB, MBBI, dl, LoadInst, ScratchReg)
1875 .addReg(ScratchReg)
1879 BuildMI(MBB, StackUpdateLoc, dl, MTLRInst).addReg(ScratchReg);
1896 BuildMI(MBB, MBBI, dl, LoadImmShiftedInst, ScratchReg)
1898 BuildMI(MBB, MBBI, dl, OrImmInst, ScratchReg)
1899 .addReg(ScratchReg, RegState::Kill)
1904 .addReg(ScratchReg);