LLVM: lib/Target/AMDGPU/GCNSubtarget.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13
14#ifndef LLVM_LIB_TARGET_AMDGPU_GCNSUBTARGET_H
15#define LLVM_LIB_TARGET_AMDGPU_GCNSUBTARGET_H
16
25
26#define GET_SUBTARGETINFO_HEADER
27#include "AMDGPUGenSubtargetInfo.inc"
28
29namespace llvm {
30
31class GCNTargetMachine;
32
35public:
37
38
39
44
49
50private:
51
52 std::unique_ptr TSInfo;
53
54
55 std::unique_ptr CallLoweringInfo;
56 std::unique_ptr InlineAsmLoweringInfo;
57 std::unique_ptr InstSelector;
58 std::unique_ptr Legalizer;
59 std::unique_ptr RegBankInfo;
60
61protected:
62
68
69
73
74
84
85
86
88
93
94
102
103
200
201
202
209
210
211
213
293
297
299
302
303
305
306private:
310
311public:
315
318
319
320
322
324 return &InstrInfo;
325 }
326
328 return &FrameLowering;
329 }
330
332 return &TLInfo;
333 }
334
336 return &InstrInfo.getRegisterInfo();
337 }
338
340
342 return CallLoweringInfo.get();
343 }
344
346 return InlineAsmLoweringInfo.get();
347 }
348
350 return InstSelector.get();
351 }
352
354 return Legalizer.get();
355 }
356
358 return RegBankInfo.get();
359 }
360
364
368
370
374
376
378
379 return (64 * 4) * ((1 << 18) - 1);
380 }
382
383 return (64 * 4) * ((1 << 15) - 1);
384 }
385
386 return (256 * 4) * ((1 << 13) - 1);
387 }
388
389
393
397
401
403
404
405
406
408
414
418
422
426
430
434
438
442
446
447
448
452
456
460
464
468
472
476
480
484
488
492
494
498
502
506
510
514
516
520
525
526
527
531
535
536
540
541
542
546
547
551
552
553
557
558
559
563
567
568
572
576
577
578
581
585
586
590
594
595
596
600
601
605
606
610
611
612
616
617
618
622
626
627
628
632
636
640
644
648
652
656
660
662
666
670
672 return TargetID.isXnackOnOrAny();
673 }
674
678
682
684
688
692
696
700
704
705
706
707
711
713
717
722
726
730
732
734
738
740
741
745
749
753
757
761
765
769
770
771
775
776
777
778
779
780
784
785
789
790
791
792
793
797
799
801
805
806
810
814
818
822
826
830
834
838
840
844
848
852
856
860
864
868
872
876
880
884
888
892
896
900
902
904
906
908
910
912
914
916
918
922
926
930
934
938
940
942
946
948
950
954
958
962
966
968
969
970
974
975
976
980
981
982
983
987
988
989
993
995
999
1003
1007
1011
1015
1019
1023
1027
1031
1035
1039
1041
1043
1045
1047
1048
1050
1051
1052
1053
1054
1055
1056
1057
1058
1060
1064
1065 bool useAA() const override;
1066
1070
1073
1074
1076
1077
1081
1084
1087
1089
1093
1097
1101
1105
1107
1111
1113
1117
1121
1124
1125
1127
1128
1130
1134
1138
1142
1146
1150
1152
1156
1157
1161
1165
1167
1171
1175
1179
1181
1183
1187
1189
1191
1193
1195
1197
1199
1201
1203
1207
1211
1215
1219
1221
1223
1225
1226
1228
1230
1231
1233
1237
1241
1245
1249
1251
1255
1259
1263
1264
1268
1272
1277
1281
1285
1289
1293
1297
1301
1305
1309
1313
1314
1315
1319
1320
1321
1323
1324
1325
1327
1328
1330
1331
1335
1339
1341
1343
1345
1349
1351
1353
1355
1359
1361
1363
1365
1367
1371
1373
1375
1379
1380
1382
1383
1385
1386
1387
1389
1390
1391
1393
1395
1397
1399
1400
1402
1404
1405
1406
1408
1409
1410
1412
1413
1414
1415
1419
1421
1423
1425
1427
1429
1431
1432
1433
1435
1436
1437
1441
1442
1444
1445
1446
1447
1451
1453
1457
1461
1465
1467
1469
1471
1473
1475
1479
1481
1482
1483
1485
1486
1488
1490
1492
1493
1494
1495
1497
1499
1501
1502
1503
1505
1506
1507
1509 unsigned DynamicVGPRBlockSize) const;
1510
1511
1512
1513
1514
1515
1516
1517
1518
1520 unsigned LDSSize = 0,
1521 unsigned NumSGPRs = 0,
1522 unsigned NumVGPRs = 0) const;
1523
1524
1525
1529
1530
1531
1533
1534
1536
1537
1539
1540
1542
1543
1544
1548
1549
1551
1552
1554
1555
1557
1558
1560
1561
1562
1564
1565
1567
1568
1570
1571
1573
1574
1576
1577
1578
1580
1582
1584
1585
1587
1588
1590
1591
1593
1594
1595
1597
1598
1600
1601
1603
1604
1606
1607
1609
1610
1612
1613
1615
1616
1618
1619
1620
1621
1623
1624
1625
1629
1631
1633
1634
1638
1639
1643
1644
1648
1649
1653
1654
1655
1659
1660
1661
1665
1666
1667
1668
1670
1672
1673
1675
1676
1678
1679
1680
1681
1683 std::pair<unsigned, unsigned> WavesPerEU,
1684 unsigned PreloadedSGPRs,
1685 unsigned ReservedNumSGPRs) const;
1686
1687
1688
1689
1690
1691
1692
1693
1694
1696
1697
1698
1699
1700
1701
1702
1703
1704
1706
1707
1711
1712
1716
1717
1721
1722
1723
1727
1728
1732
1733
1734
1736 unsigned DynamicVGPRBlockSize) const {
1738 DynamicVGPRBlockSize);
1739 }
1740
1741
1742
1744 unsigned DynamicVGPRBlockSize) const {
1746 DynamicVGPRBlockSize);
1747 }
1748
1749
1750
1751 unsigned
1753 std::pair<unsigned, unsigned> NumVGPRBounds) const;
1754
1755
1756
1757
1758
1759
1760
1761
1762
1764
1768
1769
1770
1772
1773
1774
1775
1776
1777
1778
1779
1780
1782
1784
1786
1790
1794
1795
1796
1797
1799 return hasFeature(AMDGPU::FeatureWavefrontSize32) ||
1800 hasFeature(AMDGPU::FeatureWavefrontSize64);
1801 }
1802
1806
1807
1808
1812
1813
1817
1818
1822
1823
1824
1825 unsigned
1829
1830
1831
1835
1839
1840
1841
1843
1844
1845
1847
1848
1849
1851
1852
1853
1855
1860
1862
1863
1864 return false;
1865 }
1866
1867
1868
1872
1873
1874
1878
1879
1880
1884
1885
1887
1888
1889
1890
1894
1895
1896
1899 return 7;
1901 return 4;
1902 return 3;
1903 }
1904
1905
1906
1910
1914};
1915
1917public:
1919
1921
1923
1925
1927
1929
1931
1933
1935
1937
1939
1941
1952
1953
1955 switch (ID) {
1957 return 2;
1959 return 4;
1961 return 2;
1963 return 2;
1965 return 2;
1967 return 2;
1969 return 2;
1971 return 1;
1972 }
1974 }
1975
1977
1978private:
1980
1981
1982
1983
1984 bool ImplicitBufferPtr = false;
1985
1986 bool PrivateSegmentBuffer = false;
1987
1988 bool DispatchPtr = false;
1989
1990 bool QueuePtr = false;
1991
1992 bool KernargSegmentPtr = false;
1993
1994 bool DispatchID = false;
1995
1996 bool FlatScratchInit = false;
1997
1998 bool PrivateSegmentSize = false;
1999
2000 unsigned NumKernargPreloadSGPRs = 0;
2001
2002 unsigned NumUsedUserSGPRs = 0;
2003};
2004
2005}
2006
2007#endif
This file describes how to lower LLVM calls to machine code calls.
This file declares the targeting of the RegisterBankInfo class for AMDGPU.
Base class for AMDGPU specific classes of TargetSubtarget.
SI DAG Lowering interface definition.
Interface definition for SIInstrInfo.
unsigned getWavefrontSizeLog2() const
AMDGPUSubtarget(Triple TT)
unsigned getMaxWavesPerEU() const
unsigned getWavefrontSize() const
Definition GCNSubtarget.h:34
bool hasPrefetch() const
Definition GCNSubtarget.h:1040
bool hasMemoryAtomicFaddF32DenormalSupport() const
Definition GCNSubtarget.h:977
bool GFX10Insts
Definition GCNSubtarget.h:113
bool hasFlat() const
Definition GCNSubtarget.h:443
bool hasD16Images() const
Definition GCNSubtarget.h:766
bool hasMinimum3Maximum3F32() const
Definition GCNSubtarget.h:1458
InstrItineraryData InstrItins
Definition GCNSubtarget.h:65
bool useVGPRIndexMode() const
bool HasIEEEMinimumMaximumInsts
Definition GCNSubtarget.h:279
bool HasDot6Insts
Definition GCNSubtarget.h:158
bool hasAtomicDsPkAdd16Insts() const
Definition GCNSubtarget.h:939
bool hasSDWAOmod() const
Definition GCNSubtarget.h:815
bool hasFlatGVSMode() const
Definition GCNSubtarget.h:1229
bool HasLdsBranchVmemWARHazard
Definition GCNSubtarget.h:263
bool hasPermlane32Swap() const
Definition GCNSubtarget.h:1455
bool HasCvtPkNormVOP2Insts
Definition GCNSubtarget.h:174
bool HasDot11Insts
Definition GCNSubtarget.h:163
bool partialVCCWritesUpdateVCCZ() const
Writes to VCC_LO/VCC_HI update the VCCZ flag.
Definition GCNSubtarget.h:548
bool Has1_5xVGPRs
Definition GCNSubtarget.h:272
bool hasSwap() const
Definition GCNSubtarget.h:503
bool hasPkFmacF16Inst() const
Definition GCNSubtarget.h:919
bool HasClusters
Definition GCNSubtarget.h:300
bool HasAtomicFMinFMaxF64FlatInsts
Definition GCNSubtarget.h:182
bool hasPkMinMax3Insts() const
Definition GCNSubtarget.h:1608
bool hasDot2Insts() const
Definition GCNSubtarget.h:845
bool hasD16LoadStore() const
Definition GCNSubtarget.h:758
bool HasExtendedImageInsts
Definition GCNSubtarget.h:143
bool hasMergedShaders() const
Definition GCNSubtarget.h:1545
bool hasA16() const
Definition GCNSubtarget.h:1180
bool hasSDWAScalar() const
Definition GCNSubtarget.h:819
bool hasRrWGMode() const
Definition GCNSubtarget.h:1575
bool supportsBackOffBarrier() const
Definition GCNSubtarget.h:629
bool hasScalarCompareEq64() const
Definition GCNSubtarget.h:1108
bool EnableXNACK
Definition GCNSubtarget.h:87
bool has1_5xVGPRs() const
Definition GCNSubtarget.h:1394
int getLDSBankCount() const
Definition GCNSubtarget.h:394
bool HasG16
Definition GCNSubtarget.h:146
bool hasSafeCUPrefetch() const
Definition GCNSubtarget.h:1046
bool hasOnlyRevVALUShifts() const
Definition GCNSubtarget.h:449
bool hasImageStoreD16Bug() const
Definition GCNSubtarget.h:1188
bool hasNonNSAEncoding() const
Definition GCNSubtarget.h:1200
bool HasSadInsts
Definition GCNSubtarget.h:171
bool hasUsableDivScaleConditionOutput() const
Condition output from div_scale is usable.
Definition GCNSubtarget.h:537
void mirFileLoaded(MachineFunction &MF) const override
bool hasUsableDSOffset() const
True if the offset field of DS instructions works as expected.
Definition GCNSubtarget.h:528
bool loadStoreOptEnabled() const
Definition GCNSubtarget.h:1238
bool enableSubRegLiveness() const override
Definition GCNSubtarget.h:1067
bool hasDPPWavefrontShifts() const
Definition GCNSubtarget.h:1139
unsigned getSGPRAllocGranule() const
Definition GCNSubtarget.h:1635
bool hasAtomicFMinFMaxF64FlatInsts() const
Definition GCNSubtarget.h:935
bool hasLdsAtomicAddF64() const
Definition GCNSubtarget.h:742
bool HasSALUFloatInsts
Definition GCNSubtarget.h:242
bool hasFlatLgkmVMemCountInOrder() const
Definition GCNSubtarget.h:754
bool GFX940Insts
Definition GCNSubtarget.h:111
bool Has45BitNumRecordsBufferResource
Definition GCNSubtarget.h:298
bool flatScratchIsPointer() const
Definition GCNSubtarget.h:1526
bool hasSDWAMac() const
Definition GCNSubtarget.h:827
bool hasFP8ConversionInsts() const
Definition GCNSubtarget.h:901
bool hasShift64HighRegBug() const
Definition GCNSubtarget.h:1316
bool hasDot7Insts() const
Definition GCNSubtarget.h:865
bool HasScalarDwordx3Loads
Definition GCNSubtarget.h:129
bool hasApertureRegs() const
Definition GCNSubtarget.h:663
unsigned MaxPrivateElementSize
Definition GCNSubtarget.h:67
bool HasCubeInsts
Definition GCNSubtarget.h:169
bool LDSMisalignedBug
Definition GCNSubtarget.h:236
bool unsafeDSOffsetFoldingEnabled() const
Definition GCNSubtarget.h:532
bool hasBitOp3Insts() const
Definition GCNSubtarget.h:1452
bool hasFPAtomicToDenormModeHazard() const
Definition GCNSubtarget.h:1346
unsigned getAddressableNumArchVGPRs() const
Definition GCNSubtarget.h:1724
bool DumpCode
Definition GCNSubtarget.h:100
bool hasFlatInstOffsets() const
Definition GCNSubtarget.h:693
bool HasSetPrioIncWgInst
Definition GCNSubtarget.h:291
bool vmemWriteNeedsExpWaitcnt() const
Definition GCNSubtarget.h:1032
bool hasAtomicFMinFMaxF32FlatInsts() const
Definition GCNSubtarget.h:931
bool HasDot13Insts
Definition GCNSubtarget.h:165
bool shouldClusterStores() const
Definition GCNSubtarget.h:1842
bool HasXF32Insts
Definition GCNSubtarget.h:199
unsigned getMinNumSGPRs(unsigned WavesPerEU) const
Definition GCNSubtarget.h:1656
unsigned getSGPREncodingGranule() const
Definition GCNSubtarget.h:1640
bool HasSDWAScalar
Definition GCNSubtarget.h:133
bool hasIEEEMinimumMaximumInsts() const
Definition GCNSubtarget.h:1572
void ParseSubtargetFeatures(StringRef CPU, StringRef TuneCPU, StringRef FS)
bool hasLdsBranchVmemWARHazard() const
Definition GCNSubtarget.h:1310
bool hasDefaultComponentZero() const
Definition GCNSubtarget.h:994
bool hasGetWaveIdInst() const
Definition GCNSubtarget.h:1008
bool hasCompressedExport() const
Return true if the target's EXP instruction has the COMPR flag, which affects the meaning of the EN (...
Definition GCNSubtarget.h:1388
bool hasGFX90AInsts() const
Definition GCNSubtarget.h:1344
bool hasFlatScratchHiInB64InstHazard() const
Definition GCNSubtarget.h:1881
bool hasDstSelForwardingHazard() const
Definition GCNSubtarget.h:1326
bool HasMadU32Inst
Definition GCNSubtarget.h:286
bool HasVmemPrefInsts
Definition GCNSubtarget.h:259
bool UserSGPRInit16Bug
Definition GCNSubtarget.h:120
void setScalarizeGlobalBehavior(bool b)
Definition GCNSubtarget.h:1071
bool hasRelaxedBufferOOBMode() const
Definition GCNSubtarget.h:661
bool UnalignedDSAccess
Definition GCNSubtarget.h:239
bool HasDPP8
Definition GCNSubtarget.h:138
bool GFX11Insts
Definition GCNSubtarget.h:114
bool AddNoCarryInsts
Definition GCNSubtarget.h:234
bool hasPkAddMinMaxInsts() const
Definition GCNSubtarget.h:1605
bool HasScalarStores
Definition GCNSubtarget.h:130
bool HasDPALU_DPP
Definition GCNSubtarget.h:139
bool hasDLInsts() const
Definition GCNSubtarget.h:835
bool hasExtendedImageInsts() const
Definition GCNSubtarget.h:1172
bool GFX10_BEncoding
Definition GCNSubtarget.h:150
bool hasVmemWriteVgprInOrder() const
Definition GCNSubtarget.h:1430
bool hasBCNT(unsigned Size) const
Definition GCNSubtarget.h:469
unsigned getSNopBits() const
Definition GCNSubtarget.h:1897
bool HasTransposeLoadF4F6Insts
Definition GCNSubtarget.h:250
bool HasMADIntraFwdBug
Definition GCNSubtarget.h:273
bool hasMAIInsts() const
Definition GCNSubtarget.h:893
bool HasFlatAtomicFaddF32Inst
Definition GCNSubtarget.h:193
bool hasLDSLoadB96_B128() const
Returns true if the target supports global_load_lds_dwordx3/global_load_lds_dwordx4 or buffer_load_dw...
Definition GCNSubtarget.h:1416
bool has1024AddressableVGPRs() const
Definition GCNSubtarget.h:1474
bool supportsAgentScopeFineGrainedRemoteMemoryAtomics() const
Definition GCNSubtarget.h:984
bool hasFlatScratchInsts() const
Definition GCNSubtarget.h:701
bool HasFlatSegmentOffsetBug
Definition GCNSubtarget.h:267
bool hasMultiDwordFlatScratchAddressing() const
Definition GCNSubtarget.h:746
bool hasArchitectedSGPRs() const
Definition GCNSubtarget.h:1535
bool hasFmaakFmamkF64Insts() const
Definition GCNSubtarget.h:1166
bool hasTanhInsts() const
Definition GCNSubtarget.h:1468
bool hasHWFP64() const
Definition GCNSubtarget.h:427
bool hasScaleOffset() const
Definition GCNSubtarget.h:1227
bool hasDenormModeInst() const
Definition GCNSubtarget.h:587
bool hasPrivEnabledTrap2NopBug() const
Definition GCNSubtarget.h:1196
bool HasPkFmacF16Inst
Definition GCNSubtarget.h:178
bool hasMFMAInlineLiteralBug() const
Definition GCNSubtarget.h:1256
bool NegativeScratchOffsetBug
Definition GCNSubtarget.h:121
bool hasCvtScaleForwardingHazard() const
Definition GCNSubtarget.h:1362
unsigned getTotalNumVGPRs() const
Definition GCNSubtarget.h:1718
unsigned getMinWavesPerEU() const override
Definition GCNSubtarget.h:1832
bool hasSMemTimeInst() const
Definition GCNSubtarget.h:1012
bool HasVGPRIndexMode
Definition GCNSubtarget.h:128
bool HasMAIInsts
Definition GCNSubtarget.h:166
bool hasUnalignedDSAccessEnabled() const
Definition GCNSubtarget.h:645
bool hasTensorCvtLutInsts() const
Definition GCNSubtarget.h:1470
bool hasNegativeScratchOffsetBug() const
Definition GCNSubtarget.h:1250
const SIInstrInfo * getInstrInfo() const override
Definition GCNSubtarget.h:323
bool hasSWakeupBarrier() const
Definition GCNSubtarget.h:1617
unsigned getMaxWorkGroupsPerCU(unsigned FlatWorkGroupSize) const override
Definition GCNSubtarget.h:1809
bool AutoWaitcntBeforeBarrier
Definition GCNSubtarget.h:76
bool HasVscnt
Definition GCNSubtarget.h:215
bool hasDot1Insts() const
Definition GCNSubtarget.h:841
bool hasDot3Insts() const
Definition GCNSubtarget.h:849
unsigned getConstantBusLimit(unsigned Opcode) const
bool hasMADIntraFwdBug() const
Definition GCNSubtarget.h:1192
bool hasVALUMaskWriteHazard() const
Definition GCNSubtarget.h:1372
bool hasCondSubInsts() const
Definition GCNSubtarget.h:1630
TrapHandlerAbi
Definition GCNSubtarget.h:40
@ NONE
Definition GCNSubtarget.h:41
@ AMDHSA
Definition GCNSubtarget.h:42
const InlineAsmLowering * getInlineAsmLowering() const override
Definition GCNSubtarget.h:345
bool HasDot3Insts
Definition GCNSubtarget.h:155
bool hasAutoWaitcntBeforeBarrier() const
Definition GCNSubtarget.h:623
bool hasNSAClauseBug() const
Definition GCNSubtarget.h:1340
bool EnableSRAMECC
Definition GCNSubtarget.h:212
bool HasSDWAOmod
Definition GCNSubtarget.h:132
bool hasAtomicFaddRtnInsts() const
Definition GCNSubtarget.h:947
unsigned getTotalNumSGPRs() const
Definition GCNSubtarget.h:1645
bool hasGFX1250Insts() const
Definition GCNSubtarget.h:1581
bool HasLdsBarrierArriveAtomic
Definition GCNSubtarget.h:290
const InstrItineraryData * getInstrItineraryData() const override
Definition GCNSubtarget.h:365
bool HasDPP
Definition GCNSubtarget.h:137
bool hasSafeSmemPrefetch() const
Definition GCNSubtarget.h:1044
void adjustSchedDependency(SUnit *Def, int DefOpIdx, SUnit *Use, int UseOpIdx, SDep &Dep, const TargetSchedModel *SchedModel) const override
void overridePostRASchedPolicy(MachineSchedPolicy &Policy, const SchedRegion &Region) const override
bool HasShaderCyclesHiLoRegisters
Definition GCNSubtarget.h:220
bool EnableLoadStoreOpt
Definition GCNSubtarget.h:95
unsigned getMaxLocalMemSizeWithWaveCount(unsigned WaveCount, const Function &) const
Return the amount of LDS that can be used that will not restrict the occupancy lower than WaveCount.
bool hasPkMovB32() const
Definition GCNSubtarget.h:1158
bool needsAlignedVGPRs() const
Return if operations acting on VGPR tuples require even alignment.
Definition GCNSubtarget.h:1381
bool hasGFX10_3Insts() const
Definition GCNSubtarget.h:1216
Align getStackAlignment() const
Definition GCNSubtarget.h:1059
bool privateMemoryResourceIsRangeChecked() const
Definition GCNSubtarget.h:613
bool hasScalarSubwordLoads() const
Definition GCNSubtarget.h:515
bool hasDot11Insts() const
Definition GCNSubtarget.h:881
bool HasTanhInsts
Definition GCNSubtarget.h:248
bool enableFlatScratch() const
Definition GCNSubtarget.h:718
bool KernargPreload
Definition GCNSubtarget.h:83
bool hasDsAtomicAsyncBarrierArriveB64PipeBug() const
Definition GCNSubtarget.h:1869
bool HasGWS
Definition GCNSubtarget.h:233
bool hasMin3Max3PKF16() const
Definition GCNSubtarget.h:1466
bool DynamicVGPR
Definition GCNSubtarget.h:205
bool EnablePreciseMemory
Definition GCNSubtarget.h:92
bool hasUnalignedBufferAccess() const
Definition GCNSubtarget.h:633
bool GFX10_3Insts
Definition GCNSubtarget.h:117
bool HasGetWaveIdInst
Definition GCNSubtarget.h:217
bool hasR128A16() const
Definition GCNSubtarget.h:1176
bool hasCvtPkNormVOP3Insts() const
Definition GCNSubtarget.h:915
bool hasOffset3fBug() const
Definition GCNSubtarget.h:1184
bool hasDwordx3LoadStores() const
Definition GCNSubtarget.h:1265
bool hasPrngInst() const
Definition GCNSubtarget.h:1498
bool hasSignedScratchOffsets() const
Definition GCNSubtarget.h:1579
bool GFX9Insts
Definition GCNSubtarget.h:109
bool HasPrivEnabledTrap2NopBug
Definition GCNSubtarget.h:271
bool hasGlobalAddTidInsts() const
Definition GCNSubtarget.h:723
bool hasSGPRInitBug() const
Definition GCNSubtarget.h:1242
bool hasFlatScrRegister() const
Definition GCNSubtarget.h:689
bool hasFmaMixBF16Insts() const
Definition GCNSubtarget.h:493
bool hasGetPCZeroExtension() const
Definition GCNSubtarget.h:1622
bool hasPermLane64() const
Definition GCNSubtarget.h:1129
bool HasBVHDualAndBVH8Insts
Definition GCNSubtarget.h:252
bool requiresNopBeforeDeallocVGPRs() const
Definition GCNSubtarget.h:1850
unsigned getMinNumVGPRs(unsigned WavesPerEU, unsigned DynamicVGPRBlockSize) const
Definition GCNSubtarget.h:1735
bool hasVMemToLDSLoad() const
Definition GCNSubtarget.h:1420
bool supportsGetDoorbellID() const
Definition GCNSubtarget.h:521
bool supportsWave32() const
Definition GCNSubtarget.h:1783
bool FlatGVSMode
Definition GCNSubtarget.h:227
bool HasNSAClauseBug
Definition GCNSubtarget.h:265
bool hasVcmpxExecWARHazard() const
Definition GCNSubtarget.h:1306
bool isTgSplitEnabled() const
Definition GCNSubtarget.h:675
bool hasFlatAtomicFaddF32Inst() const
Definition GCNSubtarget.h:967
bool hasKernargPreload() const
Definition GCNSubtarget.h:1553
bool HasMin3Max3PKF16
Definition GCNSubtarget.h:282
bool FlatGlobalInsts
Definition GCNSubtarget.h:225
bool hasFP8Insts() const
Definition GCNSubtarget.h:897
unsigned getMaxNumAGPRs(const Function &F) const
Definition GCNSubtarget.h:1765
bool hasReadM0MovRelInterpHazard() const
Definition GCNSubtarget.h:1269
bool isDynamicVGPREnabled() const
Definition GCNSubtarget.h:1856
const SIRegisterInfo * getRegisterInfo() const override
Definition GCNSubtarget.h:335
bool ScalarizeGlobal
Definition GCNSubtarget.h:241
bool hasRequiredExportPriority() const
Definition GCNSubtarget.h:1428
bool hasDOTOpSelHazard() const
Definition GCNSubtarget.h:1329
bool hasLdsWaitVMSRC() const
Definition GCNSubtarget.h:1354
bool hasMSAALoadDstSelBug() const
Definition GCNSubtarget.h:1194
const TargetRegisterClass * getBoolRC() const
Definition GCNSubtarget.h:1803
bool HasPermlane16Swap
Definition GCNSubtarget.h:253
unsigned getBaseMaxNumVGPRs(const Function &F, std::pair< unsigned, unsigned > NumVGPRBounds) const
bool hasFmaakFmamkF32Insts() const
Definition GCNSubtarget.h:1162
bool hasClusters() const
Definition GCNSubtarget.h:1886
bool hasVscnt() const
Definition GCNSubtarget.h:1004
bool HasMinimum3Maximum3F32
Definition GCNSubtarget.h:280
bool hasMad64_32() const
Definition GCNSubtarget.h:811
InstructionSelector * getInstructionSelector() const override
Definition GCNSubtarget.h:349
unsigned getVGPREncodingGranule() const
Definition GCNSubtarget.h:1713
bool NegativeUnalignedScratchOffsetBug
Definition GCNSubtarget.h:122
bool hasHardClauses() const
Definition GCNSubtarget.h:1342
bool useDS128() const
Definition GCNSubtarget.h:597
bool hasExtendedWaitCounts() const
Definition GCNSubtarget.h:1434
bool HasImageInsts
Definition GCNSubtarget.h:142
bool hasBVHDualAndBVH8Insts() const
Definition GCNSubtarget.h:1500
bool hasMinimum3Maximum3PKF16() const
Definition GCNSubtarget.h:1476
bool hasLshlAddU64Inst() const
Definition GCNSubtarget.h:1224
bool hasLDSMisalignedBug() const
Definition GCNSubtarget.h:1298
bool HasPartialNSAEncoding
Definition GCNSubtarget.h:148
bool d16PreservesUnusedBits() const
Definition GCNSubtarget.h:762
bool hasFmacF64Inst() const
Definition GCNSubtarget.h:839
bool EnablePRTStrictNull
Definition GCNSubtarget.h:99
bool RequiresWaitsBeforeSystemScopeStores
Definition GCNSubtarget.h:301
bool hasXF32Insts() const
Definition GCNSubtarget.h:1443
bool hasInstPrefetch() const
Definition GCNSubtarget.h:1036
bool hasAddPC64Inst() const
Definition GCNSubtarget.h:1472
unsigned maxHardClauseLength() const
Definition GCNSubtarget.h:1496
bool hasAshrPkInsts() const
Definition GCNSubtarget.h:1456
bool isMesaGfxShader(const Function &F) const
Definition GCNSubtarget.h:807
bool hasVcmpxPermlaneHazard() const
Definition GCNSubtarget.h:1286
bool HasDLInsts
Definition GCNSubtarget.h:151
bool hasUserSGPRInit16Bug() const
Definition GCNSubtarget.h:1246
bool DynamicVGPRBlockSize32
Definition GCNSubtarget.h:206
bool hasExportInsts() const
Definition GCNSubtarget.h:735
bool hasDPP() const
Definition GCNSubtarget.h:1131
bool hasVINTERPEncoding() const
Definition GCNSubtarget.h:739
bool hasGloballyAddressableScratch() const
Definition GCNSubtarget.h:1368
const AMDGPURegisterBankInfo * getRegBankInfo() const override
Definition GCNSubtarget.h:357
bool hasAddSubU64Insts() const
Definition GCNSubtarget.h:1586
bool hasLegacyGeometry() const
Definition GCNSubtarget.h:1550
bool has64BitLiterals() const
Definition GCNSubtarget.h:1487
int LDSBankCount
Definition GCNSubtarget.h:66
bool FullRate64Ops
Definition GCNSubtarget.h:72
TrapHandlerAbi getTrapHandlerAbi() const
Definition GCNSubtarget.h:517
bool isCuModeEnabled() const
Definition GCNSubtarget.h:679
bool hasScalarAtomics() const
Definition GCNSubtarget.h:1118
const SIFrameLowering * getFrameLowering() const override
Definition GCNSubtarget.h:327
bool HasR128A16
Definition GCNSubtarget.h:144
bool hasUnalignedScratchAccess() const
Definition GCNSubtarget.h:649
bool zeroesHigh16BitsOfDest(unsigned Opcode) const
Returns if the result of this instruction with a 16-bit result returned in a 32-bit register implicit...
bool hasMinimum3Maximum3F16() const
Definition GCNSubtarget.h:1462
bool HasMinimum3Maximum3F16
Definition GCNSubtarget.h:281
bool hasSDWAOutModsVOPC() const
Definition GCNSubtarget.h:831
bool hasAtomicFMinFMaxF32GlobalInsts() const
Definition GCNSubtarget.h:923
bool HasAddSubU64Insts
Definition GCNSubtarget.h:285
bool HasFmacF64Inst
Definition GCNSubtarget.h:152
unsigned getBaseMaxNumSGPRs(const Function &F, std::pair< unsigned, unsigned > WavesPerEU, unsigned PreloadedSGPRs, unsigned ReservedNumSGPRs) const
bool hasLdsBarrierArriveAtomic() const
Definition GCNSubtarget.h:1491
bool hasGFX950Insts() const
Definition GCNSubtarget.h:1411
bool HasNoDataDepHazard
Definition GCNSubtarget.h:222
bool hasCvtNormInsts() const
Definition GCNSubtarget.h:911
bool HasVOPDInsts
Definition GCNSubtarget.h:274
bool HasDot7Insts
Definition GCNSubtarget.h:159
bool has45BitNumRecordsBufferResource() const
Definition GCNSubtarget.h:1907
bool Has64BitLiterals
Definition GCNSubtarget.h:245
const AMDGPU::IsaInfo::AMDGPUTargetID & getTargetID() const
Definition GCNSubtarget.h:361
unsigned getMaxNumPreloadedSGPRs() const
bool hasAtomicCSubNoRtnInsts() const
Definition GCNSubtarget.h:1563
bool HasSDWAOutModsVOPC
Definition GCNSubtarget.h:136
bool EnableCuMode
Definition GCNSubtarget.h:90
bool hasScalarFlatScratchInsts() const
Definition GCNSubtarget.h:714
GCNSubtarget & initializeSubtargetDependencies(const Triple &TT, StringRef GPU, StringRef FS)
unsigned Gen
Definition GCNSubtarget.h:64
bool has12DWordStoreHazard() const
Definition GCNSubtarget.h:1260
bool hasVALUPartialForwardingHazard() const
Definition GCNSubtarget.h:1356
bool dumpCode() const
Definition GCNSubtarget.h:573
bool hasNoDataDepHazard() const
Definition GCNSubtarget.h:1028
void overrideSchedPolicy(MachineSchedPolicy &Policy, const SchedRegion &Region) const override
bool HasWaitXcnt
Definition GCNSubtarget.h:216
bool HasMovrel
Definition GCNSubtarget.h:127
bool useVGPRBlockOpsForCSR() const
Definition GCNSubtarget.h:1366
bool HasTensorCvtLutInsts
Definition GCNSubtarget.h:249
std::pair< unsigned, unsigned > computeOccupancy(const Function &F, unsigned LDSSize=0, unsigned NumSGPRs=0, unsigned NumVGPRs=0) const
Subtarget's minimum/maximum occupancy, in number of waves per EU, that can be achieved when the only ...
bool hasUnalignedDSAccess() const
Definition GCNSubtarget.h:641
bool hasAddMinMaxInsts() const
Definition GCNSubtarget.h:1602
bool needsKernArgPreloadProlog() const
Definition GCNSubtarget.h:1626
bool hasRestrictedSOffset() const
Definition GCNSubtarget.h:1426
bool hasMin3Max3_16() const
Definition GCNSubtarget.h:485
bool hasIntClamp() const
Definition GCNSubtarget.h:415
bool hasGFX10_AEncoding() const
Definition GCNSubtarget.h:1208
bool hasFP8E5M3Insts() const
Definition GCNSubtarget.h:917
bool hasFlatSegmentOffsetBug() const
Definition GCNSubtarget.h:750
bool GFX10_AEncoding
Definition GCNSubtarget.h:149
unsigned getMaxNumVGPRs(unsigned WavesPerEU, unsigned DynamicVGPRBlockSize) const
Definition GCNSubtarget.h:1743
unsigned getVGPRAllocGranule(unsigned DynamicVGPRBlockSize) const
Definition GCNSubtarget.h:1708
bool MIMG_R128
Definition GCNSubtarget.h:106
bool hasEmulatedSystemScopeAtomics() const
Definition GCNSubtarget.h:990
bool hasMadU64U32NoCarry() const
Definition GCNSubtarget.h:1596
unsigned getSetRegWaitStates() const
Number of hazard wait states for s_setreg_b32/s_setreg_imm32_b32.
Definition GCNSubtarget.h:569
const SITargetLowering * getTargetLowering() const override
Definition GCNSubtarget.h:331
bool HasVcmpxPermlaneHazard
Definition GCNSubtarget.h:255
bool hasPackedFP32Ops() const
Definition GCNSubtarget.h:1153
bool SupportsXNACK
Definition GCNSubtarget.h:82
bool hasTransForwardingHazard() const
Definition GCNSubtarget.h:1322
bool hasDot6Insts() const
Definition GCNSubtarget.h:861
bool HasFmaMixInsts
Definition GCNSubtarget.h:125
bool BackOffBarrier
Definition GCNSubtarget.h:77
TrapID
Definition GCNSubtarget.h:45
@ LLVMAMDHSADebugTrap
Definition GCNSubtarget.h:47
@ LLVMAMDHSATrap
Definition GCNSubtarget.h:46
bool hasGFX940Insts() const
Definition GCNSubtarget.h:1407
bool HasScalarAtomics
Definition GCNSubtarget.h:131
bool hasFullRate64Ops() const
Definition GCNSubtarget.h:435
bool HasSafeCUPrefetch
Definition GCNSubtarget.h:261
bool EnableSIScheduler
Definition GCNSubtarget.h:97
bool hasScalarStores() const
Definition GCNSubtarget.h:1114
bool isTrapHandlerEnabled() const
Definition GCNSubtarget.h:667
bool enableMachineScheduler() const override
Definition GCNSubtarget.h:1061
bool hasLDSFPAtomicAddF64() const
Definition GCNSubtarget.h:1123
bool HasAtomicFlatPkAdd16Insts
Definition GCNSubtarget.h:184
bool hasFlatGlobalInsts() const
Definition GCNSubtarget.h:697
bool HasGloballyAddressableScratch
Definition GCNSubtarget.h:296
bool hasDX10ClampMode() const
Definition GCNSubtarget.h:1566
bool HasOffset3fBug
Definition GCNSubtarget.h:266
unsigned getNSAThreshold(const MachineFunction &MF) const
bool HasDot4Insts
Definition GCNSubtarget.h:156
bool HasDot9Insts
Definition GCNSubtarget.h:161
bool HasAtomicFMinFMaxF32GlobalInsts
Definition GCNSubtarget.h:179
bool HasDPPSrc1SGPR
Definition GCNSubtarget.h:140
bool getScalarizeGlobalBehavior() const
Definition GCNSubtarget.h:1072
bool hasPKF32InstsReplicatingLower32BitsOfScalarInput() const
Definition GCNSubtarget.h:1448
bool HasAtomicFMinFMaxF32FlatInsts
Definition GCNSubtarget.h:181
bool HasPseudoScalarTrans
Definition GCNSubtarget.h:243
bool hasReadM0LdsDmaHazard() const
Definition GCNSubtarget.h:1278
bool hasScalarSMulU64() const
Definition GCNSubtarget.h:800
bool HasPointSampleAccel
Definition GCNSubtarget.h:289
bool HasDot8Insts
Definition GCNSubtarget.h:160
unsigned getKnownHighZeroBitsForFrameIndex() const
Return the number of high bits known to be zero for a frame index.
Definition GCNSubtarget.h:390
bool hasScratchBaseForwardingHazard() const
Definition GCNSubtarget.h:1875
bool HasShaderCyclesRegister
Definition GCNSubtarget.h:219
bool FlatInstOffsets
Definition GCNSubtarget.h:224
bool hasLerpInst() const
Definition GCNSubtarget.h:905
bool hasIntMinMax64() const
Definition GCNSubtarget.h:1599
bool hasShaderCyclesHiLoRegisters() const
Definition GCNSubtarget.h:1020
bool hasSDWASdst() const
Definition GCNSubtarget.h:823
bool HasDefaultComponentBroadcast
Definition GCNSubtarget.h:198
bool HasNoSdstCMPX
Definition GCNSubtarget.h:214
bool hasScalarPackInsts() const
Definition GCNSubtarget.h:507
bool hasFFBL() const
Definition GCNSubtarget.h:473
bool hasNSAEncoding() const
Definition GCNSubtarget.h:1198
bool requiresDisjointEarlyClobberAndUndef() const override
Definition GCNSubtarget.h:1861
bool hasVALUReadSGPRHazard() const
Definition GCNSubtarget.h:1374
bool hasSMemRealTime() const
Definition GCNSubtarget.h:1094
bool EnableTgSplit
Definition GCNSubtarget.h:89
bool hasFlatAddressSpace() const
Definition GCNSubtarget.h:685
bool hasDPPBroadcasts() const
Definition GCNSubtarget.h:1135
bool HasFP8Insts
Definition GCNSubtarget.h:167
bool usePRTStrictNull() const
Definition GCNSubtarget.h:619
bool hasMovB64() const
Definition GCNSubtarget.h:1222
bool hasVmemPrefInsts() const
Definition GCNSubtarget.h:1042
unsigned getAddressableNumVGPRs(unsigned DynamicVGPRBlockSize) const
Definition GCNSubtarget.h:1729
bool HasFmaMixBF16Insts
Definition GCNSubtarget.h:126
bool hasCubeInsts() const
Definition GCNSubtarget.h:903
bool HalfRate64Ops
Definition GCNSubtarget.h:71
bool HasSafeSmemPrefetch
Definition GCNSubtarget.h:260
bool HasSMemTimeInst
Definition GCNSubtarget.h:218
bool HasFP8ConversionInsts
Definition GCNSubtarget.h:168
bool GFX8Insts
Definition GCNSubtarget.h:108
bool hasInstFwdPrefetchBug() const
Definition GCNSubtarget.h:1302
bool HasDot2Insts
Definition GCNSubtarget.h:154
bool hasAtomicFMinFMaxF64GlobalInsts() const
Definition GCNSubtarget.h:927
bool HasLerpInst
Definition GCNSubtarget.h:170
bool hasMed3_16() const
Definition GCNSubtarget.h:481
bool HasVMemToLDSLoad
Definition GCNSubtarget.h:207
unsigned getReservedNumSGPRs(const MachineFunction &MF) const
bool hasUnalignedScratchAccessEnabled() const
Definition GCNSubtarget.h:653
bool hasMovrel() const
Definition GCNSubtarget.h:1098
bool HasVOP3Literal
Definition GCNSubtarget.h:221
bool hasNullExportTarget() const
Return true if the target's EXP instruction supports the NULL export target.
Definition GCNSubtarget.h:1392
bool UnalignedScratchAccess
Definition GCNSubtarget.h:78
bool hasAtomicFlatPkAdd16Insts() const
Definition GCNSubtarget.h:941
bool HasPrngInst
Definition GCNSubtarget.h:251
bool HasImageGather4D16Bug
Definition GCNSubtarget.h:269
bool hasBFI() const
Definition GCNSubtarget.h:461
bool hasDot13Insts() const
Definition GCNSubtarget.h:889
bool ldsRequiresM0Init() const
Return if most LDS instructions have an m0 use that require m0 to be initialized.
Definition GCNSubtarget.h:772
bool HasSMEMtoVectorWriteHazard
Definition GCNSubtarget.h:257
bool HasAshrPkInsts
Definition GCNSubtarget.h:278
bool HasAtomicFaddNoRtnInsts
Definition GCNSubtarget.h:186
bool hasSMEMtoVectorWriteHazard() const
Definition GCNSubtarget.h:1294
bool useAA() const override
bool isWave32() const
Definition GCNSubtarget.h:1787
bool hasVGPRIndexMode() const
Definition GCNSubtarget.h:1102
bool HasGDS
Definition GCNSubtarget.h:232
bool HasAtomicBufferGlobalPkAddF16Insts
Definition GCNSubtarget.h:189
unsigned getOccupancyWithNumVGPRs(unsigned VGPRs, unsigned DynamicVGPRBlockSize) const
Return the maximum number of waves per SIMD for kernels using VGPRs VGPRs.
bool hasUnalignedBufferAccessEnabled() const
Definition GCNSubtarget.h:637
bool isWaveSizeKnown() const
Returns if the wavesize of this subtarget is known reliable.
Definition GCNSubtarget.h:1798
unsigned getMaxPrivateElementSize(bool ForBufferRSrc=false) const
Definition GCNSubtarget.h:398
unsigned getMinFlatWorkGroupSize() const override
Definition GCNSubtarget.h:1814
bool HasAtomicCSubNoRtnInsts
Definition GCNSubtarget.h:190
bool hasImageInsts() const
Definition GCNSubtarget.h:1168
bool HasAtomicDsPkAdd16Insts
Definition GCNSubtarget.h:183
bool hasImageGather4D16Bug() const
Definition GCNSubtarget.h:1190
bool FMA
Definition GCNSubtarget.h:105
bool HasRequiredExportPriority
Definition GCNSubtarget.h:276
bool hasFMA() const
Definition GCNSubtarget.h:499
bool hasDot10Insts() const
Definition GCNSubtarget.h:877
bool hasSPackHL() const
Return true if the target has the S_PACK_HL_B32_B16 instruction.
Definition GCNSubtarget.h:1384
bool hasVMEMtoScalarWriteHazard() const
Definition GCNSubtarget.h:1290
bool hasCvtFP8VOP1Bug() const
Definition GCNSubtarget.h:1559
bool supportsMinMaxDenormModes() const
Definition GCNSubtarget.h:582
bool supportsWave64() const
Definition GCNSubtarget.h:1785
bool RelaxedBufferOOBMode
Definition GCNSubtarget.h:80
bool HasAtomicBufferPkAddBF16Inst
Definition GCNSubtarget.h:192
bool hasNegativeUnalignedScratchOffsetBug() const
Definition GCNSubtarget.h:1252
bool hasFFBH() const
Definition GCNSubtarget.h:477
bool hasFormattedMUBUFInsts() const
Definition GCNSubtarget.h:733
bool HasQsadInsts
Definition GCNSubtarget.h:172
bool hasFlatScratchSVSMode() const
Definition GCNSubtarget.h:712
bool supportsWGP() const
Definition GCNSubtarget.h:409
bool hasG16() const
Definition GCNSubtarget.h:1182
bool GFX90AInsts
Definition GCNSubtarget.h:110
bool HasMSAALoadDstSelBug
Definition GCNSubtarget.h:270
bool HasPackedFP32Ops
Definition GCNSubtarget.h:141
bool hasHalfRate64Ops() const
Definition GCNSubtarget.h:431
bool hasAtomicFaddInsts() const
Definition GCNSubtarget.h:943
bool HasAtomicBufferGlobalPkAddF16NoRtnInsts
Definition GCNSubtarget.h:188
bool HasMinimum3Maximum3PKF16
Definition GCNSubtarget.h:283
bool hasSubClampInsts() const
Definition GCNSubtarget.h:1632
bool hasPermlane16Swap() const
Definition GCNSubtarget.h:1454
bool hasNSAtoVMEMBug() const
Definition GCNSubtarget.h:1336
bool requiresWaitXCntForSingleAccessInstructions() const
Definition GCNSubtarget.h:1891
bool RequiresAlignVGPR
Definition GCNSubtarget.h:208
bool HasArchitectedFlatScratch
Definition GCNSubtarget.h:229
bool CIInsts
Definition GCNSubtarget.h:107
unsigned getNSAMaxSize(bool HasSampler=false) const
Definition GCNSubtarget.h:1204
bool hasAtomicBufferGlobalPkAddF16NoRtnInsts() const
Definition GCNSubtarget.h:951
bool hasSadInsts() const
Definition GCNSubtarget.h:907
bool hasMIMG_R128() const
Definition GCNSubtarget.h:423
unsigned getOccupancyWithNumSGPRs(unsigned SGPRs) const
Return the maximum number of waves per SIMD for kernels using SGPRs SGPRs.
bool HasCvtNormInsts
Definition GCNSubtarget.h:173
bool hasVOP3DPP() const
Definition GCNSubtarget.h:1350
bool hasAtomicBufferPkAddBF16Inst() const
Definition GCNSubtarget.h:963
bool HasAgentScopeFineGrainedRemoteMemoryAtomics
Definition GCNSubtarget.h:196
unsigned getMaxFlatWorkGroupSize() const override
Definition GCNSubtarget.h:1819
bool hasDPP8() const
Definition GCNSubtarget.h:1143
bool hasDot5Insts() const
Definition GCNSubtarget.h:857
unsigned getMaxNumUserSGPRs() const
Definition GCNSubtarget.h:1090
bool hasTransposeLoadF4F6Insts() const
Definition GCNSubtarget.h:1480
bool hasMadU32Inst() const
Definition GCNSubtarget.h:1589
bool hasAtomicFaddNoRtnInsts() const
Definition GCNSubtarget.h:949
unsigned MaxHardClauseLength
The maximum number of instructions that may be placed within an S_CLAUSE, which is one greater than t...
Definition GCNSubtarget.h:203
bool hasPermLaneX16() const
Definition GCNSubtarget.h:1126
bool hasFlatScratchSVSSwizzleBug() const
Definition GCNSubtarget.h:1398
bool hasFlatBufferGlobalAtomicFaddF64Inst() const
Definition GCNSubtarget.h:971
bool HasEmulatedSystemScopeAtomics
Definition GCNSubtarget.h:197
bool hasNoF16PseudoScalarTransInlineConstants() const
Definition GCNSubtarget.h:1438
bool hasIEEEMode() const
Definition GCNSubtarget.h:1569
bool hasScalarDwordx3Loads() const
Definition GCNSubtarget.h:1112
bool hasVDecCoExecHazard() const
Definition GCNSubtarget.h:1332
bool FastDenormalF32
Definition GCNSubtarget.h:70
bool hasSignedGVSOffset() const
Definition GCNSubtarget.h:1232
bool hasCvtPkNormVOP2Insts() const
Definition GCNSubtarget.h:913
bool HasImageStoreD16Bug
Definition GCNSubtarget.h:268
bool UnalignedAccessMode
Definition GCNSubtarget.h:79
bool hasLDSFPAtomicAddF32() const
Definition GCNSubtarget.h:1122
unsigned getWavesPerEUForWorkGroup(unsigned FlatWorkGroupSize) const override
Definition GCNSubtarget.h:1826
bool HasLshlAddU64Inst
Definition GCNSubtarget.h:284
bool EnableDS128
Definition GCNSubtarget.h:98
bool HasApertureRegs
Definition GCNSubtarget.h:81
bool hasBFM() const
Definition GCNSubtarget.h:465
bool haveRoundOpsF64() const
Have v_trunc_f64, v_ceil_f64, v_rndne_f64.
Definition GCNSubtarget.h:607
bool hasDelayAlu() const
Return true if the target has the S_DELAY_ALU instruction.
Definition GCNSubtarget.h:1401
bool HasNSAtoVMEMBug
Definition GCNSubtarget.h:264
bool GFX950Insts
Definition GCNSubtarget.h:112
bool hasReadM0SendMsgHazard() const
Definition GCNSubtarget.h:1273
bool HasA16
Definition GCNSubtarget.h:145
bool AssemblerPermissiveWavesize
Definition GCNSubtarget.h:101
bool hasDot8Insts() const
Definition GCNSubtarget.h:869
bool hasVectorMulU64() const
Definition GCNSubtarget.h:1592
bool hasScalarMulHiInsts() const
Definition GCNSubtarget.h:511
bool hasSCmpK() const
Definition GCNSubtarget.h:1049
bool HasFP8E5M3Insts
Definition GCNSubtarget.h:176
bool hasPseudoScalarTrans() const
Definition GCNSubtarget.h:1424
const LegalizerInfo * getLegalizerInfo() const override
Definition GCNSubtarget.h:353
bool requiresWaitIdleBeforeGetReg() const
Definition GCNSubtarget.h:1854
bool HasSDWASdst
Definition GCNSubtarget.h:134
bool hasPointSampleAccel() const
Definition GCNSubtarget.h:1489
bool hasDot12Insts() const
Definition GCNSubtarget.h:885
bool hasDS96AndDS128() const
Definition GCNSubtarget.h:602
bool hasGWS() const
Definition GCNSubtarget.h:1541
bool HasCvtPkNormVOP3Insts
Definition GCNSubtarget.h:175
bool HasAtomicFMinFMaxF64GlobalInsts
Definition GCNSubtarget.h:180
bool HasBitOp3Insts
Definition GCNSubtarget.h:247
bool hasReadM0LdsDirectHazard() const
Definition GCNSubtarget.h:1282
bool useFlatForGlobal() const
Definition GCNSubtarget.h:591
bool EnableFlatScratch
Definition GCNSubtarget.h:230
static bool hasHalfRate64Ops(const TargetSubtargetInfo &STI)
bool hasVOPDInsts() const
Definition GCNSubtarget.h:1396
bool hasGFX10_BEncoding() const
Definition GCNSubtarget.h:1212
Generation getGeneration() const
Definition GCNSubtarget.h:371
bool GFX7GFX8GFX9Insts
Definition GCNSubtarget.h:118
GCNSubtarget(const Triple &TT, StringRef GPU, StringRef FS, const GCNTargetMachine &TM)
unsigned getMaxNumSGPRs(unsigned WavesPerEU, bool Addressable) const
Definition GCNSubtarget.h:1662
bool hasVOP3Literal() const
Definition GCNSubtarget.h:1024
bool HasDot10Insts
Definition GCNSubtarget.h:162
bool hasAtomicBufferGlobalPkAddF16Insts() const
Definition GCNSubtarget.h:955
std::pair< unsigned, unsigned > getMaxNumVectorRegs(const Function &F) const
Return a pair of maximum numbers of VGPRs and AGPRs that meet the number of waves per execution unit ...
bool HasSDWAMac
Definition GCNSubtarget.h:135
bool hasNoSdstCMPX() const
Definition GCNSubtarget.h:1000
bool HasDot12Insts
Definition GCNSubtarget.h:164
bool isXNACKEnabled() const
Definition GCNSubtarget.h:671
bool hasScalarAddSub64() const
Definition GCNSubtarget.h:798
bool hasSplitBarriers() const
Definition GCNSubtarget.h:1556
bool hasUnpackedD16VMem() const
Definition GCNSubtarget.h:802
bool enableEarlyIfConversion() const override
Definition GCNSubtarget.h:1078
bool hasSMRDReadVALUDefHazard() const
A read of an SGPR by SMRD instruction requires 4 wait states when the SGPR was written by a VALU inst...
Definition GCNSubtarget.h:554
bool hasSGetShaderCyclesInst() const
Definition GCNSubtarget.h:1611
bool hasRFEHazards() const
Definition GCNSubtarget.h:564
bool hasVMEMReadSGPRVALUDefHazard() const
A read of an SGPR by a VMEM instruction requires 5 wait states when the SGPR was written by a VALU In...
Definition GCNSubtarget.h:560
bool FlatForGlobal
Definition GCNSubtarget.h:75
bool hasFlatScratchSTMode() const
Definition GCNSubtarget.h:708
unsigned getBaseReservedNumSGPRs(const bool HasFlatScratch) const
bool hasGWSSemaReleaseAll() const
Definition GCNSubtarget.h:786
bool hasDPALU_DPP() const
Definition GCNSubtarget.h:1147
bool enableSIScheduler() const
Definition GCNSubtarget.h:1234
bool hasAtomicGlobalPkAddBF16Inst() const
Definition GCNSubtarget.h:959
bool FlatScratchInsts
Definition GCNSubtarget.h:226
bool hasAddr64() const
Definition GCNSubtarget.h:439
bool HasVMEMtoScalarWriteHazard
Definition GCNSubtarget.h:256
bool HasAddMinMaxInsts
Definition GCNSubtarget.h:287
bool SGPRInitBug
Definition GCNSubtarget.h:119
bool HasAtomicGlobalPkAddBF16Inst
Definition GCNSubtarget.h:191
bool hasUnalignedAccessMode() const
Definition GCNSubtarget.h:657
bool FP64
Definition GCNSubtarget.h:104
unsigned getAddressableNumSGPRs() const
Definition GCNSubtarget.h:1650
bool HasDot1Insts
Definition GCNSubtarget.h:153
bool hasReadVCCZBug() const
Extra wait hazard is needed in some cases before s_cbranch_vccnz/s_cbranch_vccz.
Definition GCNSubtarget.h:543
bool HasAtomicFaddRtnInsts
Definition GCNSubtarget.h:185
bool isWave64() const
Definition GCNSubtarget.h:1791
bool HasRestrictedSOffset
Definition GCNSubtarget.h:244
unsigned getDynamicVGPRBlockSize() const
Definition GCNSubtarget.h:1857
bool RequiresCOV6
Definition GCNSubtarget.h:294
bool HasArchitectedSGPRs
Definition GCNSubtarget.h:231
bool TrapHandler
Definition GCNSubtarget.h:91
bool hasFmaMixInsts() const
Definition GCNSubtarget.h:489
bool HasVALUTransUseHazard
Definition GCNSubtarget.h:275
bool hasCARRY() const
Definition GCNSubtarget.h:495
bool hasQsadInsts() const
Definition GCNSubtarget.h:909
bool HasSMemRealTime
Definition GCNSubtarget.h:123
bool hasPackedTID() const
Definition GCNSubtarget.h:1403
bool setRegModeNeedsVNOPs() const
Definition GCNSubtarget.h:1376
bool HasVcmpxExecWARHazard
Definition GCNSubtarget.h:262
bool HasNSAEncoding
Definition GCNSubtarget.h:147
bool hasFP64() const
Definition GCNSubtarget.h:419
bool hasAddNoCarry() const
Definition GCNSubtarget.h:794
bool ScalarFlatScratchInsts
Definition GCNSubtarget.h:228
bool requiresWaitsBeforeSystemScopeStores() const
Definition GCNSubtarget.h:1911
bool hasVALUTransUseHazard() const
Definition GCNSubtarget.h:1360
bool HasDot5Insts
Definition GCNSubtarget.h:157
bool hasShaderCyclesRegister() const
Definition GCNSubtarget.h:1016
bool HasCvtFP8Vop1Bug
Definition GCNSubtarget.h:177
bool HasMFMAInlineLiteralBug
Definition GCNSubtarget.h:237
bool HasIntClamp
Definition GCNSubtarget.h:124
bool HasVmemWriteVgprInOrder
Definition GCNSubtarget.h:277
bool UnalignedBufferAccess
Definition GCNSubtarget.h:238
bool HasUnpackedD16VMem
Definition GCNSubtarget.h:235
bool hasSALUFloatInsts() const
Definition GCNSubtarget.h:1422
bool EnableUnsafeDSOffsetFolding
Definition GCNSubtarget.h:96
bool hasFractBug() const
Definition GCNSubtarget.h:453
bool isPreciseMemoryEnabled() const
Definition GCNSubtarget.h:683
bool hasDPPSrc1SGPR() const
Definition GCNSubtarget.h:1151
bool hasGDS() const
Definition GCNSubtarget.h:1538
unsigned getMaxWaveScratchSize() const
Definition GCNSubtarget.h:375
bool GFX12Insts
Definition GCNSubtarget.h:115
bool HasDefaultComponentZero
Definition GCNSubtarget.h:195
bool HasMemoryAtomicFaddF32DenormalSupport
Definition GCNSubtarget.h:187
bool HasPkAddMinMaxInsts
Definition GCNSubtarget.h:288
bool hasMTBUFInsts() const
Definition GCNSubtarget.h:731
bool hasDot4Insts() const
Definition GCNSubtarget.h:853
bool HasSWakeupBarrier
Definition GCNSubtarget.h:292
bool FeatureDisable
Definition GCNSubtarget.h:304
bool GFX1250Insts
Definition GCNSubtarget.h:116
bool flatScratchIsArchitected() const
Definition GCNSubtarget.h:1532
bool hasPartialNSAEncoding() const
Definition GCNSubtarget.h:1202
bool HasInstFwdPrefetchBug
Definition GCNSubtarget.h:258
bool hasWaitXCnt() const
Definition GCNSubtarget.h:1484
void checkSubtargetFeatures(const Function &F) const
Diagnose inconsistent subtarget features before attempting to codegen function F.
bool HasPermlane32Swap
Definition GCNSubtarget.h:254
bool Has1024AddressableVGPRs
Definition GCNSubtarget.h:246
bool hasSetPrioIncWgInst() const
Definition GCNSubtarget.h:1614
const SelectionDAGTargetInfo * getSelectionDAGInfo() const override
bool FlatAddressSpace
Definition GCNSubtarget.h:223
bool hasDot9Insts() const
Definition GCNSubtarget.h:873
bool HasPackedTID
Definition GCNSubtarget.h:240
bool hasVOPD3() const
Definition GCNSubtarget.h:1583
bool UseBlockVGPROpsForCSR
Definition GCNSubtarget.h:295
bool hasAtomicCSub() const
Definition GCNSubtarget.h:727
AMDGPU::IsaInfo::AMDGPUTargetID TargetID
Definition GCNSubtarget.h:63
bool hasDefaultComponentBroadcast() const
Definition GCNSubtarget.h:996
bool requiresCodeObjectV6() const
Definition GCNSubtarget.h:1364
bool SupportsSRAMECC
Definition GCNSubtarget.h:204
const CallLowering * getCallLowering() const override
Definition GCNSubtarget.h:341
bool hasBFE() const
Definition GCNSubtarget.h:457
bool hasLdsDirect() const
Definition GCNSubtarget.h:1352
bool hasGWSAutoReplay() const
Definition GCNSubtarget.h:781
bool HasFlatBufferGlobalAtomicFaddF64Inst
Definition GCNSubtarget.h:194
static unsigned getNumUserSGPRForField(UserSGPRID ID)
Definition GCNSubtarget.h:1954
bool hasQueuePtr() const
Definition GCNSubtarget.h:1924
bool hasKernargSegmentPtr() const
Definition GCNSubtarget.h:1926
void allocKernargPreloadSGPRs(unsigned NumSGPRs)
bool hasDispatchID() const
Definition GCNSubtarget.h:1928
UserSGPRID
Definition GCNSubtarget.h:1942
@ ImplicitBufferPtrID
Definition GCNSubtarget.h:1943
@ DispatchIdID
Definition GCNSubtarget.h:1948
@ QueuePtrID
Definition GCNSubtarget.h:1946
@ DispatchPtrID
Definition GCNSubtarget.h:1945
@ FlatScratchInitID
Definition GCNSubtarget.h:1949
@ PrivateSegmentBufferID
Definition GCNSubtarget.h:1944
@ PrivateSegmentSizeID
Definition GCNSubtarget.h:1950
@ KernargSegmentPtrID
Definition GCNSubtarget.h:1947
bool hasPrivateSegmentBuffer() const
Definition GCNSubtarget.h:1920
unsigned getNumFreeUserSGPRs()
bool hasImplicitBufferPtr() const
Definition GCNSubtarget.h:1918
unsigned getNumKernargPreloadSGPRs() const
Definition GCNSubtarget.h:1934
bool hasPrivateSegmentSize() const
Definition GCNSubtarget.h:1932
unsigned getNumUsedUserSGPRs() const
Definition GCNSubtarget.h:1936
bool hasDispatchPtr() const
Definition GCNSubtarget.h:1922
GCNUserSGPRUsageInfo(const Function &F, const GCNSubtarget &ST)
bool hasFlatScratchInit() const
Definition GCNSubtarget.h:1930
Itinerary data supplied by a subtarget to be used by a target.
const TargetRegisterClass * getBoolRC() const
Scheduling unit. This is a node in the scheduling DAG.
Targets can subclass this to parameterize the SelectionDAG lowering and instruction selection process...
StringRef - Represent a constant reference to a string, i.e.
Provide an instruction scheduling machine model to CodeGen passes.
TargetSubtargetInfo - Generic base class for all target subtargets.
Triple - Helper class for working with autoconf configuration names.
A Use represents the edge between a Value definition and its users.
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
unsigned getVGPREncodingGranule(const MCSubtargetInfo *STI, std::optional< bool > EnableWavefrontSize32)
unsigned getTotalNumVGPRs(const MCSubtargetInfo *STI)
unsigned getWavesPerEUForWorkGroup(const MCSubtargetInfo *STI, unsigned FlatWorkGroupSize)
unsigned getMaxWorkGroupsPerCU(const MCSubtargetInfo *STI, unsigned FlatWorkGroupSize)
unsigned getMaxFlatWorkGroupSize(const MCSubtargetInfo *STI)
unsigned getSGPREncodingGranule(const MCSubtargetInfo *STI)
unsigned getAddressableNumSGPRs(const MCSubtargetInfo *STI)
unsigned getMinNumSGPRs(const MCSubtargetInfo *STI, unsigned WavesPerEU)
unsigned getMinFlatWorkGroupSize(const MCSubtargetInfo *STI)
unsigned getVGPRAllocGranule(const MCSubtargetInfo *STI, unsigned DynamicVGPRBlockSize, std::optional< bool > EnableWavefrontSize32)
unsigned getMaxNumSGPRs(const MCSubtargetInfo *STI, unsigned WavesPerEU, bool Addressable)
unsigned getMinWavesPerEU(const MCSubtargetInfo *STI)
unsigned getMaxNumVGPRs(const MCSubtargetInfo *STI, unsigned WavesPerEU, unsigned DynamicVGPRBlockSize)
unsigned getSGPRAllocGranule(const MCSubtargetInfo *STI)
unsigned getMinNumVGPRs(const MCSubtargetInfo *STI, unsigned WavesPerEU, unsigned DynamicVGPRBlockSize)
unsigned getAddressableNumArchVGPRs(const MCSubtargetInfo *STI)
unsigned getTotalNumSGPRs(const MCSubtargetInfo *STI)
unsigned getAddressableNumVGPRs(const MCSubtargetInfo *STI, unsigned DynamicVGPRBlockSize)
LLVM_READNONE constexpr bool isShader(CallingConv::ID CC)
unsigned getMaxNumUserSGPRs(const MCSubtargetInfo &STI)
unsigned getNSAMaxSize(const MCSubtargetInfo &STI, bool HasSampler)
unsigned ID
LLVM IR allows to use arbitrary numbers as calling convention identifiers.
This is an optimization pass for GlobalISel generic memory operations.
int countl_zero(T Val)
Count number of 0's from the most significant bit to the least stopping at the first 1.
This struct is a compact representation of a valid (non-zero power of two) alignment.
Define a generic scheduling policy for targets that don't provide their own MachineSchedStrategy.
A region of an MBB for scheduling.