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 CBuffer Access Pass 39 void initializeDXILCBufferAccessLegacyPass(PassRegistry &); 40 41 /// Pass to translate loads in the cbuffer address space to intrinsics 42 ModulePass *createDXILCBufferAccessLegacyPass(); 43 44 /// Initializer for DXIL Data Scalarization Pass 45 void initializeDXILDataScalarizationLegacyPass(PassRegistry &); 46 47 /// Pass to scalarize llvm global data into a DXIL legal form 48 ModulePass *createDXILDataScalarizationLegacyPass(); 49 50 /// Initializer for DXIL Array Flatten Pass 51 void initializeDXILFlattenArraysLegacyPass(PassRegistry &); 52 53 /// Pass to flatten arrays into a one dimensional DXIL legal form 54 ModulePass *createDXILFlattenArraysLegacyPass(); 55 56 /// Initializer for DXIL Forward Handle Accesses Pass 57 void initializeDXILForwardHandleAccessesLegacyPass(PassRegistry &); 58 59 /// Pass to eliminate redundant stores and loads from handle globals. 60 FunctionPass *createDXILForwardHandleAccessesLegacyPass(); 61 62 /// Initializer DXIL legalizationPass 63 void initializeDXILLegalizeLegacyPass(PassRegistry &); 64 65 /// Pass to Legalize DXIL by remove i8 truncations and i64 insert/extract 66 /// elements 67 FunctionPass *createDXILLegalizeLegacyPass(); 68 69 /// Initializer for DXILOpLowering 70 void initializeDXILOpLoweringLegacyPass(PassRegistry &); 71 72 /// Pass to lowering LLVM intrinsic call to DXIL op function call. 73 ModulePass *createDXILOpLoweringLegacyPass(); 74 75 /// Initializer for DXILResourceAccess 76 void initializeDXILResourceAccessLegacyPass(PassRegistry &); 77 78 /// Pass to update resource accesses to use load/store directly. 79 FunctionPass *createDXILResourceAccessLegacyPass(); 80 81 /// Initializer for DXILResourceImplicitBindingLegacyPass 82 void initializeDXILResourceImplicitBindingLegacyPass(PassRegistry &); 83 84 /// Pass to assign register slots to resources without binding. 85 ModulePass *createDXILResourceImplicitBindingLegacyPass(); 86 87 /// Initializer for DXILTranslateMetadata. 88 void initializeDXILTranslateMetadataLegacyPass(PassRegistry &); 89 90 /// Pass to emit metadata for DXIL. 91 ModulePass *createDXILTranslateMetadataLegacyPass(); 92 93 /// Pass to pretty print DXIL metadata. 94 ModulePass *createDXILPrettyPrinterLegacyPass(raw_ostream &OS); 95 96 /// Initializer for DXILPrettyPrinter. 97 void initializeDXILPrettyPrinterLegacyPass(PassRegistry &); 98 99 /// Initializer for DXILPostOptimizationValidation. 100 void initializeDXILPostOptimizationValidationLegacyPass(PassRegistry &); 101 102 /// Pass to lowering LLVM intrinsic call to DXIL op function call. 103 ModulePass *createDXILPostOptimizationValidationLegacyPass(); 104 105 /// Initializer for dxil::ShaderFlagsAnalysisWrapper pass. 106 void initializeShaderFlagsAnalysisWrapperPass(PassRegistry &); 107 108 /// Initializer for dxil::RootSignatureAnalysisWrapper pass. 109 void initializeRootSignatureAnalysisWrapperPass(PassRegistry &); 110 111 /// Initializer for DXContainerGlobals pass. 112 void initializeDXContainerGlobalsPass(PassRegistry &); 113 114 /// Pass for generating DXContainer part globals. 115 ModulePass *createDXContainerGlobalsPass(); 116 117 /// Initializer for DXILFinalizeLinkage pass. 118 void initializeDXILFinalizeLinkageLegacyPass(PassRegistry &); 119 120 /// Pass to finalize linkage of functions. 121 ModulePass *createDXILFinalizeLinkageLegacyPass(); 122 123 } // namespace llvm 124 125 #endif // LLVM_LIB_TARGET_DIRECTX_DIRECTX_H 126