1 //==-- AArch64.h - Top-level interface for AArch64 --------------*- C++ -*-==// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 // 9 // This file contains the entry points for global functions defined in the LLVM 10 // AArch64 back-end. 11 // 12 //===----------------------------------------------------------------------===// 13 14 #ifndef LLVM_LIB_TARGET_AARCH64_AARCH64_H 15 #define LLVM_LIB_TARGET_AARCH64_AARCH64_H 16 17 #include "MCTargetDesc/AArch64MCTargetDesc.h" 18 #include "Utils/AArch64BaseInfo.h" 19 #include "llvm/Pass.h" 20 #include "llvm/PassRegistry.h" 21 #include "llvm/Support/DataTypes.h" 22 #include "llvm/Target/TargetMachine.h" 23 24 namespace llvm { 25 26 class AArch64RegisterBankInfo; 27 class AArch64Subtarget; 28 class AArch64TargetMachine; 29 class FunctionPass; 30 class InstructionSelector; 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 CodeGenOptLevel OptLevel); 40 FunctionPass *createAArch64StorePairSuppressPass(); 41 FunctionPass *createAArch64ExpandPseudoPass(); 42 FunctionPass *createAArch64SLSHardeningPass(); 43 FunctionPass *createAArch64SpeculationHardeningPass(); 44 FunctionPass *createAArch64LoadStoreOptimizationPass(); 45 ModulePass *createAArch64LowerHomogeneousPrologEpilogPass(); 46 FunctionPass *createAArch64SIMDInstrOptPass(); 47 ModulePass *createAArch64PromoteConstantPass(); 48 FunctionPass *createAArch64ConditionOptimizerPass(); 49 FunctionPass *createAArch64A57FPLoadBalancing(); 50 FunctionPass *createAArch64A53Fix835769(); 51 FunctionPass *createFalkorHWPFFixPass(); 52 FunctionPass *createFalkorMarkStridedAccessesPass(); 53 FunctionPass *createAArch64PointerAuthPass(); 54 FunctionPass *createAArch64BranchTargetsPass(); 55 FunctionPass *createAArch64MIPeepholeOptPass(); 56 FunctionPass *createAArch64PostCoalescerPass(); 57 58 FunctionPass *createAArch64CleanupLocalDynamicTLSPass(); 59 60 FunctionPass *createAArch64CollectLOHPass(); 61 FunctionPass *createSMEABIPass(); 62 ModulePass *createSVEIntrinsicOptsPass(); 63 InstructionSelector * 64 createAArch64InstructionSelector(const AArch64TargetMachine &, 65 const AArch64Subtarget &, 66 const AArch64RegisterBankInfo &); 67 FunctionPass *createAArch64O0PreLegalizerCombiner(); 68 FunctionPass *createAArch64PreLegalizerCombiner(); 69 FunctionPass *createAArch64PostLegalizerCombiner(bool IsOptNone); 70 FunctionPass *createAArch64PostLegalizerLowering(); 71 FunctionPass *createAArch64PostSelectOptimize(); 72 FunctionPass *createAArch64StackTaggingPass(bool IsOptNone); 73 FunctionPass *createAArch64StackTaggingPreRAPass(); 74 ModulePass *createAArch64GlobalsTaggingPass(); 75 ModulePass *createAArch64Arm64ECCallLoweringPass(); 76 77 void initializeAArch64A53Fix835769Pass(PassRegistry&); 78 void initializeAArch64A57FPLoadBalancingPass(PassRegistry&); 79 void initializeAArch64AdvSIMDScalarPass(PassRegistry&); 80 void initializeAArch64PointerAuthPass(PassRegistry&); 81 void initializeAArch64BranchTargetsPass(PassRegistry&); 82 void initializeAArch64CFIFixupPass(PassRegistry&); 83 void initializeAArch64CollectLOHPass(PassRegistry &); 84 void initializeAArch64CompressJumpTablesPass(PassRegistry&); 85 void initializeAArch64CondBrTuningPass(PassRegistry &); 86 void initializeAArch64ConditionOptimizerPass(PassRegistry&); 87 void initializeAArch64ConditionalComparesPass(PassRegistry &); 88 void initializeAArch64DAGToDAGISelLegacyPass(PassRegistry &); 89 void initializeAArch64DeadRegisterDefinitionsPass(PassRegistry&); 90 void initializeAArch64ExpandPseudoPass(PassRegistry &); 91 void initializeAArch64GlobalsTaggingPass(PassRegistry &); 92 void initializeAArch64LoadStoreOptPass(PassRegistry&); 93 void initializeAArch64LowerHomogeneousPrologEpilogPass(PassRegistry &); 94 void initializeAArch64MIPeepholeOptPass(PassRegistry &); 95 void initializeAArch64O0PreLegalizerCombinerPass(PassRegistry &); 96 void initializeAArch64PostCoalescerPass(PassRegistry &); 97 void initializeAArch64PostLegalizerCombinerPass(PassRegistry &); 98 void initializeAArch64PostLegalizerLoweringPass(PassRegistry &); 99 void initializeAArch64PostSelectOptimizePass(PassRegistry &); 100 void initializeAArch64PreLegalizerCombinerPass(PassRegistry &); 101 void initializeAArch64PromoteConstantPass(PassRegistry&); 102 void initializeAArch64RedundantCopyEliminationPass(PassRegistry&); 103 void initializeAArch64SIMDInstrOptPass(PassRegistry &); 104 void initializeAArch64SLSHardeningPass(PassRegistry &); 105 void initializeAArch64SpeculationHardeningPass(PassRegistry &); 106 void initializeAArch64StackTaggingPass(PassRegistry &); 107 void initializeAArch64StackTaggingPreRAPass(PassRegistry &); 108 void initializeAArch64StorePairSuppressPass(PassRegistry&); 109 void initializeFalkorHWPFFixPass(PassRegistry&); 110 void initializeFalkorMarkStridedAccessesLegacyPass(PassRegistry&); 111 void initializeLDTLSCleanupPass(PassRegistry&); 112 void initializeSMEABIPass(PassRegistry &); 113 void initializeSVEIntrinsicOptsPass(PassRegistry &); 114 void initializeAArch64Arm64ECCallLoweringPass(PassRegistry &); 115 } // end namespace llvm 116 117 #endif 118