LLVM API Documentation
00001 //===-- ARM.h - Top-level interface for ARM representation ------*- C++ -*-===// 00002 // 00003 // The LLVM Compiler Infrastructure 00004 // 00005 // This file is distributed under the University of Illinois Open Source 00006 // License. See LICENSE.TXT for details. 00007 // 00008 //===----------------------------------------------------------------------===// 00009 // 00010 // This file contains the entry points for global functions defined in the LLVM 00011 // ARM back-end. 00012 // 00013 //===----------------------------------------------------------------------===// 00014 00015 #ifndef TARGET_ARM_H 00016 #define TARGET_ARM_H 00017 00018 #include "MCTargetDesc/ARMBaseInfo.h" 00019 #include "MCTargetDesc/ARMMCTargetDesc.h" 00020 #include "llvm/Support/DataTypes.h" 00021 #include "llvm/Target/TargetMachine.h" 00022 00023 namespace llvm { 00024 00025 class ARMAsmPrinter; 00026 class ARMBaseTargetMachine; 00027 class FunctionPass; 00028 class JITCodeEmitter; 00029 class MachineInstr; 00030 class MCInst; 00031 00032 FunctionPass *createARMISelDag(ARMBaseTargetMachine &TM, 00033 CodeGenOpt::Level OptLevel); 00034 00035 FunctionPass *createARMJITCodeEmitterPass(ARMBaseTargetMachine &TM, 00036 JITCodeEmitter &JCE); 00037 00038 FunctionPass *createA15SDOptimizerPass(); 00039 FunctionPass *createARMLoadStoreOptimizationPass(bool PreAlloc = false); 00040 FunctionPass *createARMExpandPseudoPass(); 00041 FunctionPass *createARMGlobalBaseRegPass(); 00042 FunctionPass *createARMGlobalMergePass(const TargetLowering* tli); 00043 FunctionPass *createARMConstantIslandPass(); 00044 FunctionPass *createMLxExpansionPass(); 00045 FunctionPass *createThumb2ITBlockPass(); 00046 FunctionPass *createThumb2SizeReductionPass(); 00047 00048 /// \brief Creates an ARM-specific Target Transformation Info pass. 00049 ImmutablePass *createARMTargetTransformInfoPass(const ARMBaseTargetMachine *TM); 00050 00051 void LowerARMMachineInstrToMCInst(const MachineInstr *MI, MCInst &OutMI, 00052 ARMAsmPrinter &AP); 00053 00054 } // end namespace llvm; 00055 00056 #endif