aboutsummaryrefslogtreecommitdiff
path: root/lib/Target/PowerPC/PPCRegisterInfo.cpp
diff options
context:
space:
mode:
authorNate Begeman <natebegeman@mac.com>2004-10-26 05:40:45 +0000
committerNate Begeman <natebegeman@mac.com>2004-10-26 05:40:45 +0000
commitdfd0e7bc342f1252a2d2088ca5a759b6f04a65d7 (patch)
tree5d36f80cfe034d608166a787d0b121548e4f9081 /lib/Target/PowerPC/PPCRegisterInfo.cpp
parent6f335f905c76187a7baf70a227fa843061473afe (diff)
Eliminate usage of MRegisterInfo::getRegClass(physreg)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17240 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/PowerPC/PPCRegisterInfo.cpp')
-rw-r--r--lib/Target/PowerPC/PPCRegisterInfo.cpp14
1 files changed, 9 insertions, 5 deletions
diff --git a/lib/Target/PowerPC/PPCRegisterInfo.cpp b/lib/Target/PowerPC/PPCRegisterInfo.cpp
index a7b5cb5bad..3660c2f476 100644
--- a/lib/Target/PowerPC/PPCRegisterInfo.cpp
+++ b/lib/Target/PowerPC/PPCRegisterInfo.cpp
@@ -48,6 +48,13 @@ PPC32RegisterInfo::PPC32RegisterInfo()
ImmToIdxMap[PPC::ADDI] = PPC::ADD;
}
+static const TargetRegisterClass *getClass(unsigned SrcReg) {
+ if (PPC32::FPRCRegisterClass->contains(SrcReg))
+ return PPC32::FPRCRegisterClass;
+ assert(PPC32::GPRCRegisterClass->contains(SrcReg) && "Reg not FPR or GPR");
+ return PPC32::GPRCRegisterClass;
+}
+
static unsigned getIdx(const TargetRegisterClass *RC) {
if (RC == PPC32::GPRCRegisterClass) {
switch (RC->getSize()) {
@@ -71,12 +78,10 @@ void
PPC32RegisterInfo::storeRegToStackSlot(MachineBasicBlock &MBB,
MachineBasicBlock::iterator MI,
unsigned SrcReg, int FrameIdx) const {
- const TargetRegisterClass *RC = getRegClass(SrcReg);
static const unsigned Opcode[] = {
PPC::STB, PPC::STH, PPC::STW, PPC::STFS, PPC::STFD
};
-
- unsigned OC = Opcode[getIdx(RC)];
+ unsigned OC = Opcode[getIdx(getClass(SrcReg))];
if (SrcReg == PPC::LR) {
BuildMI(MBB, MI, PPC::MFLR, 1, PPC::R11).addReg(PPC::LR);
BuildMI(MBB, MI, PPC::IMPLICIT_DEF, 0, PPC::R0);
@@ -94,8 +99,7 @@ PPC32RegisterInfo::loadRegFromStackSlot(MachineBasicBlock &MBB,
static const unsigned Opcode[] = {
PPC::LBZ, PPC::LHZ, PPC::LWZ, PPC::LFS, PPC::LFD
};
- const TargetRegisterClass *RC = getRegClass(DestReg);
- unsigned OC = Opcode[getIdx(RC)];
+ unsigned OC = Opcode[getIdx(getClass(DestReg))];
if (DestReg == PPC::LR) {
BuildMI(MBB, MI, PPC::IMPLICIT_DEF, 0, PPC::R0);
addFrameReference(BuildMI(MBB, MI, OC, 2, PPC::R11), FrameIdx);