1fa63f976522bd4faf19249e8c9ac4d3edda498d9Tom Stellard//===-- R600ISelLowering.h - R600 DAG Lowering Interface -*- C++ -*--------===// 2a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard// 3a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard// The LLVM Compiler Infrastructure 4a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard// 5a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard// This file is distributed under the University of Illinois Open Source 6a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard// License. See LICENSE.TXT for details. 7a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard// 8a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard//===----------------------------------------------------------------------===// 9a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard// 10fa63f976522bd4faf19249e8c9ac4d3edda498d9Tom Stellard// R600 DAG Lowering interface definition 11a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard// 12a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard//===----------------------------------------------------------------------===// 13a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard 14a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard#ifndef R600ISELLOWERING_H 15a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard#define R600ISELLOWERING_H 16a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard 17a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard#include "AMDGPUISelLowering.h" 18a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard 19a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellardnamespace llvm { 20a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard 21a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellardclass R600InstrInfo; 22a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard 23a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellardclass R600TargetLowering : public AMDGPUTargetLowering 24a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard{ 25a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellardpublic: 26a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard R600TargetLowering(TargetMachine &TM); 27a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard virtual MachineBasicBlock * EmitInstrWithCustomInserter(MachineInstr *MI, 28a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard MachineBasicBlock * BB) const; 29c53c8d05551083437eb991e79002c0a272541a79Tom Stellard virtual SDValue LowerOperation(SDValue Op, SelectionDAG &DAG) const; 30a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard 31a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellardprivate: 32a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard const R600InstrInfo * TII; 33a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard 34bcfc97dbf40c256ed59c2424e0c55b845f0f2569Tom Stellard /// lowerImplicitParameter - Each OpenCL kernel has nine implicit parameters 35bcfc97dbf40c256ed59c2424e0c55b845f0f2569Tom Stellard /// that are stored in the first nine dwords of a Vertex Buffer. These 365f82d1924831da7467bfe8025ca18e98b9548ca4Tom Stellard /// implicit parameters are lowered to load instructions which retreive the 375f82d1924831da7467bfe8025ca18e98b9548ca4Tom Stellard /// values from the Vertex Buffer. 385f82d1924831da7467bfe8025ca18e98b9548ca4Tom Stellard SDValue LowerImplicitParameter(SelectionDAG &DAG, EVT VT, 395f82d1924831da7467bfe8025ca18e98b9548ca4Tom Stellard DebugLoc DL, unsigned DwordOffset) const; 405f82d1924831da7467bfe8025ca18e98b9548ca4Tom Stellard 41a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard void lowerImplicitParameter(MachineInstr *MI, MachineBasicBlock &BB, 42a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard MachineRegisterInfo & MRI, unsigned dword_offset) const; 43a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard 4487272e9e2560a88352cf54d164507569ac43e502Tom Stellard SDValue LowerBR_CC(SDValue Op, SelectionDAG &DAG) const; 4587272e9e2560a88352cf54d164507569ac43e502Tom Stellard 46c53c8d05551083437eb991e79002c0a272541a79Tom Stellard /// LowerROTL - Lower ROTL opcode to BITALIGN 47c53c8d05551083437eb991e79002c0a272541a79Tom Stellard SDValue LowerROTL(SDValue Op, SelectionDAG &DAG) const; 48c53c8d05551083437eb991e79002c0a272541a79Tom Stellard 4947d1b0a80990dda4e14073f667f0c2b939dfb925Tom Stellard SDValue LowerSELECT_CC(SDValue Op, SelectionDAG &DAG) const; 5092823fb72abf1539bdb545fedc5525e9fc0b04ccTom Stellard SDValue LowerSETCC(SDValue Op, SelectionDAG &DAG) const; 5147d1b0a80990dda4e14073f667f0c2b939dfb925Tom Stellard 52a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard}; 53a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard 54a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard} // End namespace llvm; 55a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard 56a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard#endif // R600ISELLOWERING_H 57