@@ -1838,9 +1838,9 @@ InstructionCost X86TTIImpl::getShuffleCost(TTI::ShuffleKind Kind,
1838
1838
return LT.first * *KindCost;
1839
1839
1840
1840
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
1844
1844
1845
1845
{ TTI::SK_Reverse, MVT::v32i16, { 2 , 2 , 2 , 2 } }, // vpermw
1846
1846
{ TTI::SK_Reverse, MVT::v32f16, { 2 , 2 , 2 , 2 } }, // vpermw
@@ -1874,13 +1874,20 @@ InstructionCost X86TTIImpl::getShuffleCost(TTI::ShuffleKind Kind,
1874
1874
return LT.first * *KindCost;
1875
1875
1876
1876
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
1884
1891
1885
1892
{TTI::SK_Reverse, MVT::v8f64, { 1 , 3 , 1 , 1 } }, // vpermpd
1886
1893
{TTI::SK_Reverse, MVT::v16f32, { 1 , 3 , 1 , 1 } }, // vpermps
@@ -1973,13 +1980,16 @@ InstructionCost X86TTIImpl::getShuffleCost(TTI::ShuffleKind Kind,
1973
1980
return LT.first * *KindCost;
1974
1981
1975
1982
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
1983
1993
1984
1994
{ TTI::SK_Reverse, MVT::v4f64, { 1 , 1 , 1 , 1 } }, // vpermpd
1985
1995
{ TTI::SK_Reverse, MVT::v8f32, { 1 , 1 , 1 , 1 } }, // vpermps
@@ -2077,13 +2087,13 @@ InstructionCost X86TTIImpl::getShuffleCost(TTI::ShuffleKind Kind,
2077
2087
return LT.first * *KindCost;
2078
2088
2079
2089
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
2087
2097
2088
2098
{TTI::SK_Reverse, MVT::v4f64, {2 ,2 ,2 ,2 }}, // vperm2f128 + vpermilpd
2089
2099
{TTI::SK_Reverse, MVT::v8f32, {2 ,2 ,2 ,2 }}, // vperm2f128 + vpermilps
@@ -2156,9 +2166,9 @@ InstructionCost X86TTIImpl::getShuffleCost(TTI::ShuffleKind Kind,
2156
2166
return LT.first * *KindCost;
2157
2167
2158
2168
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
2162
2172
2163
2173
{TTI::SK_Reverse, MVT::v8i16, {1 , 1 , 1 , 1 }}, // pshufb
2164
2174
{TTI::SK_Reverse, MVT::v8f16, {1 , 1 , 1 , 1 }}, // pshufb
@@ -2192,9 +2202,9 @@ InstructionCost X86TTIImpl::getShuffleCost(TTI::ShuffleKind Kind,
2192
2202
{TTI::SK_Broadcast, MVT::v2f64, {1 , 1 , 1 , 1 }}, // shufpd
2193
2203
{TTI::SK_Broadcast, MVT::v2i64, {1 , 1 , 1 , 1 }}, // pshufd
2194
2204
{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
2198
2208
2199
2209
{TTI::SK_Reverse, MVT::v2f64, {1 , 1 , 1 , 1 }}, // shufpd
2200
2210
{TTI::SK_Reverse, MVT::v2i64, {1 , 1 , 1 , 1 }}, // pshufd
0 commit comments