@@ -429,38 +429,17 @@ costShuffleViaVRegSplitting(RISCVTTIImpl &TTI, MVT LegalVT,
429429 " Normalized mask expected to be not shorter than original mask." );
430430 copy (Mask, NormalizedMask.begin ());
431431 InstructionCost Cost = 0 ;
432- SmallBitVector ExtractedRegs (2 * NumOfSrcRegs);
433432 int NumShuffles = 0 ;
434433 processShuffleMasks (
435434 NormalizedMask, NumOfSrcRegs, NumOfDestRegs, NumOfDestRegs, []() {},
436435 [&](ArrayRef<int > RegMask, unsigned SrcReg, unsigned DestReg) {
437- if (ExtractedRegs.test (SrcReg)) {
438- Cost += TTI.getShuffleCost (TTI::SK_ExtractSubvector, Tp, {}, CostKind,
439- (SrcReg % NumOfSrcRegs) *
440- SingleOpTy->getNumElements (),
441- SingleOpTy);
442- ExtractedRegs.set (SrcReg);
443- }
444- if (!ShuffleVectorInst::isIdentityMask (RegMask, RegMask.size ())) {
445- ++NumShuffles;
446- Cost += TTI.getShuffleCost (TTI::SK_PermuteSingleSrc, SingleOpTy,
447- RegMask, CostKind, 0 , nullptr );
436+ if (ShuffleVectorInst::isIdentityMask (RegMask, RegMask.size ()))
448437 return ;
449- }
438+ ++NumShuffles;
439+ Cost += TTI.getShuffleCost (TTI::SK_PermuteSingleSrc, SingleOpTy,
440+ RegMask, CostKind, 0 , nullptr );
450441 },
451442 [&](ArrayRef<int > RegMask, unsigned Idx1, unsigned Idx2, bool NewReg) {
452- if (ExtractedRegs.test (Idx1)) {
453- Cost += TTI.getShuffleCost (
454- TTI::SK_ExtractSubvector, Tp, {}, CostKind,
455- (Idx1 % NumOfSrcRegs) * SingleOpTy->getNumElements (), SingleOpTy);
456- ExtractedRegs.set (Idx1);
457- }
458- if (ExtractedRegs.test (Idx2)) {
459- Cost += TTI.getShuffleCost (
460- TTI::SK_ExtractSubvector, Tp, {}, CostKind,
461- (Idx2 % NumOfSrcRegs) * SingleOpTy->getNumElements (), SingleOpTy);
462- ExtractedRegs.set (Idx2);
463- }
464443 Cost += TTI.getShuffleCost (TTI::SK_PermuteTwoSrc, SingleOpTy, RegMask,
465444 CostKind, 0 , nullptr );
466445 NumShuffles += 2 ;
0 commit comments