forked from OSchip/llvm-project
Remove an invalid assert in TargetTransformImpl
getCastInstrCost had an assert prohibiting scalar to vector casts. Such casts, however, are allowed. This should make the vectorizer buildbot happier. llvm-svn: 166998
This commit is contained in:
parent
67211fb6fb
commit
d0b95b0961
|
@ -196,7 +196,6 @@ unsigned VectorTargetTransformImpl::getBroadcastCost(Type *Tp) const {
|
|||
|
||||
unsigned VectorTargetTransformImpl::getCastInstrCost(unsigned Opcode, Type *Dst,
|
||||
Type *Src) const {
|
||||
assert(Src->isVectorTy() == Dst->isVectorTy() && "Invalid input types");
|
||||
int ISD = InstructionOpcodeToISD(Opcode);
|
||||
assert(ISD && "Invalid opcode");
|
||||
|
||||
|
@ -217,6 +216,8 @@ unsigned VectorTargetTransformImpl::getCastInstrCost(unsigned Opcode, Type *Dst,
|
|||
}
|
||||
}
|
||||
|
||||
unsigned ScalarizationCost = 1;
|
||||
|
||||
// Otherwise, assume that the cast is scalarized.
|
||||
if (Dst->isVectorTy()) {
|
||||
unsigned Num = Dst->getVectorNumElements();
|
||||
|
@ -224,11 +225,19 @@ unsigned VectorTargetTransformImpl::getCastInstrCost(unsigned Opcode, Type *Dst,
|
|||
Dst->getScalarType());
|
||||
// return the cost of multiple scalar invocation plus the cost of inserting
|
||||
// and extracting the values.
|
||||
return getScalarizationOverhead(Dst, true, true) + Num * Cost;
|
||||
ScalarizationCost *= getScalarizationOverhead(Dst, true, true) + Num * Cost;
|
||||
}
|
||||
|
||||
// Unknown scalar opcode.
|
||||
return 1;
|
||||
if (Src->isVectorTy()) {
|
||||
unsigned Num = Src->getVectorNumElements();
|
||||
unsigned Cost = getCastInstrCost(Opcode, Dst->getScalarType(),
|
||||
Src->getScalarType());
|
||||
// return the cost of multiple scalar invocation plus the cost of inserting
|
||||
// and extracting the values.
|
||||
ScalarizationCost *= getScalarizationOverhead(Src, true, true) + Num * Cost;
|
||||
}
|
||||
|
||||
return ScalarizationCost;
|
||||
}
|
||||
|
||||
unsigned VectorTargetTransformImpl::getCFInstrCost(unsigned Opcode) const {
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -mcpu=corei7 -bb-vectorize -S | FileCheck %s
|
||||
|
||||
define void @main() nounwind uwtable {
|
||||
entry:
|
||||
%0 = bitcast <2 x i64> undef to i128
|
||||
%1 = bitcast <2 x i64> undef to i128
|
||||
ret void
|
||||
; CHECK: @main
|
||||
}
|
||||
|
Loading…
Reference in New Issue