@@ -848,24 +848,17 @@ bool VectorCombine::foldVectorInsertToShuffle(Instruction &I) {
848
848
// shufflevector requires the two input vectors to be the same width.
849
849
// Elements beyond the bounds of SubVec within the widened vector are
850
850
// undefined.
851
- SmallVector<int , 8 > WidenMask;
852
- unsigned int i = 0 ;
853
- for (i = 0 ; i != SubVecNumElts; ++i)
854
- WidenMask.push_back (i);
855
- for (; i != VecNumElts; ++i)
856
- WidenMask.push_back (PoisonMaskElem);
851
+ SmallVector<int , 8 > WidenMask (VecNumElts, PoisonMaskElem);
852
+ std::iota (WidenMask.begin (), WidenMask.begin () + SubVecNumElts, 0 );
853
+ std::fill (WidenMask.begin () + SubVecNumElts, WidenMask.end (), PoisonMaskElem);
857
854
858
855
auto *WidenShuffle = Builder.CreateShuffleVector (SubVec, WidenMask);
859
856
Worklist.pushValue (WidenShuffle);
860
857
861
- SmallVector<int , 8 > Mask;
862
- unsigned int j;
863
- for (i = 0 ; i != SubVecIdx; ++i)
864
- Mask.push_back (i);
865
- for (j = 0 ; j != SubVecNumElts; ++j)
866
- Mask.push_back (DstNumElts + j);
867
- for (i = SubVecIdx + SubVecNumElts; i != DstNumElts; ++i)
868
- Mask.push_back (i);
858
+ SmallVector<int , 8 > Mask (DstNumElts);
859
+ std::iota (Mask.begin (), Mask.begin () + SubVecIdx, 0 );
860
+ std::iota (Mask.begin () + SubVecIdx, Mask.begin () + SubVecIdx + SubVecNumElts, DstNumElts);
861
+ std::iota (Mask.begin () + SubVecIdx + SubVecNumElts, Mask.end (), SubVecIdx + SubVecNumElts);
869
862
870
863
auto *Shuffle = Builder.CreateShuffleVector (Vec, WidenShuffle, Mask);
871
864
replaceValue (I, *Shuffle);
0 commit comments