@@ -1105,6 +1105,7 @@ class BasicTTIImplBase : public TargetTransformInfoImplCRTPBase<T> {
1105
1105
VectorType *&SubTy) const {
1106
1106
if (Mask.empty ())
1107
1107
return Kind;
1108
+ int NumDstElts = Mask.size ();
1108
1109
int NumSrcElts = SrcTy->getElementCount ().getKnownMinValue ();
1109
1110
switch (Kind) {
1110
1111
case TTI::SK_PermuteSingleSrc: {
@@ -1115,8 +1116,8 @@ class BasicTTIImplBase : public TargetTransformInfoImplCRTPBase<T> {
1115
1116
if (isSplatMask (Mask, NumSrcElts, Index))
1116
1117
return TTI::SK_Broadcast;
1117
1118
if (ShuffleVectorInst::isExtractSubvectorMask (Mask, NumSrcElts, Index) &&
1118
- (Index + Mask. size () ) <= (size_t )NumSrcElts) {
1119
- SubTy = FixedVectorType::get (SrcTy->getElementType (), Mask. size () );
1119
+ (Index + NumDstElts ) <= (size_t )NumSrcElts) {
1120
+ SubTy = FixedVectorType::get (SrcTy->getElementType (), NumDstElts );
1120
1121
return TTI::SK_ExtractSubvector;
1121
1122
}
1122
1123
break ;
@@ -1126,8 +1127,8 @@ class BasicTTIImplBase : public TargetTransformInfoImplCRTPBase<T> {
1126
1127
return improveShuffleKindFromMask (TTI::SK_PermuteSingleSrc, Mask, SrcTy,
1127
1128
Index, SubTy);
1128
1129
int NumSubElts;
1129
- if (Mask. size () > 2 && ShuffleVectorInst::isInsertSubvectorMask (
1130
- Mask, NumSrcElts, NumSubElts, Index)) {
1130
+ if (NumDstElts > 2 && ShuffleVectorInst::isInsertSubvectorMask (
1131
+ Mask, NumSrcElts, NumSubElts, Index)) {
1131
1132
if (Index + NumSubElts > NumSrcElts)
1132
1133
return Kind;
1133
1134
SubTy = FixedVectorType::get (SrcTy->getElementType (), NumSubElts);
0 commit comments