xref: /freebsd/contrib/llvm-project/llvm/lib/Target/DirectX/DirectX.h (revision 1ed2ef42e01771f5d8ca9be61e07dcf0fd47feba)
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