[llvm-exegesis][NFC] Pass Instruction instead of bare Opcode
[llvm-core.git] / lib / Target / AMDGPU / AMDGPUCallLowering.h
blobed859716218efc30acdac37df31576e5b9ffa757
1 //===- lib/Target/AMDGPU/AMDGPUCallLowering.h - Call lowering -*- C++ -*---===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 ///
10 /// \file
11 /// This file describes how to lower LLVM calls to machine code calls.
12 ///
13 //===----------------------------------------------------------------------===//
15 #ifndef LLVM_LIB_TARGET_AMDGPU_AMDGPUCALLLOWERING_H
16 #define LLVM_LIB_TARGET_AMDGPU_AMDGPUCALLLOWERING_H
18 #include "AMDGPU.h"
19 #include "llvm/CodeGen/GlobalISel/CallLowering.h"
21 namespace llvm {
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;
33 public:
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;
44 #endif