58 lines · c
1//===-- M68k.h - Top-level interface for M68k representation ----*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8///9/// \file10/// This file contains the entry points for global functions defined in the11/// M68k target library, as used by the LLVM JIT.12///13//===----------------------------------------------------------------------===//14 15#ifndef LLVM_LIB_TARGET_M68K_M68K_H16#define LLVM_LIB_TARGET_M68K_M68K_H17 18namespace llvm {19 20class FunctionPass;21class InstructionSelector;22class M68kRegisterBankInfo;23class M68kSubtarget;24class M68kTargetMachine;25class PassRegistry;26 27/// This pass converts a legalized DAG into a M68k-specific DAG, ready for28/// instruction scheduling.29FunctionPass *createM68kISelDag(M68kTargetMachine &TM);30 31/// Return a Machine IR pass that expands M68k-specific pseudo32/// instructions into a sequence of actual instructions. This pass33/// must run after prologue/epilogue insertion and before lowering34/// the MachineInstr to MC.35FunctionPass *createM68kExpandPseudoPass();36 37/// This pass initializes a global base register for PIC on M68k.38FunctionPass *createM68kGlobalBaseRegPass();39 40/// Finds sequential MOVEM instruction and collapse them into a single one. This41/// pass has to be run after all pseudo expansions and prologue/epilogue42/// emission so that all possible MOVEM are already in place.43FunctionPass *createM68kCollapseMOVEMPass();44 45InstructionSelector *46createM68kInstructionSelector(const M68kTargetMachine &, const M68kSubtarget &,47 const M68kRegisterBankInfo &);48 49void initializeM68kAsmPrinterPass(PassRegistry &);50void initializeM68kDAGToDAGISelLegacyPass(PassRegistry &);51void initializeM68kExpandPseudoPass(PassRegistry &);52void initializeM68kGlobalBaseRegPass(PassRegistry &);53void initializeM68kCollapseMOVEMPass(PassRegistry &);54 55} // namespace llvm56 57#endif // LLVM_LIB_TARGET_M68K_M68K_H58