xref: /freebsd/contrib/llvm-project/llvm/lib/Target/AMDGPU/R600.td (revision 0fca6ea1d4eea4c934cfff25ac9ee8ad6fe95583)
10b57cec5SDimitry Andric//===-- R600.td - R600 Tablegen files ----------------------*- tablegen -*-===//
20b57cec5SDimitry Andric//
30b57cec5SDimitry Andric// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
40b57cec5SDimitry Andric// See https://llvm.org/LICENSE.txt for license information.
50b57cec5SDimitry Andric// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
60b57cec5SDimitry Andric//
70b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
80b57cec5SDimitry Andric
90b57cec5SDimitry Andricinclude "llvm/Target/Target.td"
100b57cec5SDimitry Andric
110b57cec5SDimitry Andricdef R600InstrInfo : InstrInfo {
120b57cec5SDimitry Andric  let guessInstructionProperties = 1;
130b57cec5SDimitry Andric}
140b57cec5SDimitry Andric
150b57cec5SDimitry Andricdef R600 : Target {
160b57cec5SDimitry Andric  let InstructionSet = R600InstrInfo;
170b57cec5SDimitry Andric  let AllowRegisterRenaming = 1;
180b57cec5SDimitry Andric}
190b57cec5SDimitry Andric
200b57cec5SDimitry Andriclet Namespace = "R600" in {
210b57cec5SDimitry Andric
220b57cec5SDimitry Andricforeach Index = 0-15 in {
230b57cec5SDimitry Andric  def sub#Index : SubRegIndex<32, !shl(Index, 5)>;
240b57cec5SDimitry Andric}
250b57cec5SDimitry Andric
260b57cec5SDimitry Andricinclude "R600RegisterInfo.td"
270b57cec5SDimitry Andric
280b57cec5SDimitry Andric}
290b57cec5SDimitry Andric
300b57cec5SDimitry Andricdef NullALU : InstrItinClass;
310b57cec5SDimitry Andricdef ALU_NULL : FuncUnit;
320b57cec5SDimitry Andric
330b57cec5SDimitry Andricinclude "AMDGPUFeatures.td"
340b57cec5SDimitry Andricinclude "R600Schedule.td"
350b57cec5SDimitry Andricinclude "R600Processors.td"
36349cc55cSDimitry Andricinclude "R600InstrInfo.td"
370b57cec5SDimitry Andricinclude "AMDGPUInstrInfo.td"
38*0fca6ea1SDimitry Andricinclude "AMDGPUPredicateControl.td"
390b57cec5SDimitry Andricinclude "AMDGPUInstructions.td"
400b57cec5SDimitry Andricinclude "R600Instructions.td"
410b57cec5SDimitry Andricinclude "R700Instructions.td"
420b57cec5SDimitry Andricinclude "EvergreenInstructions.td"
430b57cec5SDimitry Andricinclude "CaymanInstructions.td"
440b57cec5SDimitry Andric
450b57cec5SDimitry Andric// Calling convention for R600
460b57cec5SDimitry Andricdef CC_R600 : CallingConv<[
470b57cec5SDimitry Andric  CCIfInReg<CCIfType<[v4f32, v4i32] , CCAssignToReg<[
480b57cec5SDimitry Andric    T0_XYZW, T1_XYZW, T2_XYZW, T3_XYZW, T4_XYZW, T5_XYZW, T6_XYZW, T7_XYZW,
490b57cec5SDimitry Andric    T8_XYZW, T9_XYZW, T10_XYZW, T11_XYZW, T12_XYZW, T13_XYZW, T14_XYZW, T15_XYZW,
500b57cec5SDimitry Andric    T16_XYZW, T17_XYZW, T18_XYZW, T19_XYZW, T20_XYZW, T21_XYZW, T22_XYZW,
510b57cec5SDimitry Andric    T23_XYZW, T24_XYZW, T25_XYZW, T26_XYZW, T27_XYZW, T28_XYZW, T29_XYZW,
520b57cec5SDimitry Andric    T30_XYZW, T31_XYZW, T32_XYZW
530b57cec5SDimitry Andric  ]>>>
540b57cec5SDimitry Andric]>;
55