1 //===-- AMDGPU.td - AMDGPU Tablegen files --------*- tablegen -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===------------------------------------------------------------===//
10 include "llvm/TableGen/SearchableTable.td"
11 include "llvm/Target/Target.td"
12 include "AMDGPUFeatures.td"
14 //===------------------------------------------------------------===//
15 // Subtarget Features (device properties)
16 //===------------------------------------------------------------===//
18 def FeatureFastFMAF32 : SubtargetFeature<"fast-fmaf",
21 "Assuming f32 fma is at least as fast as mul + add"
24 def FeatureMIMG_R128 : SubtargetFeature<"mimg-r128",
27 "Support 128-bit texture resources"
30 def HalfRate64Ops : SubtargetFeature<"half-rate-64-ops",
33 "Most fp64 instructions are half rate instead of quarter"
36 def FeatureFlatAddressSpace : SubtargetFeature<"flat-address-space",
39 "Support flat address space"
42 def FeatureFlatInstOffsets : SubtargetFeature<"flat-inst-offsets",
45 "Flat instructions have immediate offset addressing mode"
48 def FeatureFlatGlobalInsts : SubtargetFeature<"flat-global-insts",
51 "Have global_* flat memory instructions"
54 def FeatureFlatScratchInsts : SubtargetFeature<"flat-scratch-insts",
57 "Have scratch_* flat memory instructions"
60 def FeatureAddNoCarryInsts : SubtargetFeature<"add-no-carry-insts",
63 "Have VALU add/sub instructions without carry out"
66 def FeatureUnalignedBufferAccess : SubtargetFeature<"unaligned-buffer-access",
67 "UnalignedBufferAccess",
69 "Support unaligned global loads and stores"
72 def FeatureTrapHandler: SubtargetFeature<"trap-handler",
75 "Trap handler support"
78 def FeatureUnalignedScratchAccess : SubtargetFeature<"unaligned-scratch-access",
79 "UnalignedScratchAccess",
81 "Support unaligned scratch loads and stores"
84 def FeatureApertureRegs : SubtargetFeature<"aperture-regs",
87 "Has Memory Aperture Base and Size Registers"
90 def FeatureMadMixInsts : SubtargetFeature<"mad-mix-insts",
93 "Has v_mad_mix_f32, v_mad_mixlo_f16, v_mad_mixhi_f16 instructions"
96 def FeatureFmaMixInsts : SubtargetFeature<"fma-mix-insts",
99 "Has v_fma_mix_f32, v_fma_mixlo_f16, v_fma_mixhi_f16 instructions"
102 // XNACK is disabled if SH_MEM_CONFIG.ADDRESS_MODE = GPUVM on chips that support
103 // XNACK. The current default kernel driver setting is:
104 // - graphics ring: XNACK disabled
105 // - compute ring: XNACK enabled
107 // If XNACK is enabled, the VMEM latency can be worse.
108 // If XNACK is disabled, the 2 SGPRs can be used for general purposes.
109 def FeatureXNACK : SubtargetFeature<"xnack",
112 "Enable XNACK support"
115 def FeatureSGPRInitBug : SubtargetFeature<"sgpr-init-bug",
118 "VI SGPR initialization bug requiring a fixed SGPR allocation size"
121 class SubtargetFeatureLDSBankCount <int Value> : SubtargetFeature <
122 "ldsbankcount"#Value,
124 !cast<string>(Value),
125 "The number of LDS banks per compute unit."
128 def FeatureLDSBankCount16 : SubtargetFeatureLDSBankCount<16>;
129 def FeatureLDSBankCount32 : SubtargetFeatureLDSBankCount<32>;
131 def FeatureGCN3Encoding : SubtargetFeature<"gcn3-encoding",
134 "Encoding format for VI"
137 def FeatureCIInsts : SubtargetFeature<"ci-insts",
140 "Additional instructions for CI+"
143 def FeatureGFX9Insts : SubtargetFeature<"gfx9-insts",
146 "Additional instructions for GFX9+"
149 def FeatureSMemRealTime : SubtargetFeature<"s-memrealtime",
152 "Has s_memrealtime instruction"
155 def FeatureInv2PiInlineImm : SubtargetFeature<"inv-2pi-inline-imm",
156 "HasInv2PiInlineImm",
158 "Has 1 / (2 * pi) as inline immediate"
161 def Feature16BitInsts : SubtargetFeature<"16-bit-insts",
164 "Has i16/f16 instructions"
167 def FeatureVOP3P : SubtargetFeature<"vop3p",
170 "Has VOP3P packed instructions"
173 def FeatureMovrel : SubtargetFeature<"movrel",
176 "Has v_movrel*_b32 instructions"
179 def FeatureVGPRIndexMode : SubtargetFeature<"vgpr-index-mode",
182 "Has VGPR mode register indexing"
185 def FeatureScalarStores : SubtargetFeature<"scalar-stores",
188 "Has store scalar memory instructions"
191 def FeatureScalarAtomics : SubtargetFeature<"scalar-atomics",
194 "Has atomic scalar memory instructions"
197 def FeatureSDWA : SubtargetFeature<"sdwa",
200 "Support SDWA (Sub-DWORD Addressing) extension"
203 def FeatureSDWAOmod : SubtargetFeature<"sdwa-omod",
206 "Support OMod with SDWA (Sub-DWORD Addressing) extension"
209 def FeatureSDWAScalar : SubtargetFeature<"sdwa-scalar",
212 "Support scalar register with SDWA (Sub-DWORD Addressing) extension"
215 def FeatureSDWASdst : SubtargetFeature<"sdwa-sdst",
218 "Support scalar dst for VOPC with SDWA (Sub-DWORD Addressing) extension"
221 def FeatureSDWAMac : SubtargetFeature<"sdwa-mav",
224 "Support v_mac_f32/f16 with SDWA (Sub-DWORD Addressing) extension"
227 def FeatureSDWAOutModsVOPC : SubtargetFeature<"sdwa-out-mods-vopc",
228 "HasSDWAOutModsVOPC",
230 "Support clamp for VOPC with SDWA (Sub-DWORD Addressing) extension"
233 def FeatureDPP : SubtargetFeature<"dpp",
236 "Support DPP (Data Parallel Primitives) extension"
239 def FeatureIntClamp : SubtargetFeature<"int-clamp-insts",
242 "Support clamp for integer destination"
245 def FeatureUnpackedD16VMem : SubtargetFeature<"unpacked-d16-vmem",
246 "HasUnpackedD16VMem",
248 "Has unpacked d16 vmem instructions"
251 def FeatureDLInsts : SubtargetFeature<"dl-insts",
254 "Has deep learning instructions"
257 def FeatureD16PreservesUnusedBits : SubtargetFeature<
258 "d16-preserves-unused-bits",
259 "D16PreservesUnusedBits",
261 "If present, then instructions defined by HasD16LoadStore predicate preserve "
262 "unused bits. Otherwise instructions defined by HasD16LoadStore predicate "
266 //===------------------------------------------------------------===//
267 // Subtarget Features (options and debugging)
268 //===------------------------------------------------------------===//
270 // Some instructions do not support denormals despite this flag. Using
271 // fp32 denormals also causes instructions to run at the double
272 // precision rate for the device.
273 def FeatureFP32Denormals : SubtargetFeature<"fp32-denormals",
276 "Enable single precision denormal handling"
279 // Denormal handling for fp64 and fp16 is controlled by the same
280 // config register when fp16 supported.
281 // TODO: Do we need a separate f16 setting when not legal?
282 def FeatureFP64FP16Denormals : SubtargetFeature<"fp64-fp16-denormals",
285 "Enable double and half precision denormal handling",
289 def FeatureFP64Denormals : SubtargetFeature<"fp64-denormals",
292 "Enable double and half precision denormal handling",
293 [FeatureFP64, FeatureFP64FP16Denormals]
296 def FeatureFP16Denormals : SubtargetFeature<"fp16-denormals",
299 "Enable half precision denormal handling",
300 [FeatureFP64FP16Denormals]
303 def FeatureFPExceptions : SubtargetFeature<"fp-exceptions",
306 "Enable floating point exceptions"
309 class FeatureMaxPrivateElementSize<int size> : SubtargetFeature<
310 "max-private-element-size-"#size,
311 "MaxPrivateElementSize",
313 "Maximum private access size may be "#size
316 def FeatureMaxPrivateElementSize4 : FeatureMaxPrivateElementSize<4>;
317 def FeatureMaxPrivateElementSize8 : FeatureMaxPrivateElementSize<8>;
318 def FeatureMaxPrivateElementSize16 : FeatureMaxPrivateElementSize<16>;
320 def FeatureEnableHugePrivateBuffer : SubtargetFeature<
321 "huge-private-buffer",
322 "EnableHugePrivateBuffer",
324 "Enable private/scratch buffer sizes greater than 128 GB"
327 def FeatureVGPRSpilling : SubtargetFeature<"vgpr-spilling",
328 "EnableVGPRSpilling",
330 "Enable spilling of VGPRs to scratch memory"
333 def FeatureDumpCode : SubtargetFeature <"DumpCode",
336 "Dump MachineInstrs in the CodeEmitter"
339 def FeatureDumpCodeLower : SubtargetFeature <"dumpcode",
342 "Dump MachineInstrs in the CodeEmitter"
345 // XXX - This should probably be removed once enabled by default
346 def FeatureEnableLoadStoreOpt : SubtargetFeature <"load-store-opt",
347 "EnableLoadStoreOpt",
349 "Enable SI load/store optimizer pass"
352 // Performance debugging feature. Allow using DS instruction immediate
353 // offsets even if the base pointer can't be proven to be base. On SI,
354 // base pointer values that won't give the same result as a 16-bit add
355 // are not safe to fold, but this will override the conservative test
356 // for the base pointer.
357 def FeatureEnableUnsafeDSOffsetFolding : SubtargetFeature <
358 "unsafe-ds-offset-folding",
359 "EnableUnsafeDSOffsetFolding",
361 "Force using DS instruction immediate offsets on SI"
364 def FeatureEnableSIScheduler : SubtargetFeature<"si-scheduler",
367 "Enable SI Machine Scheduler"
370 def FeatureEnableDS128 : SubtargetFeature<"enable-ds128",
373 "Use ds_{read|write}_b128"
376 // Unless +-flat-for-global is specified, turn on FlatForGlobal for
377 // all OS-es on VI and newer hardware to avoid assertion failures due
378 // to missing ADDR64 variants of MUBUF instructions.
379 // FIXME: moveToVALU should be able to handle converting addr64 MUBUF
382 def FeatureFlatForGlobal : SubtargetFeature<"flat-for-global",
385 "Force to generate flat instruction for global"
388 def FeatureAutoWaitcntBeforeBarrier : SubtargetFeature <
389 "auto-waitcnt-before-barrier",
390 "AutoWaitcntBeforeBarrier",
392 "Hardware automatically inserts waitcnt before barrier"
395 def FeatureCodeObjectV3 : SubtargetFeature <
399 "Generate code object version 3"
402 // Dummy feature used to disable assembler instructions.
403 def FeatureDisable : SubtargetFeature<"",
404 "FeatureDisable","true",
405 "Dummy feature to disable assembler instructions"
408 def FeatureGCN : SubtargetFeature<"gcn",
414 class GCNSubtargetFeatureGeneration <string Value,
415 list<SubtargetFeature> Implies> :
416 SubtargetFeatureGeneration <Value, "GCNSubtarget", Implies>;
418 def FeatureSouthernIslands : GCNSubtargetFeatureGeneration<"SOUTHERN_ISLANDS",
419 [FeatureFP64, FeatureLocalMemorySize32768, FeatureMIMG_R128,
420 FeatureWavefrontSize64, FeatureGCN,
421 FeatureLDSBankCount32, FeatureMovrel]
424 def FeatureSeaIslands : GCNSubtargetFeatureGeneration<"SEA_ISLANDS",
425 [FeatureFP64, FeatureLocalMemorySize65536, FeatureMIMG_R128,
426 FeatureWavefrontSize64, FeatureGCN, FeatureFlatAddressSpace,
427 FeatureCIInsts, FeatureMovrel]
430 def FeatureVolcanicIslands : GCNSubtargetFeatureGeneration<"VOLCANIC_ISLANDS",
431 [FeatureFP64, FeatureLocalMemorySize65536, FeatureMIMG_R128,
432 FeatureWavefrontSize64, FeatureFlatAddressSpace, FeatureGCN,
433 FeatureGCN3Encoding, FeatureCIInsts, Feature16BitInsts,
434 FeatureSMemRealTime, FeatureVGPRIndexMode, FeatureMovrel,
435 FeatureScalarStores, FeatureInv2PiInlineImm,
436 FeatureSDWA, FeatureSDWAOutModsVOPC, FeatureSDWAMac, FeatureDPP,
441 def FeatureGFX9 : GCNSubtargetFeatureGeneration<"GFX9",
442 [FeatureFP64, FeatureLocalMemorySize65536,
443 FeatureWavefrontSize64, FeatureFlatAddressSpace, FeatureGCN,
444 FeatureGCN3Encoding, FeatureCIInsts, Feature16BitInsts,
445 FeatureSMemRealTime, FeatureScalarStores, FeatureInv2PiInlineImm,
446 FeatureApertureRegs, FeatureGFX9Insts, FeatureVOP3P, FeatureVGPRIndexMode,
447 FeatureFastFMAF32, FeatureDPP, FeatureIntClamp,
448 FeatureSDWA, FeatureSDWAOmod, FeatureSDWAScalar, FeatureSDWASdst,
449 FeatureFlatInstOffsets, FeatureFlatGlobalInsts, FeatureFlatScratchInsts,
450 FeatureAddNoCarryInsts, FeatureScalarAtomics
454 class SubtargetFeatureISAVersion <int Major, int Minor, int Stepping,
455 list<SubtargetFeature> Implies>
457 "isaver"#Major#"."#Minor#"."#Stepping,
459 "ISAVersion"#Major#"_"#Minor#"_"#Stepping,
460 "Instruction set version number",
464 def FeatureISAVersion6_0_0 : SubtargetFeatureISAVersion <6,0,0,
465 [FeatureSouthernIslands,
468 FeatureLDSBankCount32]>;
470 def FeatureISAVersion6_0_1 : SubtargetFeatureISAVersion <6,0,1,
471 [FeatureSouthernIslands,
472 FeatureLDSBankCount32]>;
474 def FeatureISAVersion7_0_0 : SubtargetFeatureISAVersion <7,0,0,
476 FeatureLDSBankCount32]>;
478 def FeatureISAVersion7_0_1 : SubtargetFeatureISAVersion <7,0,1,
481 FeatureLDSBankCount32,
484 def FeatureISAVersion7_0_2 : SubtargetFeatureISAVersion <7,0,2,
486 FeatureLDSBankCount16,
489 def FeatureISAVersion7_0_3 : SubtargetFeatureISAVersion <7,0,3,
491 FeatureLDSBankCount16]>;
493 def FeatureISAVersion7_0_4 : SubtargetFeatureISAVersion <7,0,4,
495 FeatureLDSBankCount32]>;
497 def FeatureISAVersion8_0_1 : SubtargetFeatureISAVersion <8,0,1,
498 [FeatureVolcanicIslands,
501 FeatureLDSBankCount32,
503 FeatureUnpackedD16VMem]>;
505 def FeatureISAVersion8_0_2 : SubtargetFeatureISAVersion <8,0,2,
506 [FeatureVolcanicIslands,
507 FeatureLDSBankCount32,
509 FeatureUnpackedD16VMem]>;
511 def FeatureISAVersion8_0_3 : SubtargetFeatureISAVersion <8,0,3,
512 [FeatureVolcanicIslands,
513 FeatureLDSBankCount32,
514 FeatureUnpackedD16VMem]>;
516 def FeatureISAVersion8_1_0 : SubtargetFeatureISAVersion <8,1,0,
517 [FeatureVolcanicIslands,
518 FeatureLDSBankCount16,
521 def FeatureISAVersion9_0_0 : SubtargetFeatureISAVersion <9,0,0,
524 FeatureLDSBankCount32,
525 FeatureD16PreservesUnusedBits]>;
527 def FeatureISAVersion9_0_2 : SubtargetFeatureISAVersion <9,0,2,
530 FeatureLDSBankCount32,
532 FeatureD16PreservesUnusedBits]>;
534 def FeatureISAVersion9_0_4 : SubtargetFeatureISAVersion <9,0,4,
536 FeatureLDSBankCount32,
538 FeatureD16PreservesUnusedBits]>;
540 def FeatureISAVersion9_0_6 : SubtargetFeatureISAVersion <9,0,6,
544 FeatureLDSBankCount32,
547 //===----------------------------------------------------------------------===//
548 // Debugger related subtarget features.
549 //===----------------------------------------------------------------------===//
551 def FeatureDebuggerInsertNops : SubtargetFeature<
552 "amdgpu-debugger-insert-nops",
553 "DebuggerInsertNops",
555 "Insert one nop instruction for each high level source statement"
558 def FeatureDebuggerEmitPrologue : SubtargetFeature<
559 "amdgpu-debugger-emit-prologue",
560 "DebuggerEmitPrologue",
562 "Emit debugger prologue"
565 //===----------------------------------------------------------------------===//
567 def AMDGPUInstrInfo : InstrInfo {
568 let guessInstructionProperties = 1;
569 let noNamedPositionallyEncodedOperands = 1;
572 def AMDGPUAsmParser : AsmParser {
573 // Some of the R600 registers have the same name, so this crashes.
574 // For example T0_XYZW and T0_XY both have the asm name T0.
575 let ShouldEmitMatchRegisterName = 0;
578 def AMDGPUAsmWriter : AsmWriter {
579 int PassSubtarget = 1;
582 def AMDGPUAsmVariants {
583 string Default = "Default";
585 string VOP3 = "VOP3";
587 string SDWA = "SDWA";
589 string SDWA9 = "SDWA9";
593 string Disable = "Disable";
597 def DefaultAMDGPUAsmParserVariant : AsmParserVariant {
598 let Variant = AMDGPUAsmVariants.Default_ID;
599 let Name = AMDGPUAsmVariants.Default;
602 def VOP3AsmParserVariant : AsmParserVariant {
603 let Variant = AMDGPUAsmVariants.VOP3_ID;
604 let Name = AMDGPUAsmVariants.VOP3;
607 def SDWAAsmParserVariant : AsmParserVariant {
608 let Variant = AMDGPUAsmVariants.SDWA_ID;
609 let Name = AMDGPUAsmVariants.SDWA;
612 def SDWA9AsmParserVariant : AsmParserVariant {
613 let Variant = AMDGPUAsmVariants.SDWA9_ID;
614 let Name = AMDGPUAsmVariants.SDWA9;
618 def DPPAsmParserVariant : AsmParserVariant {
619 let Variant = AMDGPUAsmVariants.DPP_ID;
620 let Name = AMDGPUAsmVariants.DPP;
623 def AMDGPU : Target {
624 // Pull in Instruction Info:
625 let InstructionSet = AMDGPUInstrInfo;
626 let AssemblyParsers = [AMDGPUAsmParser];
627 let AssemblyParserVariants = [DefaultAMDGPUAsmParserVariant,
628 VOP3AsmParserVariant,
629 SDWAAsmParserVariant,
630 SDWA9AsmParserVariant,
631 DPPAsmParserVariant];
632 let AssemblyWriters = [AMDGPUAsmWriter];
633 let AllowRegisterRenaming = 1;
636 // Dummy Instruction itineraries for pseudo instructions
637 def ALU_NULL : FuncUnit;
638 def NullALU : InstrItinClass;
640 //===----------------------------------------------------------------------===//
641 // Predicate helper class
642 //===----------------------------------------------------------------------===//
644 def isSICI : Predicate<
645 "Subtarget->getGeneration() == AMDGPUSubtarget::SOUTHERN_ISLANDS ||"
646 "Subtarget->getGeneration() == AMDGPUSubtarget::SEA_ISLANDS"
647 >, AssemblerPredicate<"!FeatureGCN3Encoding">;
649 def isVI : Predicate <
650 "Subtarget->getGeneration() >= AMDGPUSubtarget::VOLCANIC_ISLANDS">,
651 AssemblerPredicate<"FeatureGCN3Encoding">;
653 def isGFX9 : Predicate <
654 "Subtarget->getGeneration() >= AMDGPUSubtarget::GFX9">,
655 AssemblerPredicate<"FeatureGFX9Insts">;
657 // TODO: Either the name to be changed or we simply use IsCI!
658 def isCIVI : Predicate <
659 "Subtarget->getGeneration() >= AMDGPUSubtarget::SEA_ISLANDS">,
660 AssemblerPredicate<"FeatureCIInsts">;
662 def HasFlatAddressSpace : Predicate<"Subtarget->hasFlatAddressSpace()">,
663 AssemblerPredicate<"FeatureFlatAddressSpace">;
665 def HasFlatGlobalInsts : Predicate<"Subtarget->hasFlatGlobalInsts()">,
666 AssemblerPredicate<"FeatureFlatGlobalInsts">;
667 def HasFlatScratchInsts : Predicate<"Subtarget->hasFlatScratchInsts()">,
668 AssemblerPredicate<"FeatureFlatScratchInsts">;
669 def HasD16LoadStore : Predicate<"Subtarget->hasD16LoadStore()">,
670 AssemblerPredicate<"FeatureGFX9Insts">;
672 def HasUnpackedD16VMem : Predicate<"Subtarget->hasUnpackedD16VMem()">,
673 AssemblerPredicate<"FeatureUnpackedD16VMem">;
674 def HasPackedD16VMem : Predicate<"!Subtarget->hasUnpackedD16VMem()">,
675 AssemblerPredicate<"!FeatureUnpackedD16VMem">;
677 def D16PreservesUnusedBits : Predicate<"Subtarget->d16PreservesUnusedBits()">,
678 AssemblerPredicate<"FeatureD16PreservesUnusedBits">;
680 def LDSRequiresM0Init : Predicate<"Subtarget->ldsRequiresM0Init()">;
681 def NotLDSRequiresM0Init : Predicate<"!Subtarget->ldsRequiresM0Init()">;
683 def HasDSAddTid : Predicate<"Subtarget->getGeneration() >= AMDGPUSubtarget::GFX9">,
684 AssemblerPredicate<"FeatureGFX9Insts">;
686 def HasAddNoCarryInsts : Predicate<"Subtarget->hasAddNoCarryInsts()">,
687 AssemblerPredicate<"FeatureAddNoCarryInsts">;
689 def NotHasAddNoCarryInsts : Predicate<"!Subtarget->hasAddNoCarryInsts()">,
690 AssemblerPredicate<"!FeatureAddNoCarryInsts">;
692 def Has16BitInsts : Predicate<"Subtarget->has16BitInsts()">,
693 AssemblerPredicate<"Feature16BitInsts">;
694 def HasVOP3PInsts : Predicate<"Subtarget->hasVOP3PInsts()">,
695 AssemblerPredicate<"FeatureVOP3P">;
697 def NotHasVOP3PInsts : Predicate<"!Subtarget->hasVOP3PInsts()">,
698 AssemblerPredicate<"!FeatureVOP3P">;
700 def HasSDWA : Predicate<"Subtarget->hasSDWA()">,
701 AssemblerPredicate<"FeatureSDWA,FeatureVolcanicIslands">;
703 def HasSDWA9 : Predicate<"Subtarget->hasSDWA()">,
704 AssemblerPredicate<"FeatureSDWA,FeatureGFX9">;
706 def HasDPP : Predicate<"Subtarget->hasDPP()">,
707 AssemblerPredicate<"FeatureDPP">;
709 def HasIntClamp : Predicate<"Subtarget->hasIntClamp()">,
710 AssemblerPredicate<"FeatureIntClamp">;
712 def HasMadMixInsts : Predicate<"Subtarget->hasMadMixInsts()">,
713 AssemblerPredicate<"FeatureMadMixInsts">;
715 def HasScalarAtomics : Predicate<"Subtarget->hasScalarAtomics()">,
716 AssemblerPredicate<"FeatureScalarAtomics">;
718 def has16BankLDS : Predicate<"Subtarget->getLDSBankCount() == 16">;
719 def has32BankLDS : Predicate<"Subtarget->getLDSBankCount() == 32">;
720 def HasVGPRIndexMode : Predicate<"Subtarget->hasVGPRIndexMode()">,
721 AssemblerPredicate<"FeatureVGPRIndexMode">;
722 def HasMovrel : Predicate<"Subtarget->hasMovrel()">,
723 AssemblerPredicate<"FeatureMovrel">;
725 def HasFmaMixInsts : Predicate<"Subtarget->hasFmaMixInsts()">,
726 AssemblerPredicate<"FeatureFmaMixInsts">;
728 def HasDLInsts : Predicate<"Subtarget->hasDLInsts()">,
729 AssemblerPredicate<"FeatureDLInsts">;
732 def EnableLateCFGStructurize : Predicate<
733 "EnableLateStructurizeCFG">;
735 // Include AMDGPU TD files
736 include "SISchedule.td"
737 include "GCNProcessors.td"
738 include "AMDGPUInstrInfo.td"
739 include "AMDGPUIntrinsics.td"
740 include "SIIntrinsics.td"
741 include "AMDGPURegisterInfo.td"
742 include "AMDGPURegisterBanks.td"
743 include "AMDGPUInstructions.td"
744 include "SIInstrInfo.td"
745 include "AMDGPUCallingConv.td"
746 include "AMDGPUSearchableTables.td"