LLVM 23.0.0git
AArch64.h
Go to the documentation of this file.
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
20#include "llvm/Pass.h"
21#include "llvm/PassRegistry.h"
24#include <memory>
25
26struct AArch64O0PreLegalizerCombinerImplRuleConfig;
27struct AArch64PreLegalizerCombinerImplRuleConfig;
28
29namespace llvm {
30
34enum class CodeGenOptLevel;
35class FunctionPass;
37class ModulePass;
38
47 CodeGenOptLevel OptLevel);
65
67
75 const AArch64Subtarget &,
78 : public PassInfoMixin<AArch64O0PreLegalizerCombinerPass> {
79 std::unique_ptr<AArch64O0PreLegalizerCombinerImplRuleConfig> RuleConfig;
80
81public:
85
88};
89
91 : public PassInfoMixin<AArch64PreLegalizerCombinerPass> {
92 std::unique_ptr<AArch64PreLegalizerCombinerImplRuleConfig> RuleConfig;
93
94public:
98
101};
102
111
153
155 : public PassInfoMixin<AArch64A57FPLoadBalancingPass> {
156public:
159};
160
161class AArch64LoadStoreOptPass : public PassInfoMixin<AArch64LoadStoreOptPass> {
162public:
165};
166
167class AArch64A53Fix835769Pass : public PassInfoMixin<AArch64A53Fix835769Pass> {
168public:
171};
172
174 : public PassInfoMixin<AArch64BranchTargetsPass> {
175public:
178};
179
181 : public PassInfoMixin<AArch64AdvSIMDScalarPass> {
182public:
185};
186
187class AArch64CollectLOHPass : public PassInfoMixin<AArch64CollectLOHPass> {
188public:
191};
192
194 : public PassInfoMixin<AArch64CompressJumpTablesPass> {
195public:
198};
199
201 : public PassInfoMixin<AArch64DeadRegisterDefinitionsPass> {
202public:
205};
206
207class AArch64ExpandPseudoPass : public PassInfoMixin<AArch64ExpandPseudoPass> {
208public:
211};
212
214 : public PassInfoMixin<AArch64MIPeepholeOptPass> {
215public:
218};
219
221 : public PassInfoMixin<AArch64ConditionOptimizerPass> {
222public:
225};
226
227class AArch64PointerAuthPass : public PassInfoMixin<AArch64PointerAuthPass> {
228public:
231};
232
234 : public PassInfoMixin<AArch64PostCoalescerPass> {
235public:
238};
239
241 : public PassInfoMixin<AArch64RedundantCopyEliminationPass> {
242public:
245};
246
247} // end namespace llvm
248
249#endif
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
AArch64O0PreLegalizerCombinerPass(AArch64O0PreLegalizerCombinerPass &&)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
AArch64PreLegalizerCombinerPass(AArch64PreLegalizerCombinerPass &&)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
This class provides the information for the target register banks.
FunctionPass class - This class is used to implement most global optimizations.
Definition Pass.h:314
ModulePass class - This class is used to implement unstructured interprocedural optimizations and ana...
Definition Pass.h:255
PassRegistry - This class manages the registration and intitialization of the pass subsystem as appli...
A set of analyses that are preserved following a run of a transformation pass.
Definition Analysis.h:112
This is an optimization pass for GlobalISel generic memory operations.
FunctionPass * createAArch64PreLegalizerCombiner()
void initializeLDTLSCleanupPass(PassRegistry &)
void initializeMachineSMEABIPass(PassRegistry &)
FunctionPass * createAArch64PostSelectOptimize()
void initializeAArch64CFIFixupPass(PassRegistry &)
FunctionPass * createAArch64ConditionOptimizerLegacyPass()
void initializeAArch64A53Fix835769LegacyPass(PassRegistry &)
void initializeAArch64SRLTDefineSuperRegsPass(PassRegistry &)
void initializeAArch64SpeculationHardeningPass(PassRegistry &)
void initializeAArch64PostLegalizerLoweringPass(PassRegistry &)
FunctionPass * createAArch64RedundantCopyEliminationPass()
FunctionPass * createAArch64StackTaggingPreRAPass()
void initializeAArch64PostLegalizerCombinerPass(PassRegistry &)
FunctionPass * createMachineSMEABIPass(CodeGenOptLevel)
FunctionPass * createAArch64A53Fix835769LegacyPass()
void initializeAArch64BranchTargetsLegacyPass(PassRegistry &)
FunctionPass * createAArch64PostCoalescerPass()
void initializeAArch64PromoteConstantPass(PassRegistry &)
FunctionPass * createFalkorMarkStridedAccessesPass()
FunctionPass * createAArch64PointerAuthPass()
FunctionPass * createFalkorHWPFFixPass()
void initializeAArch64RedundantCondBranchPass(PassRegistry &)
FunctionPass * createAArch64SRLTDefineSuperRegsPass()
FunctionPass * createAArch64O0PreLegalizerCombiner()
void initializeAArch64CollectLOHLegacyPass(PassRegistry &)
AnalysisManager< MachineFunction > MachineFunctionAnalysisManager
FunctionPass * createAArch64LoadStoreOptLegacyPass()
createAArch64LoadStoreOptimizationPass - returns an instance of the load / store optimization pass.
FunctionPass * createAArch64CondBrTuning()
void initializeAArch64Arm64ECCallLoweringPass(PassRegistry &)
FunctionPass * createAArch64A57FPLoadBalancingLegacyPass()
FunctionPass * createAArch64DeadRegisterDefinitions()
FunctionPass * createSMEPeepholeOptPass()
FunctionPass * createAArch64PostLegalizerLowering()
InstructionSelector * createAArch64InstructionSelector(const AArch64TargetMachine &, const AArch64Subtarget &, const AArch64RegisterBankInfo &)
void initializeAArch64AsmPrinterPass(PassRegistry &)
FunctionPass * createAArch64MIPeepholeOptLegacyPass()
void initializeAArch64AdvSIMDScalarLegacyPass(PassRegistry &)
FunctionPass * createAArch64CompressJumpTablesPass()
FunctionPass * createAArch64ConditionalCompares()
FunctionPass * createAArch64ExpandPseudoLegacyPass()
Returns an instance of the pseudo instruction expansion pass.
void initializeAArch64PointerAuthLegacyPass(PassRegistry &)
void initializeFalkorMarkStridedAccessesLegacyPass(PassRegistry &)
void initializeAArch64StackTaggingPass(PassRegistry &)
ModulePass * createAArch64Arm64ECCallLoweringPass()
void initializeAArch64ConditionOptimizerLegacyPass(PassRegistry &)
FunctionPass * createAArch64SIMDInstrOptPass()
Returns an instance of the high cost ASIMD instruction replacement optimization pass.
void initializeSMEPeepholeOptPass(PassRegistry &)
FunctionPass * createAArch64StorePairSuppressPass()
void initializeAArch64PostCoalescerLegacyPass(PassRegistry &)
ModulePass * createSVEIntrinsicOptsPass()
void initializeAArch64SLSHardeningPass(PassRegistry &)
FunctionPass * createAArch64CollectLOHPass()
CodeGenOptLevel
Code generation optimization level.
Definition CodeGen.h:82
void initializeAArch64StackTaggingPreRAPass(PassRegistry &)
FunctionPass * createAArch64PostLegalizerCombiner(bool IsOptNone)
void initializeAArch64StorePairSuppressPass(PassRegistry &)
void initializeAArch64LowerHomogeneousPrologEpilogPass(PassRegistry &)
void initializeAArch64PreLegalizerCombinerLegacyPass(PassRegistry &)
FunctionPass * createAArch64ISelDag(AArch64TargetMachine &TM, CodeGenOptLevel OptLevel)
createAArch64ISelDag - This pass converts a legalized DAG into a AArch64-specific DAG,...
void initializeAArch64CondBrTuningPass(PassRegistry &)
void initializeAArch64A57FPLoadBalancingLegacyPass(PassRegistry &)
FunctionPass * createAArch64SLSHardeningPass()
FunctionPass * createAArch64BranchTargetsPass()
void initializeFalkorHWPFFixPass(PassRegistry &)
void initializeAArch64ExpandPseudoLegacyPass(PassRegistry &)
ModulePass * createAArch64LowerHomogeneousPrologEpilogPass()
void initializeAArch64SIMDInstrOptPass(PassRegistry &)
void initializeAArch64PostSelectOptimizePass(PassRegistry &)
FunctionPass * createAArch64StackTaggingPass(bool IsOptNone)
void initializeAArch64ConditionalComparesPass(PassRegistry &)
FunctionPass * createAArch64CleanupLocalDynamicTLSPass()
ModulePass * createAArch64PromoteConstantPass()
void initializeAArch64CompressJumpTablesLegacyPass(PassRegistry &)
void initializeAArch64RedundantCopyEliminationLegacyPass(PassRegistry &)
FunctionPass * createAArch64AdvSIMDScalar()
FunctionPass * createAArch64RedundantCondBranchPass()
void initializeAArch64DAGToDAGISelLegacyPass(PassRegistry &)
FunctionPass * createAArch64SpeculationHardeningPass()
Returns an instance of the pseudo instruction expansion pass.
void initializeSVEIntrinsicOptsPass(PassRegistry &)
void initializeAArch64MIPeepholeOptLegacyPass(PassRegistry &)
void initializeAArch64DeadRegisterDefinitionsLegacyPass(PassRegistry &)
void initializeAArch64O0PreLegalizerCombinerLegacyPass(PassRegistry &)
void initializeAArch64LoadStoreOptLegacyPass(PassRegistry &)
A CRTP mix-in to automatically provide informational APIs needed for passes.
Definition PassManager.h:70