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