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