1 //==-- AArch64.h - Top-level interface for AArch64 --------------*- 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 // AArch64 back-end. 12 // 13 //===----------------------------------------------------------------------===// 14 15 #ifndef LLVM_LIB_TARGET_AARCH64_AARCH64_H 16 #define LLVM_LIB_TARGET_AARCH64_AARCH64_H 17 18 #include "MCTargetDesc/AArch64MCTargetDesc.h" 19 #include "Utils/AArch64BaseInfo.h" 20 #include "llvm/Support/DataTypes.h" 21 #include "llvm/Target/TargetMachine.h" 22 23 namespace llvm { 24 25 class AArch64RegisterBankInfo; 26 class AArch64Subtarget; 27 class AArch64TargetMachine; 28 class FunctionPass; 29 class InstructionSelector; 30 class MachineFunctionPass; 31 32 FunctionPass *createAArch64DeadRegisterDefinitions(); 33 FunctionPass *createAArch64RedundantCopyEliminationPass(); 34 FunctionPass *createAArch64CondBrTuning(); 35 FunctionPass *createAArch64CompressJumpTablesPass(); 36 FunctionPass *createAArch64ConditionalCompares(); 37 FunctionPass *createAArch64AdvSIMDScalar(); 38 FunctionPass *createAArch64ISelDag(AArch64TargetMachine &TM, 39 CodeGenOpt::Level OptLevel); 40 FunctionPass *createAArch64StorePairSuppressPass(); 41 FunctionPass *createAArch64ExpandPseudoPass(); 42 FunctionPass *createAArch64SpeculationHardeningPass(); 43 FunctionPass *createAArch64LoadStoreOptimizationPass(); 44 FunctionPass *createAArch64SIMDInstrOptPass(); 45 ModulePass *createAArch64PromoteConstantPass(); 46 FunctionPass *createAArch64ConditionOptimizerPass(); 47 FunctionPass *createAArch64A57FPLoadBalancing(); 48 FunctionPass *createAArch64A53Fix835769(); 49 FunctionPass *createFalkorHWPFFixPass(); 50 FunctionPass *createFalkorMarkStridedAccessesPass(); 51 FunctionPass *createAArch64BranchTargetsPass(); 52 53 FunctionPass *createAArch64CleanupLocalDynamicTLSPass(); 54 55 FunctionPass *createAArch64CollectLOHPass(); 56 InstructionSelector * 57 createAArch64InstructionSelector(const AArch64TargetMachine &, 58 AArch64Subtarget &, AArch64RegisterBankInfo &); 59 FunctionPass *createAArch64PreLegalizeCombiner(); 60 61 void initializeAArch64A53Fix835769Pass(PassRegistry&); 62 void initializeAArch64A57FPLoadBalancingPass(PassRegistry&); 63 void initializeAArch64AdvSIMDScalarPass(PassRegistry&); 64 void initializeAArch64BranchTargetsPass(PassRegistry&); 65 void initializeAArch64CollectLOHPass(PassRegistry&); 66 void initializeAArch64CondBrTuningPass(PassRegistry &); 67 void initializeAArch64CompressJumpTablesPass(PassRegistry&); 68 void initializeAArch64ConditionalComparesPass(PassRegistry&); 69 void initializeAArch64ConditionOptimizerPass(PassRegistry&); 70 void initializeAArch64DeadRegisterDefinitionsPass(PassRegistry&); 71 void initializeAArch64ExpandPseudoPass(PassRegistry&); 72 void initializeAArch64SpeculationHardeningPass(PassRegistry&); 73 void initializeAArch64LoadStoreOptPass(PassRegistry&); 74 void initializeAArch64SIMDInstrOptPass(PassRegistry&); 75 void initializeAArch64PreLegalizerCombinerPass(PassRegistry&); 76 void initializeAArch64PromoteConstantPass(PassRegistry&); 77 void initializeAArch64RedundantCopyEliminationPass(PassRegistry&); 78 void initializeAArch64StorePairSuppressPass(PassRegistry&); 79 void initializeFalkorHWPFFixPass(PassRegistry&); 80 void initializeFalkorMarkStridedAccessesLegacyPass(PassRegistry&); 81 void initializeLDTLSCleanupPass(PassRegistry&); 82 } // end namespace llvm 83 84 #endif 85