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#include "llvm/IR/Analysis.h"
22#include "llvm/IR/PassManager.h"
25
26#define IsMFLOMFHI(instr) \
27 (instr == Mips::MFLO || instr == Mips::MFLO64 || instr == Mips::MFHI || \
28 instr == Mips::MFHI64)
29#define IsDIVMULT(instr) \
30 (instr == Mips::SDIV || instr == Mips::PseudoSDIV || instr == Mips::DSDIV || \
31 instr == Mips::PseudoDSDIV || instr == Mips::UDIV || \
32 instr == Mips::PseudoUDIV || instr == Mips::DUDIV || \
33 instr == Mips::PseudoDUDIV || instr == Mips::MULT || \
34 instr == Mips::PseudoMULT || instr == Mips::DMULT || \
35 instr == Mips::PseudoDMULT)
36
37namespace llvm {
38class FunctionPass;
39class InstructionSelector;
40class MipsRegisterBankInfo;
41class MipsSubtarget;
42class MipsTargetMachine;
43class MipsTargetMachine;
44class ModulePass;
45class PassRegistry;
46
48public:
50 static StringRef name() { return "Mips16ISelDAGPass"; }
52 function_ref<StringRef(StringRef)> MapClassName2PassName) {
53 StringRef ClassName = name();
54 auto PassName = MapClassName2PassName(ClassName);
55 OS << PassName;
56 }
57};
58
59FunctionPass *createMips16ISelDAGLegacyPass(MipsTargetMachine &TM,
60 CodeGenOptLevel OptLevel);
61
62class MipsOs16Pass : public RequiredPassInfoMixin<MipsOs16Pass> {
63public:
65};
66
68
69class Mips16HardFloatPass : public RequiredPassInfoMixin<Mips16HardFloatPass> {
71
72public:
75};
76
78
80public:
82 static StringRef name() { return "MipsSEISelDAGPass"; }
84 function_ref<StringRef(StringRef)> MapClassName2PassName) {
85 StringRef ClassName = name();
86 auto PassName = MapClassName2PassName(ClassName);
87 OS << PassName;
88 }
89};
90
91FunctionPass *createMipsSEISelDAGLegacyPass(MipsTargetMachine &TM,
92 CodeGenOptLevel OptLevel);
93
95 : public RequiredPassInfoMixin<MipsOptimizePICCallPass> {
96public:
99};
100
105
107 : public RequiredPassInfoMixin<MicroMipsSizeReducePass> {
108public:
111};
112
114
116 : public RequiredPassInfoMixin<MipsExpandPseudoPass> {
117public:
120};
121
125
127 : public RequiredPassInfoMixin<MipsMulMulBugFixPass> {
128public:
131};
132
134
137 const MipsRegisterBankInfo &);
138
147} // namespace llvm
148
149#endif
This header defines various interfaces for pass management in LLVM.
ModuleAnalysisManager MAM
static const char PassName[]
FunctionPass class - This class is used to implement most global optimizations.
Definition Pass.h:312
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
Mips16HardFloatPass(MipsTargetMachine &TM)
Definition Mips.h:73
PreservedAnalyses run(Module &M, ModuleAnalysisManager &MAM)
static StringRef name()
Definition Mips.h:50
void printPipeline(raw_ostream &OS, function_ref< StringRef(StringRef)> MapClassName2PassName)
Definition Mips.h:51
Mips16ISelDAGPass(MipsTargetMachine &TM, CodeGenOptLevel OptLevel)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(Module &M, ModuleAnalysisManager &MAM)
Definition MipsOs16.cpp:167
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:83
static StringRef name()
Definition Mips.h:82
ModulePass class - This class is used to implement unstructured interprocedural optimizations and ana...
Definition Pass.h:253
A Module instance is used to store all the information related to an LLVM module.
Definition Module.h:68
PassRegistry - This class manages the registration and intitialization of the pass subsystem as appli...
A set of analyses that are preserved following a run of a transformation pass.
Definition Analysis.h:112
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
Pass manager infrastructure for declaring and invalidating analyses.
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 initializeMicroMipsSizeReduceLegacyPass(PassRegistry &)
AnalysisManager< MachineFunction > MachineFunctionAnalysisManager
void initializeMipsDAGToDAGISelLegacyPass(PassRegistry &)
FunctionPass * createMipsExpandPseudoLegacyPass()
createMipsExpandPseudoPass - returns an instance of the pseudo instruction expansion pass.
InstructionSelector * createMipsInstructionSelector(const MipsTargetMachine &, const MipsSubtarget &, const MipsRegisterBankInfo &)
ModulePass * createMipsOs16LegacyPass()
Definition MipsOs16.cpp:163
FunctionPass * createMips16ISelDAGLegacyPass(MipsTargetMachine &TM, CodeGenOptLevel OptLevel)
void initializeMipsMulMulBugFixLegacyPass(PassRegistry &)
FunctionPass * createMipsOptimizePICCallLegacyPass()
Return an OptimizeCall object.
void initializeMipsPostLegalizerCombinerPass(PassRegistry &)
CodeGenOptLevel
Code generation optimization level.
Definition CodeGen.h:280
FunctionPass * createMipsBranchExpansion()
ModulePass * createMips16HardFloatLegacyPass()
FunctionPass * createMipsPostLegalizeCombiner(bool IsOptNone)
FunctionPass * createMicroMipsSizeReduceLegacyPass()
Returns an instance of the MicroMips size reduction pass.
FunctionPass * createMipsDelaySlotFillerPass()
createMipsDelaySlotFillerPass - Returns a pass that fills in delay slots in Mips MachineFunctions
FunctionPass * createMipsMulMulBugFixLegacyPass()
AnalysisManager< Module > ModuleAnalysisManager
Convenience typedef for the Module analysis manager.
Definition MIRParser.h:39
A CRTP mix-in for passes that should not be skipped.