diff options
author | Bill Wendling <isanbard@gmail.com> | 2009-08-15 21:21:19 +0000 |
---|---|---|
committer | Bill Wendling <isanbard@gmail.com> | 2009-08-15 21:21:19 +0000 |
commit | 5c433f394bc5e2ebc4025bdaad5960124de3f40a (patch) | |
tree | 59a385a44947be3842b79aed92457f36aa45bd98 /lib/Target/ARM/ARMISelLowering.cpp | |
parent | 7f3ce7ac58e53176f491d4433c7a7d15988ab78b (diff) | |
download | external_llvm-5c433f394bc5e2ebc4025bdaad5960124de3f40a.zip external_llvm-5c433f394bc5e2ebc4025bdaad5960124de3f40a.tar.gz external_llvm-5c433f394bc5e2ebc4025bdaad5960124de3f40a.tar.bz2 |
Reapply r79127. It was fixed by d0k.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79136 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/ARM/ARMISelLowering.cpp')
-rw-r--r-- | lib/Target/ARM/ARMISelLowering.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/lib/Target/ARM/ARMISelLowering.cpp b/lib/Target/ARM/ARMISelLowering.cpp index 9de737b..99135b2 100644 --- a/lib/Target/ARM/ARMISelLowering.cpp +++ b/lib/Target/ARM/ARMISelLowering.cpp @@ -3121,6 +3121,27 @@ SDValue ARMTargetLowering::PerformDAGCombine(SDNode *N, return SDValue(); } +bool ARMTargetLowering::allowsUnalignedMemoryAccesses(EVT VT) const { + if (!Subtarget->hasV6Ops()) + // Pre-v6 does not support unaligned mem access. + return false; + else if (!Subtarget->hasV6Ops()) { + // v6 may or may not support unaligned mem access. + if (!Subtarget->isTargetDarwin()) + return false; + } + + switch (VT.getSimpleVT().SimpleTy) { + default: + return false; + case MVT::i8: + case MVT::i16: + case MVT::i32: + return true; + // FIXME: VLD1 etc with standard alignment is legal. + } +} + static bool isLegalT1AddressImmediate(int64_t V, EVT VT) { if (V < 0) return false; |