blob: 55608f47278179299392bbacd664d430d69a4b60 [file] [log] [blame]
Petar Jovanovicfac93e22018-02-23 11:06:40 +00001//===- 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
20using namespace llvm;
21
22MipsCallLowering::MipsCallLowering(const MipsTargetLowering &TLI)
23 : CallLowering(&TLI) {}
24
25bool 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
37bool 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}