1 //===-- R600.td - R600 Tablegen files ----------------------*- tablegen -*-===//
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
7 //===----------------------------------------------------------------------===//
9 include "llvm/Target/Target.td"
11 def R600InstrInfo : InstrInfo {
12 let guessInstructionProperties = 1;
16 let InstructionSet = R600InstrInfo;
17 let AllowRegisterRenaming = 1;
20 let Namespace = "R600" in {
22 foreach Index = 0-15 in {
23 def sub#Index : SubRegIndex<32, !shl(Index, 5)>;
26 include "R600RegisterInfo.td"
30 def NullALU : InstrItinClass;
31 def ALU_NULL : FuncUnit;
33 include "AMDGPUFeatures.td"
34 include "R600Schedule.td"
35 include "R600Processors.td"
36 include "R600InstrInfo.td"
37 include "AMDGPUInstrInfo.td"
38 include "AMDGPUPredicateControl.td"
39 include "AMDGPUInstructions.td"
40 include "R600Instructions.td"
41 include "R700Instructions.td"
42 include "EvergreenInstructions.td"
43 include "CaymanInstructions.td"
45 // Calling convention for R600
46 def CC_R600 : CallingConv<[
47 CCIfInReg<CCIfType<[v4f32, v4i32] , CCAssignToReg<[
48 T0_XYZW, T1_XYZW, T2_XYZW, T3_XYZW, T4_XYZW, T5_XYZW, T6_XYZW, T7_XYZW,
49 T8_XYZW, T9_XYZW, T10_XYZW, T11_XYZW, T12_XYZW, T13_XYZW, T14_XYZW, T15_XYZW,
50 T16_XYZW, T17_XYZW, T18_XYZW, T19_XYZW, T20_XYZW, T21_XYZW, T22_XYZW,
51 T23_XYZW, T24_XYZW, T25_XYZW, T26_XYZW, T27_XYZW, T28_XYZW, T29_XYZW,
52 T30_XYZW, T31_XYZW, T32_XYZW