LLVM 24.0.0git
Mips.h
Go to the documentation of this file.
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
21
22#define IsMFLOMFHI(instr) \
23 (instr == Mips::MFLO || instr == Mips::MFLO64 || instr == Mips::MFHI || \
24 instr == Mips::MFHI64)
25#define IsDIVMULT(instr) \
26 (instr == Mips::SDIV || instr == Mips::PseudoSDIV || instr == Mips::DSDIV || \
27 instr == Mips::PseudoDSDIV || instr == Mips::UDIV || \
28 instr == Mips::PseudoUDIV || instr == Mips::DUDIV || \
29 instr == Mips::PseudoDUDIV || instr == Mips::MULT || \
30 instr == Mips::PseudoMULT || instr == Mips::DMULT || \
31 instr == Mips::PseudoDMULT)
32
33namespace llvm {
34class FunctionPass;
35class InstructionSelector;
36class MipsRegisterBankInfo;
37class MipsSubtarget;
38class MipsTargetMachine;
39class MipsTargetMachine;
40class ModulePass;
41class PassRegistry;
42
44public:
46 static StringRef name() { return "Mips16ISelDAGPass"; }
48 function_ref<StringRef(StringRef)> MapClassName2PassName) {
49 StringRef ClassName = name();
50 auto PassName = MapClassName2PassName(ClassName);
51 OS << PassName;
52 }
53};
54
55FunctionPass *createMips16ISelDAGLegacyPass(MipsTargetMachine &TM,
56 CodeGenOptLevel OptLevel);
57ModulePass *createMipsOs16Pass();
58ModulePass *createMips16HardFloatPass();
59
61public:
63 static StringRef name() { return "MipsSEISelDAGPass"; }
65 function_ref<StringRef(StringRef)> MapClassName2PassName) {
66 StringRef ClassName = name();
67 auto PassName = MapClassName2PassName(ClassName);
68 OS << PassName;
69 }
70};
71
72FunctionPass *createMipsSEISelDAGLegacyPass(MipsTargetMachine &TM,
73 CodeGenOptLevel OptLevel);
74FunctionPass *createMipsOptimizePICCallPass();
75FunctionPass *createMipsDelaySlotFillerPass();
83
86 const MipsRegisterBankInfo &);
87
96} // namespace llvm
97
98#endif
static const char PassName[]
FunctionPass class - This class is used to implement most global optimizations.
Definition Pass.h:312
static StringRef name()
Definition Mips.h:46
void printPipeline(raw_ostream &OS, function_ref< StringRef(StringRef)> MapClassName2PassName)
Definition Mips.h:47
Mips16ISelDAGPass(MipsTargetMachine &TM, CodeGenOptLevel OptLevel)
This class provides the information for the target register banks.
MipsSEISelDAGPass(MipsTargetMachine &TM, CodeGenOptLevel OptLevel)
void printPipeline(raw_ostream &OS, function_ref< StringRef(StringRef)> MapClassName2PassName)
Definition Mips.h:64
static StringRef name()
Definition Mips.h:63
PassRegistry - This class manages the registration and intitialization of the pass subsystem as appli...
SelectionDAGISelPass(std::unique_ptr< SelectionDAGISel > Selector)
Represent a constant reference to a string, i.e.
Definition StringRef.h:56
An efficient, type-erasing, non-owning reference to a callable.
This class implements an extremely fast bulk output stream that can only output to a stream.
Definition raw_ostream.h:53
This is an optimization pass for GlobalISel generic memory operations.
FunctionPass * createMipsPreLegalizeCombiner()
FunctionPass * createMipsSEISelDAGLegacyPass(MipsTargetMachine &TM, CodeGenOptLevel OptLevel)
FunctionPass * createMipsConstantIslandPass()
Returns a pass that converts branches to long branches.
void initializeMipsPreLegalizerCombinerPass(PassRegistry &)
void initializeMipsBranchExpansionPass(PassRegistry &)
void initializeMipsDelaySlotFillerPass(PassRegistry &)
void initializeMipsAsmPrinterPass(PassRegistry &)
void initializeMipsMulMulBugFixPass(PassRegistry &)
FunctionPass * createMipsOptimizePICCallPass()
Return an OptimizeCall object.
void initializeMipsDAGToDAGISelLegacyPass(PassRegistry &)
InstructionSelector * createMipsInstructionSelector(const MipsTargetMachine &, const MipsSubtarget &, const MipsRegisterBankInfo &)
FunctionPass * createMips16ISelDAGLegacyPass(MipsTargetMachine &TM, CodeGenOptLevel OptLevel)
void initializeMipsPostLegalizerCombinerPass(PassRegistry &)
FunctionPass * createMicroMipsSizeReducePass()
Returns an instance of the MicroMips size reduction pass.
CodeGenOptLevel
Code generation optimization level.
Definition CodeGen.h:280
FunctionPass * createMipsBranchExpansion()
FunctionPass * createMipsMulMulBugPass()
void initializeMicroMipsSizeReducePass(PassRegistry &)
FunctionPass * createMipsPostLegalizeCombiner(bool IsOptNone)
ModulePass * createMips16HardFloatPass()
FunctionPass * createMipsExpandPseudoPass()
createMipsExpandPseudoPass - returns an instance of the pseudo instruction expansion pass.
FunctionPass * createMipsDelaySlotFillerPass()
createMipsDelaySlotFillerPass - Returns a pass that fills in delay slots in Mips MachineFunctions
ModulePass * createMipsOs16Pass()
Definition MipsOs16.cpp:157