summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM/ARMISelLowering.cpp
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2011-02-02 01:06:55 +0000
committerEvan Cheng <evan.cheng@apple.com>2011-02-02 01:06:55 +0000
commitd42641c6b5bde379cdd77d1906d87b907bd232e0 (patch)
tree5e60d9b865786974565ec7020e331ebf88d94dc0 /llvm/lib/Target/ARM/ARMISelLowering.cpp
parentab62873b63523dfa16826dfeab61adab475d3202 (diff)
downloadbcm5719-llvm-d42641c6b5bde379cdd77d1906d87b907bd232e0.tar.gz
bcm5719-llvm-d42641c6b5bde379cdd77d1906d87b907bd232e0.zip
Given a pair of floating point load and store, if there are no other uses of
the load, then it may be legal to transform the load and store to integer load and store of the same width. This is done if the target specified the transformation as profitable. e.g. On arm, this can transform: vldr.32 s0, [] vstr.32 s0, [] to ldr r12, [] str r12, [] rdar://8944252 llvm-svn: 124708
Diffstat (limited to 'llvm/lib/Target/ARM/ARMISelLowering.cpp')
-rw-r--r--llvm/lib/Target/ARM/ARMISelLowering.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMISelLowering.cpp b/llvm/lib/Target/ARM/ARMISelLowering.cpp
index 50557671ab5..92ea6cb0f89 100644
--- a/llvm/lib/Target/ARM/ARMISelLowering.cpp
+++ b/llvm/lib/Target/ARM/ARMISelLowering.cpp
@@ -5724,6 +5724,11 @@ SDValue ARMTargetLowering::PerformDAGCombine(SDNode *N,
return SDValue();
}
+bool ARMTargetLowering::isDesirableToTransformToIntegerOp(unsigned Opc,
+ EVT VT) const {
+ return (VT == MVT::f32) && (Opc == ISD::LOAD || Opc == ISD::STORE);
+}
+
bool ARMTargetLowering::allowsUnalignedMemoryAccesses(EVT VT) const {
if (!Subtarget->allowsUnalignedMem())
return false;
OpenPOWER on IntegriCloud