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 FunctionPass; 16 class ModulePass; 17 class PassRegistry; 18 class raw_ostream; 19 20 /// Initializer for dxil writer pass 21 void initializeWriteDXILPassPass(PassRegistry &); 22 23 /// Initializer for dxil embedder pass 24 void initializeEmbedDXILPassPass(PassRegistry &); 25 26 /// Initializer for DXIL-prepare 27 void initializeDXILPrepareModulePass(PassRegistry &); 28 29 /// Pass to convert modules into DXIL-compatable modules 30 ModulePass *createDXILPrepareModulePass(); 31 32 /// Initializer for DXIL Intrinsic Expansion 33 void initializeDXILIntrinsicExpansionLegacyPass(PassRegistry &); 34 35 /// Pass to expand intrinsic operations that lack DXIL opCodes 36 ModulePass *createDXILIntrinsicExpansionLegacyPass(); 37 38 /// Initializer for DXIL Data Scalarization Pass 39 void initializeDXILDataScalarizationLegacyPass(PassRegistry &); 40 41 /// Pass to scalarize llvm global data into a DXIL legal form 42 ModulePass *createDXILDataScalarizationLegacyPass(); 43 44 /// Initializer for DXIL Array Flatten Pass 45 void initializeDXILFlattenArraysLegacyPass(PassRegistry &); 46 47 /// Pass to flatten arrays into a one dimensional DXIL legal form 48 ModulePass *createDXILFlattenArraysLegacyPass(); 49 50 /// Initializer for DXILOpLowering 51 void initializeDXILOpLoweringLegacyPass(PassRegistry &); 52 53 /// Pass to lowering LLVM intrinsic call to DXIL op function call. 54 ModulePass *createDXILOpLoweringLegacyPass(); 55 56 /// Initializer for DXILResourceAccess 57 void initializeDXILResourceAccessLegacyPass(PassRegistry &); 58 59 /// Pass to update resource accesses to use load/store directly. 60 FunctionPass *createDXILResourceAccessLegacyPass(); 61 62 /// Initializer for DXILTranslateMetadata. 63 void initializeDXILTranslateMetadataLegacyPass(PassRegistry &); 64 65 /// Pass to emit metadata for DXIL. 66 ModulePass *createDXILTranslateMetadataLegacyPass(); 67 68 /// Initializer for DXILTranslateMetadata. 69 void initializeDXILResourceMDWrapperPass(PassRegistry &); 70 71 /// Pass to pretty print DXIL metadata. 72 ModulePass *createDXILPrettyPrinterLegacyPass(raw_ostream &OS); 73 74 /// Initializer for DXILPrettyPrinter. 75 void initializeDXILPrettyPrinterLegacyPass(PassRegistry &); 76 77 /// Initializer for dxil::ShaderFlagsAnalysisWrapper pass. 78 void initializeShaderFlagsAnalysisWrapperPass(PassRegistry &); 79 80 /// Initializer for DXContainerGlobals pass. 81 void initializeDXContainerGlobalsPass(PassRegistry &); 82 83 /// Pass for generating DXContainer part globals. 84 ModulePass *createDXContainerGlobalsPass(); 85 86 /// Initializer for DXILFinalizeLinkage pass. 87 void initializeDXILFinalizeLinkageLegacyPass(PassRegistry &); 88 89 /// Pass to finalize linkage of functions. 90 ModulePass *createDXILFinalizeLinkageLegacyPass(); 91 92 } // namespace llvm 93 94 #endif // LLVM_LIB_TARGET_DIRECTX_DIRECTX_H 95