forked from OSchip/llvm-project
[X86][AVX2] Fix costs for v4i64 ashr by splat
llvm-svn: 303022
This commit is contained in:
parent
de4467b182
commit
f96b4ab92d
|
@ -471,6 +471,11 @@ int X86TTIImpl::getArithmeticInstrCost(
|
|||
if (ST->hasSSE2() &&
|
||||
((Op2Info == TargetTransformInfo::OK_UniformConstantValue) ||
|
||||
(Op2Info == TargetTransformInfo::OK_UniformValue))) {
|
||||
|
||||
// Handle AVX2 uniform v4i64 ISD::SRA, it's not worth a table.
|
||||
if (ISD == ISD::SRA && LT.second == MVT::v4i64 && ST->hasAVX2())
|
||||
return LT.first * 4; // 2*psrad + shuffle.
|
||||
|
||||
if (const auto *Entry =
|
||||
CostTableLookup(SSE2UniformShiftCostTable, ISD, LT.second))
|
||||
return LT.first * Entry->Cost;
|
||||
|
|
|
@ -192,7 +192,7 @@ define <4 x i64> @splatvar_shift_v4i64(<4 x i64> %a, i64 %b) {
|
|||
; SSE2: Found an estimated cost of 8 for instruction: %shift
|
||||
; SSE41: Found an estimated cost of 8 for instruction: %shift
|
||||
; AVX: Found an estimated cost of 10 for instruction: %shift
|
||||
; AVX2: Found an estimated cost of 10 for instruction: %shift
|
||||
; AVX2: Found an estimated cost of 4 for instruction: %shift
|
||||
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
||||
; XOP: Found an estimated cost of 6 for instruction: %shift
|
||||
%insert = insertelement <4 x i64> undef, i64 %b, i32 0
|
||||
|
@ -206,7 +206,7 @@ define <8 x i64> @splatvar_shift_v8i64(<8 x i64> %a, i64 %b) {
|
|||
; SSE2: Found an estimated cost of 16 for instruction: %shift
|
||||
; SSE41: Found an estimated cost of 16 for instruction: %shift
|
||||
; AVX: Found an estimated cost of 20 for instruction: %shift
|
||||
; AVX2: Found an estimated cost of 20 for instruction: %shift
|
||||
; AVX2: Found an estimated cost of 8 for instruction: %shift
|
||||
; AVX512: Found an estimated cost of 1 for instruction: %shift
|
||||
; XOP: Found an estimated cost of 12 for instruction: %shift
|
||||
%insert = insertelement <8 x i64> undef, i64 %b, i32 0
|
||||
|
|
Loading…
Reference in New Issue