Skip to content

Commit

Permalink
[TTI] getInstructionCost - pull out repeated getShuffleMask() calls. …
Browse files Browse the repository at this point in the history
…NFC.

Pulled out of #84156
  • Loading branch information
RKSimon committed Mar 6, 2024
1 parent 5a896c6 commit 3711329
Showing 1 changed file with 21 additions and 30 deletions.
51 changes: 21 additions & 30 deletions llvm/include/llvm/Analysis/TargetTransformInfoImpl.h
Original file line number Diff line number Diff line change
Expand Up @@ -1324,6 +1324,7 @@ class TargetTransformInfoImplCRTPBase : public TargetTransformInfoImplBase {

auto *VecTy = cast<VectorType>(U->getType());
auto *VecSrcTy = cast<VectorType>(Operands[0]->getType());
ArrayRef<int> Mask = Shuffle->getShuffleMask();
int NumSubElts, SubIndex;

if (Shuffle->changesLength()) {
Expand All @@ -1333,21 +1334,19 @@ class TargetTransformInfoImplCRTPBase : public TargetTransformInfoImplBase {

if (Shuffle->isExtractSubvectorMask(SubIndex))
return TargetTTI->getShuffleCost(TTI::SK_ExtractSubvector, VecSrcTy,
Shuffle->getShuffleMask(), CostKind,
SubIndex, VecTy, Operands);
Mask, CostKind, SubIndex, VecTy,
Operands);

if (Shuffle->isInsertSubvectorMask(NumSubElts, SubIndex))
return TargetTTI->getShuffleCost(
TTI::SK_InsertSubvector, VecTy, Shuffle->getShuffleMask(),
CostKind, SubIndex,
TTI::SK_InsertSubvector, VecTy, Mask, CostKind, SubIndex,
FixedVectorType::get(VecTy->getScalarType(), NumSubElts),
Operands);

int ReplicationFactor, VF;
if (Shuffle->isReplicationMask(ReplicationFactor, VF)) {
APInt DemandedDstElts =
APInt::getZero(Shuffle->getShuffleMask().size());
for (auto I : enumerate(Shuffle->getShuffleMask())) {
APInt DemandedDstElts = APInt::getZero(Mask.size());
for (auto I : enumerate(Mask)) {
if (I.value() != PoisonMaskElem)
DemandedDstElts.setBit(I.index());
}
Expand All @@ -1363,44 +1362,36 @@ class TargetTransformInfoImplCRTPBase : public TargetTransformInfoImplBase {
return 0;

if (Shuffle->isReverse())
return TargetTTI->getShuffleCost(TTI::SK_Reverse, VecTy,
Shuffle->getShuffleMask(), CostKind, 0,
nullptr, Operands);
return TargetTTI->getShuffleCost(TTI::SK_Reverse, VecTy, Mask, CostKind,
0, nullptr, Operands);

if (Shuffle->isSelect())
return TargetTTI->getShuffleCost(TTI::SK_Select, VecTy,
Shuffle->getShuffleMask(), CostKind, 0,
nullptr, Operands);
return TargetTTI->getShuffleCost(TTI::SK_Select, VecTy, Mask, CostKind,
0, nullptr, Operands);

if (Shuffle->isTranspose())
return TargetTTI->getShuffleCost(TTI::SK_Transpose, VecTy,
Shuffle->getShuffleMask(), CostKind, 0,
nullptr, Operands);
return TargetTTI->getShuffleCost(TTI::SK_Transpose, VecTy, Mask,
CostKind, 0, nullptr, Operands);

if (Shuffle->isZeroEltSplat())
return TargetTTI->getShuffleCost(TTI::SK_Broadcast, VecTy,
Shuffle->getShuffleMask(), CostKind, 0,
nullptr, Operands);
return TargetTTI->getShuffleCost(TTI::SK_Broadcast, VecTy, Mask,
CostKind, 0, nullptr, Operands);

if (Shuffle->isSingleSource())
return TargetTTI->getShuffleCost(TTI::SK_PermuteSingleSrc, VecTy,
Shuffle->getShuffleMask(), CostKind, 0,
nullptr, Operands);
return TargetTTI->getShuffleCost(TTI::SK_PermuteSingleSrc, VecTy, Mask,
CostKind, 0, nullptr, Operands);

if (Shuffle->isInsertSubvectorMask(NumSubElts, SubIndex))
return TargetTTI->getShuffleCost(
TTI::SK_InsertSubvector, VecTy, Shuffle->getShuffleMask(), CostKind,
SubIndex, FixedVectorType::get(VecTy->getScalarType(), NumSubElts),
Operands);
TTI::SK_InsertSubvector, VecTy, Mask, CostKind, SubIndex,
FixedVectorType::get(VecTy->getScalarType(), NumSubElts), Operands);

if (Shuffle->isSplice(SubIndex))
return TargetTTI->getShuffleCost(TTI::SK_Splice, VecTy,
Shuffle->getShuffleMask(), CostKind,
return TargetTTI->getShuffleCost(TTI::SK_Splice, VecTy, Mask, CostKind,
SubIndex, nullptr, Operands);

return TargetTTI->getShuffleCost(TTI::SK_PermuteTwoSrc, VecTy,
Shuffle->getShuffleMask(), CostKind, 0,
nullptr, Operands);
return TargetTTI->getShuffleCost(TTI::SK_PermuteTwoSrc, VecTy, Mask,
CostKind, 0, nullptr, Operands);
}
case Instruction::ExtractElement: {
auto *EEI = dyn_cast<ExtractElementInst>(U);
Expand Down

0 comments on commit 3711329

Please sign in to comment.