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
292
296
298
301
302
304
305private:
309
310public:
314
317
318
319
321
323 return &InstrInfo;
324 }
325
327 return &FrameLowering;
328 }
329
331 return &TLInfo;
332 }
333
335 return &InstrInfo.getRegisterInfo();
336 }
337
339
341 return CallLoweringInfo.get();
342 }
343
345 return InlineAsmLoweringInfo.get();
346 }
347
349 return InstSelector.get();
350 }
351
353 return Legalizer.get();
354 }
355
357 return RegBankInfo.get();
358 }
359
363
367
369
373
375
377
378 return (64 * 4) * ((1 << 18) - 1);
379 }
381
382 return (64 * 4) * ((1 << 15) - 1);
383 }
384
385 return (256 * 4) * ((1 << 13) - 1);
386 }
387
388
392
396
400
402
403
404
405
407
413
417
421
425
429
433
437
441
445
446
447
451
455
459
463
467
471
475
479
483
487
491
493
497
501
505
509
513
515
519
524
525
526
530
534
535
539
540
541
545
546
550
551
552
556
557
558
562
566
567
571
575
576
577
580
584
585
589
593
594
595
599
600
604
605
609
610
611
615
616
617
621
625
626
627
631
635
639
643
647
651
655
659
661
665
669
671 return TargetID.isXnackOnOrAny();
672 }
673
677
681
683
687
691
695
699
703
704
705
706
710
712
716
721
725
729
731
733
737
739
740
744
748
752
756
760
764
768
769
770
774
775
776
777
778
779
783
784
788
789
790
791
792
796
798
800
804
805
809
813
817
821
825
829
833
837
839
843
847
851
855
859
863
867
871
875
879
883
887
891
895
899
901
903
905
907
909
911
913
915
917
921
925
929
933
937
939
941
945
947
949
953
957
961
965
967
968
969
973
974
975
979
980
981
982
986
987
988
992
994
998
1002
1006
1010
1014
1018
1022
1026
1030
1034
1038
1040
1042
1044
1046
1047
1049
1050
1051
1052
1053
1054
1055
1056
1057
1059
1063
1064 bool useAA() const override;
1065
1069
1072
1073
1075
1076
1080
1083
1086
1088
1092
1096
1100
1104
1106
1110
1112
1116
1120
1123
1124
1126
1127
1129
1133
1137
1141
1145
1149
1151
1155
1156
1160
1164
1166
1170
1174
1178
1180
1182
1186
1188
1190
1192
1194
1196
1198
1200
1202
1206
1210
1214
1218
1220
1222
1224
1225
1227
1229
1230
1232
1236
1240
1244
1248
1250
1254
1258
1262
1263
1267
1271
1276
1280
1284
1288
1292
1296
1300
1304
1308
1312
1313
1314
1318
1319
1320
1322
1323
1324
1326
1327
1329
1330
1334
1338
1340
1342
1344
1348
1350
1352
1354
1358
1360
1362
1364
1366
1370
1372
1374
1378
1379
1381
1382
1384
1385
1386
1388
1389
1390
1392
1394
1396
1398
1399
1401
1403
1404
1405
1407
1408
1409
1411
1412
1413
1414
1418
1420
1422
1424
1426
1428
1430
1431
1432
1434
1435
1436
1440
1441
1443
1444
1445
1446
1450
1452
1456
1460
1464
1466
1468
1470
1472
1474
1478
1480
1481
1482
1484
1485
1487
1489
1491
1492
1493
1494
1496
1498
1500
1501
1502
1504
1505
1506
1508 unsigned DynamicVGPRBlockSize) const;
1509
1510
1511
1512
1513
1514
1515
1516
1517
1519 unsigned LDSSize = 0,
1520 unsigned NumSGPRs = 0,
1521 unsigned NumVGPRs = 0) const;
1522
1523
1524
1528
1529
1530
1532
1533
1535
1536
1538
1539
1541
1542
1543
1547
1548
1550
1551
1553
1554
1556
1557
1559
1560
1561
1563
1564
1566
1567
1569
1570
1572
1573
1575
1576
1577
1579
1581
1583
1584
1586
1587
1589
1590
1592
1593
1594
1596
1597
1599
1600
1602
1603
1605
1606
1608
1609
1611
1612
1614
1615
1616
1617
1619
1620
1621
1625
1627
1629
1630
1634
1635
1639
1640
1644
1645
1649
1650
1651
1655
1656
1657
1661
1662
1663
1664
1666
1668
1669
1671
1672
1674
1675
1676
1677
1679 std::pair<unsigned, unsigned> WavesPerEU,
1680 unsigned PreloadedSGPRs,
1681 unsigned ReservedNumSGPRs) const;
1682
1683
1684
1685
1686
1687
1688
1689
1690
1692
1693
1694
1695
1696
1697
1698
1699
1700
1702
1703
1707
1708
1712
1713
1717
1718
1719
1723
1724
1728
1729
1730
1732 unsigned DynamicVGPRBlockSize) const {
1734 DynamicVGPRBlockSize);
1735 }
1736
1737
1738
1740 unsigned DynamicVGPRBlockSize) const {
1742 DynamicVGPRBlockSize);
1743 }
1744
1745
1746
1747 unsigned
1749 std::pair<unsigned, unsigned> NumVGPRBounds) const;
1750
1751
1752
1753
1754
1755
1756
1757
1758
1760
1764
1765
1766
1768
1769
1770
1771
1772
1773
1774
1775
1776
1778
1780
1782
1786
1790
1791
1792
1793
1795 return hasFeature(AMDGPU::FeatureWavefrontSize32) ||
1796 hasFeature(AMDGPU::FeatureWavefrontSize64);
1797 }
1798
1802
1803
1804
1808
1809
1813
1814
1818
1819
1820
1821 unsigned
1825
1826
1827
1831
1835
1836
1837
1839
1840
1841
1843
1844
1845
1847
1848
1849
1851
1856
1858
1859
1860 return false;
1861 }
1862
1863
1864
1868
1869
1870
1874
1875
1876
1880
1881
1883
1884
1885
1886
1890
1891
1892
1895 return 7;
1897 return 4;
1898 return 3;
1899 }
1900
1901
1902
1906
1910};
1911
1913public:
1915
1917
1919
1921
1923
1925
1927
1929
1931
1933
1935
1937
1948
1949
1951 switch (ID) {
1953 return 2;
1955 return 4;
1957 return 2;
1959 return 2;
1961 return 2;
1963 return 2;
1965 return 2;
1967 return 1;
1968 }
1970 }
1971
1973
1974private:
1976
1977
1978
1979
1980 bool ImplicitBufferPtr = false;
1981
1982 bool PrivateSegmentBuffer = false;
1983
1984 bool DispatchPtr = false;
1985
1986 bool QueuePtr = false;
1987
1988 bool KernargSegmentPtr = false;
1989
1990 bool DispatchID = false;
1991
1992 bool FlatScratchInit = false;
1993
1994 bool PrivateSegmentSize = false;
1995
1996 unsigned NumKernargPreloadSGPRs = 0;
1997
1998 unsigned NumUsedUserSGPRs = 0;
1999};
2000
2001}
2002
2003#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:1039
bool hasMemoryAtomicFaddF32DenormalSupport() const
Definition GCNSubtarget.h:976
bool GFX10Insts
Definition GCNSubtarget.h:113
bool hasFlat() const
Definition GCNSubtarget.h:442
bool hasD16Images() const
Definition GCNSubtarget.h:765
bool hasMinimum3Maximum3F32() const
Definition GCNSubtarget.h:1457
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:938
bool hasSDWAOmod() const
Definition GCNSubtarget.h:814
bool hasFlatGVSMode() const
Definition GCNSubtarget.h:1228
bool HasLdsBranchVmemWARHazard
Definition GCNSubtarget.h:263
bool hasPermlane32Swap() const
Definition GCNSubtarget.h:1454
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:547
bool Has1_5xVGPRs
Definition GCNSubtarget.h:272
bool hasSwap() const
Definition GCNSubtarget.h:502
bool hasPkFmacF16Inst() const
Definition GCNSubtarget.h:918
bool HasClusters
Definition GCNSubtarget.h:299
bool HasAtomicFMinFMaxF64FlatInsts
Definition GCNSubtarget.h:182
bool hasPkMinMax3Insts() const
Definition GCNSubtarget.h:1607
bool hasDot2Insts() const
Definition GCNSubtarget.h:844
bool hasD16LoadStore() const
Definition GCNSubtarget.h:757
bool HasExtendedImageInsts
Definition GCNSubtarget.h:143
bool hasMergedShaders() const
Definition GCNSubtarget.h:1544
bool hasA16() const
Definition GCNSubtarget.h:1179
bool hasSDWAScalar() const
Definition GCNSubtarget.h:818
bool hasRrWGMode() const
Definition GCNSubtarget.h:1574
bool supportsBackOffBarrier() const
Definition GCNSubtarget.h:628
bool hasScalarCompareEq64() const
Definition GCNSubtarget.h:1107
bool EnableXNACK
Definition GCNSubtarget.h:87
bool has1_5xVGPRs() const
Definition GCNSubtarget.h:1393
int getLDSBankCount() const
Definition GCNSubtarget.h:393
bool HasG16
Definition GCNSubtarget.h:146
bool hasSafeCUPrefetch() const
Definition GCNSubtarget.h:1045
bool hasOnlyRevVALUShifts() const
Definition GCNSubtarget.h:448
bool hasImageStoreD16Bug() const
Definition GCNSubtarget.h:1187
bool hasNonNSAEncoding() const
Definition GCNSubtarget.h:1199
bool HasSadInsts
Definition GCNSubtarget.h:171
bool hasUsableDivScaleConditionOutput() const
Condition output from div_scale is usable.
Definition GCNSubtarget.h:536
void mirFileLoaded(MachineFunction &MF) const override
bool hasUsableDSOffset() const
True if the offset field of DS instructions works as expected.
Definition GCNSubtarget.h:527
bool loadStoreOptEnabled() const
Definition GCNSubtarget.h:1237
bool enableSubRegLiveness() const override
Definition GCNSubtarget.h:1066
bool hasDPPWavefrontShifts() const
Definition GCNSubtarget.h:1138
unsigned getSGPRAllocGranule() const
Definition GCNSubtarget.h:1631
bool hasAtomicFMinFMaxF64FlatInsts() const
Definition GCNSubtarget.h:934
bool hasLdsAtomicAddF64() const
Definition GCNSubtarget.h:741
bool HasSALUFloatInsts
Definition GCNSubtarget.h:242
bool hasFlatLgkmVMemCountInOrder() const
Definition GCNSubtarget.h:753
bool GFX940Insts
Definition GCNSubtarget.h:111
bool Has45BitNumRecordsBufferResource
Definition GCNSubtarget.h:297
bool flatScratchIsPointer() const
Definition GCNSubtarget.h:1525
bool hasSDWAMac() const
Definition GCNSubtarget.h:826
bool hasFP8ConversionInsts() const
Definition GCNSubtarget.h:900
bool hasShift64HighRegBug() const
Definition GCNSubtarget.h:1315
bool hasDot7Insts() const
Definition GCNSubtarget.h:864
bool HasScalarDwordx3Loads
Definition GCNSubtarget.h:129
bool hasApertureRegs() const
Definition GCNSubtarget.h:662
unsigned MaxPrivateElementSize
Definition GCNSubtarget.h:67
bool HasCubeInsts
Definition GCNSubtarget.h:169
bool LDSMisalignedBug
Definition GCNSubtarget.h:236
bool unsafeDSOffsetFoldingEnabled() const
Definition GCNSubtarget.h:531
bool hasBitOp3Insts() const
Definition GCNSubtarget.h:1451
bool hasFPAtomicToDenormModeHazard() const
Definition GCNSubtarget.h:1345
unsigned getAddressableNumArchVGPRs() const
Definition GCNSubtarget.h:1720
bool DumpCode
Definition GCNSubtarget.h:100
bool hasFlatInstOffsets() const
Definition GCNSubtarget.h:692
bool HasSetPrioIncWgInst
Definition GCNSubtarget.h:291
bool vmemWriteNeedsExpWaitcnt() const
Definition GCNSubtarget.h:1031
bool hasAtomicFMinFMaxF32FlatInsts() const
Definition GCNSubtarget.h:930
bool HasDot13Insts
Definition GCNSubtarget.h:165
bool shouldClusterStores() const
Definition GCNSubtarget.h:1838
bool HasXF32Insts
Definition GCNSubtarget.h:199
unsigned getMinNumSGPRs(unsigned WavesPerEU) const
Definition GCNSubtarget.h:1652
unsigned getSGPREncodingGranule() const
Definition GCNSubtarget.h:1636
bool HasSDWAScalar
Definition GCNSubtarget.h:133
bool hasIEEEMinimumMaximumInsts() const
Definition GCNSubtarget.h:1571
void ParseSubtargetFeatures(StringRef CPU, StringRef TuneCPU, StringRef FS)
bool hasLdsBranchVmemWARHazard() const
Definition GCNSubtarget.h:1309
bool hasDefaultComponentZero() const
Definition GCNSubtarget.h:993
bool hasGetWaveIdInst() const
Definition GCNSubtarget.h:1007
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:1387
bool hasGFX90AInsts() const
Definition GCNSubtarget.h:1343
bool hasFlatScratchHiInB64InstHazard() const
Definition GCNSubtarget.h:1877
bool hasDstSelForwardingHazard() const
Definition GCNSubtarget.h:1325
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:1070
bool hasRelaxedBufferOOBMode() const
Definition GCNSubtarget.h:660
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:1604
bool HasScalarStores
Definition GCNSubtarget.h:130
bool HasDPALU_DPP
Definition GCNSubtarget.h:139
bool hasDLInsts() const
Definition GCNSubtarget.h:834
bool hasExtendedImageInsts() const
Definition GCNSubtarget.h:1171
bool GFX10_BEncoding
Definition GCNSubtarget.h:150
bool hasVmemWriteVgprInOrder() const
Definition GCNSubtarget.h:1429
bool hasBCNT(unsigned Size) const
Definition GCNSubtarget.h:468
unsigned getSNopBits() const
Definition GCNSubtarget.h:1893
bool HasTransposeLoadF4F6Insts
Definition GCNSubtarget.h:250
bool HasMADIntraFwdBug
Definition GCNSubtarget.h:273
bool hasMAIInsts() const
Definition GCNSubtarget.h:892
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:1415
bool has1024AddressableVGPRs() const
Definition GCNSubtarget.h:1473
bool supportsAgentScopeFineGrainedRemoteMemoryAtomics() const
Definition GCNSubtarget.h:983
bool hasFlatScratchInsts() const
Definition GCNSubtarget.h:700
bool HasFlatSegmentOffsetBug
Definition GCNSubtarget.h:267
bool hasMultiDwordFlatScratchAddressing() const
Definition GCNSubtarget.h:745
bool hasArchitectedSGPRs() const
Definition GCNSubtarget.h:1534
bool hasFmaakFmamkF64Insts() const
Definition GCNSubtarget.h:1165
bool hasTanhInsts() const
Definition GCNSubtarget.h:1467
bool hasHWFP64() const
Definition GCNSubtarget.h:426
bool hasScaleOffset() const
Definition GCNSubtarget.h:1226
bool hasDenormModeInst() const
Definition GCNSubtarget.h:586
bool hasPrivEnabledTrap2NopBug() const
Definition GCNSubtarget.h:1195
bool HasPkFmacF16Inst
Definition GCNSubtarget.h:178
bool hasMFMAInlineLiteralBug() const
Definition GCNSubtarget.h:1255
bool NegativeScratchOffsetBug
Definition GCNSubtarget.h:121
bool hasCvtScaleForwardingHazard() const
Definition GCNSubtarget.h:1361
unsigned getTotalNumVGPRs() const
Definition GCNSubtarget.h:1714
unsigned getMinWavesPerEU() const override
Definition GCNSubtarget.h:1828
bool hasSMemTimeInst() const
Definition GCNSubtarget.h:1011
bool HasVGPRIndexMode
Definition GCNSubtarget.h:128
bool HasMAIInsts
Definition GCNSubtarget.h:166
bool hasUnalignedDSAccessEnabled() const
Definition GCNSubtarget.h:644
bool hasTensorCvtLutInsts() const
Definition GCNSubtarget.h:1469
bool hasNegativeScratchOffsetBug() const
Definition GCNSubtarget.h:1249
const SIInstrInfo * getInstrInfo() const override
Definition GCNSubtarget.h:322
unsigned getMaxWorkGroupsPerCU(unsigned FlatWorkGroupSize) const override
Definition GCNSubtarget.h:1805
bool AutoWaitcntBeforeBarrier
Definition GCNSubtarget.h:76
bool HasVscnt
Definition GCNSubtarget.h:215
bool hasDot1Insts() const
Definition GCNSubtarget.h:840
bool hasDot3Insts() const
Definition GCNSubtarget.h:848
unsigned getConstantBusLimit(unsigned Opcode) const
bool hasMADIntraFwdBug() const
Definition GCNSubtarget.h:1191
bool hasVALUMaskWriteHazard() const
Definition GCNSubtarget.h:1371
bool hasCondSubInsts() const
Definition GCNSubtarget.h:1626
TrapHandlerAbi
Definition GCNSubtarget.h:40
@ NONE
Definition GCNSubtarget.h:41
@ AMDHSA
Definition GCNSubtarget.h:42
const InlineAsmLowering * getInlineAsmLowering() const override
Definition GCNSubtarget.h:344
bool HasDot3Insts
Definition GCNSubtarget.h:155
bool hasAutoWaitcntBeforeBarrier() const
Definition GCNSubtarget.h:622
bool hasNSAClauseBug() const
Definition GCNSubtarget.h:1339
bool EnableSRAMECC
Definition GCNSubtarget.h:212
bool HasSDWAOmod
Definition GCNSubtarget.h:132
bool hasAtomicFaddRtnInsts() const
Definition GCNSubtarget.h:946
unsigned getTotalNumSGPRs() const
Definition GCNSubtarget.h:1641
bool hasGFX1250Insts() const
Definition GCNSubtarget.h:1580
bool HasLdsBarrierArriveAtomic
Definition GCNSubtarget.h:290
const InstrItineraryData * getInstrItineraryData() const override
Definition GCNSubtarget.h:364
bool HasDPP
Definition GCNSubtarget.h:137
bool hasSafeSmemPrefetch() const
Definition GCNSubtarget.h:1043
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:1157
bool needsAlignedVGPRs() const
Return if operations acting on VGPR tuples require even alignment.
Definition GCNSubtarget.h:1380
bool hasGFX10_3Insts() const
Definition GCNSubtarget.h:1215
Align getStackAlignment() const
Definition GCNSubtarget.h:1058
bool privateMemoryResourceIsRangeChecked() const
Definition GCNSubtarget.h:612
bool hasScalarSubwordLoads() const
Definition GCNSubtarget.h:514
bool hasDot11Insts() const
Definition GCNSubtarget.h:880
bool HasTanhInsts
Definition GCNSubtarget.h:248
bool enableFlatScratch() const
Definition GCNSubtarget.h:717
bool KernargPreload
Definition GCNSubtarget.h:83
bool hasDsAtomicAsyncBarrierArriveB64PipeBug() const
Definition GCNSubtarget.h:1865
bool HasGWS
Definition GCNSubtarget.h:233
bool hasMin3Max3PKF16() const
Definition GCNSubtarget.h:1465
bool DynamicVGPR
Definition GCNSubtarget.h:205
bool EnablePreciseMemory
Definition GCNSubtarget.h:92
bool hasUnalignedBufferAccess() const
Definition GCNSubtarget.h:632
bool GFX10_3Insts
Definition GCNSubtarget.h:117
bool HasGetWaveIdInst
Definition GCNSubtarget.h:217
bool hasR128A16() const
Definition GCNSubtarget.h:1175
bool hasCvtPkNormVOP3Insts() const
Definition GCNSubtarget.h:914
bool hasOffset3fBug() const
Definition GCNSubtarget.h:1183
bool hasDwordx3LoadStores() const
Definition GCNSubtarget.h:1264
bool hasPrngInst() const
Definition GCNSubtarget.h:1497
bool hasSignedScratchOffsets() const
Definition GCNSubtarget.h:1578
bool GFX9Insts
Definition GCNSubtarget.h:109
bool HasPrivEnabledTrap2NopBug
Definition GCNSubtarget.h:271
bool hasGlobalAddTidInsts() const
Definition GCNSubtarget.h:722
bool hasSGPRInitBug() const
Definition GCNSubtarget.h:1241
bool hasFlatScrRegister() const
Definition GCNSubtarget.h:688
bool hasFmaMixBF16Insts() const
Definition GCNSubtarget.h:492
bool hasGetPCZeroExtension() const
Definition GCNSubtarget.h:1618
bool hasPermLane64() const
Definition GCNSubtarget.h:1128
bool HasBVHDualAndBVH8Insts
Definition GCNSubtarget.h:252
bool requiresNopBeforeDeallocVGPRs() const
Definition GCNSubtarget.h:1846
unsigned getMinNumVGPRs(unsigned WavesPerEU, unsigned DynamicVGPRBlockSize) const
Definition GCNSubtarget.h:1731
bool hasVMemToLDSLoad() const
Definition GCNSubtarget.h:1419
bool supportsGetDoorbellID() const
Definition GCNSubtarget.h:520
bool supportsWave32() const
Definition GCNSubtarget.h:1779
bool FlatGVSMode
Definition GCNSubtarget.h:227
bool HasNSAClauseBug
Definition GCNSubtarget.h:265
bool hasVcmpxExecWARHazard() const
Definition GCNSubtarget.h:1305
bool isTgSplitEnabled() const
Definition GCNSubtarget.h:674
bool hasFlatAtomicFaddF32Inst() const
Definition GCNSubtarget.h:966
bool hasKernargPreload() const
Definition GCNSubtarget.h:1552
bool HasMin3Max3PKF16
Definition GCNSubtarget.h:282
bool FlatGlobalInsts
Definition GCNSubtarget.h:225
bool hasFP8Insts() const
Definition GCNSubtarget.h:896
unsigned getMaxNumAGPRs(const Function &F) const
Definition GCNSubtarget.h:1761
bool hasReadM0MovRelInterpHazard() const
Definition GCNSubtarget.h:1268
bool isDynamicVGPREnabled() const
Definition GCNSubtarget.h:1852
const SIRegisterInfo * getRegisterInfo() const override
Definition GCNSubtarget.h:334
bool ScalarizeGlobal
Definition GCNSubtarget.h:241
bool hasRequiredExportPriority() const
Definition GCNSubtarget.h:1427
bool hasDOTOpSelHazard() const
Definition GCNSubtarget.h:1328
bool hasLdsWaitVMSRC() const
Definition GCNSubtarget.h:1353
bool hasMSAALoadDstSelBug() const
Definition GCNSubtarget.h:1193
const TargetRegisterClass * getBoolRC() const
Definition GCNSubtarget.h:1799
bool HasPermlane16Swap
Definition GCNSubtarget.h:253
unsigned getBaseMaxNumVGPRs(const Function &F, std::pair< unsigned, unsigned > NumVGPRBounds) const
bool hasFmaakFmamkF32Insts() const
Definition GCNSubtarget.h:1161
bool hasClusters() const
Definition GCNSubtarget.h:1882
bool hasVscnt() const
Definition GCNSubtarget.h:1003
bool HasMinimum3Maximum3F32
Definition GCNSubtarget.h:280
bool hasMad64_32() const
Definition GCNSubtarget.h:810
InstructionSelector * getInstructionSelector() const override
Definition GCNSubtarget.h:348
unsigned getVGPREncodingGranule() const
Definition GCNSubtarget.h:1709
bool NegativeUnalignedScratchOffsetBug
Definition GCNSubtarget.h:122
bool hasHardClauses() const
Definition GCNSubtarget.h:1341
bool useDS128() const
Definition GCNSubtarget.h:596
bool hasExtendedWaitCounts() const
Definition GCNSubtarget.h:1433
bool HasImageInsts
Definition GCNSubtarget.h:142
bool hasBVHDualAndBVH8Insts() const
Definition GCNSubtarget.h:1499
bool hasMinimum3Maximum3PKF16() const
Definition GCNSubtarget.h:1475
bool hasLshlAddU64Inst() const
Definition GCNSubtarget.h:1223
bool hasLDSMisalignedBug() const
Definition GCNSubtarget.h:1297
bool HasPartialNSAEncoding
Definition GCNSubtarget.h:148
bool d16PreservesUnusedBits() const
Definition GCNSubtarget.h:761
bool hasFmacF64Inst() const
Definition GCNSubtarget.h:838
bool EnablePRTStrictNull
Definition GCNSubtarget.h:99
bool RequiresWaitsBeforeSystemScopeStores
Definition GCNSubtarget.h:300
bool hasXF32Insts() const
Definition GCNSubtarget.h:1442
bool hasInstPrefetch() const
Definition GCNSubtarget.h:1035
bool hasAddPC64Inst() const
Definition GCNSubtarget.h:1471
unsigned maxHardClauseLength() const
Definition GCNSubtarget.h:1495
bool hasAshrPkInsts() const
Definition GCNSubtarget.h:1455
bool isMesaGfxShader(const Function &F) const
Definition GCNSubtarget.h:806
bool hasVcmpxPermlaneHazard() const
Definition GCNSubtarget.h:1285
bool HasDLInsts
Definition GCNSubtarget.h:151
bool hasUserSGPRInit16Bug() const
Definition GCNSubtarget.h:1245
bool DynamicVGPRBlockSize32
Definition GCNSubtarget.h:206
bool hasExportInsts() const
Definition GCNSubtarget.h:734
bool hasDPP() const
Definition GCNSubtarget.h:1130
bool hasVINTERPEncoding() const
Definition GCNSubtarget.h:738
bool hasGloballyAddressableScratch() const
Definition GCNSubtarget.h:1367
const AMDGPURegisterBankInfo * getRegBankInfo() const override
Definition GCNSubtarget.h:356
bool hasAddSubU64Insts() const
Definition GCNSubtarget.h:1585
bool hasLegacyGeometry() const
Definition GCNSubtarget.h:1549
bool has64BitLiterals() const
Definition GCNSubtarget.h:1486
int LDSBankCount
Definition GCNSubtarget.h:66
bool FullRate64Ops
Definition GCNSubtarget.h:72
TrapHandlerAbi getTrapHandlerAbi() const
Definition GCNSubtarget.h:516
bool isCuModeEnabled() const
Definition GCNSubtarget.h:678
bool hasScalarAtomics() const
Definition GCNSubtarget.h:1117
const SIFrameLowering * getFrameLowering() const override
Definition GCNSubtarget.h:326
bool HasR128A16
Definition GCNSubtarget.h:144
bool hasUnalignedScratchAccess() const
Definition GCNSubtarget.h:648
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:1461
bool HasMinimum3Maximum3F16
Definition GCNSubtarget.h:281
bool hasSDWAOutModsVOPC() const
Definition GCNSubtarget.h:830
bool hasAtomicFMinFMaxF32GlobalInsts() const
Definition GCNSubtarget.h:922
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:1490
bool hasGFX950Insts() const
Definition GCNSubtarget.h:1410
bool HasNoDataDepHazard
Definition GCNSubtarget.h:222
bool hasCvtNormInsts() const
Definition GCNSubtarget.h:910
bool HasVOPDInsts
Definition GCNSubtarget.h:274
bool HasDot7Insts
Definition GCNSubtarget.h:159
bool has45BitNumRecordsBufferResource() const
Definition GCNSubtarget.h:1903
bool Has64BitLiterals
Definition GCNSubtarget.h:245
const AMDGPU::IsaInfo::AMDGPUTargetID & getTargetID() const
Definition GCNSubtarget.h:360
unsigned getMaxNumPreloadedSGPRs() const
bool hasAtomicCSubNoRtnInsts() const
Definition GCNSubtarget.h:1562
bool HasSDWAOutModsVOPC
Definition GCNSubtarget.h:136
bool EnableCuMode
Definition GCNSubtarget.h:90
bool hasScalarFlatScratchInsts() const
Definition GCNSubtarget.h:713
GCNSubtarget & initializeSubtargetDependencies(const Triple &TT, StringRef GPU, StringRef FS)
unsigned Gen
Definition GCNSubtarget.h:64
bool has12DWordStoreHazard() const
Definition GCNSubtarget.h:1259
bool hasVALUPartialForwardingHazard() const
Definition GCNSubtarget.h:1355
bool dumpCode() const
Definition GCNSubtarget.h:572
bool hasNoDataDepHazard() const
Definition GCNSubtarget.h:1027
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:1365
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:640
bool hasAddMinMaxInsts() const
Definition GCNSubtarget.h:1601
bool needsKernArgPreloadProlog() const
Definition GCNSubtarget.h:1622
bool hasRestrictedSOffset() const
Definition GCNSubtarget.h:1425
bool hasMin3Max3_16() const
Definition GCNSubtarget.h:484
bool hasIntClamp() const
Definition GCNSubtarget.h:414
bool hasGFX10_AEncoding() const
Definition GCNSubtarget.h:1207
bool hasFP8E5M3Insts() const
Definition GCNSubtarget.h:916
bool hasFlatSegmentOffsetBug() const
Definition GCNSubtarget.h:749
bool GFX10_AEncoding
Definition GCNSubtarget.h:149
unsigned getMaxNumVGPRs(unsigned WavesPerEU, unsigned DynamicVGPRBlockSize) const
Definition GCNSubtarget.h:1739
unsigned getVGPRAllocGranule(unsigned DynamicVGPRBlockSize) const
Definition GCNSubtarget.h:1704
bool MIMG_R128
Definition GCNSubtarget.h:106
bool hasEmulatedSystemScopeAtomics() const
Definition GCNSubtarget.h:989
bool hasMadU64U32NoCarry() const
Definition GCNSubtarget.h:1595
unsigned getSetRegWaitStates() const
Number of hazard wait states for s_setreg_b32/s_setreg_imm32_b32.
Definition GCNSubtarget.h:568
const SITargetLowering * getTargetLowering() const override
Definition GCNSubtarget.h:330
bool HasVcmpxPermlaneHazard
Definition GCNSubtarget.h:255
bool hasPackedFP32Ops() const
Definition GCNSubtarget.h:1152
bool SupportsXNACK
Definition GCNSubtarget.h:82
bool hasTransForwardingHazard() const
Definition GCNSubtarget.h:1321
bool hasDot6Insts() const
Definition GCNSubtarget.h:860
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:1406
bool HasScalarAtomics
Definition GCNSubtarget.h:131
bool hasFullRate64Ops() const
Definition GCNSubtarget.h:434
bool HasSafeCUPrefetch
Definition GCNSubtarget.h:261
bool EnableSIScheduler
Definition GCNSubtarget.h:97
bool hasScalarStores() const
Definition GCNSubtarget.h:1113
bool isTrapHandlerEnabled() const
Definition GCNSubtarget.h:666
bool enableMachineScheduler() const override
Definition GCNSubtarget.h:1060
bool hasLDSFPAtomicAddF64() const
Definition GCNSubtarget.h:1122
bool HasAtomicFlatPkAdd16Insts
Definition GCNSubtarget.h:184
bool hasFlatGlobalInsts() const
Definition GCNSubtarget.h:696
bool HasGloballyAddressableScratch
Definition GCNSubtarget.h:295
bool hasDX10ClampMode() const
Definition GCNSubtarget.h:1565
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:1071
bool hasPKF32InstsReplicatingLower32BitsOfScalarInput() const
Definition GCNSubtarget.h:1447
bool HasAtomicFMinFMaxF32FlatInsts
Definition GCNSubtarget.h:181
bool HasPseudoScalarTrans
Definition GCNSubtarget.h:243
bool hasReadM0LdsDmaHazard() const
Definition GCNSubtarget.h:1277
bool hasScalarSMulU64() const
Definition GCNSubtarget.h:799
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:389
bool hasScratchBaseForwardingHazard() const
Definition GCNSubtarget.h:1871
bool HasShaderCyclesRegister
Definition GCNSubtarget.h:219
bool FlatInstOffsets
Definition GCNSubtarget.h:224
bool hasLerpInst() const
Definition GCNSubtarget.h:904
bool hasIntMinMax64() const
Definition GCNSubtarget.h:1598
bool hasShaderCyclesHiLoRegisters() const
Definition GCNSubtarget.h:1019
bool hasSDWASdst() const
Definition GCNSubtarget.h:822
bool HasDefaultComponentBroadcast
Definition GCNSubtarget.h:198
bool HasNoSdstCMPX
Definition GCNSubtarget.h:214
bool hasScalarPackInsts() const
Definition GCNSubtarget.h:506
bool hasFFBL() const
Definition GCNSubtarget.h:472
bool hasNSAEncoding() const
Definition GCNSubtarget.h:1197
bool requiresDisjointEarlyClobberAndUndef() const override
Definition GCNSubtarget.h:1857
bool hasVALUReadSGPRHazard() const
Definition GCNSubtarget.h:1373
bool hasSMemRealTime() const
Definition GCNSubtarget.h:1093
bool EnableTgSplit
Definition GCNSubtarget.h:89
bool hasFlatAddressSpace() const
Definition GCNSubtarget.h:684
bool hasDPPBroadcasts() const
Definition GCNSubtarget.h:1134
bool HasFP8Insts
Definition GCNSubtarget.h:167
bool usePRTStrictNull() const
Definition GCNSubtarget.h:618
bool hasMovB64() const
Definition GCNSubtarget.h:1221
bool hasVmemPrefInsts() const
Definition GCNSubtarget.h:1041
unsigned getAddressableNumVGPRs(unsigned DynamicVGPRBlockSize) const
Definition GCNSubtarget.h:1725
bool HasFmaMixBF16Insts
Definition GCNSubtarget.h:126
bool hasCubeInsts() const
Definition GCNSubtarget.h:902
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:1301
bool HasDot2Insts
Definition GCNSubtarget.h:154
bool hasAtomicFMinFMaxF64GlobalInsts() const
Definition GCNSubtarget.h:926
bool HasLerpInst
Definition GCNSubtarget.h:170
bool hasMed3_16() const
Definition GCNSubtarget.h:480
bool HasVMemToLDSLoad
Definition GCNSubtarget.h:207
unsigned getReservedNumSGPRs(const MachineFunction &MF) const
bool hasUnalignedScratchAccessEnabled() const
Definition GCNSubtarget.h:652
bool hasMovrel() const
Definition GCNSubtarget.h:1097
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:1391
bool UnalignedScratchAccess
Definition GCNSubtarget.h:78
bool hasAtomicFlatPkAdd16Insts() const
Definition GCNSubtarget.h:940
bool HasPrngInst
Definition GCNSubtarget.h:251
bool HasImageGather4D16Bug
Definition GCNSubtarget.h:269
bool hasBFI() const
Definition GCNSubtarget.h:460
bool hasDot13Insts() const
Definition GCNSubtarget.h:888
bool ldsRequiresM0Init() const
Return if most LDS instructions have an m0 use that require m0 to be initialized.
Definition GCNSubtarget.h:771
bool HasSMEMtoVectorWriteHazard
Definition GCNSubtarget.h:257
bool HasAshrPkInsts
Definition GCNSubtarget.h:278
bool HasAtomicFaddNoRtnInsts
Definition GCNSubtarget.h:186
bool hasSMEMtoVectorWriteHazard() const
Definition GCNSubtarget.h:1293
bool useAA() const override
bool isWave32() const
Definition GCNSubtarget.h:1783
bool hasVGPRIndexMode() const
Definition GCNSubtarget.h:1101
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:636
bool isWaveSizeKnown() const
Returns if the wavesize of this subtarget is known reliable.
Definition GCNSubtarget.h:1794
unsigned getMaxPrivateElementSize(bool ForBufferRSrc=false) const
Definition GCNSubtarget.h:397
unsigned getMinFlatWorkGroupSize() const override
Definition GCNSubtarget.h:1810
bool HasAtomicCSubNoRtnInsts
Definition GCNSubtarget.h:190
bool hasImageInsts() const
Definition GCNSubtarget.h:1167
bool HasAtomicDsPkAdd16Insts
Definition GCNSubtarget.h:183
bool hasImageGather4D16Bug() const
Definition GCNSubtarget.h:1189
bool FMA
Definition GCNSubtarget.h:105
bool HasRequiredExportPriority
Definition GCNSubtarget.h:276
bool hasFMA() const
Definition GCNSubtarget.h:498
bool hasDot10Insts() const
Definition GCNSubtarget.h:876
bool hasSPackHL() const
Return true if the target has the S_PACK_HL_B32_B16 instruction.
Definition GCNSubtarget.h:1383
bool hasVMEMtoScalarWriteHazard() const
Definition GCNSubtarget.h:1289
bool hasCvtFP8VOP1Bug() const
Definition GCNSubtarget.h:1558
bool supportsMinMaxDenormModes() const
Definition GCNSubtarget.h:581
bool supportsWave64() const
Definition GCNSubtarget.h:1781
bool RelaxedBufferOOBMode
Definition GCNSubtarget.h:80
bool HasAtomicBufferPkAddBF16Inst
Definition GCNSubtarget.h:192
bool hasNegativeUnalignedScratchOffsetBug() const
Definition GCNSubtarget.h:1251
bool hasFFBH() const
Definition GCNSubtarget.h:476
bool hasFormattedMUBUFInsts() const
Definition GCNSubtarget.h:732
bool HasQsadInsts
Definition GCNSubtarget.h:172
bool hasFlatScratchSVSMode() const
Definition GCNSubtarget.h:711
bool supportsWGP() const
Definition GCNSubtarget.h:408
bool hasG16() const
Definition GCNSubtarget.h:1181
bool GFX90AInsts
Definition GCNSubtarget.h:110
bool HasMSAALoadDstSelBug
Definition GCNSubtarget.h:270
bool HasPackedFP32Ops
Definition GCNSubtarget.h:141
bool hasHalfRate64Ops() const
Definition GCNSubtarget.h:430
bool hasAtomicFaddInsts() const
Definition GCNSubtarget.h:942
bool HasAtomicBufferGlobalPkAddF16NoRtnInsts
Definition GCNSubtarget.h:188
bool HasMinimum3Maximum3PKF16
Definition GCNSubtarget.h:283
bool hasSubClampInsts() const
Definition GCNSubtarget.h:1628
bool hasPermlane16Swap() const
Definition GCNSubtarget.h:1453
bool hasNSAtoVMEMBug() const
Definition GCNSubtarget.h:1335
bool requiresWaitXCntForSingleAccessInstructions() const
Definition GCNSubtarget.h:1887
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:1203
bool hasAtomicBufferGlobalPkAddF16NoRtnInsts() const
Definition GCNSubtarget.h:950
bool hasSadInsts() const
Definition GCNSubtarget.h:906
bool hasMIMG_R128() const
Definition GCNSubtarget.h:422
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:1349
bool hasAtomicBufferPkAddBF16Inst() const
Definition GCNSubtarget.h:962
bool HasAgentScopeFineGrainedRemoteMemoryAtomics
Definition GCNSubtarget.h:196
unsigned getMaxFlatWorkGroupSize() const override
Definition GCNSubtarget.h:1815
bool hasDPP8() const
Definition GCNSubtarget.h:1142
bool hasDot5Insts() const
Definition GCNSubtarget.h:856
unsigned getMaxNumUserSGPRs() const
Definition GCNSubtarget.h:1089
bool hasTransposeLoadF4F6Insts() const
Definition GCNSubtarget.h:1479
bool hasMadU32Inst() const
Definition GCNSubtarget.h:1588
bool hasAtomicFaddNoRtnInsts() const
Definition GCNSubtarget.h:948
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:1125
bool hasFlatScratchSVSSwizzleBug() const
Definition GCNSubtarget.h:1397
bool hasFlatBufferGlobalAtomicFaddF64Inst() const
Definition GCNSubtarget.h:970
bool HasEmulatedSystemScopeAtomics
Definition GCNSubtarget.h:197
bool hasNoF16PseudoScalarTransInlineConstants() const
Definition GCNSubtarget.h:1437
bool hasIEEEMode() const
Definition GCNSubtarget.h:1568
bool hasScalarDwordx3Loads() const
Definition GCNSubtarget.h:1111
bool hasVDecCoExecHazard() const
Definition GCNSubtarget.h:1331
bool FastDenormalF32
Definition GCNSubtarget.h:70
bool hasSignedGVSOffset() const
Definition GCNSubtarget.h:1231
bool hasCvtPkNormVOP2Insts() const
Definition GCNSubtarget.h:912
bool HasImageStoreD16Bug
Definition GCNSubtarget.h:268
bool UnalignedAccessMode
Definition GCNSubtarget.h:79
bool hasLDSFPAtomicAddF32() const
Definition GCNSubtarget.h:1121
unsigned getWavesPerEUForWorkGroup(unsigned FlatWorkGroupSize) const override
Definition GCNSubtarget.h:1822
bool HasLshlAddU64Inst
Definition GCNSubtarget.h:284
bool EnableDS128
Definition GCNSubtarget.h:98
bool HasApertureRegs
Definition GCNSubtarget.h:81
bool hasBFM() const
Definition GCNSubtarget.h:464
bool haveRoundOpsF64() const
Have v_trunc_f64, v_ceil_f64, v_rndne_f64.
Definition GCNSubtarget.h:606
bool hasDelayAlu() const
Return true if the target has the S_DELAY_ALU instruction.
Definition GCNSubtarget.h:1400
bool HasNSAtoVMEMBug
Definition GCNSubtarget.h:264
bool GFX950Insts
Definition GCNSubtarget.h:112
bool hasReadM0SendMsgHazard() const
Definition GCNSubtarget.h:1272
bool HasA16
Definition GCNSubtarget.h:145
bool AssemblerPermissiveWavesize
Definition GCNSubtarget.h:101
bool hasDot8Insts() const
Definition GCNSubtarget.h:868
bool hasVectorMulU64() const
Definition GCNSubtarget.h:1591
bool hasScalarMulHiInsts() const
Definition GCNSubtarget.h:510
bool hasSCmpK() const
Definition GCNSubtarget.h:1048
bool HasFP8E5M3Insts
Definition GCNSubtarget.h:176
bool hasPseudoScalarTrans() const
Definition GCNSubtarget.h:1423
const LegalizerInfo * getLegalizerInfo() const override
Definition GCNSubtarget.h:352
bool requiresWaitIdleBeforeGetReg() const
Definition GCNSubtarget.h:1850
bool HasSDWASdst
Definition GCNSubtarget.h:134
bool hasPointSampleAccel() const
Definition GCNSubtarget.h:1488
bool hasDot12Insts() const
Definition GCNSubtarget.h:884
bool hasDS96AndDS128() const
Definition GCNSubtarget.h:601
bool hasGWS() const
Definition GCNSubtarget.h:1540
bool HasCvtPkNormVOP3Insts
Definition GCNSubtarget.h:175
bool HasAtomicFMinFMaxF64GlobalInsts
Definition GCNSubtarget.h:180
bool HasBitOp3Insts
Definition GCNSubtarget.h:247
bool hasReadM0LdsDirectHazard() const
Definition GCNSubtarget.h:1281
bool useFlatForGlobal() const
Definition GCNSubtarget.h:590
bool EnableFlatScratch
Definition GCNSubtarget.h:230
static bool hasHalfRate64Ops(const TargetSubtargetInfo &STI)
bool hasVOPDInsts() const
Definition GCNSubtarget.h:1395
bool hasGFX10_BEncoding() const
Definition GCNSubtarget.h:1211
Generation getGeneration() const
Definition GCNSubtarget.h:370
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:1658
bool hasVOP3Literal() const
Definition GCNSubtarget.h:1023
bool HasDot10Insts
Definition GCNSubtarget.h:162
bool hasAtomicBufferGlobalPkAddF16Insts() const
Definition GCNSubtarget.h:954
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:999
bool HasDot12Insts
Definition GCNSubtarget.h:164
bool isXNACKEnabled() const
Definition GCNSubtarget.h:670
bool hasScalarAddSub64() const
Definition GCNSubtarget.h:797
bool hasSplitBarriers() const
Definition GCNSubtarget.h:1555
bool hasUnpackedD16VMem() const
Definition GCNSubtarget.h:801
bool enableEarlyIfConversion() const override
Definition GCNSubtarget.h:1077
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:553
bool hasSGetShaderCyclesInst() const
Definition GCNSubtarget.h:1610
bool hasRFEHazards() const
Definition GCNSubtarget.h:563
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:559
bool FlatForGlobal
Definition GCNSubtarget.h:75
bool hasFlatScratchSTMode() const
Definition GCNSubtarget.h:707
unsigned getBaseReservedNumSGPRs(const bool HasFlatScratch) const
bool hasGWSSemaReleaseAll() const
Definition GCNSubtarget.h:785
bool hasDPALU_DPP() const
Definition GCNSubtarget.h:1146
bool enableSIScheduler() const
Definition GCNSubtarget.h:1233
bool hasAtomicGlobalPkAddBF16Inst() const
Definition GCNSubtarget.h:958
bool FlatScratchInsts
Definition GCNSubtarget.h:226
bool hasAddr64() const
Definition GCNSubtarget.h:438
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:656
bool FP64
Definition GCNSubtarget.h:104
unsigned getAddressableNumSGPRs() const
Definition GCNSubtarget.h:1646
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:542
bool HasAtomicFaddRtnInsts
Definition GCNSubtarget.h:185
bool isWave64() const
Definition GCNSubtarget.h:1787
bool HasRestrictedSOffset
Definition GCNSubtarget.h:244
unsigned getDynamicVGPRBlockSize() const
Definition GCNSubtarget.h:1853
bool RequiresCOV6
Definition GCNSubtarget.h:293
bool HasArchitectedSGPRs
Definition GCNSubtarget.h:231
bool TrapHandler
Definition GCNSubtarget.h:91
bool hasFmaMixInsts() const
Definition GCNSubtarget.h:488
bool HasVALUTransUseHazard
Definition GCNSubtarget.h:275
bool hasCARRY() const
Definition GCNSubtarget.h:494
bool hasQsadInsts() const
Definition GCNSubtarget.h:908
bool HasSMemRealTime
Definition GCNSubtarget.h:123
bool hasPackedTID() const
Definition GCNSubtarget.h:1402
bool setRegModeNeedsVNOPs() const
Definition GCNSubtarget.h:1375
bool HasVcmpxExecWARHazard
Definition GCNSubtarget.h:262
bool HasNSAEncoding
Definition GCNSubtarget.h:147
bool hasFP64() const
Definition GCNSubtarget.h:418
bool hasAddNoCarry() const
Definition GCNSubtarget.h:793
bool ScalarFlatScratchInsts
Definition GCNSubtarget.h:228
bool requiresWaitsBeforeSystemScopeStores() const
Definition GCNSubtarget.h:1907
bool hasVALUTransUseHazard() const
Definition GCNSubtarget.h:1359
bool HasDot5Insts
Definition GCNSubtarget.h:157
bool hasShaderCyclesRegister() const
Definition GCNSubtarget.h:1015
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:1421
bool EnableUnsafeDSOffsetFolding
Definition GCNSubtarget.h:96
bool hasFractBug() const
Definition GCNSubtarget.h:452
bool isPreciseMemoryEnabled() const
Definition GCNSubtarget.h:682
bool hasDPPSrc1SGPR() const
Definition GCNSubtarget.h:1150
bool hasGDS() const
Definition GCNSubtarget.h:1537
unsigned getMaxWaveScratchSize() const
Definition GCNSubtarget.h:374
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:730
bool hasDot4Insts() const
Definition GCNSubtarget.h:852
bool FeatureDisable
Definition GCNSubtarget.h:303
bool GFX1250Insts
Definition GCNSubtarget.h:116
bool flatScratchIsArchitected() const
Definition GCNSubtarget.h:1531
bool hasPartialNSAEncoding() const
Definition GCNSubtarget.h:1201
bool HasInstFwdPrefetchBug
Definition GCNSubtarget.h:258
bool hasWaitXCnt() const
Definition GCNSubtarget.h:1483
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:1613
const SelectionDAGTargetInfo * getSelectionDAGInfo() const override
bool FlatAddressSpace
Definition GCNSubtarget.h:223
bool hasDot9Insts() const
Definition GCNSubtarget.h:872
bool HasPackedTID
Definition GCNSubtarget.h:240
bool hasVOPD3() const
Definition GCNSubtarget.h:1582
bool UseBlockVGPROpsForCSR
Definition GCNSubtarget.h:294
bool hasAtomicCSub() const
Definition GCNSubtarget.h:726
AMDGPU::IsaInfo::AMDGPUTargetID TargetID
Definition GCNSubtarget.h:63
bool hasDefaultComponentBroadcast() const
Definition GCNSubtarget.h:995
bool requiresCodeObjectV6() const
Definition GCNSubtarget.h:1363
bool SupportsSRAMECC
Definition GCNSubtarget.h:204
const CallLowering * getCallLowering() const override
Definition GCNSubtarget.h:340
bool hasBFE() const
Definition GCNSubtarget.h:456
bool hasLdsDirect() const
Definition GCNSubtarget.h:1351
bool hasGWSAutoReplay() const
Definition GCNSubtarget.h:780
bool HasFlatBufferGlobalAtomicFaddF64Inst
Definition GCNSubtarget.h:194
static unsigned getNumUserSGPRForField(UserSGPRID ID)
Definition GCNSubtarget.h:1950
bool hasQueuePtr() const
Definition GCNSubtarget.h:1920
bool hasKernargSegmentPtr() const
Definition GCNSubtarget.h:1922
void allocKernargPreloadSGPRs(unsigned NumSGPRs)
bool hasDispatchID() const
Definition GCNSubtarget.h:1924
UserSGPRID
Definition GCNSubtarget.h:1938
@ ImplicitBufferPtrID
Definition GCNSubtarget.h:1939
@ DispatchIdID
Definition GCNSubtarget.h:1944
@ QueuePtrID
Definition GCNSubtarget.h:1942
@ DispatchPtrID
Definition GCNSubtarget.h:1941
@ FlatScratchInitID
Definition GCNSubtarget.h:1945
@ PrivateSegmentBufferID
Definition GCNSubtarget.h:1940
@ PrivateSegmentSizeID
Definition GCNSubtarget.h:1946
@ KernargSegmentPtrID
Definition GCNSubtarget.h:1943
bool hasPrivateSegmentBuffer() const
Definition GCNSubtarget.h:1916
unsigned getNumFreeUserSGPRs()
bool hasImplicitBufferPtr() const
Definition GCNSubtarget.h:1914
unsigned getNumKernargPreloadSGPRs() const
Definition GCNSubtarget.h:1930
bool hasPrivateSegmentSize() const
Definition GCNSubtarget.h:1928
unsigned getNumUsedUserSGPRs() const
Definition GCNSubtarget.h:1932
bool hasDispatchPtr() const
Definition GCNSubtarget.h:1918
GCNUserSGPRUsageInfo(const Function &F, const GCNSubtarget &ST)
bool hasFlatScratchInit() const
Definition GCNSubtarget.h:1926
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.