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-asm-printer-begin", AArch64AsmPrinterBeginPass())
20MODULE_PASS("aarch64-asm-printer-end", AArch64AsmPrinterEndPass())
21MODULE_PASS("aarch64-lower-homogeneous-prolog-epilog", AArch64LowerHomogeneousPrologEpilogPass())
22#undef MODULE_PASS
23
24#ifndef FUNCTION_PASS
25#define FUNCTION_PASS(NAME, CREATE_PASS)
26#endif
27#undef FUNCTION_PASS
28
29#ifndef LOOP_PASS
30#define LOOP_PASS(NAME, CREATE_PASS)
31#endif
32LOOP_PASS(
33 "aarch64-sve-shuffle-opts",
34 AArch64SVEShuffleOptsPass(*static_cast<const AArch64TargetMachine *>(this)))
35#undef LOOP_PASS
36
37#ifndef MACHINE_FUNCTION_PASS
38#define MACHINE_FUNCTION_PASS(NAME, CREATE_PASS)
39#endif
40MACHINE_FUNCTION_PASS("aarch64-a57-fp-load-balancing", AArch64A57FPLoadBalancingPass())
41MACHINE_FUNCTION_PASS("aarch64-asm-printer", AArch64AsmPrinterPass())
42MACHINE_FUNCTION_PASS("aarch64-branch-targets", AArch64BranchTargetsPass())
43MACHINE_FUNCTION_PASS("aarch64-ccmp", AArch64ConditionalComparesPass())
44MACHINE_FUNCTION_PASS("aarch64-collect-loh", AArch64CollectLOHPass())
45MACHINE_FUNCTION_PASS("aarch64-condopt", AArch64ConditionOptimizerPass())
46MACHINE_FUNCTION_PASS("aarch64-copyelim", AArch64RedundantCopyEliminationPass())
47MACHINE_FUNCTION_PASS("aarch64-dead-defs", AArch64DeadRegisterDefinitionsPass())
48MACHINE_FUNCTION_PASS("aarch64-expand-pseudo", AArch64ExpandPseudoPass())
49MACHINE_FUNCTION_PASS("aarch64-fix-cortex-a53-835769", AArch64A53Fix835769Pass())
50MACHINE_FUNCTION_PASS("aarch64-isel", AArch64DAGToDAGISelPass(*this))
51MACHINE_FUNCTION_PASS("aarch64-jump-tables", AArch64CompressJumpTablesPass())
52MACHINE_FUNCTION_PASS("aarch64-ldst-opt", AArch64LoadStoreOptPass())
53MACHINE_FUNCTION_PASS("aarch64-mi-peephole-opt", AArch64MIPeepholeOptPass())
54MACHINE_FUNCTION_PASS("aarch64-ptrue-coalesce", AArch64PTrueCoalescingPass())
55MACHINE_FUNCTION_PASS("aarch64-post-coalescer", AArch64PostCoalescerPass())
56MACHINE_FUNCTION_PASS("aarch64-post-select-optimize",
57 AArch64PostSelectOptimizePass())
58MACHINE_FUNCTION_PASS("aarch64-postlegalizer-lowering",
59 AArch64PostLegalizerLoweringPass())
60MACHINE_FUNCTION_PASS("aarch64-postlegalizer-combiner",
61 AArch64PostLegalizerCombinerPass(this))
62MACHINE_FUNCTION_PASS("aarch64-prelegalizer-combiner",
63 AArch64PreLegalizerCombinerPass())
64MACHINE_FUNCTION_PASS("aarch64-ptrauth", AArch64PointerAuthPass())
65MACHINE_FUNCTION_PASS("aarch64-redundantcondbranch", AArch64RedundantCondBranchPass())
66MACHINE_FUNCTION_PASS("aarch64-simd-instr-opt", AArch64SIMDInstrOptPass())
67MACHINE_FUNCTION_PASS("aarch64-simd-scalar", AArch64AdvSIMDScalarPass())
68MACHINE_FUNCTION_PASS("aarch64-sls-hardening", AArch64SLSHardeningPass())
69MACHINE_FUNCTION_PASS("aarch64-srlt-define-superregs", AArch64SRLTDefineSuperRegsPass())
70MACHINE_FUNCTION_PASS("aarch64-stack-tagging-pre-ra", AArch64StackTaggingPreRAPass())
71MACHINE_FUNCTION_PASS("aarch64-O0-prelegalizer-combiner",
72 AArch64O0PreLegalizerCombinerPass())
73#undef MACHINE_FUNCTION_PASS
74