xref: /llvm-project/llvm/lib/Target/Mips/Mips.h (revision 677177bb60dbe0d551251058c28466c5d74cebac)
1 //===-- Mips.h - Top-level interface for Mips 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 // This file contains the entry points for global functions defined in
10 // the LLVM Mips back-end.
11 //
12 //===----------------------------------------------------------------------===//
13 
14 #ifndef LLVM_LIB_TARGET_MIPS_MIPS_H
15 #define LLVM_LIB_TARGET_MIPS_MIPS_H
16 
17 #include "MCTargetDesc/MipsMCTargetDesc.h"
18 #include "llvm/Target/TargetMachine.h"
19 
20 #define IsMFLOMFHI(instr)                                                      \
21   (instr == Mips::MFLO || instr == Mips::MFLO64 || instr == Mips::MFHI ||      \
22    instr == Mips::MFHI64)
23 #define IsDIVMULT(instr)                                                       \
24   (instr == Mips::SDIV || instr == Mips::PseudoSDIV || instr == Mips::DSDIV || \
25    instr == Mips::PseudoDSDIV || instr == Mips::UDIV ||                        \
26    instr == Mips::PseudoUDIV || instr == Mips::DUDIV ||                        \
27    instr == Mips::PseudoDUDIV || instr == Mips::MULT ||                        \
28    instr == Mips::PseudoMULT || instr == Mips::DMULT ||                        \
29    instr == Mips::PseudoDMULT)
30 
31 namespace llvm {
32 class FunctionPass;
33 class InstructionSelector;
34 class MipsRegisterBankInfo;
35 class MipsSubtarget;
36 class MipsTargetMachine;
37 class MipsTargetMachine;
38 class ModulePass;
39 class PassRegistry;
40 
41 ModulePass *createMipsOs16Pass();
42 ModulePass *createMips16HardFloatPass();
43 
44 FunctionPass *createMipsModuleISelDagPass();
45 FunctionPass *createMipsOptimizePICCallPass();
46 FunctionPass *createMipsDelaySlotFillerPass();
47 FunctionPass *createMipsBranchExpansion();
48 FunctionPass *createMipsConstantIslandPass();
49 FunctionPass *createMicroMipsSizeReducePass();
50 FunctionPass *createMipsExpandPseudoPass();
51 FunctionPass *createMipsPreLegalizeCombiner();
52 FunctionPass *createMipsPostLegalizeCombiner(bool IsOptNone);
53 FunctionPass *createMipsMulMulBugPass();
54 
55 InstructionSelector *
56 createMipsInstructionSelector(const MipsTargetMachine &, const MipsSubtarget &,
57                               const MipsRegisterBankInfo &);
58 
59 void initializeMicroMipsSizeReducePass(PassRegistry &);
60 void initializeMipsBranchExpansionPass(PassRegistry &);
61 void initializeMipsDAGToDAGISelLegacyPass(PassRegistry &);
62 void initializeMipsDelaySlotFillerPass(PassRegistry &);
63 void initializeMipsMulMulBugFixPass(PassRegistry &);
64 void initializeMipsPostLegalizerCombinerPass(PassRegistry &);
65 void initializeMipsPreLegalizerCombinerPass(PassRegistry &);
66 } // namespace llvm
67 
68 #endif
69