Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/llvm/lib/Target/AArch64/AArch64.h
35269 views
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
119