Lines Matching +full:smem +full:- +full:part

1 //===-- AMDGPU.td - AMDGPU Tablegen files --------*- tablegen -*-===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===------------------------------------------------------------===//
22 //===------------------------------------------------------------===//
24 //===------------------------------------------------------------===//
26 def FeatureFastFMAF32 : SubtargetFeature<"fast-fmaf",
32 def FeatureFastDenormalF32 : SubtargetFeature<"fast-denormal-f32",
38 def FeatureMIMG_R128 : SubtargetFeature<"mimg-r128",
41 "Support 128-bit texture resources"
44 def HalfRate64Ops : SubtargetFeature<"half-rate-64-ops",
50 def FullRate64Ops : SubtargetFeature<"full-rate-64-ops",
56 def FeatureFlatAddressSpace : SubtargetFeature<"flat-address-space",
62 def FeatureFlatInstOffsets : SubtargetFeature<"flat-inst-offsets",
68 def FeatureFlatGlobalInsts : SubtargetFeature<"flat-global-insts",
74 def FeatureFlatScratchInsts : SubtargetFeature<"flat-scratch-insts",
80 def FeatureScalarFlatScratchInsts : SubtargetFeature<"scalar-flat-scratch-insts",
86 def FeatureEnableFlatScratch : SubtargetFeature<"enable-flat-scratch",
92 def FeatureAddNoCarryInsts : SubtargetFeature<"add-no-carry-insts",
98 def FeatureUnalignedBufferAccess : SubtargetFeature<"unaligned-buffer-access",
104 def FeatureTrapHandler: SubtargetFeature<"trap-handler",
110 def FeatureUnalignedScratchAccess : SubtargetFeature<"unaligned-scratch-access",
116 def FeatureUnalignedDSAccess : SubtargetFeature<"unaligned-ds-access",
122 def FeatureApertureRegs : SubtargetFeature<"aperture-regs",
128 def FeatureMadMixInsts : SubtargetFeature<"mad-mix-insts",
134 def FeatureFmaMixInsts : SubtargetFeature<"fma-mix-insts",
140 def FeatureSupportsXNACK : SubtargetFeature<"xnack-support",
148 // - graphics ring: XNACK disabled
149 // - compute ring: XNACK enabled
172 : SubtargetFeature<"precise-memory", "EnablePreciseMemory",
175 def FeatureSGPRInitBug : SubtargetFeature<"sgpr-init-bug",
181 def FeatureUserSGPRInit16Bug : SubtargetFeature<"user-sgpr-init16-bug",
187 def FeatureLdsMisalignedBug : SubtargetFeature<"lds-misaligned-bug",
190 "Some GFX10 bug with multi-dword LDS and flat access that is not naturally aligned in WGP mode"
193 def FeatureMFMAInlineLiteralBug : SubtargetFeature<"mfma-inline-literal-bug",
199 def FeatureVcmpxPermlaneHazard : SubtargetFeature<"vcmpx-permlane-hazard",
205 def FeatureVMEMtoScalarWriteHazard : SubtargetFeature<"vmem-to-scalar-write-hazard",
211 def FeatureSMEMtoVectorWriteHazard : SubtargetFeature<"smem-to-vector-write-hazard",
217 def FeatureInstFwdPrefetchBug : SubtargetFeature<"inst-fwd-prefetch-bug",
223 def FeatureVcmpxExecWARHazard : SubtargetFeature<"vcmpx-exec-war-hazard",
229 def FeatureLdsBranchVmemWARHazard : SubtargetFeature<"lds-branch-vmem-war-hazard",
232 "Switching between LDS and VMEM-tex not waiting VM_VSRC=0"
236 "max-hard-clause-length-"#size,
250 def FeatureNSAtoVMEMBug : SubtargetFeature<"nsa-to-vmem-bug",
253 "MIMG-NSA followed by VMEM fail if EXEC_LO or EXEC_HI equals zero"
256 def FeatureNSAClauseBug : SubtargetFeature<"nsa-clause-bug",
259 "MIMG-NSA in a hard clause has unpredictable results on GFX10.1"
262 def FeatureFlatSegmentOffsetBug : SubtargetFeature<"flat-segment-offset-bug",
268 def FeatureNegativeScratchOffsetBug : SubtargetFeature<"negative-scratch-offset-bug",
274 def FeatureNegativeUnalignedScratchOffsetBug : SubtargetFeature<"negative-unaligned-scratch-offset-
280 def FeatureOffset3fBug : SubtargetFeature<"offset-3f-bug",
286 def FeatureImageStoreD16Bug : SubtargetFeature<"image-store-d16-bug",
292 def FeatureImageGather4D16Bug : SubtargetFeature<"image-gather4-d16-bug",
298 def FeatureMADIntraFwdBug : SubtargetFeature<"mad-intra-fwd-bug",
304 def FeatureMSAALoadDstSelBug : SubtargetFeature<"msaa-load-dst-sel-bug",
310 def FeaturePrivEnabledTrap2NopBug : SubtargetFeature<"priv-enabled-trap2-nop-bug",
326 def FeatureGCN3Encoding : SubtargetFeature<"gcn3-encoding",
332 def FeatureCIInsts : SubtargetFeature<"ci-insts",
338 def FeatureGFX8Insts : SubtargetFeature<"gfx8-insts",
344 def FeatureGFX9Insts : SubtargetFeature<"gfx9-insts",
350 def FeatureGFX90AInsts : SubtargetFeature<"gfx90a-insts",
357 def FeatureGFX940Insts : SubtargetFeature<"gfx940-insts",
363 def FeatureGFX10Insts : SubtargetFeature<"gfx10-insts",
369 def FeatureGFX11Insts : SubtargetFeature<"gfx11-insts",
375 def FeatureGFX12Insts : SubtargetFeature<"gfx12-insts",
381 def FeatureGFX10_3Insts : SubtargetFeature<"gfx10-3-insts",
387 def FeatureGFX7GFX8GFX9Insts : SubtargetFeature<"gfx7-gfx8-gfx9-insts",
393 def FeatureSMemRealTime : SubtargetFeature<"s-memrealtime",
399 def FeatureInv2PiInlineImm : SubtargetFeature<"inv-2pi-inline-imm",
405 def Feature16BitInsts : SubtargetFeature<"16-bit-insts",
414 "True 16-bit operand instructions"
417 def FeatureRealTrue16Insts : SubtargetFeature<"real-true16",
420 "Use true 16-bit registers"
435 def FeatureVGPRIndexMode : SubtargetFeature<"vgpr-index-mode",
441 def FeatureScalarDwordx3Loads : SubtargetFeature<"scalar-dwordx3-loads",
444 "Has 96-bit scalar load instructions"
447 def FeatureScalarStores : SubtargetFeature<"scalar-stores",
453 def FeatureScalarAtomics : SubtargetFeature<"scalar-atomics",
462 "Support SDWA (Sub-DWORD Addressing) extension"
465 def FeatureSDWAOmod : SubtargetFeature<"sdwa-omod",
468 "Support OMod with SDWA (Sub-DWORD Addressing) extension"
471 def FeatureSDWAScalar : SubtargetFeature<"sdwa-scalar",
474 "Support scalar register with SDWA (Sub-DWORD Addressing) extension"
477 def FeatureSDWASdst : SubtargetFeature<"sdwa-sdst",
480 "Support scalar dst for VOPC with SDWA (Sub-DWORD Addressing) extension"
483 def FeatureSDWAMac : SubtargetFeature<"sdwa-mav",
486 "Support v_mac_f32/f16 with SDWA (Sub-DWORD Addressing) extension"
489 def FeatureSDWAOutModsVOPC : SubtargetFeature<"sdwa-out-mods-vopc",
492 "Support clamp for VOPC with SDWA (Sub-DWORD Addressing) extension"
501 // DPP8 allows arbitrary cross-lane swizzling within groups of 8 lanes.
508 def FeatureDPALU_DPP : SubtargetFeature<"dpp-64bit",
514 def FeatureDPPSrc1SGPR : SubtargetFeature<"dpp-src1-sgpr",
520 def FeaturePackedFP32Ops : SubtargetFeature<"packed-fp32-ops",
526 def FeatureR128A16 : SubtargetFeature<"r128-a16",
529 …"Support gfx9-style A16 for 16-bit coordinates/gradients/lod/clamp/mip image operands, where a16 i…
535 "Support A16 for 16-bit coordinates/gradients/lod/clamp/mip image operands"
541 "Support G16 for 16-bit gradient image operands"
544 def FeatureNSAEncoding : SubtargetFeature<"nsa-encoding",
550 def FeaturePartialNSAEncoding : SubtargetFeature<"partial-nsa-encoding",
556 def FeatureImageInsts : SubtargetFeature<"image-insts",
562 def FeatureExtendedImageInsts : SubtargetFeature<"extended-image-insts",
568 def FeatureGFX10_AEncoding : SubtargetFeature<"gfx10_a-encoding",
574 def FeatureGFX10_BEncoding : SubtargetFeature<"gfx10_b-encoding",
580 def FeatureIntClamp : SubtargetFeature<"int-clamp-insts",
586 def FeatureUnpackedD16VMem : SubtargetFeature<"unpacked-d16-vmem",
592 def FeatureDLInsts : SubtargetFeature<"dl-insts",
598 def FeatureFmacF64Inst : SubtargetFeature<"fmacf64-inst",
604 def FeatureDot1Insts : SubtargetFeature<"dot1-insts",
610 def FeatureDot2Insts : SubtargetFeature<"dot2-insts",
616 def FeatureDot3Insts : SubtargetFeature<"dot3-insts",
622 def FeatureDot4Insts : SubtargetFeature<"dot4-insts",
628 def FeatureDot5Insts : SubtargetFeature<"dot5-insts",
634 def FeatureDot6Insts : SubtargetFeature<"dot6-insts",
640 def FeatureDot7Insts : SubtargetFeature<"dot7-insts",
646 def FeatureDot8Insts : SubtargetFeature<"dot8-insts",
652 def FeatureDot9Insts : SubtargetFeature<"dot9-insts",
658 def FeatureDot10Insts : SubtargetFeature<"dot10-insts",
664 def FeatureDot11Insts : SubtargetFeature<"dot11-insts",
670 def FeatureMAIInsts : SubtargetFeature<"mai-insts",
676 def FeatureFP8Insts : SubtargetFeature<"fp8-insts",
682 def FeatureFP8ConversionInsts : SubtargetFeature<"fp8-conversion-insts",
688 def FeaturePkFmacF16Inst : SubtargetFeature<"pk-fmac-f16-inst",
694 def FeatureAtomicDsPkAdd16Insts : SubtargetFeature<"atomic-ds-pk-add-16-insts",
701 def FeatureAtomicFlatPkAdd16Insts : SubtargetFeature<"atomic-flat-pk-add-16-insts",
707 def FeatureAtomicFaddRtnInsts : SubtargetFeature<"atomic-fadd-rtn-insts",
715 def FeatureAtomicFMinFMaxF32GlobalInsts : SubtargetFeature<"atomic-fmin-fmax-global-f32",
721 def FeatureAtomicFMinFMaxF64GlobalInsts : SubtargetFeature<"atomic-fmin-fmax-global-f64",
727 def FeatureAtomicFMinFMaxF32FlatInsts : SubtargetFeature<"atomic-fmin-fmax-flat-f32",
733 def FeatureAtomicFMinFMaxF64FlatInsts : SubtargetFeature<"atomic-fmin-fmax-flat-f64",
739 def FeatureAtomicFaddNoRtnInsts : SubtargetFeature<"atomic-fadd-no-rtn-insts",
748 : SubtargetFeature<"atomic-buffer-global-pk-add-f16-no-rtn-insts",
756 def FeatureAtomicBufferGlobalPkAddF16Insts : SubtargetFeature<"atomic-buffer-global-pk-add-f16-inst…
764 def FeatureAtomicGlobalPkAddBF16Inst : SubtargetFeature<"atomic-global-pk-add-bf16-inst",
771 def FeatureAtomicBufferPkAddBF16Inst : SubtargetFeature<"atomic-buffer-pk-add-bf16-inst",
777 def FeatureAtomicCSubNoRtnInsts : SubtargetFeature<"atomic-csub-no-rtn-insts",
785 : SubtargetFeature<"flat-atomic-fadd-f32-inst",
792 : SubtargetFeature<"flat-buffer-global-fadd-f64-inst",
799 : SubtargetFeature<"memory-atomic-fadd-f32-denormal-support",
806 : SubtargetFeature<"agent-scope-fine-grained-remote-memory-atomics",
811 "compare-and-swap), are functional for allocations in host or peer "
815 def FeatureDefaultComponentZero : SubtargetFeature<"default-component-zero",
821 def FeatureDefaultComponentBroadcast : SubtargetFeature<"default-component-broadcast",
827 def FeatureSupportsSRAMECC : SubtargetFeature<"sramecc-support",
839 def FeatureNoSdstCMPX : SubtargetFeature<"no-sdst-cmpx",
851 def FeatureGetWaveIdInst : SubtargetFeature<"get-wave-id-inst",
857 def FeatureSMemTimeInst : SubtargetFeature<"s-memtime-inst",
863 def FeatureShaderCyclesRegister : SubtargetFeature<"shader-cycles-register",
869 def FeatureShaderCyclesHiLoRegisters : SubtargetFeature<"shader-cycles-hi-lo-registers",
875 def FeatureMadMacF32Insts : SubtargetFeature<"mad-mac-f32-insts",
881 def FeatureDsSrc2Insts : SubtargetFeature<"ds-src2-insts",
887 def FeatureVOP3Literal : SubtargetFeature<"vop3-literal",
893 def FeatureNoDataDepHazard : SubtargetFeature<"no-data-dep-hazard",
914 def FeatureVALUTransUseHazard : SubtargetFeature<"valu-trans-use-hazard",
920 def FeatureForceStoreSC0SC1 : SubtargetFeature<"force-store-sc0-sc1",
926 def FeatureSALUFloatInsts : SubtargetFeature<"salu-float",
932 def FeatureVGPRSingleUseHintInsts : SubtargetFeature<"vgpr-singleuse-hint",
935 "Has single-use VGPR hint instructions"
938 def FeaturePseudoScalarTrans : SubtargetFeature<"pseudo-scalar-trans",
944 def FeatureHasRestrictedSOffset : SubtargetFeature<"restricted-soffset",
950 def FeatureRequiredExportPriority : SubtargetFeature<"required-export-priority",
956 def FeatureVmemWriteVgprInOrder : SubtargetFeature<"vmem-write-vgpr-in-order",
962 //===------------------------------------------------------------===//
964 //===------------------------------------------------------------===//
967 "max-private-element-size-"#size,
989 // XXX - This should probably be removed once enabled by default
990 def FeatureEnableLoadStoreOpt : SubtargetFeature <"load-store-opt",
998 // base pointer values that won't give the same result as a 16-bit add
1002 "unsafe-ds-offset-folding",
1008 def FeatureEnableSIScheduler : SubtargetFeature<"si-scheduler",
1014 def FeatureEnableDS128 : SubtargetFeature<"enable-ds128",
1024 def FeatureEnablePRTStrictNull : SubtargetFeature<"enable-prt-strict-null",
1030 // Unless +-flat-for-global is specified, turn on FlatForGlobal for
1031 // all OS-es on VI and newer hardware to avoid assertion failures due
1036 def FeatureFlatForGlobal : SubtargetFeature<"flat-for-global",
1043 "auto-waitcnt-before-barrier",
1049 def FeatureBackOffBarrier : SubtargetFeature <"back-off-barrier",
1055 def FeatureTrigReducedRange : SubtargetFeature<"trig-reduced-range",
1061 def FeatureKernargPreload : SubtargetFeature <"kernarg-preload",
1069 def FeatureUnalignedAccessMode : SubtargetFeature<"unaligned-access-mode",
1076 def FeaturePackedTID : SubtargetFeature<"packed-tid",
1082 def FeatureArchitectedFlatScratch : SubtargetFeature<"architected-flat-scratch",
1088 def FeatureArchitectedSGPRs : SubtargetFeature<"architected-sgprs",
1106 def FeatureRequiresCOV6 : SubtargetFeature<"requires-cov6",
1118 //===----------------------------------------------------------------------===//
1126 "southern-islands",
1138 "sea-islands",
1152 "volcanic-islands",
1256 //===----------------------------------------------------------------------===//
1678 //===----------------------------------------------------------------------===//
1763 //===----------------------------------------------------------------------===//
1765 //===----------------------------------------------------------------------===//
1768 Predicate<"Subtarget->getGeneration() == AMDGPUSubtarget::SOUTHERN_ISLANDS">,
1772 Predicate<"Subtarget->getGeneration() == AMDGPUSubtarget::SOUTHERN_ISLANDS ||"
1773 "Subtarget->getGeneration() == AMDGPUSubtarget::SEA_ISLANDS">,
1777 Predicate<"Subtarget->getGeneration() == AMDGPUSubtarget::SOUTHERN_ISLANDS ||"
1778 "Subtarget->getGeneration() == AMDGPUSubtarget::SEA_ISLANDS ||"
1779 "Subtarget->getGeneration() == AMDGPUSubtarget::GFX10">,
1783 Predicate<"Subtarget->getGeneration() == AMDGPUSubtarget::SOUTHERN_ISLANDS ||"
1784 "Subtarget->getGeneration() == AMDGPUSubtarget::SEA_ISLANDS ||"
1785 "Subtarget->getGeneration() >= AMDGPUSubtarget::GFX10">,
1789 Predicate<"Subtarget->getGeneration() == AMDGPUSubtarget::SEA_ISLANDS">,
1793 Predicate<"Subtarget->getGeneration() == AMDGPUSubtarget::SEA_ISLANDS ||"
1794 "Subtarget->getGeneration() == AMDGPUSubtarget::GFX10">,
1798 Predicate<"Subtarget->getGeneration() == AMDGPUSubtarget::SEA_ISLANDS ||"
1799 "Subtarget->getGeneration() == AMDGPUSubtarget::GFX10 ||"
1800 "Subtarget->getGeneration() == AMDGPUSubtarget::GFX11">,
1804 Predicate<"Subtarget->getGeneration() == AMDGPUSubtarget::SEA_ISLANDS ||"
1805 "Subtarget->getGeneration() == AMDGPUSubtarget::VOLCANIC_ISLANDS ||"
1806 "Subtarget->getGeneration() == AMDGPUSubtarget::GFX9">,
1810 Predicate<"Subtarget->getGeneration() == AMDGPUSubtarget::SOUTHERN_ISLANDS ||"
1811 "Subtarget->getGeneration() == AMDGPUSubtarget::SEA_ISLANDS ||"
1812 "Subtarget->getGeneration() == AMDGPUSubtarget::VOLCANIC_ISLANDS ||"
1813 "Subtarget->getGeneration() == AMDGPUSubtarget::GFX9">,
1817 Predicate<"!Subtarget->hasGFX90AInsts() &&"
1818 "(Subtarget->getGeneration() == AMDGPUSubtarget::SOUTHERN_ISLANDS ||"
1819 " Subtarget->getGeneration() == AMDGPUSubtarget::SEA_ISLANDS ||"
1820 " Subtarget->getGeneration() == AMDGPUSubtarget::VOLCANIC_ISLANDS ||"
1821 " Subtarget->getGeneration() == AMDGPUSubtarget::GFX9)">,
1825 Predicate<"Subtarget->getGeneration() == AMDGPUSubtarget::SOUTHERN_ISLANDS ||"
1826 "Subtarget->getGeneration() == AMDGPUSubtarget::SEA_ISLANDS ||"
1827 "Subtarget->getGeneration() == AMDGPUSubtarget::VOLCANIC_ISLANDS ||"
1828 "Subtarget->getGeneration() == AMDGPUSubtarget::GFX9 ||"
1829 "Subtarget->getGeneration() == AMDGPUSubtarget::GFX10">,
1833 Predicate<"Subtarget->getGeneration() <= AMDGPUSubtarget::GFX11">,
1837 Predicate<"Subtarget->getGeneration() == AMDGPUSubtarget::SEA_ISLANDS ||"
1838 "Subtarget->getGeneration() == AMDGPUSubtarget::VOLCANIC_ISLANDS ||"
1839 "Subtarget->getGeneration() == AMDGPUSubtarget::GFX9 ||"
1840 "Subtarget->getGeneration() == AMDGPUSubtarget::GFX10">,
1844 Predicate<"Subtarget->getGeneration() == AMDGPUSubtarget::VOLCANIC_ISLANDS ||"
1845 "Subtarget->getGeneration() == AMDGPUSubtarget::GFX9 ||"
1846 "Subtarget->getGeneration() == AMDGPUSubtarget::GFX10 ||"
1847 "Subtarget->getGeneration() == AMDGPUSubtarget::GFX11">,
1851 Predicate<"Subtarget->getGeneration() >= AMDGPUSubtarget::SEA_ISLANDS">,
1855 Predicate<"Subtarget->getGeneration() >= AMDGPUSubtarget::VOLCANIC_ISLANDS">,
1858 def isGFX8Only : Predicate<"Subtarget->getGeneration() =="
1863 Predicate<"Subtarget->getGeneration() >= AMDGPUSubtarget::GFX9">,
1867 Predicate<"Subtarget->getGeneration() < AMDGPUSubtarget::GFX9">;
1870 "Subtarget->getGeneration() == AMDGPUSubtarget::GFX9">,
1874 Predicate<"Subtarget->isGCN3Encoding() && !Subtarget->hasGFX90AInsts()">,
1878 Predicate<"Subtarget->hasGFX90AInsts()">,
1882 Predicate<"!Subtarget->hasGFX90AInsts()">,
1886 Predicate<"!Subtarget->hasGFX90AInsts() &&"
1887 "(Subtarget->getGeneration() == AMDGPUSubtarget::VOLCANIC_ISLANDS ||"
1888 " Subtarget->getGeneration() == AMDGPUSubtarget::GFX9)">,
1892 Predicate<"Subtarget->hasGFX90AInsts() && !Subtarget->hasGFX940Insts()">,
1896 Predicate<"Subtarget->hasMAIInsts() && !Subtarget->hasGFX940Insts()">,
1900 Predicate<"Subtarget->hasGFX940Insts()">,
1904 Predicate<"!Subtarget->hasGFX940Insts() &&"
1905 "(Subtarget->getGeneration() == AMDGPUSubtarget::VOLCANIC_ISLANDS ||"
1906 " Subtarget->getGeneration() == AMDGPUSubtarget::GFX9)">,
1910 Predicate<"Subtarget->getGeneration() == AMDGPUSubtarget::VOLCANIC_ISLANDS ||"
1911 "Subtarget->getGeneration() == AMDGPUSubtarget::GFX9">,
1915 Predicate<"Subtarget->getGeneration() == AMDGPUSubtarget::GFX10">,
1919 Predicate<"Subtarget->getGeneration() >= AMDGPUSubtarget::GFX10">,
1923 Predicate<"Subtarget->getGeneration() == AMDGPUSubtarget::GFX10 ||"
1924 "Subtarget->getGeneration() == AMDGPUSubtarget::GFX11">,
1928 Predicate<"Subtarget->getGeneration() == AMDGPUSubtarget::GFX10 &&"
1929 "!Subtarget->hasGFX10_3Insts()">,
1933 Predicate<"Subtarget->getGeneration() == AMDGPUSubtarget::GFX9 ||"
1934 "Subtarget->getGeneration() == AMDGPUSubtarget::GFX10">,
1938 Predicate<"Subtarget->getGeneration() == AMDGPUSubtarget::VOLCANIC_ISLANDS ||"
1939 "Subtarget->getGeneration() == AMDGPUSubtarget::GFX9 ||"
1940 "Subtarget->getGeneration() == AMDGPUSubtarget::GFX10">,
1944 Predicate<"Subtarget->getGeneration() == AMDGPUSubtarget::GFX11">,
1948 Predicate<"Subtarget->getGeneration() >= AMDGPUSubtarget::GFX11">,
1952 Predicate<"Subtarget->getGeneration() == AMDGPUSubtarget::GFX12">,
1956 Predicate<"Subtarget->getGeneration() >= AMDGPUSubtarget::GFX12">,
1959 def HasFlatAddressSpace : Predicate<"Subtarget->hasFlatAddressSpace()">,
1963 Predicate<"Subtarget->hasFlatBufferGlobalAtomicFaddF64Inst()">,
1967 Predicate<"Subtarget->hasAtomicFMinFMaxF32GlobalInsts()">,
1971 Predicate<"Subtarget->hasAtomicFMinFMaxF64GlobalInsts()">,
1975 Predicate<"Subtarget->hasAtomicFMinFMaxF32FlatInsts()">,
1979 Predicate<"Subtarget->hasAtomicFMinFMaxF64FlatInsts()">,
1983 Predicate<"Subtarget->hasLdsAtomicAddF64()">,
1986 def HasFlatGlobalInsts : Predicate<"Subtarget->hasFlatGlobalInsts()">,
1988 def HasFlatScratchInsts : Predicate<"Subtarget->hasFlatScratchInsts()">,
1990 def HasScalarFlatScratchInsts : Predicate<"Subtarget->hasScalarFlatScratchInsts()">,
1992 def HasD16LoadStore : Predicate<"Subtarget->hasD16LoadStore()">,
1995 def HasFlatScratchSTMode : Predicate<"Subtarget->hasFlatScratchSTMode()">,
1997 def HasFlatScratchSVSMode : Predicate<"Subtarget->hasFlatScratchSVSMode()">,
2000 def HasGFX10_AEncoding : Predicate<"Subtarget->hasGFX10_AEncoding()">,
2003 def HasGFX10_BEncoding : Predicate<"Subtarget->hasGFX10_BEncoding()">,
2006 def HasUnpackedD16VMem : Predicate<"Subtarget->hasUnpackedD16VMem()">,
2008 def HasPackedD16VMem : Predicate<"!Subtarget->hasUnpackedD16VMem()">,
2011 def HasRestrictedSOffset : Predicate<"Subtarget->hasRestrictedSOffset()">,
2013 def HasUnrestrictedSOffset : Predicate<"!Subtarget->hasRestrictedSOffset()">,
2017 Predicate<"Subtarget->d16PreservesUnusedBits()">,
2020 def LDSRequiresM0Init : Predicate<"Subtarget->ldsRequiresM0Init()">;
2021 def NotLDSRequiresM0Init : Predicate<"!Subtarget->ldsRequiresM0Init()">;
2023 def HasExportInsts : Predicate<"Subtarget->hasExportInsts()">,
2026 def HasVINTERPEncoding : Predicate<"Subtarget->hasVINTERPEncoding()">,
2029 def HasDSAddTid : Predicate<"Subtarget->getGeneration() >= AMDGPUSubtarget::GFX9">,
2032 def HasLDSFPAtomicAddF32 : Predicate<"Subtarget->hasLDSFPAtomicAddF32()">,
2035 def HasAddNoCarryInsts : Predicate<"Subtarget->hasAddNoCarry()">,
2038 def NotHasAddNoCarryInsts : Predicate<"!Subtarget->hasAddNoCarry()">;
2040 def HasXNACKEnabled : Predicate<"Subtarget->isXNACKEnabled()">;
2042 def Has16BitInsts : Predicate<"Subtarget->has16BitInsts()">,
2045 def HasTrue16BitInsts : Predicate<"Subtarget->hasTrue16BitInsts()">,
2047 def NotHasTrue16BitInsts : True16PredicateClass<"!Subtarget->hasTrue16BitInsts()">,
2053 // only allow 32-bit registers in operands and use low halves thereof.
2054 def UseRealTrue16Insts : True16PredicateClass<"Subtarget->useRealTrue16Insts()">,
2056 def UseFakeTrue16Insts : True16PredicateClass<"Subtarget->hasTrue16BitInsts() && "
2057 "!Subtarget->useRealTrue16Insts()">,
2062 def HasVOP3PInsts : Predicate<"Subtarget->hasVOP3PInsts()">,
2065 def NotHasMed3_16 : Predicate<"!Subtarget->hasMed3_16()">;
2066 def HasMed3_16 : Predicate<"Subtarget->hasMed3_16()">;
2068 def HasMinMaxDenormModes : Predicate<"Subtarget->supportsMinMaxDenormModes()">;
2069 def NotHasMinMaxDenormModes : Predicate<"!Subtarget->supportsMinMaxDenormModes()">;
2071 def HasFminFmaxLegacy : Predicate<"Subtarget->hasFminFmaxLegacy()">;
2073 def HasSDWA : Predicate<"Subtarget->hasSDWA()">,
2077 Predicate<"Subtarget->hasSDWA()">,
2081 Predicate<"Subtarget->hasSDWA()">,
2084 def HasDPP : Predicate<"Subtarget->hasDPP()">,
2087 def HasDPP8 : Predicate<"Subtarget->hasDPP8()">,
2090 def HasDPALU_DPP : Predicate<"Subtarget->hasDPALU_DPP()">,
2093 def HasPackedFP32Ops : Predicate<"Subtarget->hasPackedFP32Ops()">,
2096 def HasPkMovB32 : Predicate<"Subtarget->hasPkMovB32()">,
2100 Predicate<"Subtarget->hasFmaakFmamkF32Insts()">,
2103 def HasImageInsts : Predicate<"Subtarget->hasImageInsts()">,
2106 def HasExtendedImageInsts : Predicate<"Subtarget->hasExtendedImageInsts()">,
2109 def HasR128A16 : Predicate<"Subtarget->hasR128A16()">,
2112 def HasA16 : Predicate<"Subtarget->hasA16()">,
2115 def HasG16 : Predicate<"Subtarget->hasG16()">,
2118 def HasDPP16 : Predicate<"Subtarget->hasDPP()">,
2121 def HasIntClamp : Predicate<"Subtarget->hasIntClamp()">,
2124 def HasMadMixInsts : Predicate<"Subtarget->hasMadMixInsts()">,
2127 def HasScalarStores : Predicate<"Subtarget->hasScalarStores()">,
2130 def HasScalarAtomics : Predicate<"Subtarget->hasScalarAtomics()">,
2133 def HasNoSdstCMPX : Predicate<"Subtarget->hasNoSdstCMPX()">,
2136 def HasSdstCMPX : Predicate<"!Subtarget->hasNoSdstCMPX()">,
2139 def has16BankLDS : Predicate<"Subtarget->getLDSBankCount() == 16">;
2140 def has32BankLDS : Predicate<"Subtarget->getLDSBankCount() == 32">;
2141 def HasVGPRIndexMode : Predicate<"Subtarget->hasVGPRIndexMode()">,
2143 def HasMovrel : Predicate<"Subtarget->hasMovrel()">,
2146 def HasFmaMixInsts : Predicate<"Subtarget->hasFmaMixInsts()">,
2149 def HasDLInsts : Predicate<"Subtarget->hasDLInsts()">,
2152 def HasFmacF64Inst : Predicate<"Subtarget->hasFmacF64Inst()">,
2155 def HasDot1Insts : Predicate<"Subtarget->hasDot1Insts()">,
2158 def HasDot2Insts : Predicate<"Subtarget->hasDot2Insts()">,
2161 def HasDot3Insts : Predicate<"Subtarget->hasDot3Insts()">,
2164 def HasDot4Insts : Predicate<"Subtarget->hasDot4Insts()">,
2167 def HasDot5Insts : Predicate<"Subtarget->hasDot5Insts()">,
2170 def HasDot6Insts : Predicate<"Subtarget->hasDot6Insts()">,
2173 def HasDot7Insts : Predicate<"Subtarget->hasDot7Insts()">,
2176 def HasDot8Insts : Predicate<"Subtarget->hasDot8Insts()">,
2179 def HasDot9Insts : Predicate<"Subtarget->hasDot9Insts()">,
2182 def HasDot10Insts : Predicate<"Subtarget->hasDot10Insts()">,
2185 def HasDot11Insts : Predicate<"Subtarget->hasDot11Insts()">,
2188 def HasGetWaveIdInst : Predicate<"Subtarget->hasGetWaveIdInst()">,
2191 def HasMAIInsts : Predicate<"Subtarget->hasMAIInsts()">,
2194 def HasSMemRealTime : Predicate<"Subtarget->hasSMemRealTime()">,
2197 def HasSMemTimeInst : Predicate<"Subtarget->hasSMemTimeInst()">,
2200 def HasShaderCyclesRegister : Predicate<"Subtarget->hasShaderCyclesRegister()">,
2203 def HasShaderCyclesHiLoRegisters : Predicate<"Subtarget->hasShaderCyclesHiLoRegisters()">;
2205 def HasFP8Insts : Predicate<"Subtarget->hasFP8Insts()">,
2208 def HasFP8ConversionInsts : Predicate<"Subtarget->hasFP8ConversionInsts()">,
2211 def HasPkFmacF16Inst : Predicate<"Subtarget->hasPkFmacF16Inst()">,
2214 def HasMadMacF32Insts : Predicate<"Subtarget->hasMadMacF32Insts()">,
2217 def HasFmaLegacy32 : Predicate<"Subtarget->hasGFX10_3Insts()">,
2220 def HasAtomicDsPkAdd16Insts : Predicate<"Subtarget->hasAtomicDsPkAdd16Insts()">,
2223 def HasAtomicFlatPkAdd16Insts : Predicate<"Subtarget->hasAtomicFlatPkAdd16Insts()">,
2226 def HasAtomicFaddRtnInsts : Predicate<"Subtarget->hasAtomicFaddRtnInsts()">,
2228 def HasAtomicFaddNoRtnInsts : Predicate<"Subtarget->hasAtomicFaddNoRtnInsts()">,
2231 …: Predicate<"Subtarget->hasAtomicBufferGlobalPkAddF16NoRtnInsts() || Subtarget->hasAtomicBufferGlo…
2234 : Predicate<"Subtarget->hasAtomicBufferGlobalPkAddF16Insts()">,
2237 : Predicate<"Subtarget->hasAtomicGlobalPkAddBF16Inst()">,
2240 : Predicate<"Subtarget->hasAtomicBufferPkAddBF16Inst()">,
2243 : Predicate<"Subtarget->hasFlatAtomicFaddF32Inst()">,
2247 : Predicate<"Subtarget->hasDefaultComponentZero()">,
2250 : Predicate<"Subtarget->hasDefaultComponentBroadcast()">,
2253 def HasDsSrc2Insts : Predicate<"!Subtarget->hasDsSrc2Insts()">,
2259 def EnableFlatScratch : Predicate<"Subtarget->enableFlatScratch()">;
2261 def DisableFlatScratch : Predicate<"!Subtarget->enableFlatScratch()">;
2263 def HasUnalignedAccessMode : Predicate<"Subtarget->hasUnalignedAccessMode()">,
2266 def HasMADIntraFwdBug : Predicate<"Subtarget->hasMADIntraFwdBug()">;
2268 def HasNotMADIntraFwdBug : Predicate<"!Subtarget->hasMADIntraFwdBug()">;
2270 def HasSALUFloatInsts : Predicate<"Subtarget->hasSALUFloatInsts()">,
2273 def HasVGPRSingleUseHintInsts : Predicate<"Subtarget->hasVGPRSingleUseHintInsts()">,
2276 def HasPseudoScalarTrans : Predicate<"Subtarget->hasPseudoScalarTrans()">,
2279 def HasGDS : Predicate<"Subtarget->hasGDS()">;
2281 def HasGWS : Predicate<"Subtarget->hasGWS()">;
2283 def HasCvtFP8VOP1Bug : Predicate<"Subtarget->hasCvtFP8VOP1Bug()">;
2284 def HasNoCvtFP8VOP1Bug : Predicate<"!Subtarget->hasCvtFP8VOP1Bug()">;
2286 def HasAtomicCSubNoRtnInsts : Predicate<"Subtarget->hasAtomicCSubNoRtnInsts()">;
2288 def HasScalarDwordx3Loads : Predicate<"Subtarget->hasScalarDwordx3Loads()">;