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