1a16bd4f9SDaniel Sanders //===-- RISCVCallLowering.cpp - Call lowering -------------------*- C++ -*-===//
2a16bd4f9SDaniel Sanders //
3a16bd4f9SDaniel Sanders // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4a16bd4f9SDaniel Sanders // See https://llvm.org/LICENSE.txt for license information.
5a16bd4f9SDaniel Sanders // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6a16bd4f9SDaniel Sanders //
7a16bd4f9SDaniel Sanders //===----------------------------------------------------------------------===//
8a16bd4f9SDaniel Sanders //
9a16bd4f9SDaniel Sanders /// \file
10a16bd4f9SDaniel Sanders /// This file implements the lowering of LLVM calls to machine code calls for
11a16bd4f9SDaniel Sanders /// GlobalISel.
12a16bd4f9SDaniel Sanders //
13a16bd4f9SDaniel Sanders //===----------------------------------------------------------------------===//
14a16bd4f9SDaniel Sanders 
15a16bd4f9SDaniel Sanders #include "RISCVCallLowering.h"
16a16bd4f9SDaniel Sanders #include "RISCVISelLowering.h"
17a16bd4f9SDaniel Sanders #include "llvm/CodeGen/GlobalISel/MachineIRBuilder.h"
18a16bd4f9SDaniel Sanders 
19a16bd4f9SDaniel Sanders using namespace llvm;
20a16bd4f9SDaniel Sanders 
RISCVCallLowering(const RISCVTargetLowering & TLI)21a16bd4f9SDaniel Sanders RISCVCallLowering::RISCVCallLowering(const RISCVTargetLowering &TLI)
22a16bd4f9SDaniel Sanders     : CallLowering(&TLI) {}
23a16bd4f9SDaniel Sanders 
lowerReturn(MachineIRBuilder & MIRBuilder,const Value * Val,ArrayRef<Register> VRegs,FunctionLoweringInfo & FLI) const24a16bd4f9SDaniel Sanders bool RISCVCallLowering::lowerReturn(MachineIRBuilder &MIRBuilder,
25*d68458bdSChristudasan Devadasan                                     const Value *Val, ArrayRef<Register> VRegs,
26*d68458bdSChristudasan Devadasan                                     FunctionLoweringInfo &FLI) const {
27a16bd4f9SDaniel Sanders 
28a16bd4f9SDaniel Sanders   MachineInstrBuilder Ret = MIRBuilder.buildInstrNoInsert(RISCV::PseudoRET);
29a16bd4f9SDaniel Sanders 
30a16bd4f9SDaniel Sanders   if (Val != nullptr) {
31a16bd4f9SDaniel Sanders     return false;
32a16bd4f9SDaniel Sanders   }
33a16bd4f9SDaniel Sanders   MIRBuilder.insertInstr(Ret);
34a16bd4f9SDaniel Sanders   return true;
35a16bd4f9SDaniel Sanders }
36a16bd4f9SDaniel Sanders 
lowerFormalArguments(MachineIRBuilder & MIRBuilder,const Function & F,ArrayRef<ArrayRef<Register>> VRegs,FunctionLoweringInfo & FLI) const37*d68458bdSChristudasan Devadasan bool RISCVCallLowering::lowerFormalArguments(MachineIRBuilder &MIRBuilder,
38*d68458bdSChristudasan Devadasan                                              const Function &F,
39*d68458bdSChristudasan Devadasan                                              ArrayRef<ArrayRef<Register>> VRegs,
40*d68458bdSChristudasan Devadasan                                              FunctionLoweringInfo &FLI) const {
41a16bd4f9SDaniel Sanders 
42a16bd4f9SDaniel Sanders   if (F.arg_empty())
43a16bd4f9SDaniel Sanders     return true;
44a16bd4f9SDaniel Sanders 
45a16bd4f9SDaniel Sanders   return false;
46a16bd4f9SDaniel Sanders }
47a16bd4f9SDaniel Sanders 
lowerCall(MachineIRBuilder & MIRBuilder,CallLoweringInfo & Info) const48a16bd4f9SDaniel Sanders bool RISCVCallLowering::lowerCall(MachineIRBuilder &MIRBuilder,
49a16bd4f9SDaniel Sanders                                   CallLoweringInfo &Info) const {
50a16bd4f9SDaniel Sanders   return false;
51a16bd4f9SDaniel Sanders }
52