From ff6b2f9e32f5cf781318c6fa2f6f0b903ab25554 Mon Sep 17 00:00:00 2001 From: Quentin Colombet Date: Tue, 16 Feb 2016 01:05:16 +0000 Subject: [PATCH] [GlobalISel] Add missing file in previous commit. llvm-svn: 260923 --- .../include/llvm/CodeGen/GlobalISel/CallLowering.h | 72 ++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h diff --git a/llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h b/llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h new file mode 100644 index 0000000..117c81c --- /dev/null +++ b/llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h @@ -0,0 +1,72 @@ +//===-- llvm/CodeGen/GlobalISel/CallLowering.h - Call lowering --*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// This file describes how to lower LLVM calls to machine code calls. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CODEGEN_GLOBALISEL_CALLLOWERING_H +#define LLVM_CODEGEN_GLOBALISEL_CALLLOWERING_H + +#include "llvm/ADT/SmallVector.h" +#include "llvm/IR/Function.h" + +namespace llvm { +// Forward declarations. +class MachineIRBuilder; +class TargetLowering; +class Value; + +class CallLowering { + const TargetLowering *TLI; + protected: + /// Getter for generic TargetLowering class. + const TargetLowering *getTLI() const { + return TLI; + } + + /// Getter for target specific TargetLowering class. + template + const XXXTargetLowering *getTLI() const { + return static_cast(TLI); + } + public: + CallLowering(const TargetLowering *TLI) : TLI(TLI) {} + virtual ~CallLowering() {} + + /// This hook must be implemented to lower outgoing return values, described + /// by \p Val, into the specified virtual register \p VReg. + /// This hook is used by GlobalISel. + /// + /// \return True if the lowering succeeds, false otherwise. + virtual bool LowerReturn(MachineIRBuilder &MIRBuilder, const Value *Val, + unsigned VReg) const { + return false; + } + + /// This hook must be implemented to lower the incoming (formal) + /// arguments, described by \p Args, for GlobalISel. Each argument + /// must end up in the related virtual register described by VRegs. + /// In other words, the first argument should end up in VRegs[0], + /// the second in VRegs[1], and so on. + /// \p MIRBuilder is set to the proper insertion for the argument + /// lowering. + /// + /// \return True if the lowering succeeded, false otherwise. + virtual bool + LowerFormalArguments(MachineIRBuilder &MIRBuilder, + const Function::ArgumentListType &Args, + const SmallVectorImpl &VRegs) const { + return false; + } +}; +} // End namespace llvm. + +#endif -- 2.7.4