diff options
author | Diana Picus <diana.picus@linaro.org> | 2017-02-09 13:09:59 +0000 |
---|---|---|
committer | Diana Picus <diana.picus@linaro.org> | 2017-02-09 13:09:59 +0000 |
commit | 7232af352f902f4734158d8fa3f30f6c6adb3707 (patch) | |
tree | 85650ad63826461ae5ccf924b69a4cc413ae10cf /llvm/lib | |
parent | 75dcfe844992853cd2fa17b09bceca76f5079278 (diff) | |
download | bcm5719-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.cpp | 10 |
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(); |