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-lower-args", NVPTXLowerArgsPass(*this))
21MODULE_PASS("nvptx-lower-ctor-dtor", NVPTXCtorDtorLoweringPass())
22MODULE_PASS("nvvm-reflect", NVVMReflectPass())
23#undef MODULE_PASS
24
25#ifndef FUNCTION_ANALYSIS
26#define FUNCTION_ANALYSIS(NAME, CREATE_PASS)
27#endif
28
29#ifndef FUNCTION_ALIAS_ANALYSIS
30#define FUNCTION_ALIAS_ANALYSIS(NAME, CREATE_PASS) \
31 FUNCTION_ANALYSIS(NAME, CREATE_PASS)
32#endif
33FUNCTION_ALIAS_ANALYSIS("nvptx-aa", NVPTXAA())
34#undef FUNCTION_ALIAS_ANALYSIS
35#undef FUNCTION_ANALYSIS
36
37#ifndef FUNCTION_PASS
38#define FUNCTION_PASS(NAME, CREATE_PASS)
39#endif
40FUNCTION_PASS("nvvm-intr-range", NVVMIntrRangePass())
41FUNCTION_PASS("nvptx-copy-byval-args", NVPTXCopyByValArgsPass())
42FUNCTION_PASS("nvptx-set-byval-param-align", NVPTXSetByValParamAlignPass())
43FUNCTION_PASS("nvptx-mark-kernel-ptrs-global", NVPTXMarkKernelPtrsGlobalPass())
44FUNCTION_PASS("nvptx-tag-invariant-loads", NVPTXTagInvariantLoadsPass())
45FUNCTION_PASS("nvptx-ir-peephole", NVPTXIRPeepholePass())
46#undef FUNCTION_PASS
47