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