forked from OSchip/llvm-project
[X86] Disable mul -> shl + lea combine when compiling for minsize
Differential Revision: http://reviews.llvm.org/D11904 llvm-svn: 244740
This commit is contained in:
parent
94f2bb5535
commit
fe0d9bb6eb
|
@ -23436,6 +23436,10 @@ static SDValue PerformCMOVCombine(SDNode *N, SelectionDAG &DAG,
|
|||
/// LEA + SHL, LEA + LEA.
|
||||
static SDValue PerformMulCombine(SDNode *N, SelectionDAG &DAG,
|
||||
TargetLowering::DAGCombinerInfo &DCI) {
|
||||
// An imul is usually smaller than the alternative sequence.
|
||||
if (DAG.getMachineFunction().getFunction()->optForMinSize())
|
||||
return SDValue();
|
||||
|
||||
if (DCI.isBeforeLegalize() || DCI.isCalledByLegalizer())
|
||||
return SDValue();
|
||||
|
||||
|
|
|
@ -108,3 +108,21 @@ define i64 @mul40_64(i64 %A) {
|
|||
%mul = mul i64 %A, 40
|
||||
ret i64 %mul
|
||||
}
|
||||
|
||||
define i32 @mul4_32_minsize(i32 %A) minsize {
|
||||
; X64-LABEL: mul4_32_minsize:
|
||||
; X64: leal
|
||||
; X86-LABEL: mul4_32_minsize:
|
||||
; X86: shll
|
||||
%mul = mul i32 %A, 4
|
||||
ret i32 %mul
|
||||
}
|
||||
|
||||
define i32 @mul40_32_minsize(i32 %A) minsize {
|
||||
; X64-LABEL: mul40_32_minsize:
|
||||
; X64: imull
|
||||
; X86-LABEL: mul40_32_minsize:
|
||||
; X86: imull
|
||||
%mul = mul i32 %A, 40
|
||||
ret i32 %mul
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue