| //===- DirectXTargetMachine.h - DirectX Target Implementation ---*- C++ -*-===// | |
| // | |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | |
| // See https://llvm.org/LICENSE.txt for license information. | |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| // | |
| //===----------------------------------------------------------------------===// | |
| /// | |
| //===----------------------------------------------------------------------===// | |
| #ifndef LLVM_LIB_TARGET_DIRECTX_DIRECTX_H | |
| #define LLVM_LIB_TARGET_DIRECTX_DIRECTX_H | |
| namespace llvm { | |
| class FunctionPass; | |
| class ModulePass; | |
| class PassRegistry; | |
| class raw_ostream; | |
| /// Initializer for dxil writer pass | |
| void initializeWriteDXILPassPass(PassRegistry &); | |
| /// Initializer for dxil embedder pass | |
| void initializeEmbedDXILPassPass(PassRegistry &); | |
| /// Initializer for DXIL-prepare | |
| void initializeDXILPrepareModulePass(PassRegistry &); | |
| /// Pass to convert modules into DXIL-compatable modules | |
| ModulePass *createDXILPrepareModulePass(); | |
| /// Initializer for DXIL Intrinsic Expansion | |
| void initializeDXILIntrinsicExpansionLegacyPass(PassRegistry &); | |
| /// Pass to expand intrinsic operations that lack DXIL opCodes | |
| ModulePass *createDXILIntrinsicExpansionLegacyPass(); | |
| /// Initializer for DXIL CBuffer Access Pass | |
| void initializeDXILCBufferAccessLegacyPass(PassRegistry &); | |
| /// Pass to translate loads in the cbuffer address space to intrinsics | |
| ModulePass *createDXILCBufferAccessLegacyPass(); | |
| /// Initializer for DXIL Data Scalarization Pass | |
| void initializeDXILDataScalarizationLegacyPass(PassRegistry &); | |
| /// Pass to scalarize llvm global data into a DXIL legal form | |
| ModulePass *createDXILDataScalarizationLegacyPass(); | |
| /// Initializer for DXIL Array Flatten Pass | |
| void initializeDXILFlattenArraysLegacyPass(PassRegistry &); | |
| /// Pass to flatten arrays into a one dimensional DXIL legal form | |
| ModulePass *createDXILFlattenArraysLegacyPass(); | |
| /// Initializer for DXIL Forward Handle Accesses Pass | |
| void initializeDXILForwardHandleAccessesLegacyPass(PassRegistry &); | |
| /// Pass to eliminate redundant stores and loads from handle globals. | |
| FunctionPass *createDXILForwardHandleAccessesLegacyPass(); | |
| /// Initializer DXIL legalizationPass | |
| void initializeDXILLegalizeLegacyPass(PassRegistry &); | |
| /// Pass to Legalize DXIL by remove i8 truncations and i64 insert/extract | |
| /// elements | |
| FunctionPass *createDXILLegalizeLegacyPass(); | |
| /// Initializer for DXIL Mem Intrinsics. | |
| void initializeDXILMemIntrinsicsLegacyPass(PassRegistry &); | |
| /// Pass to transform all llvm memory intrinsics to explicit loads and stores. | |
| ModulePass *createDXILMemIntrinsicsLegacyPass(); | |
| /// Initializer for DXILOpLowering | |
| void initializeDXILOpLoweringLegacyPass(PassRegistry &); | |
| /// Pass to lowering LLVM intrinsic call to DXIL op function call. | |
| ModulePass *createDXILOpLoweringLegacyPass(); | |
| /// Initializer for DXILResourceAccess | |
| void initializeDXILResourceAccessLegacyPass(PassRegistry &); | |
| /// Pass to update resource accesses to use load/store directly. | |
| FunctionPass *createDXILResourceAccessLegacyPass(); | |
| /// Initializer for DXILResourceImplicitBindingLegacyPass | |
| void initializeDXILResourceImplicitBindingLegacyPass(PassRegistry &); | |
| /// Pass to assign register slots to resources without binding. | |
| ModulePass *createDXILResourceImplicitBindingLegacyPass(); | |
| /// Initializer for DXILTranslateMetadata. | |
| void initializeDXILTranslateMetadataLegacyPass(PassRegistry &); | |
| /// Pass to emit metadata for DXIL. | |
| ModulePass *createDXILTranslateMetadataLegacyPass(); | |
| /// Pass to pretty print DXIL metadata. | |
| ModulePass *createDXILPrettyPrinterLegacyPass(raw_ostream &OS); | |
| /// Initializer for DXILPrettyPrinter. | |
| void initializeDXILPrettyPrinterLegacyPass(PassRegistry &); | |
| /// Initializer for DXILPostOptimizationValidation. | |
| void initializeDXILPostOptimizationValidationLegacyPass(PassRegistry &); | |
| /// Pass to lowering LLVM intrinsic call to DXIL op function call. | |
| ModulePass *createDXILPostOptimizationValidationLegacyPass(); | |
| /// Initializer for dxil::ShaderFlagsAnalysisWrapper pass. | |
| void initializeShaderFlagsAnalysisWrapperPass(PassRegistry &); | |
| /// Initializer for dxil::RootSignatureAnalysisWrapper pass. | |
| void initializeRootSignatureAnalysisWrapperPass(PassRegistry &); | |
| /// Initializer for DXContainerGlobals pass. | |
| void initializeDXContainerGlobalsPass(PassRegistry &); | |
| /// Pass for generating DXContainer part globals. | |
| ModulePass *createDXContainerGlobalsPass(); | |
| /// Initializer for DXILFinalizeLinkage pass. | |
| void initializeDXILFinalizeLinkageLegacyPass(PassRegistry &); | |
| /// Pass to finalize linkage of functions. | |
| ModulePass *createDXILFinalizeLinkageLegacyPass(); | |
| } // namespace llvm | |
| #endif // LLVM_LIB_TARGET_DIRECTX_DIRECTX_H |