Skip to content

Commit 42429fe

Browse files
authored
[RISCV] Simplify costShuffleViaVRegSplitting [nfc] (#129766)
This code goes to some length to cost the subvector extracts, but by construction, all of the subvector extracts are subregister extracts from a vector register group and thus have zero cost. As a result, none of this code is needed.
1 parent df1c8ba commit 42429fe

File tree

1 file changed

+4
-25
lines changed

1 file changed

+4
-25
lines changed

llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp

Lines changed: 4 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)