blob: b5f3fa5617b896488ff29ba5652d288ab3e529c6 [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
18#include "llvm/CodeGen/GlobalISel/CallLowering.h"
19
20namespace llvm {
21
22class AMDGPUTargetLowering;
23
24class AMDGPUCallLowering: public CallLowering {
Tom Stellardca166212017-01-30 21:56:46 +000025
26 unsigned lowerParameterPtr(MachineIRBuilder &MIRBuilder, Type *ParamTy,
27 unsigned Offset) const;
28
29 void lowerParameter(MachineIRBuilder &MIRBuilder, Type *ParamTy,
30 unsigned Offset, unsigned DstReg) const;
31
Tom Stellard000c5af2016-04-14 19:09:28 +000032 public:
33 AMDGPUCallLowering(const AMDGPUTargetLowering &TLI);
34
35 bool lowerReturn(MachineIRBuilder &MIRBuiler, const Value *Val,
36 unsigned VReg) const override;
Tim Northover862758ec2016-09-21 12:57:35 +000037 bool lowerFormalArguments(MachineIRBuilder &MIRBuilder, const Function &F,
38 ArrayRef<unsigned> VRegs) const override;
Tom Stellardca166212017-01-30 21:56:46 +000039 CCAssignFn *CCAssignFnForCall(CallingConv::ID CC, bool IsVarArg) const;
Tom Stellard000c5af2016-04-14 19:09:28 +000040};
41} // End of namespace llvm;
42#endif