summaryrefslogtreecommitdiff
path: root/lib/Target/X86/X86ISelLowering.cpp
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2012-12-12 00:42:09 +0000
committerEvan Cheng <evan.cheng@apple.com>2012-12-12 00:42:09 +0000
commit61f4dfe3693bf68b20748d82ac4dd9bf2f356699 (patch)
tree47cd7aa5c257fa42db0fa94e4aa0c504592364c9 /lib/Target/X86/X86ISelLowering.cpp
parentd0a0d221da55f5e2d97909991d77e7ab91e75426 (diff)
downloadllvm-61f4dfe3693bf68b20748d82ac4dd9bf2f356699.tar.gz
llvm-61f4dfe3693bf68b20748d82ac4dd9bf2f356699.tar.bz2
llvm-61f4dfe3693bf68b20748d82ac4dd9bf2f356699.tar.xz
Avoid using lossy load / stores for memcpy / memset expansion. e.g.
f64 load / store on non-SSE2 x86 targets. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169944 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86/X86ISelLowering.cpp')
-rw-r--r--lib/Target/X86/X86ISelLowering.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/Target/X86/X86ISelLowering.cpp b/lib/Target/X86/X86ISelLowering.cpp
index 90bee41e35..800c2012df 100644
--- a/lib/Target/X86/X86ISelLowering.cpp
+++ b/lib/Target/X86/X86ISelLowering.cpp
@@ -1412,6 +1412,14 @@ X86TargetLowering::getOptimalMemOpType(uint64_t Size,
return MVT::i32;
}
+bool X86TargetLowering::isLegalMemOpType(MVT VT) const {
+ if (VT == MVT::f32)
+ return X86ScalarSSEf32;
+ else if (VT == MVT::f64)
+ return X86ScalarSSEf64;
+ return VT.isInteger();
+}
+
bool
X86TargetLowering::allowsUnalignedMemoryAccesses(EVT VT, bool *Fast) const {
if (Fast)