126 lines · c
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-exception6//7//===----------------------------------------------------------------------===//8///9//===----------------------------------------------------------------------===//10 11#ifndef LLVM_LIB_TARGET_DIRECTX_DIRECTX_H12#define LLVM_LIB_TARGET_DIRECTX_DIRECTX_H13 14namespace llvm {15class FunctionPass;16class ModulePass;17class PassRegistry;18class raw_ostream;19 20/// Initializer for dxil writer pass21void initializeWriteDXILPassPass(PassRegistry &);22 23/// Initializer for dxil embedder pass24void initializeEmbedDXILPassPass(PassRegistry &);25 26/// Initializer for DXIL-prepare27void initializeDXILPrepareModulePass(PassRegistry &);28 29/// Pass to convert modules into DXIL-compatable modules30ModulePass *createDXILPrepareModulePass();31 32/// Initializer for DXIL Intrinsic Expansion33void initializeDXILIntrinsicExpansionLegacyPass(PassRegistry &);34 35/// Pass to expand intrinsic operations that lack DXIL opCodes36ModulePass *createDXILIntrinsicExpansionLegacyPass();37 38/// Initializer for DXIL CBuffer Access Pass39void initializeDXILCBufferAccessLegacyPass(PassRegistry &);40 41/// Pass to translate loads in the cbuffer address space to intrinsics42ModulePass *createDXILCBufferAccessLegacyPass();43 44/// Initializer for DXIL Data Scalarization Pass45void initializeDXILDataScalarizationLegacyPass(PassRegistry &);46 47/// Pass to scalarize llvm global data into a DXIL legal form48ModulePass *createDXILDataScalarizationLegacyPass();49 50/// Initializer for DXIL Array Flatten Pass51void initializeDXILFlattenArraysLegacyPass(PassRegistry &);52 53/// Pass to flatten arrays into a one dimensional DXIL legal form54ModulePass *createDXILFlattenArraysLegacyPass();55 56/// Initializer for DXIL Forward Handle Accesses Pass57void initializeDXILForwardHandleAccessesLegacyPass(PassRegistry &);58 59/// Pass to eliminate redundant stores and loads from handle globals.60FunctionPass *createDXILForwardHandleAccessesLegacyPass();61 62/// Initializer DXIL legalizationPass63void initializeDXILLegalizeLegacyPass(PassRegistry &);64 65/// Pass to Legalize DXIL by remove i8 truncations and i64 insert/extract66/// elements67FunctionPass *createDXILLegalizeLegacyPass();68 69/// Initializer for DXILOpLowering70void initializeDXILOpLoweringLegacyPass(PassRegistry &);71 72/// Pass to lowering LLVM intrinsic call to DXIL op function call.73ModulePass *createDXILOpLoweringLegacyPass();74 75/// Initializer for DXILResourceAccess76void initializeDXILResourceAccessLegacyPass(PassRegistry &);77 78/// Pass to update resource accesses to use load/store directly.79FunctionPass *createDXILResourceAccessLegacyPass();80 81/// Initializer for DXILResourceImplicitBindingLegacyPass82void initializeDXILResourceImplicitBindingLegacyPass(PassRegistry &);83 84/// Pass to assign register slots to resources without binding.85ModulePass *createDXILResourceImplicitBindingLegacyPass();86 87/// Initializer for DXILTranslateMetadata.88void initializeDXILTranslateMetadataLegacyPass(PassRegistry &);89 90/// Pass to emit metadata for DXIL.91ModulePass *createDXILTranslateMetadataLegacyPass();92 93/// Pass to pretty print DXIL metadata.94ModulePass *createDXILPrettyPrinterLegacyPass(raw_ostream &OS);95 96/// Initializer for DXILPrettyPrinter.97void initializeDXILPrettyPrinterLegacyPass(PassRegistry &);98 99/// Initializer for DXILPostOptimizationValidation.100void initializeDXILPostOptimizationValidationLegacyPass(PassRegistry &);101 102/// Pass to lowering LLVM intrinsic call to DXIL op function call.103ModulePass *createDXILPostOptimizationValidationLegacyPass();104 105/// Initializer for dxil::ShaderFlagsAnalysisWrapper pass.106void initializeShaderFlagsAnalysisWrapperPass(PassRegistry &);107 108/// Initializer for dxil::RootSignatureAnalysisWrapper pass.109void initializeRootSignatureAnalysisWrapperPass(PassRegistry &);110 111/// Initializer for DXContainerGlobals pass.112void initializeDXContainerGlobalsPass(PassRegistry &);113 114/// Pass for generating DXContainer part globals.115ModulePass *createDXContainerGlobalsPass();116 117/// Initializer for DXILFinalizeLinkage pass.118void initializeDXILFinalizeLinkageLegacyPass(PassRegistry &);119 120/// Pass to finalize linkage of functions.121ModulePass *createDXILFinalizeLinkageLegacyPass();122 123} // namespace llvm124 125#endif // LLVM_LIB_TARGET_DIRECTX_DIRECTX_H126