Path: blob/main/contrib/llvm-project/llvm/lib/Target/M68k/GISel/M68kCallLowering.h
35294 views
//===-- M68kCallLowering.h - Call lowering ----------------------*- C++ -*-===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//7//8/// \file9/// This file implements the lowering of LLVM calls to machine code calls for10/// GlobalISel.11//12//===----------------------------------------------------------------------===//1314#ifndef LLVM_LIB_TARGET_M68K_GLSEL_M68KCALLLOWERING_H15#define LLVM_LIB_TARGET_M68K_GLSEL_M68KCALLLOWERING_H1617#include "llvm/CodeGen/CallingConvLower.h"18#include "llvm/CodeGen/GlobalISel/CallLowering.h"19#include "llvm/CodeGen/ValueTypes.h"2021namespace llvm {2223class M68kTargetLowering;24class MachineInstrBuilder;2526class M68kCallLowering : public CallLowering {27// TODO: We are only supporting return instruction with no value at this time28// point2930public:31M68kCallLowering(const M68kTargetLowering &TLI);3233bool lowerReturn(MachineIRBuilder &MIRBuilder, const Value *Val,34ArrayRef<Register> VRegs, FunctionLoweringInfo &FLI,35Register SwiftErrorVReg) const override;3637bool lowerFormalArguments(MachineIRBuilder &MIRBuilder, const Function &F,38ArrayRef<ArrayRef<Register>> VRegs,39FunctionLoweringInfo &FLI) const override;4041bool lowerCall(MachineIRBuilder &MIRBuilder,42CallLoweringInfo &Info) const override;4344bool enableBigEndian() const override;45};46struct M68kIncomingValueHandler : public CallLowering::IncomingValueHandler {47M68kIncomingValueHandler(MachineIRBuilder &MIRBuilder,48MachineRegisterInfo &MRI)49: CallLowering::IncomingValueHandler(MIRBuilder, MRI) {}5051uint64_t StackUsed;5253private:54void assignValueToReg(Register ValVReg, Register PhysReg,55const CCValAssign &VA) override;5657void assignValueToAddress(Register ValVReg, Register Addr, LLT MemTy,58const MachinePointerInfo &MPO,59const CCValAssign &VA) override;6061Register getStackAddress(uint64_t Size, int64_t Offset,62MachinePointerInfo &MPO,63ISD::ArgFlagsTy Flags) override;64};65} // end namespace llvm6667#endif // LLVM_LIB_TARGET_M68K_GLSEL_M68KCALLLOWERING_H686970