diff options
| author | Craig Topper <craig.topper@intel.com> | 2018-03-01 00:08:38 +0000 |
|---|---|---|
| committer | Craig Topper <craig.topper@intel.com> | 2018-03-01 00:08:38 +0000 |
| commit | ccfa5257a659cf1f54dd3f8518c8c42218369c41 (patch) | |
| tree | e710a1096658dea1ca7787f8749a0e78ee82ae3e /llvm/lib | |
| parent | 75c649c96029a540466010525c36b5f20df25f2f (diff) | |
| download | bcm5719-llvm-ccfa5257a659cf1f54dd3f8518c8c42218369c41.tar.gz bcm5719-llvm-ccfa5257a659cf1f54dd3f8518c8c42218369c41.zip | |
[X86] Make sure we don't combine (fneg (fma X, Y, Z)) to a target specific node when there are no FMA instructions.
This would cause a 'cannot select' error at isel when we should have emitted a lib call and an xor.
Fixes PR36553.
llvm-svn: 326393
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index 8aecfd8fe7d..8921bd44b34 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -35737,7 +35737,7 @@ static SDValue combineFneg(SDNode *N, SelectionDAG &DAG, // If we're negating an FMA node, then we can adjust the // instruction to include the extra negation. unsigned NewOpcode = 0; - if (Arg.hasOneUse()) { + if (Arg.hasOneUse() && Subtarget.hasAnyFMA()) { switch (Arg.getOpcode()) { case ISD::FMA: NewOpcode = X86ISD::FNMSUB; break; case X86ISD::FMSUB: NewOpcode = X86ISD::FNMADD; break; |

