Skip to content

Commit 0023ac9

Browse files
RKSimonmahesh-attarde
authored andcommitted
[CostModel][X86] Update SK_Broadcast based on cost kinds (llvm#150620)
When these were converted to CostKindTblEntry the throughput was mainly copied to all cost kinds Regenerated with my check_cost_tables.py helper script
1 parent 4c79182 commit 0023ac9

18 files changed

+1246
-1236
lines changed

llvm/lib/Target/X86/X86TargetTransformInfo.cpp

Lines changed: 40 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1838,9 +1838,9 @@ InstructionCost X86TTIImpl::getShuffleCost(TTI::ShuffleKind Kind,
18381838
return LT.first * *KindCost;
18391839

18401840
static const CostKindTblEntry AVX512BWShuffleTbl[] = {
1841-
{ TTI::SK_Broadcast, MVT::v32i16, { 1, 1, 1, 1 } }, // vpbroadcastw
1842-
{ TTI::SK_Broadcast, MVT::v32f16, { 1, 1, 1, 1 } }, // vpbroadcastw
1843-
{ TTI::SK_Broadcast, MVT::v64i8, { 1, 1, 1, 1 } }, // vpbroadcastb
1841+
{ TTI::SK_Broadcast, MVT::v32i16, { 1, 3, 1, 1 } }, // vpbroadcastw
1842+
{ TTI::SK_Broadcast, MVT::v32f16, { 1, 3, 1, 1 } }, // vpbroadcastw
1843+
{ TTI::SK_Broadcast, MVT::v64i8, { 1, 3, 1, 1 } }, // vpbroadcastb
18441844

18451845
{ TTI::SK_Reverse, MVT::v32i16, { 2, 2, 2, 2 } }, // vpermw
18461846
{ TTI::SK_Reverse, MVT::v32f16, { 2, 2, 2, 2 } }, // vpermw
@@ -1874,13 +1874,20 @@ InstructionCost X86TTIImpl::getShuffleCost(TTI::ShuffleKind Kind,
18741874
return LT.first * *KindCost;
18751875

18761876
static const CostKindTblEntry AVX512ShuffleTbl[] = {
1877-
{TTI::SK_Broadcast, MVT::v8f64, { 1, 1, 1, 1 } }, // vbroadcastsd
1878-
{TTI::SK_Broadcast, MVT::v16f32, { 1, 1, 1, 1 } }, // vbroadcastss
1879-
{TTI::SK_Broadcast, MVT::v8i64, { 1, 1, 1, 1 } }, // vpbroadcastq
1880-
{TTI::SK_Broadcast, MVT::v16i32, { 1, 1, 1, 1 } }, // vpbroadcastd
1881-
{TTI::SK_Broadcast, MVT::v32i16, { 1, 1, 1, 1 } }, // vpbroadcastw
1882-
{TTI::SK_Broadcast, MVT::v32f16, { 1, 1, 1, 1 } }, // vpbroadcastw
1883-
{TTI::SK_Broadcast, MVT::v64i8, { 1, 1, 1, 1 } }, // vpbroadcastb
1877+
{TTI::SK_Broadcast, MVT::v8f64, { 1, 3, 1, 1 } }, // vbroadcastsd
1878+
{TTI::SK_Broadcast, MVT::v4f64, { 1, 3, 1, 1 } }, // vbroadcastsd
1879+
{TTI::SK_Broadcast, MVT::v16f32, { 1, 3, 1, 1 } }, // vbroadcastss
1880+
{TTI::SK_Broadcast, MVT::v8f32, { 1, 3, 1, 1 } }, // vbroadcastss
1881+
{TTI::SK_Broadcast, MVT::v8i64, { 1, 3, 1, 1 } }, // vpbroadcastq
1882+
{TTI::SK_Broadcast, MVT::v4i64, { 1, 3, 1, 1 } }, // vpbroadcastq
1883+
{TTI::SK_Broadcast, MVT::v16i32, { 1, 3, 1, 1 } }, // vpbroadcastd
1884+
{TTI::SK_Broadcast, MVT::v8i32, { 1, 3, 1, 1 } }, // vpbroadcastd
1885+
{TTI::SK_Broadcast, MVT::v32i16, { 1, 3, 1, 1 } }, // vpbroadcastw
1886+
{TTI::SK_Broadcast, MVT::v16i16, { 1, 3, 1, 1 } }, // vpbroadcastw
1887+
{TTI::SK_Broadcast, MVT::v32f16, { 1, 3, 1, 1 } }, // vpbroadcastw
1888+
{TTI::SK_Broadcast, MVT::v16f16, { 1, 3, 1, 1 } }, // vpbroadcastw
1889+
{TTI::SK_Broadcast, MVT::v64i8, { 1, 3, 1, 1 } }, // vpbroadcastb
1890+
{TTI::SK_Broadcast, MVT::v32i8, { 1, 3, 1, 1 }}, // vpbroadcastb
18841891

18851892
{TTI::SK_Reverse, MVT::v8f64, { 1, 3, 1, 1 } }, // vpermpd
18861893
{TTI::SK_Reverse, MVT::v16f32, { 1, 3, 1, 1 } }, // vpermps
@@ -1973,13 +1980,16 @@ InstructionCost X86TTIImpl::getShuffleCost(TTI::ShuffleKind Kind,
19731980
return LT.first * *KindCost;
19741981

19751982
static const CostKindTblEntry AVX2ShuffleTbl[] = {
1976-
{ TTI::SK_Broadcast, MVT::v4f64, { 1, 1, 1, 1 } }, // vbroadcastpd
1977-
{ TTI::SK_Broadcast, MVT::v8f32, { 1, 1, 1, 1 } }, // vbroadcastps
1978-
{ TTI::SK_Broadcast, MVT::v4i64, { 1, 1, 1, 1 } }, // vpbroadcastq
1979-
{ TTI::SK_Broadcast, MVT::v8i32, { 1, 1, 1, 1 } }, // vpbroadcastd
1980-
{ TTI::SK_Broadcast, MVT::v16i16, { 1, 1, 1, 1 } }, // vpbroadcastw
1981-
{ TTI::SK_Broadcast, MVT::v16f16, { 1, 1, 1, 1 } }, // vpbroadcastw
1982-
{ TTI::SK_Broadcast, MVT::v32i8, { 1, 1, 1, 1 } }, // vpbroadcastb
1983+
{ TTI::SK_Broadcast, MVT::v4f64, { 1, 3, 1, 2 } }, // vbroadcastpd
1984+
{ TTI::SK_Broadcast, MVT::v8f32, { 1, 3, 1, 2 } }, // vbroadcastps
1985+
{ TTI::SK_Broadcast, MVT::v4i64, { 1, 3, 1, 2 } }, // vpbroadcastq
1986+
{ TTI::SK_Broadcast, MVT::v8i32, { 1, 3, 1, 2 } }, // vpbroadcastd
1987+
{ TTI::SK_Broadcast, MVT::v16i16, { 1, 3, 1, 2 } }, // vpbroadcastw
1988+
{ TTI::SK_Broadcast, MVT::v8i16, { 1, 3, 1, 1 } }, // vpbroadcastw
1989+
{ TTI::SK_Broadcast, MVT::v16f16, { 1, 3, 1, 2 } }, // vpbroadcastw
1990+
{ TTI::SK_Broadcast, MVT::v8f16, { 1, 3, 1, 1 } }, // vpbroadcastw
1991+
{ TTI::SK_Broadcast, MVT::v32i8, { 1, 3, 1, 2 } }, // vpbroadcastb
1992+
{ TTI::SK_Broadcast, MVT::v16i8, { 1, 3, 1, 1 } }, // vpbroadcastb
19831993

19841994
{ TTI::SK_Reverse, MVT::v4f64, { 1, 1, 1, 1 } }, // vpermpd
19851995
{ TTI::SK_Reverse, MVT::v8f32, { 1, 1, 1, 1 } }, // vpermps
@@ -2077,13 +2087,13 @@ InstructionCost X86TTIImpl::getShuffleCost(TTI::ShuffleKind Kind,
20772087
return LT.first * *KindCost;
20782088

20792089
static const CostKindTblEntry AVX1ShuffleTbl[] = {
2080-
{TTI::SK_Broadcast, MVT::v4f64, {2,2,2,2}}, // vperm2f128 + vpermilpd
2081-
{TTI::SK_Broadcast, MVT::v8f32, {2,2,2,2}}, // vperm2f128 + vpermilps
2082-
{TTI::SK_Broadcast, MVT::v4i64, {2,2,2,2}}, // vperm2f128 + vpermilpd
2083-
{TTI::SK_Broadcast, MVT::v8i32, {2,2,2,2}}, // vperm2f128 + vpermilps
2084-
{TTI::SK_Broadcast, MVT::v16i16, {3,3,3,3}}, // vpshuflw + vpshufd + vinsertf128
2085-
{TTI::SK_Broadcast, MVT::v16f16, {3,3,3,3}}, // vpshuflw + vpshufd + vinsertf128
2086-
{TTI::SK_Broadcast, MVT::v32i8, {2,2,2,2}}, // vpshufb + vinsertf128
2090+
{TTI::SK_Broadcast, MVT::v4f64, {2,3,2,3}}, // vperm2f128 + vpermilpd
2091+
{TTI::SK_Broadcast, MVT::v8f32, {2,3,2,3}}, // vperm2f128 + vpermilps
2092+
{TTI::SK_Broadcast, MVT::v4i64, {2,3,2,3}}, // vperm2f128 + vpermilpd
2093+
{TTI::SK_Broadcast, MVT::v8i32, {2,3,2,3}}, // vperm2f128 + vpermilps
2094+
{TTI::SK_Broadcast, MVT::v16i16, {2,3,3,4}}, // vpshuflw + vpshufd + vinsertf128
2095+
{TTI::SK_Broadcast, MVT::v16f16, {2,3,3,4}}, // vpshuflw + vpshufd + vinsertf128
2096+
{TTI::SK_Broadcast, MVT::v32i8, {3,4,3,6}}, // vpshufb + vinsertf128
20872097

20882098
{TTI::SK_Reverse, MVT::v4f64, {2,2,2,2}}, // vperm2f128 + vpermilpd
20892099
{TTI::SK_Reverse, MVT::v8f32, {2,2,2,2}}, // vperm2f128 + vpermilps
@@ -2156,9 +2166,9 @@ InstructionCost X86TTIImpl::getShuffleCost(TTI::ShuffleKind Kind,
21562166
return LT.first * *KindCost;
21572167

21582168
static const CostKindTblEntry SSSE3ShuffleTbl[] = {
2159-
{TTI::SK_Broadcast, MVT::v8i16, {1, 1, 1, 1}}, // pshufb
2160-
{TTI::SK_Broadcast, MVT::v8f16, {1, 1, 1, 1}}, // pshufb
2161-
{TTI::SK_Broadcast, MVT::v16i8, {1, 1, 1, 1}}, // pshufb
2169+
{TTI::SK_Broadcast, MVT::v8i16, {1, 3, 2, 2}}, // pshufb
2170+
{TTI::SK_Broadcast, MVT::v8f16, {1, 3, 2, 2}}, // pshufb
2171+
{TTI::SK_Broadcast, MVT::v16i8, {1, 3, 2, 2}}, // pshufb
21622172

21632173
{TTI::SK_Reverse, MVT::v8i16, {1, 1, 1, 1}}, // pshufb
21642174
{TTI::SK_Reverse, MVT::v8f16, {1, 1, 1, 1}}, // pshufb
@@ -2192,9 +2202,9 @@ InstructionCost X86TTIImpl::getShuffleCost(TTI::ShuffleKind Kind,
21922202
{TTI::SK_Broadcast, MVT::v2f64, {1, 1, 1, 1}}, // shufpd
21932203
{TTI::SK_Broadcast, MVT::v2i64, {1, 1, 1, 1}}, // pshufd
21942204
{TTI::SK_Broadcast, MVT::v4i32, {1, 1, 1, 1}}, // pshufd
2195-
{TTI::SK_Broadcast, MVT::v8i16, {2, 2, 2, 2}}, // pshuflw + pshufd
2196-
{TTI::SK_Broadcast, MVT::v8f16, {2, 2, 2, 2}}, // pshuflw + pshufd
2197-
{TTI::SK_Broadcast, MVT::v16i8, {3, 3, 3, 3}}, // unpck + pshuflw + pshufd
2205+
{TTI::SK_Broadcast, MVT::v8i16, {1, 2, 2, 2}}, // pshuflw + pshufd
2206+
{TTI::SK_Broadcast, MVT::v8f16, {1, 2, 2, 2}}, // pshuflw + pshufd
2207+
{TTI::SK_Broadcast, MVT::v16i8, {2, 3, 3, 4}}, // unpck + pshuflw + pshufd
21982208

21992209
{TTI::SK_Reverse, MVT::v2f64, {1, 1, 1, 1}}, // shufpd
22002210
{TTI::SK_Reverse, MVT::v2i64, {1, 1, 1, 1}}, // pshufd

0 commit comments

Comments
 (0)