diff options
author | Evan Cheng <evan.cheng@apple.com> | 2011-07-20 23:34:39 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2011-07-20 23:34:39 +0000 |
commit | ee04a6d3a40c3017124e3fd89a0db473a2824498 (patch) | |
tree | 10b50225fcd573f4cd3cea0827df0fba4cea3908 /lib/Target/ARM/ARMSelectionDAGInfo.h | |
parent | 7bc317818282a7603cc249fc9add286d02582338 (diff) | |
download | external_llvm-ee04a6d3a40c3017124e3fd89a0db473a2824498.zip external_llvm-ee04a6d3a40c3017124e3fd89a0db473a2824498.tar.gz external_llvm-ee04a6d3a40c3017124e3fd89a0db473a2824498.tar.bz2 |
Sink ARMMCExpr and ARMAddressingModes into MC layer. First step to separate ARM MC code from target.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135636 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/ARM/ARMSelectionDAGInfo.h')
-rw-r--r-- | lib/Target/ARM/ARMSelectionDAGInfo.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/lib/Target/ARM/ARMSelectionDAGInfo.h b/lib/Target/ARM/ARMSelectionDAGInfo.h index ec1bf5c..6419a73 100644 --- a/lib/Target/ARM/ARMSelectionDAGInfo.h +++ b/lib/Target/ARM/ARMSelectionDAGInfo.h @@ -14,10 +14,27 @@ #ifndef ARMSELECTIONDAGINFO_H #define ARMSELECTIONDAGINFO_H +#include "MCTargetDesc/ARMAddressingModes.h" #include "llvm/Target/TargetSelectionDAGInfo.h" namespace llvm { +namespace ARM_AM { + static inline ShiftOpc getShiftOpcForNode(unsigned Opcode) { + switch (Opcode) { + default: return ARM_AM::no_shift; + case ISD::SHL: return ARM_AM::lsl; + case ISD::SRL: return ARM_AM::lsr; + case ISD::SRA: return ARM_AM::asr; + case ISD::ROTR: return ARM_AM::ror; + //case ISD::ROTL: // Only if imm -> turn into ROTR. + // Can't handle RRX here, because it would require folding a flag into + // the addressing mode. :( This causes us to miss certain things. + //case ARMISD::RRX: return ARM_AM::rrx; + } + } +} // end namespace ARM_AM + class ARMSelectionDAGInfo : public TargetSelectionDAGInfo { /// Subtarget - Keep a pointer to the ARMSubtarget around so that we can /// make the right decision when generating code for different targets. |