| 1 | //===- DirectXTargetMachine.h - DirectX Target Implementation ---*- 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 | //===----------------------------------------------------------------------===// |
| 10 | |
| 11 | #ifndef LLVM_LIB_TARGET_DIRECTX_DIRECTX_H |
| 12 | #define LLVM_LIB_TARGET_DIRECTX_DIRECTX_H |
| 13 | |
| 14 | namespace llvm { |
| 15 | class AttributeMask; |
| 16 | class FunctionPass; |
| 17 | class ModulePass; |
| 18 | class PassRegistry; |
| 19 | class raw_ostream; |
| 20 | |
| 21 | /// Initializer for dxil writer pass |
| 22 | void initializeWriteDXILPassPass(PassRegistry &); |
| 23 | |
| 24 | /// Initializer for dxil embedder pass |
| 25 | void initializeEmbedDXILPassPass(PassRegistry &); |
| 26 | |
| 27 | /// Initializer for DXIL-prepare |
| 28 | void initializeDXILPrepareModulePass(PassRegistry &); |
| 29 | |
| 30 | /// Pass to convert modules into DXIL-compatable modules |
| 31 | ModulePass *createDXILPrepareModulePass(); |
| 32 | |
| 33 | /// Initializer for DXIL debug info lowering. |
| 34 | void initializeDXILDebugInfoLegacyPass(PassRegistry &); |
| 35 | |
| 36 | /// Pass to downgrade debug information to forms supported by DXIL. |
| 37 | ModulePass *createDXILDebugInfoLegacyPass(); |
| 38 | |
| 39 | /// Initializer for DXIL Intrinsic Expansion |
| 40 | void initializeDXILIntrinsicExpansionLegacyPass(PassRegistry &); |
| 41 | |
| 42 | /// Pass to expand intrinsic operations that lack DXIL opCodes |
| 43 | ModulePass *createDXILIntrinsicExpansionLegacyPass(); |
| 44 | |
| 45 | /// Initializer for DXIL CBuffer Access Pass |
| 46 | void initializeDXILCBufferAccessLegacyPass(PassRegistry &); |
| 47 | |
| 48 | /// Pass to translate loads in the cbuffer address space to intrinsics |
| 49 | ModulePass *createDXILCBufferAccessLegacyPass(); |
| 50 | |
| 51 | /// Initializer for DXIL Data Scalarization Pass |
| 52 | void initializeDXILDataScalarizationLegacyPass(PassRegistry &); |
| 53 | |
| 54 | /// Pass to scalarize llvm global data into a DXIL legal form |
| 55 | ModulePass *createDXILDataScalarizationLegacyPass(); |
| 56 | |
| 57 | /// Initializer for DXIL Array Flatten Pass |
| 58 | void initializeDXILFlattenArraysLegacyPass(PassRegistry &); |
| 59 | |
| 60 | /// Pass to flatten arrays into a one dimensional DXIL legal form |
| 61 | ModulePass *createDXILFlattenArraysLegacyPass(); |
| 62 | |
| 63 | /// Initializer for DXIL Forward Handle Accesses Pass |
| 64 | void initializeDXILForwardHandleAccessesLegacyPass(PassRegistry &); |
| 65 | |
| 66 | /// Pass to eliminate redundant stores and loads from handle globals. |
| 67 | FunctionPass *createDXILForwardHandleAccessesLegacyPass(); |
| 68 | |
| 69 | /// Initializer DXIL legalizationPass |
| 70 | void initializeDXILLegalizeLegacyPass(PassRegistry &); |
| 71 | |
| 72 | /// Pass to Legalize DXIL by remove i8 truncations and i64 insert/extract |
| 73 | /// elements |
| 74 | FunctionPass *createDXILLegalizeLegacyPass(); |
| 75 | |
| 76 | /// Initializer for DXIL Mem Intrinsics. |
| 77 | void initializeDXILMemIntrinsicsLegacyPass(PassRegistry &); |
| 78 | |
| 79 | /// Pass to transform all llvm memory intrinsics to explicit loads and stores. |
| 80 | ModulePass *createDXILMemIntrinsicsLegacyPass(); |
| 81 | |
| 82 | /// Initializer for DXILOpLowering |
| 83 | void initializeDXILOpLoweringLegacyPass(PassRegistry &); |
| 84 | |
| 85 | /// Pass to lowering LLVM intrinsic call to DXIL op function call. |
| 86 | ModulePass *createDXILOpLoweringLegacyPass(); |
| 87 | |
| 88 | /// Initializer for DXILRemoveUnusedResources |
| 89 | void initializeDXILRemoveUnusedResourcesLegacyPass(PassRegistry &); |
| 90 | |
| 91 | /// Pass to update remove unsused resources. |
| 92 | FunctionPass *createDXILRemoveUnusedResourcesLegacyPass(); |
| 93 | |
| 94 | /// Initializer for DXILResourceAccess |
| 95 | void initializeDXILResourceAccessLegacyPass(PassRegistry &); |
| 96 | |
| 97 | /// Pass to update resource accesses to use load/store directly. |
| 98 | FunctionPass *createDXILResourceAccessLegacyPass(); |
| 99 | |
| 100 | /// Initializer for DXILResourceImplicitBindingLegacyPass |
| 101 | void initializeDXILResourceImplicitBindingLegacyPass(PassRegistry &); |
| 102 | |
| 103 | /// Pass to assign register slots to resources without binding. |
| 104 | ModulePass *createDXILResourceImplicitBindingLegacyPass(); |
| 105 | |
| 106 | /// Initializer for DXILTranslateMetadata. |
| 107 | void initializeDXILTranslateMetadataLegacyPass(PassRegistry &); |
| 108 | |
| 109 | /// Pass to emit metadata for DXIL. |
| 110 | ModulePass *createDXILTranslateMetadataLegacyPass(); |
| 111 | |
| 112 | /// Pass to pretty print DXIL metadata. |
| 113 | ModulePass *createDXILPrettyPrinterLegacyPass(raw_ostream &OS); |
| 114 | |
| 115 | /// Initializer for DXILPrettyPrinter. |
| 116 | void initializeDXILPrettyPrinterLegacyPass(PassRegistry &); |
| 117 | |
| 118 | /// Initializer for DXILPostOptimizationValidation. |
| 119 | void initializeDXILPostOptimizationValidationLegacyPass(PassRegistry &); |
| 120 | |
| 121 | /// Pass to lowering LLVM intrinsic call to DXIL op function call. |
| 122 | ModulePass *createDXILPostOptimizationValidationLegacyPass(); |
| 123 | |
| 124 | /// Initializer for dxil::ShaderFlagsAnalysisWrapper pass. |
| 125 | void initializeShaderFlagsAnalysisWrapperPass(PassRegistry &); |
| 126 | |
| 127 | /// Initializer for dxil::RootSignatureAnalysisWrapper pass. |
| 128 | void initializeRootSignatureAnalysisWrapperPass(PassRegistry &); |
| 129 | |
| 130 | /// Initializer for DXContainerGlobals pass. |
| 131 | void initializeDXContainerGlobalsPass(PassRegistry &); |
| 132 | |
| 133 | /// Pass for generating DXContainer part globals. |
| 134 | ModulePass *createDXContainerGlobalsPass(); |
| 135 | |
| 136 | /// Initializer for DXContainerPDB pass. |
| 137 | void initializeDXContainerPDBPass(PassRegistry &); |
| 138 | |
| 139 | /// Pass for emitting DirectX PDB files. |
| 140 | ModulePass *createDXContainerPDBPass(); |
| 141 | |
| 142 | /// Initializer for DXILFinalizeLinkage pass. |
| 143 | void initializeDXILFinalizeLinkageLegacyPass(PassRegistry &); |
| 144 | |
| 145 | /// Pass to finalize linkage of functions. |
| 146 | ModulePass *createDXILFinalizeLinkageLegacyPass(); |
| 147 | } // namespace llvm |
| 148 | |
| 149 | #endif // LLVM_LIB_TARGET_DIRECTX_DIRECTX_H |
| 150 | |