1//===-- ARM.h - Top-level interface for ARM representation ------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// This file contains the entry points for global functions defined in the LLVM 11// ARM back-end. 12// 13//===----------------------------------------------------------------------===// 14 15#ifndef TARGET_ARM_H 16#define TARGET_ARM_H 17 18#include "MCTargetDesc/ARMBaseInfo.h" 19#include "MCTargetDesc/ARMMCTargetDesc.h" 20#include "llvm/Support/DataTypes.h" 21#include "llvm/Target/TargetMachine.h" 22 23namespace llvm { 24 25class ARMAsmPrinter; 26class ARMBaseTargetMachine; 27class FunctionPass; 28class JITCodeEmitter; 29class MachineInstr; 30class MCInst; 31 32FunctionPass *createARMISelDag(ARMBaseTargetMachine &TM, 33 CodeGenOpt::Level OptLevel); 34 35FunctionPass *createARMJITCodeEmitterPass(ARMBaseTargetMachine &TM, 36 JITCodeEmitter &JCE); 37 38FunctionPass *createA15SDOptimizerPass(); 39FunctionPass *createARMLoadStoreOptimizationPass(bool PreAlloc = false); 40FunctionPass *createARMExpandPseudoPass(); 41FunctionPass *createARMGlobalBaseRegPass(); 42FunctionPass *createARMGlobalMergePass(const TargetLowering* tli); 43FunctionPass *createARMConstantIslandPass(); 44FunctionPass *createMLxExpansionPass(); 45FunctionPass *createThumb2ITBlockPass(); 46FunctionPass *createThumb2SizeReductionPass(); 47 48/// \brief Creates an ARM-specific Target Transformation Info pass. 49ImmutablePass *createARMTargetTransformInfoPass(const ARMBaseTargetMachine *TM); 50 51void LowerARMMachineInstrToMCInst(const MachineInstr *MI, MCInst &OutMI, 52 ARMAsmPrinter &AP); 53 54} // end namespace llvm; 55 56#endif 57