1234353Sdim//===-- ARM.h - Top-level interface for ARM representation ------*- C++ -*-===//
2193323Sed//
3193323Sed//                     The LLVM Compiler Infrastructure
4193323Sed//
5193323Sed// This file is distributed under the University of Illinois Open Source
6193323Sed// License. See LICENSE.TXT for details.
7193323Sed//
8193323Sed//===----------------------------------------------------------------------===//
9193323Sed//
10193323Sed// This file contains the entry points for global functions defined in the LLVM
11193323Sed// ARM back-end.
12193323Sed//
13193323Sed//===----------------------------------------------------------------------===//
14193323Sed
15193323Sed#ifndef TARGET_ARM_H
16193323Sed#define TARGET_ARM_H
17193323Sed
18226633Sdim#include "MCTargetDesc/ARMBaseInfo.h"
19224145Sdim#include "MCTargetDesc/ARMMCTargetDesc.h"
20224145Sdim#include "llvm/Support/DataTypes.h"
21193323Sed#include "llvm/Target/TargetMachine.h"
22193323Sed
23193323Sednamespace llvm {
24193323Sed
25224145Sdimclass ARMAsmPrinter;
26195098Sedclass ARMBaseTargetMachine;
27193323Sedclass FunctionPass;
28193323Sedclass JITCodeEmitter;
29224145Sdimclass MachineInstr;
30224145Sdimclass MCInst;
31193323Sed
32198090SrdivackyFunctionPass *createARMISelDag(ARMBaseTargetMachine &TM,
33198090Srdivacky                               CodeGenOpt::Level OptLevel);
34193323Sed
35195098SedFunctionPass *createARMJITCodeEmitterPass(ARMBaseTargetMachine &TM,
36194178Sed                                          JITCodeEmitter &JCE);
37193323Sed
38249423SdimFunctionPass *createA15SDOptimizerPass();
39194178SedFunctionPass *createARMLoadStoreOptimizationPass(bool PreAlloc = false);
40199481SrdivackyFunctionPass *createARMExpandPseudoPass();
41243830SdimFunctionPass *createARMGlobalBaseRegPass();
42212904SdimFunctionPass *createARMGlobalMergePass(const TargetLowering* tli);
43193323SedFunctionPass *createARMConstantIslandPass();
44218893SdimFunctionPass *createMLxExpansionPass();
45198090SrdivackyFunctionPass *createThumb2ITBlockPass();
46198090SrdivackyFunctionPass *createThumb2SizeReductionPass();
47193323Sed
48249423Sdim/// \brief Creates an ARM-specific Target Transformation Info pass.
49249423SdimImmutablePass *createARMTargetTransformInfoPass(const ARMBaseTargetMachine *TM);
50249423Sdim
51218893Sdimvoid LowerARMMachineInstrToMCInst(const MachineInstr *MI, MCInst &OutMI,
52218893Sdim                                  ARMAsmPrinter &AP);
53218893Sdim
54193323Sed} // end namespace llvm;
55193323Sed
56193323Sed#endif
57