//===- 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 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