Implement the getPointerRegClass method, which is required for the ptr_rc

magic to work.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28847 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2006-06-17 00:01:04 +00:00
parent f06ef2cc16
commit b1d26f6665
3 changed files with 20 additions and 6 deletions

View File

@ -13,13 +13,23 @@
#include "PPCInstrInfo.h"
#include "PPCGenInstrInfo.inc"
#include "PPC.h"
#include "PPCTargetMachine.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include <iostream>
using namespace llvm;
PPCInstrInfo::PPCInstrInfo()
: TargetInstrInfo(PPCInsts, sizeof(PPCInsts)/sizeof(PPCInsts[0])) {}
PPCInstrInfo::PPCInstrInfo(PPCTargetMachine &tm)
: TargetInstrInfo(PPCInsts, sizeof(PPCInsts)/sizeof(PPCInsts[0])), TM(tm) {}
/// getPointerRegClass - Return the register class to use to hold pointers.
/// This is used for addressing modes.
const TargetRegisterClass *PPCInstrInfo::getPointerRegClass() const {
if (TM.getSubtargetImpl()->isPPC64())
return &PPC::G8RCRegClass;
else
return &PPC::GPRCRegClass;
}
bool PPCInstrInfo::isMoveInstr(const MachineInstr& MI,
unsigned& sourceReg,

View File

@ -62,9 +62,10 @@ enum PPC970_Unit {
class PPCInstrInfo : public TargetInstrInfo {
PPCTargetMachine &TM;
const PPCRegisterInfo RI;
public:
PPCInstrInfo();
PPCInstrInfo(PPCTargetMachine &TM);
/// getRegisterInfo - TargetInstrInfo is a superset of MRegister info. As
/// such, whenever a client has an instance of instruction info, it should
@ -72,7 +73,10 @@ public:
///
virtual const MRegisterInfo &getRegisterInfo() const { return RI; }
//
/// getPointerRegClass - Return the register class to use to hold pointers.
/// This is used for addressing modes.
virtual const TargetRegisterClass *getPointerRegClass() const;
// Return true if the instruction is a register to register move and
// leave the source and dest operands in the passed parameters.
//

View File

@ -87,7 +87,7 @@ unsigned PPC64TargetMachine::getModuleMatchQuality(const Module &M) {
PPCTargetMachine::PPCTargetMachine(const Module &M, const std::string &FS,
bool is64Bit)
: TargetMachine("PowerPC"), Subtarget(M, FS, is64Bit),
DataLayout(Subtarget.getTargetDataString()),
DataLayout(Subtarget.getTargetDataString()), InstrInfo(*this),
FrameInfo(*this, false), JITInfo(*this), TLInfo(*this),
InstrItins(Subtarget.getInstrItineraryData()) {