Skip to content

Commit 1736f76

Browse files
committed
[CostModel][X86] getTypeBasedIntrinsicInstrCost - adjustTableCost - split CostTblEntry into ISD/Cost pair. NFC
This will be necessary to allow us to reuse this for other cost kind types
1 parent 11b4dce commit 1736f76

File tree

1 file changed

+48
-26
lines changed

1 file changed

+48
-26
lines changed

llvm/lib/Target/X86/X86TargetTransformInfo.cpp

Lines changed: 48 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3509,104 +3509,125 @@ X86TTIImpl::getTypeBasedIntrinsicInstrCost(const IntrinsicCostAttributes &ICA,
35093509
if (ISD == ISD::FSQRT && CostKind == TTI::TCK_CodeSize)
35103510
return LT.first;
35113511

3512-
auto adjustTableCost = [](const CostTblEntry &Entry,
3512+
auto adjustTableCost = [](int ISD, unsigned Cost,
35133513
InstructionCost LegalizationCost,
35143514
FastMathFlags FMF) {
35153515
// If there are no NANs to deal with, then these are reduced to a
35163516
// single MIN** or MAX** instruction instead of the MIN/CMP/SELECT that we
35173517
// assume is used in the non-fast case.
3518-
if (Entry.ISD == ISD::FMAXNUM || Entry.ISD == ISD::FMINNUM) {
3518+
if (ISD == ISD::FMAXNUM || ISD == ISD::FMINNUM) {
35193519
if (FMF.noNaNs())
35203520
return LegalizationCost * 1;
35213521
}
3522-
return LegalizationCost * (int)Entry.Cost;
3522+
return LegalizationCost * (int)Cost;
35233523
};
35243524

35253525
if (ST->useGLMDivSqrtCosts())
35263526
if (const auto *Entry = CostTableLookup(GLMCostTbl, ISD, MTy))
3527-
return adjustTableCost(*Entry, LT.first, ICA.getFlags());
3527+
return adjustTableCost(Entry->ISD, Entry->Cost, LT.first,
3528+
ICA.getFlags());
35283529

35293530
if (ST->useSLMArithCosts())
35303531
if (const auto *Entry = CostTableLookup(SLMCostTbl, ISD, MTy))
3531-
return adjustTableCost(*Entry, LT.first, ICA.getFlags());
3532+
return adjustTableCost(Entry->ISD, Entry->Cost, LT.first,
3533+
ICA.getFlags());
35323534

35333535
if (ST->hasBITALG())
35343536
if (const auto *Entry = CostTableLookup(AVX512BITALGCostTbl, ISD, MTy))
3535-
return adjustTableCost(*Entry, LT.first, ICA.getFlags());
3537+
return adjustTableCost(Entry->ISD, Entry->Cost, LT.first,
3538+
ICA.getFlags());
35363539

35373540
if (ST->hasVPOPCNTDQ())
35383541
if (const auto *Entry = CostTableLookup(AVX512VPOPCNTDQCostTbl, ISD, MTy))
3539-
return adjustTableCost(*Entry, LT.first, ICA.getFlags());
3542+
return adjustTableCost(Entry->ISD, Entry->Cost, LT.first,
3543+
ICA.getFlags());
35403544

35413545
if (ST->hasCDI())
35423546
if (const auto *Entry = CostTableLookup(AVX512CDCostTbl, ISD, MTy))
3543-
return adjustTableCost(*Entry, LT.first, ICA.getFlags());
3547+
return adjustTableCost(Entry->ISD, Entry->Cost, LT.first,
3548+
ICA.getFlags());
35443549

35453550
if (ST->hasBWI())
35463551
if (const auto *Entry = CostTableLookup(AVX512BWCostTbl, ISD, MTy))
3547-
return adjustTableCost(*Entry, LT.first, ICA.getFlags());
3552+
return adjustTableCost(Entry->ISD, Entry->Cost, LT.first,
3553+
ICA.getFlags());
35483554

35493555
if (ST->hasAVX512())
35503556
if (const auto *Entry = CostTableLookup(AVX512CostTbl, ISD, MTy))
3551-
return adjustTableCost(*Entry, LT.first, ICA.getFlags());
3557+
return adjustTableCost(Entry->ISD, Entry->Cost, LT.first,
3558+
ICA.getFlags());
35523559

35533560
if (ST->hasXOP())
35543561
if (const auto *Entry = CostTableLookup(XOPCostTbl, ISD, MTy))
3555-
return adjustTableCost(*Entry, LT.first, ICA.getFlags());
3562+
return adjustTableCost(Entry->ISD, Entry->Cost, LT.first,
3563+
ICA.getFlags());
35563564

35573565
if (ST->hasAVX2())
35583566
if (const auto *Entry = CostTableLookup(AVX2CostTbl, ISD, MTy))
3559-
return adjustTableCost(*Entry, LT.first, ICA.getFlags());
3567+
return adjustTableCost(Entry->ISD, Entry->Cost, LT.first,
3568+
ICA.getFlags());
35603569

35613570
if (ST->hasAVX())
35623571
if (const auto *Entry = CostTableLookup(AVX1CostTbl, ISD, MTy))
3563-
return adjustTableCost(*Entry, LT.first, ICA.getFlags());
3572+
return adjustTableCost(Entry->ISD, Entry->Cost, LT.first,
3573+
ICA.getFlags());
35643574

35653575
if (ST->hasSSE42())
35663576
if (const auto *Entry = CostTableLookup(SSE42CostTbl, ISD, MTy))
3567-
return adjustTableCost(*Entry, LT.first, ICA.getFlags());
3577+
return adjustTableCost(Entry->ISD, Entry->Cost, LT.first,
3578+
ICA.getFlags());
35683579

35693580
if (ST->hasSSE41())
35703581
if (const auto *Entry = CostTableLookup(SSE41CostTbl, ISD, MTy))
3571-
return adjustTableCost(*Entry, LT.first, ICA.getFlags());
3582+
return adjustTableCost(Entry->ISD, Entry->Cost, LT.first,
3583+
ICA.getFlags());
35723584

35733585
if (ST->hasSSSE3())
35743586
if (const auto *Entry = CostTableLookup(SSSE3CostTbl, ISD, MTy))
3575-
return adjustTableCost(*Entry, LT.first, ICA.getFlags());
3587+
return adjustTableCost(Entry->ISD, Entry->Cost, LT.first,
3588+
ICA.getFlags());
35763589

35773590
if (ST->hasSSE2())
35783591
if (const auto *Entry = CostTableLookup(SSE2CostTbl, ISD, MTy))
3579-
return adjustTableCost(*Entry, LT.first, ICA.getFlags());
3592+
return adjustTableCost(Entry->ISD, Entry->Cost, LT.first,
3593+
ICA.getFlags());
35803594

35813595
if (ST->hasSSE1())
35823596
if (const auto *Entry = CostTableLookup(SSE1CostTbl, ISD, MTy))
3583-
return adjustTableCost(*Entry, LT.first, ICA.getFlags());
3597+
return adjustTableCost(Entry->ISD, Entry->Cost, LT.first,
3598+
ICA.getFlags());
35843599

35853600
if (ST->hasBMI()) {
35863601
if (ST->is64Bit())
35873602
if (const auto *Entry = CostTableLookup(BMI64CostTbl, ISD, MTy))
3588-
return adjustTableCost(*Entry, LT.first, ICA.getFlags());
3603+
return adjustTableCost(Entry->ISD, Entry->Cost, LT.first,
3604+
ICA.getFlags());
35893605

35903606
if (const auto *Entry = CostTableLookup(BMI32CostTbl, ISD, MTy))
3591-
return adjustTableCost(*Entry, LT.first, ICA.getFlags());
3607+
return adjustTableCost(Entry->ISD, Entry->Cost, LT.first,
3608+
ICA.getFlags());
35923609
}
35933610

35943611
if (ST->hasLZCNT()) {
35953612
if (ST->is64Bit())
35963613
if (const auto *Entry = CostTableLookup(LZCNT64CostTbl, ISD, MTy))
3597-
return adjustTableCost(*Entry, LT.first, ICA.getFlags());
3614+
return adjustTableCost(Entry->ISD, Entry->Cost, LT.first,
3615+
ICA.getFlags());
35983616

35993617
if (const auto *Entry = CostTableLookup(LZCNT32CostTbl, ISD, MTy))
3600-
return adjustTableCost(*Entry, LT.first, ICA.getFlags());
3618+
return adjustTableCost(Entry->ISD, Entry->Cost, LT.first,
3619+
ICA.getFlags());
36013620
}
36023621

36033622
if (ST->hasPOPCNT()) {
36043623
if (ST->is64Bit())
36053624
if (const auto *Entry = CostTableLookup(POPCNT64CostTbl, ISD, MTy))
3606-
return adjustTableCost(*Entry, LT.first, ICA.getFlags());
3625+
return adjustTableCost(Entry->ISD, Entry->Cost, LT.first,
3626+
ICA.getFlags());
36073627

36083628
if (const auto *Entry = CostTableLookup(POPCNT32CostTbl, ISD, MTy))
3609-
return adjustTableCost(*Entry, LT.first, ICA.getFlags());
3629+
return adjustTableCost(Entry->ISD, Entry->Cost, LT.first,
3630+
ICA.getFlags());
36103631
}
36113632

36123633
if (ISD == ISD::BSWAP && ST->hasMOVBE() && ST->hasFastMOVBE()) {
@@ -3622,10 +3643,11 @@ X86TTIImpl::getTypeBasedIntrinsicInstrCost(const IntrinsicCostAttributes &ICA,
36223643

36233644
if (ST->is64Bit())
36243645
if (const auto *Entry = CostTableLookup(X64CostTbl, ISD, MTy))
3625-
return adjustTableCost(*Entry, LT.first, ICA.getFlags());
3646+
return adjustTableCost(Entry->ISD, Entry->Cost, LT.first,
3647+
ICA.getFlags());
36263648

36273649
if (const auto *Entry = CostTableLookup(X86CostTbl, ISD, MTy))
3628-
return adjustTableCost(*Entry, LT.first, ICA.getFlags());
3650+
return adjustTableCost(Entry->ISD, Entry->Cost, LT.first, ICA.getFlags());
36293651
}
36303652

36313653
return BaseT::getIntrinsicInstrCost(ICA, CostKind);

0 commit comments

Comments
 (0)