1 //===-- R600ISelLowering.h - R600 DAG Lowering Interface -*- C++ -*--------===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // R600 DAG Lowering interface definition
12 //===----------------------------------------------------------------------===//
14 #ifndef R600ISELLOWERING_H
15 #define R600ISELLOWERING_H
17 #include "AMDGPUISelLowering.h"
23 class R600TargetLowering : public AMDGPUTargetLowering
26 R600TargetLowering(TargetMachine &TM);
27 virtual MachineBasicBlock * EmitInstrWithCustomInserter(MachineInstr *MI,
28 MachineBasicBlock * BB) const;
29 virtual SDValue LowerOperation(SDValue Op, SelectionDAG &DAG) const;
32 const R600InstrInfo * TII;
34 /// lowerImplicitParameter - Each OpenCL kernel has nine implicit parameters
35 /// that are stored in the first nine dwords of a Vertex Buffer. These
36 /// implicit parameters are represented by pseudo instructions, which are
37 /// lowered to VTX_READ instructions by this function.
38 void lowerImplicitParameter(MachineInstr *MI, MachineBasicBlock &BB,
39 MachineRegisterInfo & MRI, unsigned dword_offset) const;
41 /// LowerROTL - Lower ROTL opcode to BITALIGN
42 SDValue LowerROTL(SDValue Op, SelectionDAG &DAG) const;
46 } // End namespace llvm;
48 #endif // R600ISELLOWERING_H