xref: /freebsd/contrib/llvm-project/llvm/lib/Target/AMDGPU/R600.td (revision 349cc55c9796c4596a5b9904cd3281af295f878f)
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  let noNamedPositionallyEncodedOperands = 1;
140b57cec5SDimitry Andric}
150b57cec5SDimitry Andric
160b57cec5SDimitry Andricdef R600 : Target {
170b57cec5SDimitry Andric  let InstructionSet = R600InstrInfo;
180b57cec5SDimitry Andric  let AllowRegisterRenaming = 1;
190b57cec5SDimitry Andric}
200b57cec5SDimitry Andric
210b57cec5SDimitry Andriclet Namespace = "R600" in {
220b57cec5SDimitry Andric
230b57cec5SDimitry Andricforeach Index = 0-15 in {
240b57cec5SDimitry Andric  def sub#Index : SubRegIndex<32, !shl(Index, 5)>;
250b57cec5SDimitry Andric}
260b57cec5SDimitry Andric
270b57cec5SDimitry Andricinclude "R600RegisterInfo.td"
280b57cec5SDimitry Andric
290b57cec5SDimitry Andric}
300b57cec5SDimitry Andric
310b57cec5SDimitry Andricdef NullALU : InstrItinClass;
320b57cec5SDimitry Andricdef ALU_NULL : FuncUnit;
330b57cec5SDimitry Andric
340b57cec5SDimitry Andricinclude "AMDGPUFeatures.td"
350b57cec5SDimitry Andricinclude "R600Schedule.td"
360b57cec5SDimitry Andricinclude "R600Processors.td"
37*349cc55cSDimitry Andricinclude "R600InstrInfo.td"
380b57cec5SDimitry Andricinclude "AMDGPUInstrInfo.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