blob: 09bdf8ffcde7b1e1a7ad123d129c5e925be696d6 [file] [log] [blame]
Tom Stellard000c5af2016-04-14 19:09:28 +00001//===- 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//===----------------------------------------------------------------------===//
14
15#ifndef LLVM_LIB_TARGET_AMDGPU_AMDGPUCALLLOWERING_H
16#define LLVM_LIB_TARGET_AMDGPU_AMDGPUCALLLOWERING_H
17
Yaxun Liu1a14bfa2017-03-27 14:04:01 +000018#include "AMDGPU.h"
Tom Stellard000c5af2016-04-14 19:09:28 +000019#include "llvm/CodeGen/GlobalISel/CallLowering.h"
20
21namespace llvm {
22
23class AMDGPUTargetLowering;
24
25class AMDGPUCallLowering: public CallLowering {
Yaxun Liu1a14bfa2017-03-27 14:04:01 +000026 AMDGPUAS AMDGPUASI;
Tom Stellardca166212017-01-30 21:56:46 +000027
28 unsigned lowerParameterPtr(MachineIRBuilder &MIRBuilder, Type *ParamTy,
29 unsigned Offset) const;
30
31 void lowerParameter(MachineIRBuilder &MIRBuilder, Type *ParamTy,
32 unsigned Offset, unsigned DstReg) const;
33
Tom Stellard000c5af2016-04-14 19:09:28 +000034 public:
35 AMDGPUCallLowering(const AMDGPUTargetLowering &TLI);
36
37 bool lowerReturn(MachineIRBuilder &MIRBuiler, const Value *Val,
38 unsigned VReg) const override;
Tim Northover862758ec2016-09-21 12:57:35 +000039 bool lowerFormalArguments(MachineIRBuilder &MIRBuilder, const Function &F,
40 ArrayRef<unsigned> VRegs) const override;
Tom Stellardca166212017-01-30 21:56:46 +000041 CCAssignFn *CCAssignFnForCall(CallingConv::ID CC, bool IsVarArg) const;
Tom Stellard000c5af2016-04-14 19:09:28 +000042};
43} // End of namespace llvm;
44#endif