mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-25 05:22:04 +00:00
Cleanup PPC CR-spill kill flags and 32- vs. 64-bit instructions
There were a few places where kill flags were not being set correctly, and where 32-bit instruction variants were being used with 64-bit registers. After r178180, this code was being triggered causing llc to assert. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178220 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -1141,8 +1141,8 @@ PPCFrameLowering::spillCalleeSavedRegisters(MachineBasicBlock &MBB,
|
||||
// save slot via GPR12 (available in the prolog for 32- and 64-bit).
|
||||
if (Subtarget.isPPC64()) {
|
||||
// 64-bit: SP+8
|
||||
MBB.insert(MI, BuildMI(*MF, DL, TII.get(PPC::MFCR), PPC::X12));
|
||||
MBB.insert(MI, BuildMI(*MF, DL, TII.get(PPC::STW))
|
||||
MBB.insert(MI, BuildMI(*MF, DL, TII.get(PPC::MFCR8), PPC::X12));
|
||||
MBB.insert(MI, BuildMI(*MF, DL, TII.get(PPC::STW8))
|
||||
.addReg(PPC::X12,
|
||||
getKillRegState(true))
|
||||
.addImm(8)
|
||||
@@ -1182,7 +1182,7 @@ restoreCRs(bool isPPC64, bool CR2Spilled, bool CR3Spilled, bool CR4Spilled,
|
||||
|
||||
if (isPPC64) {
|
||||
// 64-bit: SP+8
|
||||
MBB.insert(MI, BuildMI(*MF, DL, TII.get(PPC::LWZ), PPC::X12)
|
||||
MBB.insert(MI, BuildMI(*MF, DL, TII.get(PPC::LWZ8), PPC::X12)
|
||||
.addImm(8)
|
||||
.addReg(PPC::X1));
|
||||
RestoreOp = PPC::MTCRF8;
|
||||
@@ -1198,15 +1198,15 @@ restoreCRs(bool isPPC64, bool CR2Spilled, bool CR3Spilled, bool CR4Spilled,
|
||||
|
||||
if (CR2Spilled)
|
||||
MBB.insert(MI, BuildMI(*MF, DL, TII.get(RestoreOp), PPC::CR2)
|
||||
.addReg(MoveReg));
|
||||
.addReg(MoveReg, getKillRegState(!CR3Spilled && !CR4Spilled)));
|
||||
|
||||
if (CR3Spilled)
|
||||
MBB.insert(MI, BuildMI(*MF, DL, TII.get(RestoreOp), PPC::CR3)
|
||||
.addReg(MoveReg));
|
||||
.addReg(MoveReg, getKillRegState(!CR4Spilled)));
|
||||
|
||||
if (CR4Spilled)
|
||||
MBB.insert(MI, BuildMI(*MF, DL, TII.get(RestoreOp), PPC::CR4)
|
||||
.addReg(MoveReg));
|
||||
.addReg(MoveReg, getKillRegState(true)));
|
||||
}
|
||||
|
||||
void PPCFrameLowering::
|
||||
|
||||
Reference in New Issue
Block a user