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-exception |
6 | // |
7 | //===----------------------------------------------------------------------===// |
8 | /// |
9 | /// \file |
10 | /// This file contains the entry points for global functions defined in the |
11 | /// M68k target library, as used by the LLVM JIT. |
12 | /// |
13 | //===----------------------------------------------------------------------===// |
14 | |
15 | #ifndef LLVM_LIB_TARGET_M68K_M68K_H |
16 | #define LLVM_LIB_TARGET_M68K_M68K_H |
17 | |
18 | namespace llvm { |
19 | |
20 | class FunctionPass; |
21 | class InstructionSelector; |
22 | class M68kRegisterBankInfo; |
23 | class M68kSubtarget; |
24 | class M68kTargetMachine; |
25 | class PassRegistry; |
26 | |
27 | /// This pass converts a legalized DAG into a M68k-specific DAG, ready for |
28 | /// instruction scheduling. |
29 | FunctionPass *createM68kISelDag(M68kTargetMachine &TM); |
30 | |
31 | /// Return a Machine IR pass that expands M68k-specific pseudo |
32 | /// instructions into a sequence of actual instructions. This pass |
33 | /// must run after prologue/epilogue insertion and before lowering |
34 | /// the MachineInstr to MC. |
35 | FunctionPass *createM68kExpandPseudoPass(); |
36 | |
37 | /// This pass initializes a global base register for PIC on M68k. |
38 | FunctionPass *createM68kGlobalBaseRegPass(); |
39 | |
40 | /// Finds sequential MOVEM instruction and collapse them into a single one. This |
41 | /// pass has to be run after all pseudo expansions and prologue/epilogue |
42 | /// emission so that all possible MOVEM are already in place. |
43 | FunctionPass *createM68kCollapseMOVEMPass(); |
44 | |
45 | InstructionSelector * |
46 | createM68kInstructionSelector(const M68kTargetMachine &, const M68kSubtarget &, |
47 | const M68kRegisterBankInfo &); |
48 | |
49 | void initializeM68kDAGToDAGISelPass(PassRegistry &); |
50 | void initializeM68kExpandPseudoPass(PassRegistry &); |
51 | void initializeM68kGlobalBaseRegPass(PassRegistry &); |
52 | void initializeM68kCollapseMOVEMPass(PassRegistry &); |
53 | |
54 | } // namespace llvm |
55 | |
56 | #endif // LLVM_LIB_TARGET_M68K_M68K_H |
57 | |