blob: b3faaab436f018f5e132f33e93a153650015b694 [file] [log] [blame]
Akira Hatanakae2489122011-04-15 21:51:11 +00001//===-- Mips.h - Top-level interface for Mips representation ----*- C++ -*-===//
Bruno Cardoso Lopes35e43c42007-06-06 07:42:06 +00002//
Chandler Carruth2946cd72019-01-19 08:50:56 +00003// 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
Bruno Cardoso Lopes35e43c42007-06-06 07:42:06 +00006//
Akira Hatanakae2489122011-04-15 21:51:11 +00007//===----------------------------------------------------------------------===//
Bruno Cardoso Lopes35e43c42007-06-06 07:42:06 +00008//
Bruno Cardoso Lopesed874ef2011-03-04 17:51:39 +00009// This file contains the entry points for global functions defined in
Bruno Cardoso Lopes35e43c42007-06-06 07:42:06 +000010// the LLVM Mips back-end.
11//
Akira Hatanakae2489122011-04-15 21:51:11 +000012//===----------------------------------------------------------------------===//
Bruno Cardoso Lopes35e43c42007-06-06 07:42:06 +000013
Benjamin Kramera7c40ef2014-08-13 16:26:38 +000014#ifndef LLVM_LIB_TARGET_MIPS_MIPS_H
15#define LLVM_LIB_TARGET_MIPS_MIPS_H
Bruno Cardoso Lopes35e43c42007-06-06 07:42:06 +000016
Evan Chengbc153d42011-07-14 20:59:42 +000017#include "MCTargetDesc/MipsMCTargetDesc.h"
Bill Wendling026e5d72009-04-29 23:29:43 +000018#include "llvm/Target/TargetMachine.h"
19
Bruno Cardoso Lopes35e43c42007-06-06 07:42:06 +000020namespace llvm {
21 class MipsTargetMachine;
Vasileios Kalintiris6312f512015-03-14 08:34:25 +000022 class ModulePass;
Bruno Cardoso Lopes35e43c42007-06-06 07:42:06 +000023 class FunctionPass;
Petar Jovanovicfac93e22018-02-23 11:06:40 +000024 class MipsRegisterBankInfo;
25 class MipsSubtarget;
26 class MipsTargetMachine;
27 class InstructionSelector;
Zoran Jovanovic3a7654c2018-06-13 12:51:37 +000028 class PassRegistry;
Bruno Cardoso Lopes35e43c42007-06-06 07:42:06 +000029
Francis Visoiu Mistrih8b617642017-05-18 17:21:13 +000030 ModulePass *createMipsOs16Pass();
31 ModulePass *createMips16HardFloatPass();
Vasileios Kalintiris6312f512015-03-14 08:34:25 +000032
Francis Visoiu Mistrih8b617642017-05-18 17:21:13 +000033 FunctionPass *createMipsModuleISelDagPass();
34 FunctionPass *createMipsOptimizePICCallPass();
35 FunctionPass *createMipsDelaySlotFillerPass();
Aleksandar Beserminjia5f75512018-05-22 13:24:38 +000036 FunctionPass *createMipsBranchExpansion();
Rafael Espindola6f7c2802016-06-28 14:26:39 +000037 FunctionPass *createMipsConstantIslandPass();
Zoran Jovanovic3a7654c2018-06-13 12:51:37 +000038 FunctionPass *createMicroMipsSizeReducePass();
Aleksandar Beserminji3239ba82018-07-05 09:27:05 +000039 FunctionPass *createMipsExpandPseudoPass();
Petar Avramovic7d370a32019-01-14 10:27:05 +000040 FunctionPass *createMipsPreLegalizeCombiner();
Petar Jovanovicfac93e22018-02-23 11:06:40 +000041
42 InstructionSelector *createMipsInstructionSelector(const MipsTargetMachine &,
43 MipsSubtarget &,
44 MipsRegisterBankInfo &);
Simon Dardisae201082018-05-11 16:13:53 +000045
46 void initializeMipsDelaySlotFillerPass(PassRegistry &);
Aleksandar Beserminjia5f75512018-05-22 13:24:38 +000047 void initializeMipsBranchExpansionPass(PassRegistry &);
Zoran Jovanovic3a7654c2018-06-13 12:51:37 +000048 void initializeMicroMipsSizeReducePass(PassRegistry &);
Petar Avramovic7d370a32019-01-14 10:27:05 +000049 void initializeMipsPreLegalizerCombinerPass(PassRegistry&);
Alexander Kornienkof00654e2015-06-23 09:49:53 +000050} // end namespace llvm;
Bruno Cardoso Lopes35e43c42007-06-06 07:42:06 +000051
Bruno Cardoso Lopes35e43c42007-06-06 07:42:06 +000052#endif