AMDGPU.td revision 360784
1//===-- AMDGPU.td - AMDGPU Tablegen files --------*- tablegen -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===------------------------------------------------------------===//
8
9include "llvm/TableGen/SearchableTable.td"
10include "llvm/Target/Target.td"
11include "AMDGPUFeatures.td"
12
13def p0 : PtrValueType<i64, 0>;
14def p1 : PtrValueType<i64, 1>;
15def p2 : PtrValueType<i32, 2>;
16def p3 : PtrValueType<i32, 3>;
17def p4 : PtrValueType<i64, 4>;
18def p5 : PtrValueType<i32, 5>;
19def p6 : PtrValueType<i32, 6>;
20
21
22class BoolToList<bit Value> {
23  list<int> ret = !if(Value, [1]<int>, []<int>);
24}
25
26//===------------------------------------------------------------===//
27// Subtarget Features (device properties)
28//===------------------------------------------------------------===//
29
30def FeatureFastFMAF32 : SubtargetFeature<"fast-fmaf",
31  "FastFMAF32",
32  "true",
33  "Assuming f32 fma is at least as fast as mul + add"
34>;
35
36def FeatureMIMG_R128 : SubtargetFeature<"mimg-r128",
37  "MIMG_R128",
38  "true",
39  "Support 128-bit texture resources"
40>;
41
42def HalfRate64Ops : SubtargetFeature<"half-rate-64-ops",
43  "HalfRate64Ops",
44  "true",
45  "Most fp64 instructions are half rate instead of quarter"
46>;
47
48def FeatureFlatAddressSpace : SubtargetFeature<"flat-address-space",
49  "FlatAddressSpace",
50  "true",
51  "Support flat address space"
52>;
53
54def FeatureFlatInstOffsets : SubtargetFeature<"flat-inst-offsets",
55  "FlatInstOffsets",
56  "true",
57  "Flat instructions have immediate offset addressing mode"
58>;
59
60def FeatureFlatGlobalInsts : SubtargetFeature<"flat-global-insts",
61  "FlatGlobalInsts",
62  "true",
63  "Have global_* flat memory instructions"
64>;
65
66def FeatureFlatScratchInsts : SubtargetFeature<"flat-scratch-insts",
67  "FlatScratchInsts",
68  "true",
69  "Have scratch_* flat memory instructions"
70>;
71
72def FeatureScalarFlatScratchInsts : SubtargetFeature<"scalar-flat-scratch-insts",
73  "ScalarFlatScratchInsts",
74  "true",
75  "Have s_scratch_* flat memory instructions"
76>;
77
78def FeatureAddNoCarryInsts : SubtargetFeature<"add-no-carry-insts",
79  "AddNoCarryInsts",
80  "true",
81  "Have VALU add/sub instructions without carry out"
82>;
83
84def FeatureUnalignedBufferAccess : SubtargetFeature<"unaligned-buffer-access",
85  "UnalignedBufferAccess",
86  "true",
87  "Support unaligned global loads and stores"
88>;
89
90def FeatureTrapHandler: SubtargetFeature<"trap-handler",
91  "TrapHandler",
92  "true",
93  "Trap handler support"
94>;
95
96def FeatureUnalignedScratchAccess : SubtargetFeature<"unaligned-scratch-access",
97  "UnalignedScratchAccess",
98  "true",
99  "Support unaligned scratch loads and stores"
100>;
101
102def FeatureApertureRegs : SubtargetFeature<"aperture-regs",
103  "HasApertureRegs",
104  "true",
105  "Has Memory Aperture Base and Size Registers"
106>;
107
108def FeatureMadMixInsts : SubtargetFeature<"mad-mix-insts",
109  "HasMadMixInsts",
110  "true",
111  "Has v_mad_mix_f32, v_mad_mixlo_f16, v_mad_mixhi_f16 instructions"
112>;
113
114def FeatureFmaMixInsts : SubtargetFeature<"fma-mix-insts",
115  "HasFmaMixInsts",
116  "true",
117  "Has v_fma_mix_f32, v_fma_mixlo_f16, v_fma_mixhi_f16 instructions"
118>;
119
120def FeatureDoesNotSupportXNACK : SubtargetFeature<"no-xnack-support",
121  "DoesNotSupportXNACK",
122  "true",
123  "Hardware does not support XNACK"
124>;
125
126// XNACK is disabled if SH_MEM_CONFIG.ADDRESS_MODE = GPUVM on chips that support
127// XNACK. The current default kernel driver setting is:
128// - graphics ring: XNACK disabled
129// - compute ring: XNACK enabled
130//
131// If XNACK is enabled, the VMEM latency can be worse.
132// If XNACK is disabled, the 2 SGPRs can be used for general purposes.
133def FeatureXNACK : SubtargetFeature<"xnack",
134  "EnableXNACK",
135  "true",
136  "Enable XNACK support"
137>;
138
139def FeatureCuMode : SubtargetFeature<"cumode",
140  "EnableCuMode",
141  "true",
142  "Enable CU wavefront execution mode"
143>;
144
145def FeatureSGPRInitBug : SubtargetFeature<"sgpr-init-bug",
146  "SGPRInitBug",
147  "true",
148  "VI SGPR initialization bug requiring a fixed SGPR allocation size"
149>;
150
151def FeatureLdsMisalignedBug : SubtargetFeature<"lds-misaligned-bug",
152  "LDSMisalignedBug",
153  "true",
154  "Some GFX10 bug with misaligned multi-dword LDS access in WGP mode"
155>;
156
157def FeatureMFMAInlineLiteralBug : SubtargetFeature<"mfma-inline-literal-bug",
158  "HasMFMAInlineLiteralBug",
159  "true",
160  "MFMA cannot use inline literal as SrcC"
161>;
162
163def FeatureVcmpxPermlaneHazard : SubtargetFeature<"vcmpx-permlane-hazard",
164  "HasVcmpxPermlaneHazard",
165  "true",
166  "TODO: describe me"
167>;
168
169def FeatureVMEMtoScalarWriteHazard : SubtargetFeature<"vmem-to-scalar-write-hazard",
170  "HasVMEMtoScalarWriteHazard",
171  "true",
172  "VMEM instruction followed by scalar writing to EXEC mask, M0 or SGPR leads to incorrect execution."
173>;
174
175def FeatureSMEMtoVectorWriteHazard : SubtargetFeature<"smem-to-vector-write-hazard",
176  "HasSMEMtoVectorWriteHazard",
177  "true",
178  "s_load_dword followed by v_cmp page faults"
179>;
180
181def FeatureInstFwdPrefetchBug : SubtargetFeature<"inst-fwd-prefetch-bug",
182  "HasInstFwdPrefetchBug",
183  "true",
184  "S_INST_PREFETCH instruction causes shader to hang"
185>;
186
187def FeatureVcmpxExecWARHazard : SubtargetFeature<"vcmpx-exec-war-hazard",
188  "HasVcmpxExecWARHazard",
189  "true",
190  "V_CMPX WAR hazard on EXEC (V_CMPX issue ONLY)"
191>;
192
193def FeatureLdsBranchVmemWARHazard : SubtargetFeature<"lds-branch-vmem-war-hazard",
194  "HasLdsBranchVmemWARHazard",
195  "true",
196  "Switching between LDS and VMEM-tex not waiting VM_VSRC=0"
197>;
198
199def FeatureNSAtoVMEMBug : SubtargetFeature<"nsa-to-vmem-bug",
200  "HasNSAtoVMEMBug",
201  "true",
202  "MIMG-NSA followed by VMEM fail if EXEC_LO or EXEC_HI equals zero"
203>;
204
205def FeatureFlatSegmentOffsetBug : SubtargetFeature<"flat-segment-offset-bug",
206  "HasFlatSegmentOffsetBug",
207  "true",
208  "GFX10 bug, inst_offset ignored in flat segment"
209>;
210
211def FeatureOffset3fBug : SubtargetFeature<"offset-3f-bug",
212  "HasOffset3fBug",
213  "true",
214  "Branch offset of 3f hardware bug"
215>;
216
217class SubtargetFeatureLDSBankCount <int Value> : SubtargetFeature <
218  "ldsbankcount"#Value,
219  "LDSBankCount",
220  !cast<string>(Value),
221  "The number of LDS banks per compute unit."
222>;
223
224def FeatureLDSBankCount16 : SubtargetFeatureLDSBankCount<16>;
225def FeatureLDSBankCount32 : SubtargetFeatureLDSBankCount<32>;
226
227def FeatureGCN3Encoding : SubtargetFeature<"gcn3-encoding",
228  "GCN3Encoding",
229  "true",
230  "Encoding format for VI"
231>;
232
233def FeatureCIInsts : SubtargetFeature<"ci-insts",
234  "CIInsts",
235  "true",
236  "Additional instructions for CI+"
237>;
238
239def FeatureGFX8Insts : SubtargetFeature<"gfx8-insts",
240  "GFX8Insts",
241  "true",
242  "Additional instructions for GFX8+"
243>;
244
245def FeatureGFX9Insts : SubtargetFeature<"gfx9-insts",
246  "GFX9Insts",
247  "true",
248  "Additional instructions for GFX9+"
249>;
250
251def FeatureGFX10Insts : SubtargetFeature<"gfx10-insts",
252  "GFX10Insts",
253  "true",
254  "Additional instructions for GFX10+"
255>;
256
257def FeatureGFX7GFX8GFX9Insts : SubtargetFeature<"gfx7-gfx8-gfx9-insts",
258  "GFX7GFX8GFX9Insts",
259  "true",
260  "Instructions shared in GFX7, GFX8, GFX9"
261>;
262
263def FeatureSMemRealTime : SubtargetFeature<"s-memrealtime",
264  "HasSMemRealTime",
265  "true",
266  "Has s_memrealtime instruction"
267>;
268
269def FeatureInv2PiInlineImm : SubtargetFeature<"inv-2pi-inline-imm",
270  "HasInv2PiInlineImm",
271  "true",
272  "Has 1 / (2 * pi) as inline immediate"
273>;
274
275def Feature16BitInsts : SubtargetFeature<"16-bit-insts",
276  "Has16BitInsts",
277  "true",
278  "Has i16/f16 instructions"
279>;
280
281def FeatureVOP3P : SubtargetFeature<"vop3p",
282  "HasVOP3PInsts",
283  "true",
284  "Has VOP3P packed instructions"
285>;
286
287def FeatureMovrel : SubtargetFeature<"movrel",
288  "HasMovrel",
289  "true",
290  "Has v_movrel*_b32 instructions"
291>;
292
293def FeatureVGPRIndexMode : SubtargetFeature<"vgpr-index-mode",
294  "HasVGPRIndexMode",
295  "true",
296  "Has VGPR mode register indexing"
297>;
298
299def FeatureScalarStores : SubtargetFeature<"scalar-stores",
300  "HasScalarStores",
301  "true",
302  "Has store scalar memory instructions"
303>;
304
305def FeatureScalarAtomics : SubtargetFeature<"scalar-atomics",
306  "HasScalarAtomics",
307  "true",
308  "Has atomic scalar memory instructions"
309>;
310
311def FeatureSDWA : SubtargetFeature<"sdwa",
312  "HasSDWA",
313  "true",
314  "Support SDWA (Sub-DWORD Addressing) extension"
315>;
316
317def FeatureSDWAOmod : SubtargetFeature<"sdwa-omod",
318  "HasSDWAOmod",
319  "true",
320  "Support OMod with SDWA (Sub-DWORD Addressing) extension"
321>;
322
323def FeatureSDWAScalar : SubtargetFeature<"sdwa-scalar",
324  "HasSDWAScalar",
325  "true",
326  "Support scalar register with SDWA (Sub-DWORD Addressing) extension"
327>;
328
329def FeatureSDWASdst : SubtargetFeature<"sdwa-sdst",
330  "HasSDWASdst",
331  "true",
332  "Support scalar dst for VOPC with SDWA (Sub-DWORD Addressing) extension"
333>;
334
335def FeatureSDWAMac : SubtargetFeature<"sdwa-mav",
336  "HasSDWAMac",
337  "true",
338  "Support v_mac_f32/f16 with SDWA (Sub-DWORD Addressing) extension"
339>;
340
341def FeatureSDWAOutModsVOPC : SubtargetFeature<"sdwa-out-mods-vopc",
342  "HasSDWAOutModsVOPC",
343  "true",
344  "Support clamp for VOPC with SDWA (Sub-DWORD Addressing) extension"
345>;
346
347def FeatureDPP : SubtargetFeature<"dpp",
348  "HasDPP",
349  "true",
350  "Support DPP (Data Parallel Primitives) extension"
351>;
352
353// DPP8 allows arbitrary cross-lane swizzling withing groups of 8 lanes.
354def FeatureDPP8 : SubtargetFeature<"dpp8",
355  "HasDPP8",
356  "true",
357  "Support DPP8 (Data Parallel Primitives) extension"
358>;
359
360def FeatureR128A16 : SubtargetFeature<"r128-a16",
361  "HasR128A16",
362  "true",
363  "Support 16 bit coordindates/gradients/lod/clamp/mip types on gfx9"
364>;
365
366def FeatureNSAEncoding : SubtargetFeature<"nsa-encoding",
367  "HasNSAEncoding",
368  "true",
369  "Support NSA encoding for image instructions"
370>;
371
372def FeatureIntClamp : SubtargetFeature<"int-clamp-insts",
373  "HasIntClamp",
374  "true",
375  "Support clamp for integer destination"
376>;
377
378def FeatureUnpackedD16VMem : SubtargetFeature<"unpacked-d16-vmem",
379  "HasUnpackedD16VMem",
380  "true",
381  "Has unpacked d16 vmem instructions"
382>;
383
384def FeatureDLInsts : SubtargetFeature<"dl-insts",
385  "HasDLInsts",
386  "true",
387  "Has v_fmac_f32 and v_xnor_b32 instructions"
388>;
389
390def FeatureDot1Insts : SubtargetFeature<"dot1-insts",
391  "HasDot1Insts",
392  "true",
393  "Has v_dot4_i32_i8 and v_dot8_i32_i4 instructions"
394>;
395
396def FeatureDot2Insts : SubtargetFeature<"dot2-insts",
397  "HasDot2Insts",
398  "true",
399  "Has v_dot2_f32_f16, v_dot2_i32_i16, v_dot2_u32_u16, v_dot4_u32_u8, v_dot8_u32_u4 instructions"
400>;
401
402def FeatureDot3Insts : SubtargetFeature<"dot3-insts",
403  "HasDot3Insts",
404  "true",
405  "Has v_dot8c_i32_i4 instruction"
406>;
407
408def FeatureDot4Insts : SubtargetFeature<"dot4-insts",
409  "HasDot4Insts",
410  "true",
411  "Has v_dot2c_i32_i16 instruction"
412>;
413
414def FeatureDot5Insts : SubtargetFeature<"dot5-insts",
415  "HasDot5Insts",
416  "true",
417  "Has v_dot2c_f32_f16 instruction"
418>;
419
420def FeatureDot6Insts : SubtargetFeature<"dot6-insts",
421  "HasDot6Insts",
422  "true",
423  "Has v_dot4c_i32_i8 instruction"
424>;
425
426def FeatureMAIInsts : SubtargetFeature<"mai-insts",
427  "HasMAIInsts",
428  "true",
429  "Has mAI instructions"
430>;
431
432def FeaturePkFmacF16Inst : SubtargetFeature<"pk-fmac-f16-inst",
433  "HasPkFmacF16Inst",
434  "true",
435  "Has v_pk_fmac_f16 instruction"
436>;
437
438def FeatureAtomicFaddInsts : SubtargetFeature<"atomic-fadd-insts",
439  "HasAtomicFaddInsts",
440  "true",
441  "Has buffer_atomic_add_f32, buffer_atomic_pk_add_f16, global_atomic_add_f32, "
442  "global_atomic_pk_add_f16 instructions"
443>;
444
445def FeatureDoesNotSupportSRAMECC : SubtargetFeature<"no-sram-ecc-support",
446  "DoesNotSupportSRAMECC",
447  "true",
448  "Hardware does not support SRAM ECC"
449>;
450
451def FeatureSRAMECC : SubtargetFeature<"sram-ecc",
452  "EnableSRAMECC",
453  "true",
454  "Enable SRAM ECC"
455>;
456
457def FeatureNoSdstCMPX : SubtargetFeature<"no-sdst-cmpx",
458  "HasNoSdstCMPX",
459  "true",
460  "V_CMPX does not write VCC/SGPR in addition to EXEC"
461>;
462
463def FeatureVscnt : SubtargetFeature<"vscnt",
464  "HasVscnt",
465  "true",
466  "Has separate store vscnt counter"
467>;
468
469def FeatureRegisterBanking : SubtargetFeature<"register-banking",
470  "HasRegisterBanking",
471  "true",
472  "Has register banking"
473>;
474
475def FeatureVOP3Literal : SubtargetFeature<"vop3-literal",
476  "HasVOP3Literal",
477  "true",
478  "Can use one literal in VOP3"
479>;
480
481def FeatureNoDataDepHazard : SubtargetFeature<"no-data-dep-hazard",
482  "HasNoDataDepHazard",
483  "true",
484  "Does not need SW waitstates"
485>;
486
487//===------------------------------------------------------------===//
488// Subtarget Features (options and debugging)
489//===------------------------------------------------------------===//
490
491// Denormal handling for fp64 and fp16 is controlled by the same
492// config register when fp16 supported.
493// TODO: Do we need a separate f16 setting when not legal?
494def FeatureFP64FP16Denormals : SubtargetFeature<"fp64-fp16-denormals",
495  "FP64FP16Denormals",
496  "true",
497  "Enable double and half precision denormal handling",
498  [FeatureFP64]
499>;
500
501def FeatureFP64Denormals : SubtargetFeature<"fp64-denormals",
502  "FP64FP16Denormals",
503  "true",
504  "Enable double and half precision denormal handling",
505  [FeatureFP64, FeatureFP64FP16Denormals]
506>;
507
508def FeatureFP16Denormals : SubtargetFeature<"fp16-denormals",
509  "FP64FP16Denormals",
510  "true",
511  "Enable half precision denormal handling",
512  [FeatureFP64FP16Denormals]
513>;
514
515def FeatureFPExceptions : SubtargetFeature<"fp-exceptions",
516  "FPExceptions",
517  "true",
518  "Enable floating point exceptions"
519>;
520
521class FeatureMaxPrivateElementSize<int size> : SubtargetFeature<
522  "max-private-element-size-"#size,
523  "MaxPrivateElementSize",
524  !cast<string>(size),
525  "Maximum private access size may be "#size
526>;
527
528def FeatureMaxPrivateElementSize4 : FeatureMaxPrivateElementSize<4>;
529def FeatureMaxPrivateElementSize8 : FeatureMaxPrivateElementSize<8>;
530def FeatureMaxPrivateElementSize16 : FeatureMaxPrivateElementSize<16>;
531
532def FeatureDumpCode : SubtargetFeature <"DumpCode",
533  "DumpCode",
534  "true",
535  "Dump MachineInstrs in the CodeEmitter"
536>;
537
538def FeatureDumpCodeLower : SubtargetFeature <"dumpcode",
539  "DumpCode",
540  "true",
541  "Dump MachineInstrs in the CodeEmitter"
542>;
543
544// XXX - This should probably be removed once enabled by default
545def FeatureEnableLoadStoreOpt : SubtargetFeature <"load-store-opt",
546  "EnableLoadStoreOpt",
547  "true",
548  "Enable SI load/store optimizer pass"
549>;
550
551// Performance debugging feature. Allow using DS instruction immediate
552// offsets even if the base pointer can't be proven to be base. On SI,
553// base pointer values that won't give the same result as a 16-bit add
554// are not safe to fold, but this will override the conservative test
555// for the base pointer.
556def FeatureEnableUnsafeDSOffsetFolding : SubtargetFeature <
557  "unsafe-ds-offset-folding",
558  "EnableUnsafeDSOffsetFolding",
559  "true",
560  "Force using DS instruction immediate offsets on SI"
561>;
562
563def FeatureEnableSIScheduler : SubtargetFeature<"si-scheduler",
564  "EnableSIScheduler",
565  "true",
566  "Enable SI Machine Scheduler"
567>;
568
569def FeatureEnableDS128 : SubtargetFeature<"enable-ds128",
570  "EnableDS128",
571  "true",
572  "Use ds_{read|write}_b128"
573>;
574
575// Sparse texture support requires that all result registers are zeroed when
576// PRTStrictNull is set to true. This feature is turned on for all architectures
577// but is enabled as a feature in case there are situations where PRTStrictNull
578// is disabled by the driver.
579def FeatureEnablePRTStrictNull : SubtargetFeature<"enable-prt-strict-null",
580  "EnablePRTStrictNull",
581  "true",
582  "Enable zeroing of result registers for sparse texture fetches"
583>;
584
585// Unless +-flat-for-global is specified, turn on FlatForGlobal for
586// all OS-es on VI and newer hardware to avoid assertion failures due
587// to missing ADDR64 variants of MUBUF instructions.
588// FIXME: moveToVALU should be able to handle converting addr64 MUBUF
589// instructions.
590
591def FeatureFlatForGlobal : SubtargetFeature<"flat-for-global",
592  "FlatForGlobal",
593  "true",
594  "Force to generate flat instruction for global"
595>;
596
597def FeatureAutoWaitcntBeforeBarrier : SubtargetFeature <
598  "auto-waitcnt-before-barrier",
599  "AutoWaitcntBeforeBarrier",
600  "true",
601  "Hardware automatically inserts waitcnt before barrier"
602>;
603
604def FeatureCodeObjectV3 : SubtargetFeature <
605  "code-object-v3",
606  "CodeObjectV3",
607  "true",
608  "Generate code object version 3"
609>;
610
611def FeatureTrigReducedRange : SubtargetFeature<"trig-reduced-range",
612  "HasTrigReducedRange",
613  "true",
614  "Requires use of fract on arguments to trig instructions"
615>;
616
617// Dummy feature used to disable assembler instructions.
618def FeatureDisable : SubtargetFeature<"",
619  "FeatureDisable","true",
620  "Dummy feature to disable assembler instructions"
621>;
622
623class GCNSubtargetFeatureGeneration <string Value,
624                                     string FeatureName,
625                                     list<SubtargetFeature> Implies> :
626        SubtargetFeatureGeneration <Value, FeatureName, "GCNSubtarget", Implies>;
627
628def FeatureSouthernIslands : GCNSubtargetFeatureGeneration<"SOUTHERN_ISLANDS",
629    "southern-islands",
630  [FeatureFP64, FeatureLocalMemorySize32768, FeatureMIMG_R128,
631  FeatureWavefrontSize64,
632  FeatureLDSBankCount32, FeatureMovrel, FeatureTrigReducedRange,
633  FeatureDoesNotSupportSRAMECC, FeatureDoesNotSupportXNACK]
634>;
635
636def FeatureSeaIslands : GCNSubtargetFeatureGeneration<"SEA_ISLANDS",
637    "sea-islands",
638  [FeatureFP64, FeatureLocalMemorySize65536, FeatureMIMG_R128,
639  FeatureWavefrontSize64, FeatureFlatAddressSpace,
640  FeatureCIInsts, FeatureMovrel, FeatureTrigReducedRange,
641  FeatureGFX7GFX8GFX9Insts, FeatureDoesNotSupportSRAMECC]
642>;
643
644def FeatureVolcanicIslands : GCNSubtargetFeatureGeneration<"VOLCANIC_ISLANDS",
645  "volcanic-islands",
646  [FeatureFP64, FeatureLocalMemorySize65536, FeatureMIMG_R128,
647   FeatureWavefrontSize64, FeatureFlatAddressSpace,
648   FeatureGCN3Encoding, FeatureCIInsts, Feature16BitInsts,
649   FeatureSMemRealTime, FeatureVGPRIndexMode, FeatureMovrel,
650   FeatureScalarStores, FeatureInv2PiInlineImm,
651   FeatureSDWA, FeatureSDWAOutModsVOPC, FeatureSDWAMac, FeatureDPP,
652   FeatureIntClamp, FeatureTrigReducedRange, FeatureDoesNotSupportSRAMECC,
653   FeatureGFX8Insts, FeatureGFX7GFX8GFX9Insts
654  ]
655>;
656
657def FeatureGFX9 : GCNSubtargetFeatureGeneration<"GFX9",
658  "gfx9",
659  [FeatureFP64, FeatureLocalMemorySize65536,
660   FeatureWavefrontSize64, FeatureFlatAddressSpace,
661   FeatureGCN3Encoding, FeatureCIInsts, Feature16BitInsts,
662   FeatureSMemRealTime, FeatureScalarStores, FeatureInv2PiInlineImm,
663   FeatureApertureRegs, FeatureGFX9Insts, FeatureVOP3P, FeatureVGPRIndexMode,
664   FeatureFastFMAF32, FeatureDPP, FeatureIntClamp,
665   FeatureSDWA, FeatureSDWAOmod, FeatureSDWAScalar, FeatureSDWASdst,
666   FeatureFlatInstOffsets, FeatureFlatGlobalInsts, FeatureFlatScratchInsts,
667   FeatureAddNoCarryInsts, FeatureGFX8Insts, FeatureGFX7GFX8GFX9Insts,
668   FeatureScalarFlatScratchInsts, FeatureScalarAtomics, FeatureR128A16
669  ]
670>;
671
672def FeatureGFX10 : GCNSubtargetFeatureGeneration<"GFX10",
673  "gfx10",
674  [FeatureFP64, FeatureLocalMemorySize65536, FeatureMIMG_R128,
675   FeatureFlatAddressSpace,
676   FeatureCIInsts, Feature16BitInsts,
677   FeatureSMemRealTime, FeatureInv2PiInlineImm,
678   FeatureApertureRegs, FeatureGFX9Insts, FeatureGFX10Insts, FeatureVOP3P,
679   FeatureMovrel, FeatureFastFMAF32, FeatureDPP, FeatureIntClamp,
680   FeatureSDWA, FeatureSDWAOmod, FeatureSDWAScalar, FeatureSDWASdst,
681   FeatureFlatInstOffsets, FeatureFlatGlobalInsts, FeatureFlatScratchInsts,
682   FeatureAddNoCarryInsts, FeatureFmaMixInsts, FeatureGFX8Insts,
683   FeatureNoSdstCMPX, FeatureVscnt, FeatureRegisterBanking,
684   FeatureVOP3Literal, FeatureDPP8,
685   FeatureNoDataDepHazard, FeaturePkFmacF16Inst, FeatureDoesNotSupportSRAMECC
686  ]
687>;
688
689class FeatureSet<list<SubtargetFeature> Features_> {
690  list<SubtargetFeature> Features = Features_;
691}
692
693def FeatureISAVersion6_0_0 : FeatureSet<[FeatureSouthernIslands,
694   FeatureFastFMAF32,
695   HalfRate64Ops,
696   FeatureLDSBankCount32,
697   FeatureDoesNotSupportXNACK,
698   FeatureCodeObjectV3]>;
699
700def FeatureISAVersion6_0_1 : FeatureSet<
701  [FeatureSouthernIslands,
702   FeatureLDSBankCount32,
703   FeatureDoesNotSupportXNACK,
704   FeatureCodeObjectV3]>;
705
706def FeatureISAVersion7_0_0 : FeatureSet<
707  [FeatureSeaIslands,
708   FeatureLDSBankCount32,
709   FeatureDoesNotSupportXNACK,
710   FeatureCodeObjectV3]>;
711
712def FeatureISAVersion7_0_1 : FeatureSet<
713  [FeatureSeaIslands,
714   HalfRate64Ops,
715   FeatureLDSBankCount32,
716   FeatureFastFMAF32,
717   FeatureDoesNotSupportXNACK,
718   FeatureCodeObjectV3]>;
719
720def FeatureISAVersion7_0_2 : FeatureSet<
721  [FeatureSeaIslands,
722   FeatureLDSBankCount16,
723   FeatureFastFMAF32,
724   FeatureDoesNotSupportXNACK,
725   FeatureCodeObjectV3]>;
726
727def FeatureISAVersion7_0_3 : FeatureSet<
728  [FeatureSeaIslands,
729   FeatureLDSBankCount16,
730   FeatureDoesNotSupportXNACK,
731   FeatureCodeObjectV3]>;
732
733def FeatureISAVersion7_0_4 : FeatureSet<
734  [FeatureSeaIslands,
735   FeatureLDSBankCount32,
736   FeatureDoesNotSupportXNACK,
737   FeatureCodeObjectV3]>;
738
739def FeatureISAVersion8_0_1 : FeatureSet<
740  [FeatureVolcanicIslands,
741   FeatureFastFMAF32,
742   HalfRate64Ops,
743   FeatureLDSBankCount32,
744   FeatureXNACK,
745   FeatureUnpackedD16VMem,
746   FeatureCodeObjectV3]>;
747
748def FeatureISAVersion8_0_2 : FeatureSet<
749  [FeatureVolcanicIslands,
750   FeatureLDSBankCount32,
751   FeatureSGPRInitBug,
752   FeatureUnpackedD16VMem,
753   FeatureDoesNotSupportXNACK,
754   FeatureCodeObjectV3]>;
755
756def FeatureISAVersion8_0_3 : FeatureSet<
757  [FeatureVolcanicIslands,
758   FeatureLDSBankCount32,
759   FeatureUnpackedD16VMem,
760   FeatureDoesNotSupportXNACK,
761   FeatureCodeObjectV3]>;
762
763def FeatureISAVersion8_1_0 : FeatureSet<
764  [FeatureVolcanicIslands,
765   FeatureLDSBankCount16,
766   FeatureXNACK,
767   FeatureCodeObjectV3]>;
768
769def FeatureISAVersion9_0_0 : FeatureSet<
770  [FeatureGFX9,
771   FeatureMadMixInsts,
772   FeatureLDSBankCount32,
773   FeatureCodeObjectV3,
774   FeatureDoesNotSupportXNACK,
775   FeatureDoesNotSupportSRAMECC]>;
776
777def FeatureISAVersion9_0_2 : FeatureSet<
778  [FeatureGFX9,
779   FeatureMadMixInsts,
780   FeatureLDSBankCount32,
781   FeatureXNACK,
782   FeatureDoesNotSupportSRAMECC,
783   FeatureCodeObjectV3]>;
784
785def FeatureISAVersion9_0_4 : FeatureSet<
786  [FeatureGFX9,
787   FeatureLDSBankCount32,
788   FeatureFmaMixInsts,
789   FeatureDoesNotSupportXNACK,
790   FeatureDoesNotSupportSRAMECC,
791   FeatureCodeObjectV3]>;
792
793def FeatureISAVersion9_0_6 : FeatureSet<
794  [FeatureGFX9,
795   HalfRate64Ops,
796   FeatureFmaMixInsts,
797   FeatureLDSBankCount32,
798   FeatureDLInsts,
799   FeatureDot1Insts,
800   FeatureDot2Insts,
801   FeatureDoesNotSupportXNACK,
802   FeatureCodeObjectV3]>;
803
804def FeatureISAVersion9_0_8 : FeatureSet<
805  [FeatureGFX9,
806   HalfRate64Ops,
807   FeatureFmaMixInsts,
808   FeatureLDSBankCount32,
809   FeatureDLInsts,
810   FeatureDot1Insts,
811   FeatureDot2Insts,
812   FeatureDot3Insts,
813   FeatureDot4Insts,
814   FeatureDot5Insts,
815   FeatureDot6Insts,
816   FeatureMAIInsts,
817   FeaturePkFmacF16Inst,
818   FeatureAtomicFaddInsts,
819   FeatureSRAMECC,
820   FeatureMFMAInlineLiteralBug,
821   FeatureCodeObjectV3]>;
822
823def FeatureISAVersion9_0_9 : FeatureSet<
824  [FeatureGFX9,
825   FeatureMadMixInsts,
826   FeatureLDSBankCount32,
827   FeatureXNACK,
828   FeatureCodeObjectV3]>;
829
830// TODO: Organize more features into groups.
831def FeatureGroup {
832  // Bugs present on gfx10.1.
833  list<SubtargetFeature> GFX10_1_Bugs = [
834    FeatureVcmpxPermlaneHazard,
835    FeatureVMEMtoScalarWriteHazard,
836    FeatureSMEMtoVectorWriteHazard,
837    FeatureInstFwdPrefetchBug,
838    FeatureVcmpxExecWARHazard,
839    FeatureLdsBranchVmemWARHazard,
840    FeatureNSAtoVMEMBug,
841    FeatureOffset3fBug,
842    FeatureFlatSegmentOffsetBug
843   ];
844}
845
846def FeatureISAVersion10_1_0 : FeatureSet<
847  !listconcat(FeatureGroup.GFX10_1_Bugs,
848    [FeatureGFX10,
849     FeatureLDSBankCount32,
850     FeatureDLInsts,
851     FeatureNSAEncoding,
852     FeatureWavefrontSize32,
853     FeatureScalarStores,
854     FeatureScalarAtomics,
855     FeatureScalarFlatScratchInsts,
856     FeatureLdsMisalignedBug,
857     FeatureDoesNotSupportXNACK,
858     FeatureCodeObjectV3])>;
859
860def FeatureISAVersion10_1_1 : FeatureSet<
861  !listconcat(FeatureGroup.GFX10_1_Bugs,
862    [FeatureGFX10,
863     FeatureLDSBankCount32,
864     FeatureDLInsts,
865     FeatureDot1Insts,
866     FeatureDot2Insts,
867     FeatureDot5Insts,
868     FeatureDot6Insts,
869     FeatureNSAEncoding,
870     FeatureWavefrontSize32,
871     FeatureScalarStores,
872     FeatureScalarAtomics,
873     FeatureScalarFlatScratchInsts,
874     FeatureDoesNotSupportXNACK,
875     FeatureCodeObjectV3])>;
876
877def FeatureISAVersion10_1_2 : FeatureSet<
878  !listconcat(FeatureGroup.GFX10_1_Bugs,
879    [FeatureGFX10,
880     FeatureLDSBankCount32,
881     FeatureDLInsts,
882     FeatureDot1Insts,
883     FeatureDot2Insts,
884     FeatureDot5Insts,
885     FeatureDot6Insts,
886     FeatureNSAEncoding,
887     FeatureWavefrontSize32,
888     FeatureScalarStores,
889     FeatureScalarAtomics,
890     FeatureScalarFlatScratchInsts,
891     FeatureLdsMisalignedBug,
892     FeatureDoesNotSupportXNACK,
893     FeatureCodeObjectV3])>;
894
895//===----------------------------------------------------------------------===//
896
897def AMDGPUInstrInfo : InstrInfo {
898  let guessInstructionProperties = 1;
899  let noNamedPositionallyEncodedOperands = 1;
900}
901
902def AMDGPUAsmParser : AsmParser {
903  // Some of the R600 registers have the same name, so this crashes.
904  // For example T0_XYZW and T0_XY both have the asm name T0.
905  let ShouldEmitMatchRegisterName = 0;
906}
907
908def AMDGPUAsmWriter : AsmWriter {
909  int PassSubtarget = 1;
910}
911
912def AMDGPUAsmVariants {
913  string Default = "Default";
914  int Default_ID = 0;
915  string VOP3 = "VOP3";
916  int VOP3_ID = 1;
917  string SDWA = "SDWA";
918  int SDWA_ID = 2;
919  string SDWA9 = "SDWA9";
920  int SDWA9_ID = 3;
921  string DPP = "DPP";
922  int DPP_ID = 4;
923  string Disable = "Disable";
924  int Disable_ID = 5;
925}
926
927def DefaultAMDGPUAsmParserVariant : AsmParserVariant {
928  let Variant = AMDGPUAsmVariants.Default_ID;
929  let Name = AMDGPUAsmVariants.Default;
930}
931
932def VOP3AsmParserVariant : AsmParserVariant {
933  let Variant = AMDGPUAsmVariants.VOP3_ID;
934  let Name = AMDGPUAsmVariants.VOP3;
935}
936
937def SDWAAsmParserVariant : AsmParserVariant {
938  let Variant = AMDGPUAsmVariants.SDWA_ID;
939  let Name = AMDGPUAsmVariants.SDWA;
940}
941
942def SDWA9AsmParserVariant : AsmParserVariant {
943  let Variant = AMDGPUAsmVariants.SDWA9_ID;
944  let Name = AMDGPUAsmVariants.SDWA9;
945}
946
947
948def DPPAsmParserVariant : AsmParserVariant {
949  let Variant = AMDGPUAsmVariants.DPP_ID;
950  let Name = AMDGPUAsmVariants.DPP;
951}
952
953def AMDGPU : Target {
954  // Pull in Instruction Info:
955  let InstructionSet = AMDGPUInstrInfo;
956  let AssemblyParsers = [AMDGPUAsmParser];
957  let AssemblyParserVariants = [DefaultAMDGPUAsmParserVariant,
958                                VOP3AsmParserVariant,
959                                SDWAAsmParserVariant,
960                                SDWA9AsmParserVariant,
961                                DPPAsmParserVariant];
962  let AssemblyWriters = [AMDGPUAsmWriter];
963  let AllowRegisterRenaming = 1;
964}
965
966// Dummy Instruction itineraries for pseudo instructions
967def ALU_NULL : FuncUnit;
968def NullALU : InstrItinClass;
969
970//===----------------------------------------------------------------------===//
971// Predicate helper class
972//===----------------------------------------------------------------------===//
973
974def isGFX6 :
975  Predicate<"Subtarget->getGeneration() == AMDGPUSubtarget::SOUTHERN_ISLANDS">,
976  AssemblerPredicate<"FeatureSouthernIslands">;
977
978def isGFX6GFX7 :
979  Predicate<"Subtarget->getGeneration() == AMDGPUSubtarget::SOUTHERN_ISLANDS ||"
980            "Subtarget->getGeneration() == AMDGPUSubtarget::SEA_ISLANDS">,
981  AssemblerPredicate<"!FeatureGCN3Encoding,!FeatureGFX10Insts">;
982
983def isGFX6GFX7GFX10 :
984  Predicate<"Subtarget->getGeneration() == AMDGPUSubtarget::SOUTHERN_ISLANDS ||"
985            "Subtarget->getGeneration() == AMDGPUSubtarget::SEA_ISLANDS ||"
986            "Subtarget->getGeneration() == AMDGPUSubtarget::GFX10">,
987  AssemblerPredicate<"!FeatureGCN3Encoding">;
988
989def isGFX7Only :
990  Predicate<"Subtarget->getGeneration() == AMDGPUSubtarget::SEA_ISLANDS">,
991  AssemblerPredicate<"!FeatureGCN3Encoding,FeatureCIInsts,!FeatureGFX10Insts">;
992
993def isGFX7GFX10 :
994  Predicate<"Subtarget->getGeneration() == AMDGPUSubtarget::SEA_ISLANDS ||"
995            "Subtarget->getGeneration() == AMDGPUSubtarget::GFX10">,
996  AssemblerPredicate<"!FeatureGCN3Encoding,FeatureCIInsts">;
997
998def isGFX7GFX8GFX9 :
999  Predicate<"Subtarget->getGeneration() == AMDGPUSubtarget::SEA_ISLANDS ||"
1000            "Subtarget->getGeneration() == AMDGPUSubtarget::VOLCANIC_ISLANDS ||"
1001            "Subtarget->getGeneration() == AMDGPUSubtarget::GFX9">,
1002  AssemblerPredicate<"FeatureGFX7GFX8GFX9Insts">;
1003
1004def isGFX6GFX7GFX8GFX9 :
1005  Predicate<"Subtarget->getGeneration() == AMDGPUSubtarget::SOUTHERN_ISLANDS ||"
1006            "Subtarget->getGeneration() == AMDGPUSubtarget::SEA_ISLANDS ||"
1007            "Subtarget->getGeneration() == AMDGPUSubtarget::VOLCANIC_ISLANDS ||"
1008            "Subtarget->getGeneration() == AMDGPUSubtarget::GFX9">,
1009  AssemblerPredicate<"!FeatureGFX10Insts">;
1010
1011def isGFX7Plus :
1012  Predicate<"Subtarget->getGeneration() >= AMDGPUSubtarget::SEA_ISLANDS">,
1013  AssemblerPredicate<"FeatureCIInsts">;
1014
1015def isGFX8Plus :
1016  Predicate<"Subtarget->getGeneration() >= AMDGPUSubtarget::VOLCANIC_ISLANDS">,
1017  AssemblerPredicate<"FeatureGFX8Insts">;
1018
1019def isGFX8Only : Predicate<"Subtarget->getGeneration() =="
1020                           "AMDGPUSubtarget::VOLCANIC_ISLANDS">,
1021  AssemblerPredicate <"FeatureVolcanicIslands">;
1022
1023def isGFX9Plus :
1024  Predicate<"Subtarget->getGeneration() >= AMDGPUSubtarget::GFX9">,
1025  AssemblerPredicate<"FeatureGFX9Insts">;
1026
1027def isGFX9Only : Predicate <
1028  "Subtarget->getGeneration() == AMDGPUSubtarget::GFX9">,
1029  AssemblerPredicate<"FeatureGCN3Encoding,FeatureGFX9Insts">;
1030
1031def isGFX8GFX9 :
1032  Predicate<"Subtarget->getGeneration() == AMDGPUSubtarget::VOLCANIC_ISLANDS ||"
1033            "Subtarget->getGeneration() == AMDGPUSubtarget::GFX9">,
1034  AssemblerPredicate<"FeatureGFX8Insts,FeatureGCN3Encoding">;
1035
1036def isGFX10Plus :
1037  Predicate<"Subtarget->getGeneration() >= AMDGPUSubtarget::GFX10">,
1038  AssemblerPredicate<"FeatureGFX10Insts">;
1039
1040def HasFlatAddressSpace : Predicate<"Subtarget->hasFlatAddressSpace()">,
1041  AssemblerPredicate<"FeatureFlatAddressSpace">;
1042
1043def HasFlatGlobalInsts : Predicate<"Subtarget->hasFlatGlobalInsts()">,
1044  AssemblerPredicate<"FeatureFlatGlobalInsts">;
1045def HasFlatScratchInsts : Predicate<"Subtarget->hasFlatScratchInsts()">,
1046  AssemblerPredicate<"FeatureFlatScratchInsts">;
1047def HasScalarFlatScratchInsts : Predicate<"Subtarget->hasScalarFlatScratchInsts()">,
1048  AssemblerPredicate<"FeatureScalarFlatScratchInsts">;
1049def HasD16LoadStore : Predicate<"Subtarget->hasD16LoadStore()">,
1050  AssemblerPredicate<"FeatureGFX9Insts">;
1051
1052def HasUnpackedD16VMem : Predicate<"Subtarget->hasUnpackedD16VMem()">,
1053  AssemblerPredicate<"FeatureUnpackedD16VMem">;
1054def HasPackedD16VMem : Predicate<"!Subtarget->hasUnpackedD16VMem()">,
1055  AssemblerPredicate<"!FeatureUnpackedD16VMem">;
1056
1057def D16PreservesUnusedBits :
1058  Predicate<"Subtarget->d16PreservesUnusedBits()">,
1059  AssemblerPredicate<"FeatureGFX9Insts,!FeatureSRAMECC">;
1060
1061def LDSRequiresM0Init : Predicate<"Subtarget->ldsRequiresM0Init()">;
1062def NotLDSRequiresM0Init : Predicate<"!Subtarget->ldsRequiresM0Init()">;
1063
1064def HasDSAddTid : Predicate<"Subtarget->getGeneration() >= AMDGPUSubtarget::GFX9">,
1065  AssemblerPredicate<"FeatureGFX9Insts">;
1066
1067def HasAddNoCarryInsts : Predicate<"Subtarget->hasAddNoCarry()">,
1068  AssemblerPredicate<"FeatureAddNoCarryInsts">;
1069
1070def NotHasAddNoCarryInsts : Predicate<"!Subtarget->hasAddNoCarry()">;
1071
1072def Has16BitInsts : Predicate<"Subtarget->has16BitInsts()">,
1073  AssemblerPredicate<"Feature16BitInsts">;
1074def HasVOP3PInsts : Predicate<"Subtarget->hasVOP3PInsts()">,
1075  AssemblerPredicate<"FeatureVOP3P">;
1076
1077def HasSDWA : Predicate<"Subtarget->hasSDWA()">,
1078  AssemblerPredicate<"FeatureSDWA,FeatureVolcanicIslands">;
1079
1080def HasSDWA9 :
1081  Predicate<"Subtarget->hasSDWA()">,
1082  AssemblerPredicate<"FeatureGCN3Encoding,FeatureGFX9Insts,FeatureSDWA">;
1083
1084def HasSDWA10 :
1085  Predicate<"Subtarget->hasSDWA()">,
1086  AssemblerPredicate<"!FeatureGCN3Encoding,FeatureGFX10Insts,FeatureSDWA">;
1087
1088def HasDPP : Predicate<"Subtarget->hasDPP()">,
1089  AssemblerPredicate<"FeatureGCN3Encoding,FeatureDPP">;
1090
1091def HasDPP8 : Predicate<"Subtarget->hasDPP8()">,
1092  AssemblerPredicate<"!FeatureGCN3Encoding,FeatureGFX10Insts,FeatureDPP8">;
1093
1094def HasR128A16 : Predicate<"Subtarget->hasR128A16()">,
1095  AssemblerPredicate<"FeatureR128A16">;
1096
1097def HasDPP16 : Predicate<"Subtarget->hasDPP()">,
1098  AssemblerPredicate<"!FeatureGCN3Encoding,FeatureGFX10Insts,FeatureDPP">;
1099
1100def HasIntClamp : Predicate<"Subtarget->hasIntClamp()">,
1101  AssemblerPredicate<"FeatureIntClamp">;
1102
1103def HasMadMixInsts : Predicate<"Subtarget->hasMadMixInsts()">,
1104  AssemblerPredicate<"FeatureMadMixInsts">;
1105
1106def HasScalarStores : Predicate<"Subtarget->hasScalarStores()">,
1107  AssemblerPredicate<"FeatureScalarStores">;
1108
1109def HasScalarAtomics : Predicate<"Subtarget->hasScalarAtomics()">,
1110  AssemblerPredicate<"FeatureScalarAtomics">;
1111
1112def HasNoSdstCMPX : Predicate<"Subtarget->hasNoSdstCMPX()">,
1113  AssemblerPredicate<"FeatureNoSdstCMPX">;
1114
1115def HasSdstCMPX : Predicate<"!Subtarget->hasNoSdstCMPX()">,
1116  AssemblerPredicate<"!FeatureNoSdstCMPX">;
1117
1118def has16BankLDS : Predicate<"Subtarget->getLDSBankCount() == 16">;
1119def has32BankLDS : Predicate<"Subtarget->getLDSBankCount() == 32">;
1120def HasVGPRIndexMode : Predicate<"Subtarget->hasVGPRIndexMode()">,
1121                      AssemblerPredicate<"FeatureVGPRIndexMode">;
1122def HasMovrel : Predicate<"Subtarget->hasMovrel()">,
1123                AssemblerPredicate<"FeatureMovrel">;
1124
1125def HasFmaMixInsts : Predicate<"Subtarget->hasFmaMixInsts()">,
1126  AssemblerPredicate<"FeatureFmaMixInsts">;
1127
1128def HasDLInsts : Predicate<"Subtarget->hasDLInsts()">,
1129  AssemblerPredicate<"FeatureDLInsts">;
1130
1131def HasDot1Insts : Predicate<"Subtarget->hasDot1Insts()">,
1132  AssemblerPredicate<"FeatureDot1Insts">;
1133
1134def HasDot2Insts : Predicate<"Subtarget->hasDot2Insts()">,
1135  AssemblerPredicate<"FeatureDot2Insts">;
1136
1137def HasDot3Insts : Predicate<"Subtarget->hasDot3Insts()">,
1138  AssemblerPredicate<"FeatureDot3Insts">;
1139
1140def HasDot4Insts : Predicate<"Subtarget->hasDot4Insts()">,
1141  AssemblerPredicate<"FeatureDot4Insts">;
1142
1143def HasDot5Insts : Predicate<"Subtarget->hasDot5Insts()">,
1144  AssemblerPredicate<"FeatureDot5Insts">;
1145
1146def HasDot6Insts : Predicate<"Subtarget->hasDot6Insts()">,
1147  AssemblerPredicate<"FeatureDot6Insts">;
1148
1149def HasMAIInsts : Predicate<"Subtarget->hasMAIInsts()">,
1150  AssemblerPredicate<"FeatureMAIInsts">;
1151
1152def HasPkFmacF16Inst : Predicate<"Subtarget->hasPkFmacF16Inst()">,
1153  AssemblerPredicate<"FeaturePkFmacF16Inst">;
1154
1155def HasAtomicFaddInsts : Predicate<"Subtarget->hasAtomicFaddInsts()">,
1156  AssemblerPredicate<"FeatureAtomicFaddInsts">;
1157
1158def HasOffset3fBug : Predicate<"!Subtarget->hasOffset3fBug()">,
1159  AssemblerPredicate<"FeatureOffset3fBug">;
1160
1161def EnableLateCFGStructurize : Predicate<
1162  "EnableLateStructurizeCFG">;
1163
1164// Include AMDGPU TD files
1165include "SISchedule.td"
1166include "GCNProcessors.td"
1167include "AMDGPUInstrInfo.td"
1168include "AMDGPURegisterInfo.td"
1169include "AMDGPURegisterBanks.td"
1170include "AMDGPUInstructions.td"
1171include "SIInstrInfo.td"
1172include "AMDGPUCallingConv.td"
1173include "AMDGPUSearchableTables.td"
1174