1 //===- lib/Target/AMDGPU/AMDGPUCallLowering.h - Call lowering -*- 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 //===----------------------------------------------------------------------===//
11 /// This file describes how to lower LLVM calls to machine code calls.
13 //===----------------------------------------------------------------------===//
15 #ifndef LLVM_LIB_TARGET_AMDGPU_AMDGPUCALLLOWERING_H
16 #define LLVM_LIB_TARGET_AMDGPU_AMDGPUCALLLOWERING_H
19 #include "llvm/CodeGen/GlobalISel/CallLowering.h"
23 class AMDGPUTargetLowering
;
25 class AMDGPUCallLowering
: public CallLowering
{
26 unsigned lowerParameterPtr(MachineIRBuilder
&MIRBuilder
, Type
*ParamTy
,
27 uint64_t Offset
) const;
29 void lowerParameter(MachineIRBuilder
&MIRBuilder
, Type
*ParamTy
,
30 uint64_t Offset
, unsigned Align
,
31 unsigned DstReg
) const;
34 AMDGPUCallLowering(const AMDGPUTargetLowering
&TLI
);
36 bool lowerReturn(MachineIRBuilder
&MIRBuilder
, const Value
*Val
,
37 ArrayRef
<unsigned> VRegs
) const override
;
38 bool lowerFormalArguments(MachineIRBuilder
&MIRBuilder
, const Function
&F
,
39 ArrayRef
<unsigned> VRegs
) const override
;
40 static CCAssignFn
*CCAssignFnForCall(CallingConv::ID CC
, bool IsVarArg
);
41 static CCAssignFn
*CCAssignFnForReturn(CallingConv::ID CC
, bool IsVarArg
);
43 } // End of namespace llvm;