diff options
author | Chad Rosier <mcrosier@apple.com> | 2011-06-16 01:21:54 +0000 |
---|---|---|
committer | Chad Rosier <mcrosier@apple.com> | 2011-06-16 01:21:54 +0000 |
commit | 689edc8b2845f7a6cf9403722de2000598f68489 (patch) | |
tree | 396e45022d75ee68d919f41a76a1ed5a6c8c804e /lib/Target | |
parent | c06b5bf34004a9b01048905c8750761146094586 (diff) | |
download | external_llvm-689edc8b2845f7a6cf9403722de2000598f68489.zip external_llvm-689edc8b2845f7a6cf9403722de2000598f68489.tar.gz external_llvm-689edc8b2845f7a6cf9403722de2000598f68489.tar.bz2 |
Revision r128665 added an optimization to make use of NEON multiplier
accumulator forwarding. Specifically (from SVN log entry):
Distribute (A + B) * C to (A * C) + (B * C) to make use of NEON multiplier
accumulator forwarding:
vadd d3, d0, d1
vmul d3, d3, d2
=>
vmul d3, d0, d2
vmla d3, d1, d2
Make sure it catches cases where operand 1 is add/fadd/sub/fsub, which was
intended in the original revision.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133127 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target')
-rw-r--r-- | lib/Target/ARM/ARMISelLowering.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/Target/ARM/ARMISelLowering.cpp b/lib/Target/ARM/ARMISelLowering.cpp index faa8613..8b7383d 100644 --- a/lib/Target/ARM/ARMISelLowering.cpp +++ b/lib/Target/ARM/ARMISelLowering.cpp @@ -5687,7 +5687,7 @@ static SDValue PerformVMULCombine(SDNode *N, unsigned Opcode = N0.getOpcode(); if (Opcode != ISD::ADD && Opcode != ISD::SUB && Opcode != ISD::FADD && Opcode != ISD::FSUB) { - Opcode = N0.getOpcode(); + Opcode = N1.getOpcode(); if (Opcode != ISD::ADD && Opcode != ISD::SUB && Opcode != ISD::FADD && Opcode != ISD::FSUB) return SDValue(); |