@@ -1842,10 +1842,11 @@ InstructionCost X86TTIImpl::getShuffleCost(TTI::ShuffleKind Kind,
1842
1842
{ TTI::SK_Broadcast, MVT::v32f16, { 1 , 3 , 1 , 1 } }, // vpbroadcastw
1843
1843
{ TTI::SK_Broadcast, MVT::v64i8, { 1 , 3 , 1 , 1 } }, // vpbroadcastb
1844
1844
1845
- { TTI::SK_Reverse, MVT::v32i16, { 2 , 2 , 2 , 2 } }, // vpermw
1846
- { TTI::SK_Reverse, MVT::v32f16, { 2 , 2 , 2 , 2 } }, // vpermw
1845
+ { TTI::SK_Reverse, MVT::v32i16, { 2 , 6 , 2 , 4 } }, // vpermw
1846
+ { TTI::SK_Reverse, MVT::v32f16, { 2 , 6 , 2 , 4 } }, // vpermw
1847
1847
{ TTI::SK_Reverse, MVT::v16i16, { 2 , 2 , 2 , 2 } }, // vpermw
1848
- { TTI::SK_Reverse, MVT::v64i8, { 2 , 2 , 2 , 2 } }, // pshufb + vshufi64x2
1848
+ { TTI::SK_Reverse, MVT::v16f16, { 2 , 2 , 2 , 2 } }, // vpermw
1849
+ { TTI::SK_Reverse, MVT::v64i8, { 2 , 9 , 2 , 3 } }, // pshufb + vshufi64x2
1849
1850
1850
1851
{ TTI::SK_PermuteSingleSrc, MVT::v32i16, { 2 , 2 , 2 , 2 } }, // vpermw
1851
1852
{ TTI::SK_PermuteSingleSrc, MVT::v32f16, { 2 , 2 , 2 , 2 } }, // vpermw
@@ -1889,10 +1890,10 @@ InstructionCost X86TTIImpl::getShuffleCost(TTI::ShuffleKind Kind,
1889
1890
{TTI::SK_Broadcast, MVT::v64i8, { 1 , 3 , 1 , 1 } }, // vpbroadcastb
1890
1891
{TTI::SK_Broadcast, MVT::v32i8, { 1 , 3 , 1 , 1 }}, // vpbroadcastb
1891
1892
1892
- {TTI::SK_Reverse, MVT::v8f64, { 1 , 3 , 1 , 1 } }, // vpermpd
1893
- {TTI::SK_Reverse, MVT::v16f32, { 1 , 3 , 1 , 1 } }, // vpermps
1894
- {TTI::SK_Reverse, MVT::v8i64, { 1 , 3 , 1 , 1 } }, // vpermq
1895
- {TTI::SK_Reverse, MVT::v16i32, { 1 , 3 , 1 , 1 } }, // vpermd
1893
+ {TTI::SK_Reverse, MVT::v8f64, { 1 , 5 , 2 , 3 } }, // vpermpd
1894
+ {TTI::SK_Reverse, MVT::v16f32, { 1 , 3 , 2 , 3 } }, // vpermps
1895
+ {TTI::SK_Reverse, MVT::v8i64, { 1 , 5 , 2 , 3 } }, // vpermq
1896
+ {TTI::SK_Reverse, MVT::v16i32, { 1 , 3 , 2 , 3 } }, // vpermd
1896
1897
{TTI::SK_Reverse, MVT::v32i16, { 7 , 7 , 7 , 7 } }, // per mca
1897
1898
{TTI::SK_Reverse, MVT::v32f16, { 7 , 7 , 7 , 7 } }, // per mca
1898
1899
{TTI::SK_Reverse, MVT::v64i8, { 7 , 7 , 7 , 7 } }, // per mca
@@ -1991,13 +1992,13 @@ InstructionCost X86TTIImpl::getShuffleCost(TTI::ShuffleKind Kind,
1991
1992
{ TTI::SK_Broadcast, MVT::v32i8, { 1 , 3 , 1 , 2 } }, // vpbroadcastb
1992
1993
{ TTI::SK_Broadcast, MVT::v16i8, { 1 , 3 , 1 , 1 } }, // vpbroadcastb
1993
1994
1994
- { TTI::SK_Reverse, MVT::v4f64, { 1 , 1 , 1 , 1 } }, // vpermpd
1995
- { TTI::SK_Reverse, MVT::v8f32, { 1 , 1 , 1 , 1 } }, // vpermps
1996
- { TTI::SK_Reverse, MVT::v4i64, { 1 , 1 , 1 , 1 } }, // vpermq
1997
- { TTI::SK_Reverse, MVT::v8i32, { 1 , 1 , 1 , 1 } }, // vpermd
1998
- { TTI::SK_Reverse, MVT::v16i16, { 2 , 2 , 2 , 2 } }, // vperm2i128 + pshufb
1999
- { TTI::SK_Reverse, MVT::v16f16, { 2 , 2 , 2 , 2 } }, // vperm2i128 + pshufb
2000
- { TTI::SK_Reverse, MVT::v32i8, { 2 , 2 , 2 , 2 } }, // vperm2i128 + pshufb
1995
+ { TTI::SK_Reverse, MVT::v4f64, { 1 , 6 , 1 , 2 } }, // vpermpd
1996
+ { TTI::SK_Reverse, MVT::v8f32, { 2 , 7 , 2 , 4 } }, // vpermps
1997
+ { TTI::SK_Reverse, MVT::v4i64, { 1 , 6 , 1 , 2 } }, // vpermq
1998
+ { TTI::SK_Reverse, MVT::v8i32, { 2 , 7 , 2 , 4 } }, // vpermd
1999
+ { TTI::SK_Reverse, MVT::v16i16, { 2 , 9 , 2 , 4 } }, // vperm2i128 + pshufb
2000
+ { TTI::SK_Reverse, MVT::v16f16, { 2 , 9 , 2 , 4 } }, // vperm2i128 + pshufb
2001
+ { TTI::SK_Reverse, MVT::v32i8, { 2 , 9 , 2 , 4 } }, // vperm2i128 + pshufb
2001
2002
2002
2003
{ TTI::SK_Select, MVT::v16i16, { 1 , 1 , 1 , 1 } }, // vpblendvb
2003
2004
{ TTI::SK_Select, MVT::v16f16, { 1 , 1 , 1 , 1 } }, // vpblendvb
@@ -2095,15 +2096,15 @@ InstructionCost X86TTIImpl::getShuffleCost(TTI::ShuffleKind Kind,
2095
2096
{TTI::SK_Broadcast, MVT::v16f16, {2 ,3 ,3 ,4 }}, // vpshuflw + vpshufd + vinsertf128
2096
2097
{TTI::SK_Broadcast, MVT::v32i8, {3 ,4 ,3 ,6 }}, // vpshufb + vinsertf128
2097
2098
2098
- {TTI::SK_Reverse, MVT::v4f64, {2 ,2 ,2 ,2 }}, // vperm2f128 + vpermilpd
2099
- {TTI::SK_Reverse, MVT::v8f32, {2 ,2 ,2 ,2 }}, // vperm2f128 + vpermilps
2100
- {TTI::SK_Reverse, MVT::v4i64, {2 ,2 ,2 ,2 }}, // vperm2f128 + vpermilpd
2101
- {TTI::SK_Reverse, MVT::v8i32, {2 ,2 ,2 ,2 }}, // vperm2f128 + vpermilps
2102
- {TTI::SK_Reverse, MVT::v16i16, {4 , 4 , 4 , 4 }}, // vextractf128 + 2*pshufb
2099
+ {TTI::SK_Reverse, MVT::v4f64, {2 ,6 ,2 ,2 }}, // vperm2f128 + vpermilpd
2100
+ {TTI::SK_Reverse, MVT::v8f32, {2 ,7 ,2 ,4 }}, // vperm2f128 + vpermilps
2101
+ {TTI::SK_Reverse, MVT::v4i64, {2 ,6 ,2 ,2 }}, // vperm2f128 + vpermilpd
2102
+ {TTI::SK_Reverse, MVT::v8i32, {2 ,7 ,2 ,4 }}, // vperm2f128 + vpermilps
2103
+ {TTI::SK_Reverse, MVT::v16i16, {2 , 9 , 5 , 5 }}, // vextractf128 + 2*pshufb
2103
2104
// + vinsertf128
2104
- {TTI::SK_Reverse, MVT::v16f16, {4 , 4 , 4 , 4 }}, // vextractf128 + 2*pshufb
2105
+ {TTI::SK_Reverse, MVT::v16f16, {2 , 9 , 5 , 5 }}, // vextractf128 + 2*pshufb
2105
2106
// + vinsertf128
2106
- {TTI::SK_Reverse, MVT::v32i8, {4 , 4 , 4 , 4 }}, // vextractf128 + 2*pshufb
2107
+ {TTI::SK_Reverse, MVT::v32i8, {2 , 9 , 5 , 5 }}, // vextractf128 + 2*pshufb
2107
2108
// + vinsertf128
2108
2109
2109
2110
{TTI::SK_Select, MVT::v4i64, {1 ,1 ,1 ,1 }}, // vblendpd
@@ -2170,9 +2171,9 @@ InstructionCost X86TTIImpl::getShuffleCost(TTI::ShuffleKind Kind,
2170
2171
{TTI::SK_Broadcast, MVT::v8f16, {1 , 3 , 2 , 2 }}, // pshufb
2171
2172
{TTI::SK_Broadcast, MVT::v16i8, {1 , 3 , 2 , 2 }}, // pshufb
2172
2173
2173
- {TTI::SK_Reverse, MVT::v8i16, {1 , 1 , 1 , 1 }}, // pshufb
2174
- {TTI::SK_Reverse, MVT::v8f16, {1 , 1 , 1 , 1 }}, // pshufb
2175
- {TTI::SK_Reverse, MVT::v16i8, {1 , 1 , 1 , 1 }}, // pshufb
2174
+ {TTI::SK_Reverse, MVT::v8i16, {1 , 2 , 1 , 2 }}, // pshufb
2175
+ {TTI::SK_Reverse, MVT::v8f16, {1 , 2 , 1 , 2 }}, // pshufb
2176
+ {TTI::SK_Reverse, MVT::v16i8, {1 , 2 , 1 , 2 }}, // pshufb
2176
2177
2177
2178
{TTI::SK_Select, MVT::v8i16, {3 , 3 , 3 , 3 }}, // 2*pshufb + por
2178
2179
{TTI::SK_Select, MVT::v8f16, {3 , 3 , 3 , 3 }}, // 2*pshufb + por
@@ -2209,9 +2210,9 @@ InstructionCost X86TTIImpl::getShuffleCost(TTI::ShuffleKind Kind,
2209
2210
{TTI::SK_Reverse, MVT::v2f64, {1 , 1 , 1 , 1 }}, // shufpd
2210
2211
{TTI::SK_Reverse, MVT::v2i64, {1 , 1 , 1 , 1 }}, // pshufd
2211
2212
{TTI::SK_Reverse, MVT::v4i32, {1 , 1 , 1 , 1 }}, // pshufd
2212
- {TTI::SK_Reverse, MVT::v8i16, {3 , 3 , 3 , 3 }}, // pshuflw + pshufhw + pshufd
2213
- {TTI::SK_Reverse, MVT::v8f16, {3 , 3 , 3 , 3 }}, // pshuflw + pshufhw + pshufd
2214
- {TTI::SK_Reverse, MVT::v16i8, {9 , 9 , 9 , 9 }}, // 2*pshuflw + 2*pshufhw
2213
+ {TTI::SK_Reverse, MVT::v8i16, {2 , 3 , 3 , 3 }}, // pshuflw + pshufhw + pshufd
2214
+ {TTI::SK_Reverse, MVT::v8f16, {2 , 3 , 3 , 3 }}, // pshuflw + pshufhw + pshufd
2215
+ {TTI::SK_Reverse, MVT::v16i8, {5 , 6 , 11 , 11 }}, // 2*pshuflw + 2*pshufhw
2215
2216
// + 2*pshufd + 2*unpck + packus
2216
2217
2217
2218
{TTI::SK_Select, MVT::v2i64, {1 , 1 , 1 , 1 }}, // movsd
0 commit comments