1 //===- MipsCallLowering.cpp -------------------------------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 /// \file
11 /// This file implements the lowering of LLVM calls to machine code calls for
12 /// GlobalISel.
13 //
14 //===----------------------------------------------------------------------===//
15 
16 #include "MipsCallLowering.h"
17 #include "MipsISelLowering.h"
18 #include "llvm/CodeGen/GlobalISel/MachineIRBuilder.h"
19 
20 using namespace llvm;
21 
22 MipsCallLowering::MipsCallLowering(const MipsTargetLowering &TLI)
23     : CallLowering(&TLI) {}
24 
25 bool MipsCallLowering::lowerReturn(MachineIRBuilder &MIRBuilder,
26                                    const Value *Val, unsigned VReg) const {
27 
28   MachineInstrBuilder Ret = MIRBuilder.buildInstrNoInsert(Mips::RetRA);
29 
30   if (Val != nullptr) {
31     return false;
32   }
33   MIRBuilder.insertInstr(Ret);
34   return true;
35 }
36 
37 bool MipsCallLowering::lowerFormalArguments(MachineIRBuilder &MIRBuilder,
38                                             const Function &F,
39                                             ArrayRef<unsigned> VRegs) const {
40 
41   // Quick exit if there aren't any args.
42   if (F.arg_empty())
43     return true;
44 
45   // Function had args, but we didn't lower them.
46   return false;
47 }
48