diff options
| author | Craig Topper <craig.topper@intel.com> | 2018-07-24 20:31:48 +0000 |
|---|---|---|
| committer | Craig Topper <craig.topper@intel.com> | 2018-07-24 20:31:48 +0000 |
| commit | 86d6320b94be365a2fbc2a0756aa568587ac4d71 (patch) | |
| tree | 65da6ccf45c64390b3b2f45349dee59fc97f75dc /llvm/lib/Target | |
| parent | a8fb7297861487515137ef1f1ed37e2ded0bcae3 (diff) | |
| download | bcm5719-llvm-86d6320b94be365a2fbc2a0756aa568587ac4d71.tar.gz bcm5719-llvm-86d6320b94be365a2fbc2a0756aa568587ac4d71.zip | |
[X86] Change multiply by 19 to use (9 * X) * 2 + X instead of (5 * X) * 4 - 1.
The new lowering can be done in 2 LEAs. The old code took 1 LEA, 1 shift, and 1 sub.
llvm-svn: 337851
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index ed34aeaccd8..6f7636c619d 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -33721,8 +33721,8 @@ static SDValue combineMulSpecial(uint64_t MulAmt, SDNode *N, SelectionDAG &DAG, return DAG.getNode(ISD::ADD, DL, VT, N->getOperand(0), combineMulShlAddOrSub(5, 2, /*isAdd*/ true)); case 19: - // mul x, 19 => sub ((shl (mul x, 5), 2), x) - return combineMulShlAddOrSub(5, 2, /*isAdd*/ false); + // mul x, 19 => add ((shl (mul x, 9), 1), x) + return combineMulShlAddOrSub(9, 1, /*isAdd*/ true); case 13: // mul x, 13 => add ((shl (mul x, 3), 2), x) return combineMulShlAddOrSub(3, 2, /*isAdd*/ true); |

