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.
925 .addDef(ScratchReg) // ScratchReg stores the old sp.
928 // update the ScratchReg to meet the assumption that ScratchReg contains
931 BuildMI(MBB, MBBI, dl, TII.get(PPC::SUBF), ScratchReg)
932 .addReg(ScratchReg)
939 BuildMI(MBB, MBBI, dl, TII.get(PPC::RLDICL), ScratchReg)
944 BuildMI(MBB, MBBI, dl, TII.get(PPC::RLWINM), ScratchReg)
950 BuildMI(MBB, MBBI, dl, SubtractImmCarryingInst, ScratchReg)
951 .addReg(ScratchReg, RegState::Kill)
956 BuildMI(MBB, MBBI, dl, SubtractCarryingInst, ScratchReg)
957 .addReg(ScratchReg, RegState::Kill)
964 .addReg(ScratchReg);
971 TII.materializeImmPostRA(MBB, MBBI, dl, ScratchReg, NegFrameSize);
975 .addReg(ScratchReg);
992 // The negated frame size is in ScratchReg, and the SPReg has been
993 // decremented by the frame size: SPReg = old SPReg + ScratchReg.
997 // problem is that the only available register may be ScratchReg,
1000 // First, set ScratchReg to the old SP. This may need to be modified
1002 BuildMI(MBB, MBBI, dl, TII.get(PPC::SUBF), ScratchReg)
1003 .addReg(ScratchReg, RegState::Kill)
1006 if (ScratchReg == PPC::R0) {
1013 BuildMI(MBB, MBBI, dl, TII.get(PPC::ADDIC), ScratchReg)
1014 .addReg(ScratchReg)
1021 .addReg(ScratchReg); // This will be the index (R0 is ok here).
1025 BuildMI(MBB, MBBI, dl, TII.get(PPC::ADDIC), ScratchReg)
1026 .addReg(ScratchReg)
1032 .addReg(ScratchReg); // This will be the index (R0 is ok here).
1036 BuildMI(MBB, MBBI, dl, TII.get(PPC::ADDIC), ScratchReg)
1037 .addReg(ScratchReg)
1043 .addReg(ScratchReg); // This will be the index (R0 is ok here).
1046 .addReg(ScratchReg, RegState::Kill)
1050 // ScratchReg is not R0, so use it as the base register. It is
1054 // registers using ScratchReg as the base address.
1059 .addReg(ScratchReg);
1064 .addReg(ScratchReg);
1069 .addReg(ScratchReg);
1071 .addReg(ScratchReg, RegState::Kill)
1072 .addReg(ScratchReg);
1261 Register ScratchReg = MI.getOperand(0).getReg();
1349 Register ScratchReg, Register TempReg) {
1391 allocateAndProbe(*ProbeExitMBB, ProbeExitMBB->end(), 0, ScratchReg, false,
1404 BuildMI(&MBB, DL, TII.get(isPPC64 ? PPC::SUBF8 : PPC::SUBF), ScratchReg)
1410 .addReg(ScratchReg)
1425 ScratchReg)
1426 .addReg(ScratchReg)
1430 .addReg(ScratchReg)
1449 BuildMI(*CurrentMBB, {MI}, DL, TII.get(PPC::RLDICL), ScratchReg)
1454 BuildMI(*CurrentMBB, {MI}, DL, TII.get(PPC::RLWINM), ScratchReg)
1461 .addReg(ScratchReg)
1463 MaterializeImm(*CurrentMBB, {MI}, NegFrameSize, ScratchReg);
1466 .addReg(ScratchReg)
1468 CurrentMBB = probeRealignedStack(*CurrentMBB, {MI}, ScratchReg, FPReg);
1481 MaterializeImm(*CurrentMBB, {MI}, NegResidualSize, ScratchReg);
1482 allocateAndProbe(*CurrentMBB, {MI}, NegResidualSize, ScratchReg,
1489 MaterializeImm(*CurrentMBB, {MI}, NegProbeSize, ScratchReg);
1491 allocateAndProbe(*CurrentMBB, {MI}, NegProbeSize, ScratchReg, UseDForm,
1502 MaterializeImm(*CurrentMBB, {MI}, NumBlocks, ScratchReg);
1504 .addReg(ScratchReg, RegState::Kill);
1506 MaterializeImm(*CurrentMBB, {MI}, NegProbeSize, ScratchReg);
1515 allocateAndProbe(*LoopMBB, LoopMBB->end(), NegProbeSize, ScratchReg,
1574 Register ScratchReg;
1602 bool SingleScratchReg = findScratchRegister(&MBB, true, false, &ScratchReg,
1607 SingleScratchReg = ScratchReg == TempReg;
1730 TII.materializeImmPostRA(MBB, MBBI, dl, ScratchReg, FrameSize);
1734 .addReg(ScratchReg);
1752 // We don't want to use ScratchReg as a base register, because it
1755 // If FP is not saved, copy it to ScratchReg.
1757 BuildMI(MBB, MBBI, dl, OrInst, ScratchReg)
1767 assert(RBReg != ScratchReg && "Should have avoided ScratchReg");
1768 // If there is no red zone, ScratchReg may be needed for holding a useful
1775 // Here TempReg == ScratchReg, and in the absence of red zone ScratchReg
1786 // Delay restoring of the LR if ScratchReg is needed. This is ok, since
1787 // LR is stored in the caller's stack frame. ScratchReg will be needed
1788 // if RBReg is anything other than SP. We shouldn't use ScratchReg as
1792 BuildMI(MBB, StackUpdateLoc, dl, LoadInst, ScratchReg)
1807 // restored. Otherwise, restore the value of FP into ScratchReg.
1813 BuildMI(MBB, MBBI, dl, LoadInst, ScratchReg)
1842 assert(RBReg != ScratchReg && "Should be using FP or SP as base register");
1845 .addReg(ScratchReg)
1846 .addReg(ScratchReg);
1850 BuildMI(MBB, MBBI, dl, LoadInst, ScratchReg)
1872 .addReg(ScratchReg)
1876 BuildMI(MBB, StackUpdateLoc, dl, MTLRInst).addReg(ScratchReg);
1893 BuildMI(MBB, MBBI, dl, LoadImmShiftedInst, ScratchReg)
1895 BuildMI(MBB, MBBI, dl, OrImmInst, ScratchReg)
1896 .addReg(ScratchReg, RegState::Kill)
1901 .addReg(ScratchReg);