Skip to content

Commit e460bda

Browse files
committed
clean up acc register allocation code
1 parent 4e19f2e commit e460bda

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1255,6 +1255,9 @@ void PPCRegisterInfo::lowerOctWordSpilling(MachineBasicBlock::iterator II,
12551255
bool IsLittleEndian = Subtarget.isLittleEndian();
12561256
bool IsKilled = MI.getOperand(0).isKill();
12571257

1258+
assert(!SrcReg.isVirtual() &&
1259+
"Spilling register pairs does not support virtual registers.");
1260+
12581261
addFrameReference(
12591262
BuildMI(MBB, II, DL, TII.get(PPC::STXV))
12601263
.addReg(TargetRegisterInfo::getSubReg(SrcReg, PPC::sub_vsx0),
@@ -1299,8 +1302,6 @@ void PPCRegisterInfo::lowerACCSpilling(MachineBasicBlock::iterator II,
12991302
bool IsKilled = MI.getOperand(0).isKill();
13001303

13011304
bool IsPrimed = PPC::ACCRCRegClass.contains(SrcReg);
1302-
Register Reg =
1303-
PPC::VSRp0 + (SrcReg - (IsPrimed ? PPC::ACC0 : PPC::UACC0)) * 2;
13041305
bool IsLittleEndian = Subtarget.isLittleEndian();
13051306

13061307
emitAccSpillRestoreInfo(MBB, IsPrimed, false);
@@ -1329,12 +1330,16 @@ void PPCRegisterInfo::lowerACCSpilling(MachineBasicBlock::iterator II,
13291330
spillPair(TargetRegisterInfo::getSubReg(SrcReg, PPC::sub_pair1),
13301331
IsLittleEndian ? 16 : 32);
13311332
} else {
1332-
addFrameReference(BuildMI(MBB, II, DL, TII.get(PPC::STXVP))
1333-
.addReg(Reg, getKillRegState(IsKilled)),
1334-
FrameIndex, IsLittleEndian ? 32 : 0);
1335-
addFrameReference(BuildMI(MBB, II, DL, TII.get(PPC::STXVP))
1336-
.addReg(Reg + 1, getKillRegState(IsKilled)),
1337-
FrameIndex, IsLittleEndian ? 0 : 32);
1333+
addFrameReference(
1334+
BuildMI(MBB, II, DL, TII.get(PPC::STXVP))
1335+
.addReg(TargetRegisterInfo::getSubReg(SrcReg, PPC::sub_pair0),
1336+
getKillRegState(IsKilled)),
1337+
FrameIndex, IsLittleEndian ? 32 : 0);
1338+
addFrameReference(
1339+
BuildMI(MBB, II, DL, TII.get(PPC::STXVP))
1340+
.addReg(TargetRegisterInfo::getSubReg(SrcReg, PPC::sub_pair1),
1341+
getKillRegState(IsKilled)),
1342+
FrameIndex, IsLittleEndian ? 0 : 32);
13381343
}
13391344
if (IsPrimed && !IsKilled)
13401345
BuildMI(MBB, II, DL, TII.get(PPC::XXMTACC), SrcReg).addReg(SrcReg);

0 commit comments

Comments
 (0)