[llvm] r292023 - [CostModel][X86] Updated vXi64 ASHR costs on AVX512 targets now that D28604 has landed
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Sat Jan 14 11:24:23 PST 2017
Author: rksimon
Date: Sat Jan 14 13:24:23 2017
New Revision: 292023
URL: http://llvm.org/viewvc/llvm-project?rev=292023&view=rev
Log:
[CostModel][X86] Updated vXi64 ASHR costs on AVX512 targets now that D28604 has landed
Modified:
llvm/trunk/lib/Target/X86/X86TargetTransformInfo.cpp
llvm/trunk/test/Analysis/CostModel/X86/vshift-ashr-cost.ll
Modified: llvm/trunk/lib/Target/X86/X86TargetTransformInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86TargetTransformInfo.cpp?rev=292023&r1=292022&r2=292023&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86TargetTransformInfo.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86TargetTransformInfo.cpp Sat Jan 14 13:24:23 2017
@@ -207,6 +207,10 @@ int X86TTIImpl::getArithmeticInstrCost(
}
static const CostTblEntry AVX512UniformConstCostTable[] = {
+ { ISD::SRA, MVT::v2i64, 1 },
+ { ISD::SRA, MVT::v4i64, 1 },
+ { ISD::SRA, MVT::v8i64, 1 },
+
{ ISD::SDIV, MVT::v16i32, 15 }, // vpmuldq sequence
{ ISD::UDIV, MVT::v16i32, 15 }, // vpmuludq sequence
};
@@ -347,8 +351,12 @@ int X86TTIImpl::getArithmeticInstrCost(
{ ISD::SHL, MVT::v16i32, 1 },
{ ISD::SRL, MVT::v16i32, 1 },
{ ISD::SRA, MVT::v16i32, 1 },
+
{ ISD::SHL, MVT::v8i64, 1 },
{ ISD::SRL, MVT::v8i64, 1 },
+
+ { ISD::SRA, MVT::v2i64, 1 },
+ { ISD::SRA, MVT::v4i64, 1 },
{ ISD::SRA, MVT::v8i64, 1 },
{ ISD::MUL, MVT::v32i8, 13 }, // extend/pmullw/trunc sequence.
Modified: llvm/trunk/test/Analysis/CostModel/X86/vshift-ashr-cost.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/CostModel/X86/vshift-ashr-cost.ll?rev=292023&r1=292022&r2=292023&view=diff
==============================================================================
--- llvm/trunk/test/Analysis/CostModel/X86/vshift-ashr-cost.ll (original)
+++ llvm/trunk/test/Analysis/CostModel/X86/vshift-ashr-cost.ll Sat Jan 14 13:24:23 2017
@@ -23,7 +23,7 @@ define <2 x i64> @var_shift_v2i64(<2 x i
; SSE41: Found an estimated cost of 12 for instruction: %shift
; AVX: Found an estimated cost of 12 for instruction: %shift
; AVX2: Found an estimated cost of 4 for instruction: %shift
-; AVX512: 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 2 for instruction: %shift
%shift = ashr <2 x i64> %a, %b
ret <2 x i64> %shift
@@ -35,7 +35,7 @@ define <4 x i64> @var_shift_v4i64(<4 x i
; SSE41: Found an estimated cost of 24 for instruction: %shift
; AVX: Found an estimated cost of 24 for instruction: %shift
; AVX2: Found an estimated cost of 4 for instruction: %shift
-; AVX512: 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 4 for instruction: %shift
%shift = ashr <4 x i64> %a, %b
ret <4 x i64> %shift
@@ -183,7 +183,7 @@ define <2 x i64> @splatvar_shift_v2i64(<
; SSE41: Found an estimated cost of 12 for instruction: %shift
; AVX: Found an estimated cost of 12 for instruction: %shift
; AVX2: Found an estimated cost of 4 for instruction: %shift
-; AVX512: 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 2 for instruction: %shift
%splat = shufflevector <2 x i64> %b, <2 x i64> undef, <2 x i32> zeroinitializer
%shift = ashr <2 x i64> %a, %splat
@@ -196,7 +196,7 @@ define <4 x i64> @splatvar_shift_v4i64(<
; SSE41: Found an estimated cost of 24 for instruction: %shift
; AVX: Found an estimated cost of 24 for instruction: %shift
; AVX2: Found an estimated cost of 4 for instruction: %shift
-; AVX512: 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 4 for instruction: %shift
%splat = shufflevector <4 x i64> %b, <4 x i64> undef, <4 x i32> zeroinitializer
%shift = ashr <4 x i64> %a, %splat
@@ -352,7 +352,7 @@ define <2 x i64> @constant_shift_v2i64(<
; SSE41: Found an estimated cost of 12 for instruction: %shift
; AVX: Found an estimated cost of 12 for instruction: %shift
; AVX2: Found an estimated cost of 4 for instruction: %shift
-; AVX512: 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 2 for instruction: %shift
%shift = ashr <2 x i64> %a, <i64 1, i64 7>
ret <2 x i64> %shift
@@ -364,7 +364,7 @@ define <4 x i64> @constant_shift_v4i64(<
; SSE41: Found an estimated cost of 24 for instruction: %shift
; AVX: Found an estimated cost of 24 for instruction: %shift
; AVX2: Found an estimated cost of 4 for instruction: %shift
-; AVX512: 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 4 for instruction: %shift
%shift = ashr <4 x i64> %a, <i64 1, i64 7, i64 15, i64 31>
ret <4 x i64> %shift
@@ -509,7 +509,7 @@ define <2 x i64> @splatconstant_shift_v2
; SSE41: Found an estimated cost of 4 for instruction: %shift
; AVX: Found an estimated cost of 4 for instruction: %shift
; AVX2: Found an estimated cost of 4 for instruction: %shift
-; AVX512: 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 2 for instruction: %shift
%shift = ashr <2 x i64> %a, <i64 7, i64 7>
ret <2 x i64> %shift
@@ -521,7 +521,7 @@ define <4 x i64> @splatconstant_shift_v4
; SSE41: Found an estimated cost of 8 for instruction: %shift
; AVX: Found an estimated cost of 8 for instruction: %shift
; AVX2: Found an estimated cost of 4 for instruction: %shift
-; AVX512: 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 4 for instruction: %shift
%shift = ashr <4 x i64> %a, <i64 7, i64 7, i64 7, i64 7>
ret <4 x i64> %shift
More information about the llvm-commits
mailing list