1*5f757f3fSDimitry Andric //===-- BPFCallLowering.h - Call lowering for GlobalISel --------*- C++ -*-===// 2*5f757f3fSDimitry Andric // 3*5f757f3fSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*5f757f3fSDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 5*5f757f3fSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*5f757f3fSDimitry Andric // 7*5f757f3fSDimitry Andric //===----------------------------------------------------------------------===// 8*5f757f3fSDimitry Andric /// 9*5f757f3fSDimitry Andric /// \file 10*5f757f3fSDimitry Andric /// This file describes how to lower LLVM calls to machine code calls. 11*5f757f3fSDimitry Andric /// 12*5f757f3fSDimitry Andric //===----------------------------------------------------------------------===// 13*5f757f3fSDimitry Andric 14*5f757f3fSDimitry Andric #ifndef LLVM_LIB_TARGET_BPF_GISEL_BPFCALLLOWERING_H 15*5f757f3fSDimitry Andric #define LLVM_LIB_TARGET_BPF_GISEL_BPFCALLLOWERING_H 16*5f757f3fSDimitry Andric 17*5f757f3fSDimitry Andric #include "BPFISelLowering.h" 18*5f757f3fSDimitry Andric #include "llvm/CodeGen/GlobalISel/CallLowering.h" 19*5f757f3fSDimitry Andric #include "llvm/IR/CallingConv.h" 20*5f757f3fSDimitry Andric 21*5f757f3fSDimitry Andric namespace llvm { 22*5f757f3fSDimitry Andric 23*5f757f3fSDimitry Andric class BPFTargetLowering; 24*5f757f3fSDimitry Andric 25*5f757f3fSDimitry Andric class BPFCallLowering : public CallLowering { 26*5f757f3fSDimitry Andric public: 27*5f757f3fSDimitry Andric BPFCallLowering(const BPFTargetLowering &TLI); 28*5f757f3fSDimitry Andric bool lowerReturn(MachineIRBuilder &MIRBuilder, const Value *Val, 29*5f757f3fSDimitry Andric ArrayRef<Register> VRegs, FunctionLoweringInfo &FLI, 30*5f757f3fSDimitry Andric Register SwiftErrorVReg) const override; 31*5f757f3fSDimitry Andric bool lowerFormalArguments(MachineIRBuilder &MIRBuilder, const Function &F, 32*5f757f3fSDimitry Andric ArrayRef<ArrayRef<Register>> VRegs, 33*5f757f3fSDimitry Andric FunctionLoweringInfo &FLI) const override; 34*5f757f3fSDimitry Andric bool lowerCall(MachineIRBuilder &MIRBuilder, 35*5f757f3fSDimitry Andric CallLoweringInfo &Info) const override; 36*5f757f3fSDimitry Andric }; 37*5f757f3fSDimitry Andric } // namespace llvm 38*5f757f3fSDimitry Andric 39*5f757f3fSDimitry Andric #endif 40