@@ -1105,6 +1105,7 @@ class BasicTTIImplBase : public TargetTransformInfoImplCRTPBase<T> {
11051105 VectorType *&SubTy) const {
11061106 if (Mask.empty ())
11071107 return Kind;
1108+ int NumDstElts = Mask.size ();
11081109 int NumSrcElts = SrcTy->getElementCount ().getKnownMinValue ();
11091110 switch (Kind) {
11101111 case TTI::SK_PermuteSingleSrc: {
@@ -1115,8 +1116,8 @@ class BasicTTIImplBase : public TargetTransformInfoImplCRTPBase<T> {
11151116 if (isSplatMask (Mask, NumSrcElts, Index))
11161117 return TTI::SK_Broadcast;
11171118 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 );
11201121 return TTI::SK_ExtractSubvector;
11211122 }
11221123 break ;
@@ -1126,8 +1127,8 @@ class BasicTTIImplBase : public TargetTransformInfoImplCRTPBase<T> {
11261127 return improveShuffleKindFromMask (TTI::SK_PermuteSingleSrc, Mask, SrcTy,
11271128 Index, SubTy);
11281129 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)) {
11311132 if (Index + NumSubElts > NumSrcElts)
11321133 return Kind;
11331134 SubTy = FixedVectorType::get (SrcTy->getElementType (), NumSubElts);
0 commit comments