diff options
author | Evan Cheng <evan.cheng@apple.com> | 2007-04-01 08:06:46 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2007-04-01 08:06:46 +0000 |
commit | 3074d9df96b1b5fa3920672ef7555d3fbbc5bb65 (patch) | |
tree | fd7426ae2fda76bb0d3aaedf17a99428d5de75d8 /lib/Target/ARM/ARMISelLowering.cpp | |
parent | 409e28f9cc10d82294f8948e5a5891ae20a1ea95 (diff) | |
download | llvm-3074d9df96b1b5fa3920672ef7555d3fbbc5bb65.tar.gz llvm-3074d9df96b1b5fa3920672ef7555d3fbbc5bb65.tar.bz2 llvm-3074d9df96b1b5fa3920672ef7555d3fbbc5bb65.tar.xz |
Add i16 address mode.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35551 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/ARM/ARMISelLowering.cpp')
-rw-r--r-- | lib/Target/ARM/ARMISelLowering.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/Target/ARM/ARMISelLowering.cpp b/lib/Target/ARM/ARMISelLowering.cpp index bf6d22414e..bb715cb3ca 100644 --- a/lib/Target/ARM/ARMISelLowering.cpp +++ b/lib/Target/ARM/ARMISelLowering.cpp @@ -1300,19 +1300,24 @@ bool ARMTargetLowering::isLegalAddressingMode(const AddrMode &AM, return false; default: - // FIXME: verify. switch (getValueType(Ty)) { default: return false; case MVT::i1: case MVT::i8: - // TODO: i16? i64 should be i32, no? case MVT::i32: + case MVT::i64: + // This assumes i64 is legalized to a pair of i32. If not (i.e. + // ldrd / strd are used, then its address mode is same as i16. // r + r if (AM.Scale == 2) return true; // r + r << imm if (!isPowerOf2_32(AM.Scale & ~1)) return false; + case MVT::i16: + // r + r + if (((unsigned)AM.HasBaseReg + AM.Scale) <= 2) + return true; } break; } |