diff options
author | Sam Parker <sam.parker@arm.com> | 2016-10-27 09:47:10 +0000 |
---|---|---|
committer | Sam Parker <sam.parker@arm.com> | 2016-10-27 09:47:10 +0000 |
commit | e7d9505c08017b6952c5f32015d185b5819094bc (patch) | |
tree | 64a8152ce59df070b5690e48d5643018eab34e9f /llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp | |
parent | 188ad3ac02d06cab3ca13241196a3e110f845439 (diff) | |
download | bcm5719-llvm-e7d9505c08017b6952c5f32015d185b5819094bc.tar.gz bcm5719-llvm-e7d9505c08017b6952c5f32015d185b5819094bc.zip |
[ARM] Predicate UMAAL selection on hasDSP.
UMAAL is a DSP instruction and it is not available on thumbv7m
(Cortex-M3) and thumbv6m (Cortex-M0+1) targets. Also fix wrong
CHECK prefix in longMAC.ll test.
Patch by Vadzim Dambrouski.
Differential Revision: https://reviews.llvm.org/D25890
llvm-svn: 285278
Diffstat (limited to 'llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp')
-rw-r--r-- | llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp b/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp index d818030be33..89dcffc4099 100644 --- a/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp +++ b/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp @@ -2992,7 +2992,8 @@ void ARMDAGToDAGISel::Select(SDNode *N) { case ARMISD::UMLAL:{ // UMAAL is similar to UMLAL but it adds two 32-bit values to the // 64-bit multiplication result. - if (Subtarget->hasV6Ops() && N->getOperand(2).getOpcode() == ARMISD::ADDC && + if (Subtarget->hasV6Ops() && Subtarget->hasDSP() && + N->getOperand(2).getOpcode() == ARMISD::ADDC && N->getOperand(3).getOpcode() == ARMISD::ADDE) { SDValue Addc = N->getOperand(2); |