Path: blob/main/contrib/llvm-project/llvm/lib/Target/AArch64/AArch64.h
35269 views
//==-- AArch64.h - Top-level interface for AArch64 --------------*- C++ -*-==//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//7//8// This file contains the entry points for global functions defined in the LLVM9// AArch64 back-end.10//11//===----------------------------------------------------------------------===//1213#ifndef LLVM_LIB_TARGET_AARCH64_AARCH64_H14#define LLVM_LIB_TARGET_AARCH64_AARCH64_H1516#include "MCTargetDesc/AArch64MCTargetDesc.h"17#include "Utils/AArch64BaseInfo.h"18#include "llvm/Pass.h"19#include "llvm/PassRegistry.h"20#include "llvm/Support/DataTypes.h"21#include "llvm/Target/TargetMachine.h"2223namespace llvm {2425class AArch64RegisterBankInfo;26class AArch64Subtarget;27class AArch64TargetMachine;28class FunctionPass;29class InstructionSelector;3031FunctionPass *createAArch64DeadRegisterDefinitions();32FunctionPass *createAArch64RedundantCopyEliminationPass();33FunctionPass *createAArch64CondBrTuning();34FunctionPass *createAArch64CompressJumpTablesPass();35FunctionPass *createAArch64ConditionalCompares();36FunctionPass *createAArch64AdvSIMDScalar();37FunctionPass *createAArch64ISelDag(AArch64TargetMachine &TM,38CodeGenOptLevel OptLevel);39FunctionPass *createAArch64StorePairSuppressPass();40FunctionPass *createAArch64ExpandPseudoPass();41FunctionPass *createAArch64SLSHardeningPass();42FunctionPass *createAArch64SpeculationHardeningPass();43FunctionPass *createAArch64LoadStoreOptimizationPass();44ModulePass *createAArch64LowerHomogeneousPrologEpilogPass();45FunctionPass *createAArch64SIMDInstrOptPass();46ModulePass *createAArch64PromoteConstantPass();47FunctionPass *createAArch64ConditionOptimizerPass();48FunctionPass *createAArch64A57FPLoadBalancing();49FunctionPass *createAArch64A53Fix835769();50FunctionPass *createFalkorHWPFFixPass();51FunctionPass *createFalkorMarkStridedAccessesPass();52FunctionPass *createAArch64PointerAuthPass();53FunctionPass *createAArch64BranchTargetsPass();54FunctionPass *createAArch64MIPeepholeOptPass();55FunctionPass *createAArch64PostCoalescerPass();5657FunctionPass *createAArch64CleanupLocalDynamicTLSPass();5859FunctionPass *createAArch64CollectLOHPass();60FunctionPass *createSMEABIPass();61ModulePass *createSVEIntrinsicOptsPass();62InstructionSelector *63createAArch64InstructionSelector(const AArch64TargetMachine &,64const AArch64Subtarget &,65const AArch64RegisterBankInfo &);66FunctionPass *createAArch64O0PreLegalizerCombiner();67FunctionPass *createAArch64PreLegalizerCombiner();68FunctionPass *createAArch64PostLegalizerCombiner(bool IsOptNone);69FunctionPass *createAArch64PostLegalizerLowering();70FunctionPass *createAArch64PostSelectOptimize();71FunctionPass *createAArch64StackTaggingPass(bool IsOptNone);72FunctionPass *createAArch64StackTaggingPreRAPass();73ModulePass *createAArch64GlobalsTaggingPass();74ModulePass *createAArch64Arm64ECCallLoweringPass();7576void initializeAArch64A53Fix835769Pass(PassRegistry&);77void initializeAArch64A57FPLoadBalancingPass(PassRegistry&);78void initializeAArch64AdvSIMDScalarPass(PassRegistry&);79void initializeAArch64PointerAuthPass(PassRegistry&);80void initializeAArch64BranchTargetsPass(PassRegistry&);81void initializeAArch64CFIFixupPass(PassRegistry&);82void initializeAArch64CollectLOHPass(PassRegistry &);83void initializeAArch64CompressJumpTablesPass(PassRegistry&);84void initializeAArch64CondBrTuningPass(PassRegistry &);85void initializeAArch64ConditionOptimizerPass(PassRegistry&);86void initializeAArch64ConditionalComparesPass(PassRegistry &);87void initializeAArch64DAGToDAGISelLegacyPass(PassRegistry &);88void initializeAArch64DeadRegisterDefinitionsPass(PassRegistry&);89void initializeAArch64ExpandPseudoPass(PassRegistry &);90void initializeAArch64GlobalsTaggingPass(PassRegistry &);91void initializeAArch64LoadStoreOptPass(PassRegistry&);92void initializeAArch64LowerHomogeneousPrologEpilogPass(PassRegistry &);93void initializeAArch64MIPeepholeOptPass(PassRegistry &);94void initializeAArch64O0PreLegalizerCombinerPass(PassRegistry &);95void initializeAArch64PostCoalescerPass(PassRegistry &);96void initializeAArch64PostLegalizerCombinerPass(PassRegistry &);97void initializeAArch64PostLegalizerLoweringPass(PassRegistry &);98void initializeAArch64PostSelectOptimizePass(PassRegistry &);99void initializeAArch64PreLegalizerCombinerPass(PassRegistry &);100void initializeAArch64PromoteConstantPass(PassRegistry&);101void initializeAArch64RedundantCopyEliminationPass(PassRegistry&);102void initializeAArch64SIMDInstrOptPass(PassRegistry &);103void initializeAArch64SLSHardeningPass(PassRegistry &);104void initializeAArch64SpeculationHardeningPass(PassRegistry &);105void initializeAArch64StackTaggingPass(PassRegistry &);106void initializeAArch64StackTaggingPreRAPass(PassRegistry &);107void initializeAArch64StorePairSuppressPass(PassRegistry&);108void initializeFalkorHWPFFixPass(PassRegistry&);109void initializeFalkorMarkStridedAccessesLegacyPass(PassRegistry&);110void initializeLDTLSCleanupPass(PassRegistry&);111void initializeSMEABIPass(PassRegistry &);112void initializeSVEIntrinsicOptsPass(PassRegistry &);113void initializeAArch64Arm64ECCallLoweringPass(PassRegistry &);114} // end namespace llvm115116#endif117118119