1 //===-- AMDGPUISelLowering.h - AMDGPU 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 // This file contains the interface defintiion of the TargetLowering class
11 // that is common to all AMD GPUs.
13 //===----------------------------------------------------------------------===//
15 #ifndef AMDGPUISELLOWERING_H
16 #define AMDGPUISELLOWERING_H
18 #include "AMDILISelLowering.h"
22 class AMDGPUTargetLowering
: public AMDILTargetLowering
25 SDValue
LowerINTRINSIC_WO_CHAIN(SDValue Op
, SelectionDAG
&DAG
) const;
29 /// addLiveIn - This functions adds reg to the live in list of the entry block
30 /// and emits a copy from reg to MI.getOperand(0).
32 // Some registers are loaded with values before the program
33 /// begins to execute. The loading of these values is modeled with pseudo
34 /// instructions which are lowered using this function.
35 void addLiveIn(MachineInstr
* MI
, MachineFunction
* MF
,
36 MachineRegisterInfo
& MRI
, const TargetInstrInfo
* TII
,
40 AMDGPUTargetLowering(TargetMachine
&TM
);
42 virtual SDValue
LowerOperation(SDValue Op
, SelectionDAG
&DAG
) const;
43 SDValue
LowerIntrinsicIABS(SDValue Op
, SelectionDAG
&DAG
) const;
44 SDValue
LowerIntrinsicLRP(SDValue Op
, SelectionDAG
&DAG
) const;
45 virtual const char* getTargetNodeName(unsigned Opcode
) const;
54 AMDGPU_FIRST
= AMDILISD::LAST_NON_MEMORY_OPCODE
,
61 LAST_AMDGPU_ISD_NUMBER
65 } // End namespace AMDGPUISD
67 } // End namespace llvm
69 #endif // AMDGPUISELLOWERING_H