X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FTarget%2FARM%2FARM.h;h=80e5f37eb086c9c091083282c7463a5f2234ca81;hb=80668d18e8064560bb6c227cde4e2a01d32e683e;hp=c582d684bfe25c041a9e5ee7e72fbb79bc56b1ca;hpb=a3f99f90338d89354384ca25f53ca4450a1a9d18;p=oota-llvm.git diff --git a/lib/Target/ARM/ARM.h b/lib/Target/ARM/ARM.h index c582d684bfe..80e5f37eb08 100644 --- a/lib/Target/ARM/ARM.h +++ b/lib/Target/ARM/ARM.h @@ -1,4 +1,4 @@ -//===-- ARM.h - Top-level interface for ARM representation---- --*- C++ -*-===// +//===-- ARM.h - Top-level interface for ARM representation ------*- C++ -*-===// // // The LLVM Compiler Infrastructure // @@ -15,112 +15,42 @@ #ifndef TARGET_ARM_H #define TARGET_ARM_H +#include "MCTargetDesc/ARMBaseInfo.h" +#include "MCTargetDesc/ARMMCTargetDesc.h" +#include "llvm/Support/DataTypes.h" #include "llvm/Target/TargetMachine.h" -#include namespace llvm { -class ARMTargetMachine; +class ARMAsmPrinter; +class ARMBaseTargetMachine; class FunctionPass; -class MachineCodeEmitter; class JITCodeEmitter; -class raw_ostream; +class MachineInstr; +class MCInst; -// Enums corresponding to ARM condition codes -namespace ARMCC { - // The CondCodes constants map directly to the 4-bit encoding of the - // condition field for predicated instructions. - enum CondCodes { - EQ, - NE, - HS, - LO, - MI, - PL, - VS, - VC, - HI, - LS, - GE, - LT, - GT, - LE, - AL - }; - - inline static CondCodes getOppositeCondition(CondCodes CC){ - switch (CC) { - default: assert(0 && "Unknown condition code"); - case EQ: return NE; - case NE: return EQ; - case HS: return LO; - case LO: return HS; - case MI: return PL; - case PL: return MI; - case VS: return VC; - case VC: return VS; - case HI: return LS; - case LS: return HI; - case GE: return LT; - case LT: return GE; - case GT: return LE; - case LE: return GT; - } - } -} +FunctionPass *createARMISelDag(ARMBaseTargetMachine &TM, + CodeGenOpt::Level OptLevel); -inline static const char *ARMCondCodeToString(ARMCC::CondCodes CC) { - switch (CC) { - default: assert(0 && "Unknown condition code"); - case ARMCC::EQ: return "eq"; - case ARMCC::NE: return "ne"; - case ARMCC::HS: return "hs"; - case ARMCC::LO: return "lo"; - case ARMCC::MI: return "mi"; - case ARMCC::PL: return "pl"; - case ARMCC::VS: return "vs"; - case ARMCC::VC: return "vc"; - case ARMCC::HI: return "hi"; - case ARMCC::LS: return "ls"; - case ARMCC::GE: return "ge"; - case ARMCC::LT: return "lt"; - case ARMCC::GT: return "gt"; - case ARMCC::LE: return "le"; - case ARMCC::AL: return "al"; - } -} +FunctionPass *createARMJITCodeEmitterPass(ARMBaseTargetMachine &TM, + JITCodeEmitter &JCE); -FunctionPass *createARMISelDag(ARMTargetMachine &TM); -FunctionPass *createARMCodePrinterPass(raw_ostream &O, - ARMTargetMachine &TM, - CodeGenOpt::Level OptLevel, - bool Verbose); -FunctionPass *createARMCodeEmitterPass(ARMTargetMachine &TM, - MachineCodeEmitter &MCE); - -FunctionPass *createARMCodeEmitterPass( - ARMTargetMachine &TM, MachineCodeEmitter &MCE); -/* -template< class machineCodeEmitter> -FunctionPass *createARMCodeEmitterPass( - ARMTargetMachine &TM, machineCodeEmitter &MCE); -*/ -FunctionPass *createARMJITCodeEmitterPass( - ARMTargetMachine &TM, JITCodeEmitter &JCE); - -FunctionPass *createARMLoadStoreOptimizationPass(); +FunctionPass *createA15SDOptimizerPass(); +FunctionPass *createARMLoadStoreOptimizationPass(bool PreAlloc = false); +FunctionPass *createARMExpandPseudoPass(); +FunctionPass *createARMGlobalBaseRegPass(); +FunctionPass *createARMGlobalMergePass(const TargetLowering* tli); FunctionPass *createARMConstantIslandPass(); +FunctionPass *createMLxExpansionPass(); +FunctionPass *createThumb2ITBlockPass(); +FunctionPass *createThumb2SizeReductionPass(); -} // end namespace llvm; +/// \brief Creates an ARM-specific Target Transformation Info pass. +ImmutablePass *createARMTargetTransformInfoPass(const ARMBaseTargetMachine *TM); -// Defines symbolic names for ARM registers. This defines a mapping from -// register name to register number. -// -#include "ARMGenRegisterNames.inc" - -// Defines symbolic names for the ARM instructions. -// -#include "ARMGenInstrNames.inc" +void LowerARMMachineInstrToMCInst(const MachineInstr *MI, MCInst &OutMI, + ARMAsmPrinter &AP); +} // end namespace llvm; #endif