diff options
| author | Evan Cheng <evan.cheng@apple.com> | 2010-07-19 22:15:08 +0000 |
|---|---|---|
| committer | Evan Cheng <evan.cheng@apple.com> | 2010-07-19 22:15:08 +0000 |
| commit | 10f99a3490cf5f052277d6101196542f634361e6 (patch) | |
| tree | 6d99e840a110a3de2a1d739843534e07a60f5bb3 /llvm/lib/Target | |
| parent | 9e687994f35610429675b54bf95e6507de2b44f4 (diff) | |
| download | bcm5719-llvm-10f99a3490cf5f052277d6101196542f634361e6.tar.gz bcm5719-llvm-10f99a3490cf5f052277d6101196542f634361e6.zip | |
ARM has to provide its own TargetLowering::findRepresentativeClass because its scalar floating point registers alias its vector registers.
llvm-svn: 108761
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/ARM/ARMISelLowering.cpp | 16 | ||||
| -rw-r--r-- | llvm/lib/Target/ARM/ARMISelLowering.h | 4 |
2 files changed, 20 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMISelLowering.cpp b/llvm/lib/Target/ARM/ARMISelLowering.cpp index 9b6db1d2336..9102664c6e9 100644 --- a/llvm/lib/Target/ARM/ARMISelLowering.cpp +++ b/llvm/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/llvm/lib/Target/ARM/ARMISelLowering.h b/llvm/lib/Target/ARM/ARMISelLowering.h index 7f37e20724e..ef47003058c 100644 --- a/llvm/lib/Target/ARM/ARMISelLowering.h +++ b/llvm/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. |

