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