| 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 |
| 19 | MODULE_PASS("generic-to-nvvm" , GenericToNVVMPass()) |
| 20 | MODULE_PASS("nvptx-asm-printer-begin" , NVPTXAsmPrinterBeginPass()) |
| 21 | MODULE_PASS("nvptx-asm-printer-end" , NVPTXAsmPrinterEndPass()) |
| 22 | MODULE_PASS("nvptx-assign-valid-global-names" , NVPTXAssignValidGlobalNamesPass()) |
| 23 | MODULE_PASS("nvptx-lower-args" , NVPTXLowerArgsPass(*this)) |
| 24 | MODULE_PASS("nvptx-lower-ctor-dtor" , NVPTXCtorDtorLoweringPass()) |
| 25 | MODULE_PASS("nvptx-promote-param-align" , NVPTXPromoteParamAlignPass()) |
| 26 | MODULE_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 |
| 37 | FUNCTION_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 |
| 44 | FUNCTION_PASS("nvptx-alloca-hoisting" , NVPTXAllocaHoistingPass()) |
| 45 | FUNCTION_PASS("nvptx-atomic-lower" , NVPTXAtomicLowerPass()) |
| 46 | FUNCTION_PASS("nvptx-copy-byval-args" , NVPTXCopyByValArgsPass()) |
| 47 | FUNCTION_PASS("nvptx-image-optimizer" , NVPTXImageOptimizerPass()) |
| 48 | FUNCTION_PASS("nvptx-ir-peephole" , NVPTXIRPeepholePass()) |
| 49 | FUNCTION_PASS("nvptx-lower-aggr-copies" , NVPTXLowerAggrCopiesPass()) |
| 50 | FUNCTION_PASS("nvptx-lower-alloca" , NVPTXLowerAllocaPass()) |
| 51 | FUNCTION_PASS("nvptx-lower-unreachable" , |
| 52 | NVPTXLowerUnreachablePass(Options.TrapUnreachable, |
| 53 | Options.NoTrapAfterNoreturn)) |
| 54 | FUNCTION_PASS("nvptx-mark-kernel-ptrs-global" , NVPTXMarkKernelPtrsGlobalPass()) |
| 55 | FUNCTION_PASS("nvptx-tag-invariant-loads" , NVPTXTagInvariantLoadsPass()) |
| 56 | FUNCTION_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 |
| 62 | MACHINE_FUNCTION_PASS("nvptx-address-folder" , NVPTXAddressFolderPass()) |
| 63 | MACHINE_FUNCTION_PASS("nvptx-asm-printer" , NVPTXAsmPrinterPass()) |
| 64 | MACHINE_FUNCTION_PASS("nvptx-forward-params" , NVPTXForwardParamsPass()) |
| 65 | MACHINE_FUNCTION_PASS("nvptx-isel" , NVPTXISelDAGToDAGPass(*this, getOptLevel())) |
| 66 | MACHINE_FUNCTION_PASS("nvptx-peephole" , NVPTXPeepholePass()) |
| 67 | MACHINE_FUNCTION_PASS("nvptx-prolog-epilog" , NVPTXPrologEpilogPass()) |
| 68 | MACHINE_FUNCTION_PASS("nvptx-proxyreg-erasure" , NVPTXProxyRegErasurePass()) |
| 69 | MACHINE_FUNCTION_PASS("nvptx-replace-image-handles" , |
| 70 | NVPTXReplaceImageHandlesPass()) |
| 71 | #undef MACHINE_FUNCTION_PASS |
| 72 | |