summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorDiana Picus <diana.picus@linaro.org>2017-02-09 13:09:59 +0000
committerDiana Picus <diana.picus@linaro.org>2017-02-09 13:09:59 +0000
commit7232af352f902f4734158d8fa3f30f6c6adb3707 (patch)
tree85650ad63826461ae5ccf924b69a4cc413ae10cf /llvm/lib
parent75dcfe844992853cd2fa17b09bceca76f5079278 (diff)
downloadbcm5719-llvm-7232af352f902f4734158d8fa3f30f6c6adb3707.tar.gz
bcm5719-llvm-7232af352f902f4734158d8fa3f30f6c6adb3707.zip
[ARM] GlobalISel: Lower single precision FP args
Both for aapcscc and aapcs_vfpcc. We currently filter out soft float targets because we don't support libcalls yet. llvm-svn: 294584
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/ARM/ARMCallLowering.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/llvm/lib/Target/ARM/ARMCallLowering.cpp b/llvm/lib/Target/ARM/ARMCallLowering.cpp
index f37d6d7b1d0..34b81681948 100644
--- a/llvm/lib/Target/ARM/ARMCallLowering.cpp
+++ b/llvm/lib/Target/ARM/ARMCallLowering.cpp
@@ -35,7 +35,7 @@ ARMCallLowering::ARMCallLowering(const ARMTargetLowering &TLI)
static bool isSupportedType(const DataLayout &DL, const ARMTargetLowering &TLI,
Type *T) {
EVT VT = TLI.getValueType(DL, T, true);
- if (!VT.isSimple() || !VT.isInteger() || VT.isVector())
+ if (!VT.isSimple() || VT.isVector())
return false;
unsigned VTSize = VT.getSimpleVT().getSizeInBits();
@@ -205,7 +205,13 @@ bool ARMCallLowering::lowerFormalArguments(MachineIRBuilder &MIRBuilder,
auto DL = MF.getDataLayout();
auto &TLI = *getTLI<ARMTargetLowering>();
- if (TLI.getSubtarget()->isThumb())
+ auto Subtarget = TLI.getSubtarget();
+
+ if (Subtarget->isThumb())
+ return false;
+
+ // FIXME: Support soft float (when we're ready to generate libcalls)
+ if (Subtarget->useSoftFloat() || !Subtarget->hasVFP2())
return false;
auto &Args = F.getArgumentList();
OpenPOWER on IntegriCloud