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