1//===- NVPTXPassRegistry.def - Registry of NVPTX 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
10// NVPTX 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("generic-to-nvvm", GenericToNVVMPass())
20MODULE_PASS("nvptx-asm-printer-begin", NVPTXAsmPrinterBeginPass())
21MODULE_PASS("nvptx-asm-printer-end", NVPTXAsmPrinterEndPass())
22MODULE_PASS("nvptx-assign-valid-global-names", NVPTXAssignValidGlobalNamesPass())
23MODULE_PASS("nvptx-lower-args", NVPTXLowerArgsPass(*this))
24MODULE_PASS("nvptx-lower-ctor-dtor", NVPTXCtorDtorLoweringPass())
25MODULE_PASS("nvptx-promote-param-align", NVPTXPromoteParamAlignPass())
26MODULE_PASS("nvvm-reflect", NVVMReflectPass())
27#undef MODULE_PASS
28
29#ifndef FUNCTION_ANALYSIS
30#define FUNCTION_ANALYSIS(NAME, CREATE_PASS)
31#endif
32
33#ifndef FUNCTION_ALIAS_ANALYSIS
34#define FUNCTION_ALIAS_ANALYSIS(NAME, CREATE_PASS) \
35 FUNCTION_ANALYSIS(NAME, CREATE_PASS)
36#endif
37FUNCTION_ALIAS_ANALYSIS("nvptx-aa", NVPTXAA())
38#undef FUNCTION_ALIAS_ANALYSIS
39#undef FUNCTION_ANALYSIS
40
41#ifndef FUNCTION_PASS
42#define FUNCTION_PASS(NAME, CREATE_PASS)
43#endif
44FUNCTION_PASS("nvptx-alloca-hoisting", NVPTXAllocaHoistingPass())
45FUNCTION_PASS("nvptx-atomic-lower", NVPTXAtomicLowerPass())
46FUNCTION_PASS("nvptx-copy-byval-args", NVPTXCopyByValArgsPass())
47FUNCTION_PASS("nvptx-image-optimizer", NVPTXImageOptimizerPass())
48FUNCTION_PASS("nvptx-ir-peephole", NVPTXIRPeepholePass())
49FUNCTION_PASS("nvptx-lower-aggr-copies", NVPTXLowerAggrCopiesPass())
50FUNCTION_PASS("nvptx-lower-alloca", NVPTXLowerAllocaPass())
51FUNCTION_PASS("nvptx-lower-unreachable",
52 NVPTXLowerUnreachablePass(Options.TrapUnreachable,
53 Options.NoTrapAfterNoreturn))
54FUNCTION_PASS("nvptx-mark-kernel-ptrs-global", NVPTXMarkKernelPtrsGlobalPass())
55FUNCTION_PASS("nvptx-tag-invariant-loads", NVPTXTagInvariantLoadsPass())
56FUNCTION_PASS("nvvm-intr-range", NVVMIntrRangePass())
57#undef FUNCTION_PASS
58
59#ifndef MACHINE_FUNCTION_PASS
60#define MACHINE_FUNCTION_PASS(NAME, CREATE_PASS)
61#endif
62MACHINE_FUNCTION_PASS("nvptx-address-folder", NVPTXAddressFolderPass())
63MACHINE_FUNCTION_PASS("nvptx-asm-printer", NVPTXAsmPrinterPass())
64MACHINE_FUNCTION_PASS("nvptx-forward-params", NVPTXForwardParamsPass())
65MACHINE_FUNCTION_PASS("nvptx-isel", NVPTXISelDAGToDAGPass(*this, getOptLevel()))
66MACHINE_FUNCTION_PASS("nvptx-peephole", NVPTXPeepholePass())
67MACHINE_FUNCTION_PASS("nvptx-prolog-epilog", NVPTXPrologEpilogPass())
68MACHINE_FUNCTION_PASS("nvptx-proxyreg-erasure", NVPTXProxyRegErasurePass())
69MACHINE_FUNCTION_PASS("nvptx-replace-image-handles",
70 NVPTXReplaceImageHandlesPass())
71#undef MACHINE_FUNCTION_PASS
72