From: Nadav Rotem Date: Mon, 5 Nov 2012 21:11:10 +0000 (+0000) Subject: Cost Model: teach the cost model about expanding integers. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=75138f58b0abaff54270481e879bc770df88114c;p=oota-llvm.git 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 --- diff --git a/lib/Target/TargetTransformImpl.cpp b/lib/Target/TargetTransformImpl.cpp index a9f02edaae4..4b427a2b6d4 100644 --- a/lib/Target/TargetTransformImpl.cpp +++ b/lib/Target/TargetTransformImpl.cpp @@ -143,7 +143,8 @@ VectorTargetTransformImpl::getTypeLegalizationCost(LLVMContext &C, if (LK.first == TargetLowering::TypeLegal) return std::make_pair(Cost, Ty.getSimpleVT()); - if (LK.first == TargetLowering::TypeSplitVector) + if (LK.first == TargetLowering::TypeSplitVector || + LK.first == TargetLowering::TypeExpandInteger) Cost *= 2; // Keep legalizing the type. @@ -300,7 +301,7 @@ unsigned VectorTargetTransformImpl::getCmpSelInstrCost(unsigned Opcode, unsigned Cost = getCmpSelInstrCost(Opcode, ValTy->getScalarType(), 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. return getScalarizationOverhead(ValTy, true, false) + Num * Cost; } diff --git a/test/Analysis/CostModel/X86/i32.ll b/test/Analysis/CostModel/X86/i32.ll new file mode 100644 index 00000000000..4015e0b1eef --- /dev/null +++ b/test/Analysis/CostModel/X86/i32.ll @@ -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 +}