xref: /llvm-project/llvm/lib/Target/DirectX/DirectX.h (revision 0fca76d576da6b26379b9754178263685b077610)
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