Cost Model: teach the cost model about expanding integers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167401 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Nadav Rotem 2012-11-05 21:11:10 +00:00
parent 28989889bf
commit 75138f58b0
2 changed files with 12 additions and 2 deletions

View File

@ -143,7 +143,8 @@ VectorTargetTransformImpl::getTypeLegalizationCost(LLVMContext &C,
if (LK.first == TargetLowering::TypeLegal) if (LK.first == TargetLowering::TypeLegal)
return std::make_pair(Cost, Ty.getSimpleVT()); return std::make_pair(Cost, Ty.getSimpleVT());
if (LK.first == TargetLowering::TypeSplitVector) if (LK.first == TargetLowering::TypeSplitVector ||
LK.first == TargetLowering::TypeExpandInteger)
Cost *= 2; Cost *= 2;
// Keep legalizing the type. // Keep legalizing the type.
@ -300,7 +301,7 @@ unsigned VectorTargetTransformImpl::getCmpSelInstrCost(unsigned Opcode,
unsigned Cost = getCmpSelInstrCost(Opcode, ValTy->getScalarType(), unsigned Cost = getCmpSelInstrCost(Opcode, ValTy->getScalarType(),
CondTy); CondTy);
// return the cost of multiple scalar invocation plus the cost of inserting // Return the cost of multiple scalar invocation plus the cost of inserting
// and extracting the values. // and extracting the values.
return getScalarizationOverhead(ValTy, true, false) + Num * Cost; return getScalarizationOverhead(ValTy, true, false) + Num * Cost;
} }

View File

@ -0,0 +1,9 @@
; RUN: opt < %s -cost-model -analyze -mtriple=i386 -mcpu=corei7-avx | FileCheck %s
;CHECK: cost of 2 {{.*}} add
;CHECK: cost of 1 {{.*}} ret
define i32 @no_info(i32 %arg) {
%e = add i64 undef, undef
ret i32 undef
}