1//===- AArch64PassRegistry.def - Registry of AArch64 passes -----*- 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 is used as the registry of passes that are part of the AArch64
10// backend.
11//
12//===----------------------------------------------------------------------===//
13
14// NOTE: NO INCLUDE GUARD DESIRED!
15
16#ifndef MODULE_PASS
17#define MODULE_PASS(NAME, CREATE_PASS)
18#endif
19MODULE_PASS("aarch64-lower-homogeneous-prolog-epilog", AArch64LowerHomogeneousPrologEpilogPass())
20#undef MODULE_PASS
21
22#ifndef FUNCTION_PASS
23#define FUNCTION_PASS(NAME, CREATE_PASS)
24#endif
25#undef FUNCTION_PASS
26
27#ifndef LOOP_PASS
28#define LOOP_PASS(NAME, CREATE_PASS)
29#endif
30LOOP_PASS("aarch64-sve-shuffle-opts", SVEShuffleOptsPass(*static_cast<const AArch64TargetMachine *>(this)))
31#undef LOOP_PASS
32
33#ifndef MACHINE_FUNCTION_PASS
34#define MACHINE_FUNCTION_PASS(NAME, CREATE_PASS)
35#endif
36MACHINE_FUNCTION_PASS("aarch64-a57-fp-load-balancing", AArch64A57FPLoadBalancingPass())
37MACHINE_FUNCTION_PASS("aarch64-branch-targets", AArch64BranchTargetsPass())
38MACHINE_FUNCTION_PASS("aarch64-ccmp", AArch64ConditionalComparesPass())
39MACHINE_FUNCTION_PASS("aarch64-collect-loh", AArch64CollectLOHPass())
40MACHINE_FUNCTION_PASS("aarch64-condopt", AArch64ConditionOptimizerPass())
41MACHINE_FUNCTION_PASS("aarch64-copyelim", AArch64RedundantCopyEliminationPass())
42MACHINE_FUNCTION_PASS("aarch64-dead-defs", AArch64DeadRegisterDefinitionsPass())
43MACHINE_FUNCTION_PASS("aarch64-expand-pseudo", AArch64ExpandPseudoPass())
44MACHINE_FUNCTION_PASS("aarch64-fix-cortex-a53-835769", AArch64A53Fix835769Pass())
45MACHINE_FUNCTION_PASS("aarch64-isel", AArch64DAGToDAGISelPass(*this))
46MACHINE_FUNCTION_PASS("aarch64-jump-tables", AArch64CompressJumpTablesPass())
47MACHINE_FUNCTION_PASS("aarch64-ldst-opt", AArch64LoadStoreOptPass())
48MACHINE_FUNCTION_PASS("aarch64-mi-peephole-opt", AArch64MIPeepholeOptPass())
49MACHINE_FUNCTION_PASS("aarch64-post-coalescer", AArch64PostCoalescerPass())
50MACHINE_FUNCTION_PASS("aarch64-post-select-optimize",
51 AArch64PostSelectOptimizePass())
52MACHINE_FUNCTION_PASS("aarch64-postlegalizer-lowering",
53 AArch64PostLegalizerLoweringPass())
54MACHINE_FUNCTION_PASS("aarch64-postlegalizer-combiner",
55 AArch64PostLegalizerCombinerPass(this))
56MACHINE_FUNCTION_PASS("aarch64-prelegalizer-combiner",
57 AArch64PreLegalizerCombinerPass())
58MACHINE_FUNCTION_PASS("aarch64-ptrauth", AArch64PointerAuthPass())
59MACHINE_FUNCTION_PASS("aarch64-redundantcondbranch", AArch64RedundantCondBranchPass())
60MACHINE_FUNCTION_PASS("aarch64-simd-instr-opt", AArch64SIMDInstrOptPass())
61MACHINE_FUNCTION_PASS("aarch64-simd-scalar", AArch64AdvSIMDScalarPass())
62MACHINE_FUNCTION_PASS("aarch64-sls-hardening", AArch64SLSHardeningPass())
63MACHINE_FUNCTION_PASS("aarch64-srlt-define-superregs", AArch64SRLTDefineSuperRegsPass())
64MACHINE_FUNCTION_PASS("aarch64-stack-tagging-pre-ra", AArch64StackTaggingPreRAPass())
65MACHINE_FUNCTION_PASS("aarch64-O0-prelegalizer-combiner",
66 AArch64O0PreLegalizerCombinerPass())
67#undef MACHINE_FUNCTION_PASS
68