mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-07 11:33:44 +00:00
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:
parent
f06ef2cc16
commit
b1d26f6665
@ -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,
|
||||
|
@ -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.
|
||||
//
|
||||
|
@ -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()) {
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user