diff options
Diffstat (limited to 'lib/Target/ARM')
| -rw-r--r-- | lib/Target/ARM/ARMISelLowering.cpp | 16 | ||||
| -rw-r--r-- | lib/Target/ARM/ARMISelLowering.h | 4 |
2 files changed, 20 insertions, 0 deletions
diff --git a/lib/Target/ARM/ARMISelLowering.cpp b/lib/Target/ARM/ARMISelLowering.cpp index 9b6db1d233..9102664c6e 100644 --- a/lib/Target/ARM/ARMISelLowering.cpp +++ b/lib/Target/ARM/ARMISelLowering.cpp @@ -550,6 +550,22 @@ ARMTargetLowering::ARMTargetLowering(TargetMachine &TM) benefitFromCodePlacementOpt = true; } +const TargetRegisterClass * +ARMTargetLowering::findRepresentativeClass(const TargetRegisterClass *RC) const{ + switch (RC->getID()) { + default: + return RC; + case ARM::tGPRRegClassID: + case ARM::GPRRegClassID: + return ARM::GPRRegisterClass; + case ARM::SPRRegClassID: + case ARM::DPRRegClassID: + return ARM::DPRRegisterClass; + case ARM::QPRRegClassID: + return ARM::QPRRegisterClass; + } +} + const char *ARMTargetLowering::getTargetNodeName(unsigned Opcode) const { switch (Opcode) { default: return 0; diff --git a/lib/Target/ARM/ARMISelLowering.h b/lib/Target/ARM/ARMISelLowering.h index 7f37e20724..ef47003058 100644 --- a/lib/Target/ARM/ARMISelLowering.h +++ b/lib/Target/ARM/ARMISelLowering.h @@ -271,6 +271,10 @@ namespace llvm { /// materialize the FP immediate as a load from a constant pool. virtual bool isFPImmLegal(const APFloat &Imm, EVT VT) const; + protected: + const TargetRegisterClass * + findRepresentativeClass(const TargetRegisterClass *RC) const; + private: /// Subtarget - Keep a pointer to the ARMSubtarget around so that we can /// make the right decision when generating code for different targets. |
