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
31namespace llvm {
32class FunctionPass;
33class InstructionSelector;
34class MipsRegisterBankInfo;
35class MipsSubtarget;
36class MipsTargetMachine;
37class MipsTargetMachine;
38class ModulePass;
39class PassRegistry;
40
41ModulePass *createMipsOs16Pass();
42ModulePass *createMips16HardFloatPass();
43
44FunctionPass *createMipsModuleISelDagPass();
45FunctionPass *createMipsOptimizePICCallPass();
46FunctionPass *createMipsDelaySlotFillerPass();
47FunctionPass *createMipsBranchExpansion();
48FunctionPass *createMipsConstantIslandPass();
49FunctionPass *createMicroMipsSizeReducePass();
50FunctionPass *createMipsExpandPseudoPass();
51FunctionPass *createMipsPreLegalizeCombiner();
52FunctionPass *createMipsPostLegalizeCombiner(bool IsOptNone);
53FunctionPass *createMipsMulMulBugPass();
54
55InstructionSelector *
56createMipsInstructionSelector(const MipsTargetMachine &, const MipsSubtarget &,
57 const MipsRegisterBankInfo &);
58
59void initializeMicroMipsSizeReducePass(PassRegistry &);
60void initializeMipsAsmPrinterPass(PassRegistry &);
61void initializeMipsBranchExpansionPass(PassRegistry &);
62void initializeMipsDAGToDAGISelLegacyPass(PassRegistry &);
63void initializeMipsDelaySlotFillerPass(PassRegistry &);
64void initializeMipsMulMulBugFixPass(PassRegistry &);
65void initializeMipsPostLegalizerCombinerPass(PassRegistry &);
66void initializeMipsPreLegalizerCombinerPass(PassRegistry &);
67} // namespace llvm
68
69#endif
70