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