xref: /llvm-project/llvm/lib/Target/DirectX/DirectX.h (revision 0fca76d576da6b26379b9754178263685b077610)
16599fdabSChris Bieneman //===- DirectXTargetMachine.h - DirectX Target Implementation ---*- C++ -*-===//
26599fdabSChris Bieneman //
36599fdabSChris Bieneman // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
46599fdabSChris Bieneman // See https://llvm.org/LICENSE.txt for license information.
56599fdabSChris Bieneman // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
66599fdabSChris Bieneman //
76599fdabSChris Bieneman //===----------------------------------------------------------------------===//
86599fdabSChris Bieneman ///
96599fdabSChris Bieneman //===----------------------------------------------------------------------===//
106599fdabSChris Bieneman 
116599fdabSChris Bieneman #ifndef LLVM_LIB_TARGET_DIRECTX_DIRECTX_H
126599fdabSChris Bieneman #define LLVM_LIB_TARGET_DIRECTX_DIRECTX_H
136599fdabSChris Bieneman 
146599fdabSChris Bieneman namespace llvm {
15*0fca76d5SJustin Bogner class FunctionPass;
166599fdabSChris Bieneman class ModulePass;
176599fdabSChris Bieneman class PassRegistry;
18e530a118SChris Bieneman class raw_ostream;
196599fdabSChris Bieneman 
20f2526c1aSChris Bieneman /// Initializer for dxil writer pass
21f2526c1aSChris Bieneman void initializeWriteDXILPassPass(PassRegistry &);
22f2526c1aSChris Bieneman 
23d401a993SChris Bieneman /// Initializer for dxil embedder pass
24d401a993SChris Bieneman void initializeEmbedDXILPassPass(PassRegistry &);
25d401a993SChris Bieneman 
266599fdabSChris Bieneman /// Initializer for DXIL-prepare
276599fdabSChris Bieneman void initializeDXILPrepareModulePass(PassRegistry &);
286599fdabSChris Bieneman 
296599fdabSChris Bieneman /// Pass to convert modules into DXIL-compatable modules
306599fdabSChris Bieneman ModulePass *createDXILPrepareModulePass();
3185285be9SXiang Li 
32de1a97dbSFarzon Lotfi /// Initializer for DXIL Intrinsic Expansion
33de1a97dbSFarzon Lotfi void initializeDXILIntrinsicExpansionLegacyPass(PassRegistry &);
34de1a97dbSFarzon Lotfi 
35de1a97dbSFarzon Lotfi /// Pass to expand intrinsic operations that lack DXIL opCodes
36de1a97dbSFarzon Lotfi ModulePass *createDXILIntrinsicExpansionLegacyPass();
37de1a97dbSFarzon Lotfi 
38324bdd66SFarzon Lotfi /// Initializer for DXIL Data Scalarization Pass
39324bdd66SFarzon Lotfi void initializeDXILDataScalarizationLegacyPass(PassRegistry &);
40324bdd66SFarzon Lotfi 
41324bdd66SFarzon Lotfi /// Pass to scalarize llvm global data into a DXIL legal form
42324bdd66SFarzon Lotfi ModulePass *createDXILDataScalarizationLegacyPass();
43324bdd66SFarzon Lotfi 
445ac624c8SFarzon Lotfi /// Initializer for DXIL Array Flatten Pass
455ac624c8SFarzon Lotfi void initializeDXILFlattenArraysLegacyPass(PassRegistry &);
465ac624c8SFarzon Lotfi 
475ac624c8SFarzon Lotfi /// Pass to flatten arrays into a one dimensional DXIL legal form
485ac624c8SFarzon Lotfi ModulePass *createDXILFlattenArraysLegacyPass();
495ac624c8SFarzon Lotfi 
5085285be9SXiang Li /// Initializer for DXILOpLowering
5185285be9SXiang Li void initializeDXILOpLoweringLegacyPass(PassRegistry &);
5285285be9SXiang Li 
5385285be9SXiang Li /// Pass to lowering LLVM intrinsic call to DXIL op function call.
5485285be9SXiang Li ModulePass *createDXILOpLoweringLegacyPass();
5585285be9SXiang Li 
56*0fca76d5SJustin Bogner /// Initializer for DXILResourceAccess
57*0fca76d5SJustin Bogner void initializeDXILResourceAccessLegacyPass(PassRegistry &);
58*0fca76d5SJustin Bogner 
59*0fca76d5SJustin Bogner /// Pass to update resource accesses to use load/store directly.
60*0fca76d5SJustin Bogner FunctionPass *createDXILResourceAccessLegacyPass();
61*0fca76d5SJustin Bogner 
620c7f7f1bSpython3kgae /// Initializer for DXILTranslateMetadata.
6381ee3855SJustin Bogner void initializeDXILTranslateMetadataLegacyPass(PassRegistry &);
640c7f7f1bSpython3kgae 
650c7f7f1bSpython3kgae /// Pass to emit metadata for DXIL.
6681ee3855SJustin Bogner ModulePass *createDXILTranslateMetadataLegacyPass();
6722018555SXiang Li 
6822018555SXiang Li /// Initializer for DXILTranslateMetadata.
691c5f6cfcSJustin Bogner void initializeDXILResourceMDWrapperPass(PassRegistry &);
7022018555SXiang Li 
71e530a118SChris Bieneman /// Pass to pretty print DXIL metadata.
7281ee3855SJustin Bogner ModulePass *createDXILPrettyPrinterLegacyPass(raw_ostream &OS);
73e530a118SChris Bieneman 
74e530a118SChris Bieneman /// Initializer for DXILPrettyPrinter.
7581ee3855SJustin Bogner void initializeDXILPrettyPrinterLegacyPass(PassRegistry &);
76e530a118SChris Bieneman 
776e05c8dfSChris Bieneman /// Initializer for dxil::ShaderFlagsAnalysisWrapper pass.
786e05c8dfSChris Bieneman void initializeShaderFlagsAnalysisWrapperPass(PassRegistry &);
796e05c8dfSChris Bieneman 
806e05c8dfSChris Bieneman /// Initializer for DXContainerGlobals pass.
816e05c8dfSChris Bieneman void initializeDXContainerGlobalsPass(PassRegistry &);
826e05c8dfSChris Bieneman 
836e05c8dfSChris Bieneman /// Pass for generating DXContainer part globals.
846e05c8dfSChris Bieneman ModulePass *createDXContainerGlobalsPass();
85db279c72SHelena Kotas 
86db279c72SHelena Kotas /// Initializer for DXILFinalizeLinkage pass.
87db279c72SHelena Kotas void initializeDXILFinalizeLinkageLegacyPass(PassRegistry &);
88db279c72SHelena Kotas 
89db279c72SHelena Kotas /// Pass to finalize linkage of functions.
90db279c72SHelena Kotas ModulePass *createDXILFinalizeLinkageLegacyPass();
91db279c72SHelena Kotas 
926599fdabSChris Bieneman } // namespace llvm
936599fdabSChris Bieneman 
946599fdabSChris Bieneman #endif // LLVM_LIB_TARGET_DIRECTX_DIRECTX_H
95