
DXContainer files have a handful of sections that need to be written. This adds a pass to write the section data into IR globals, and writes the shader flag data into a global. The test cases here verify that the shader flags are correctly written from the IR into the global and emitted to the DXContainer. This change also fixes a bug in the MCDXContainerWriter, where the size of the dxbc::ProgramHeader was not being included in the part offset calcuations. This is verified to be working by the new testcases where obj2yaml can properly dump part data for parts after the DXIL part. Resolves issue #57742 (https://github.com/llvm/llvm-project/issues/57742) Reviewed By: python3kgae Differential Revision: https://reviews.llvm.org/D135793
63 lines
2.0 KiB
C++
63 lines
2.0 KiB
C++
//===- DirectXTargetMachine.h - DirectX Target Implementation ---*- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
///
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_LIB_TARGET_DIRECTX_DIRECTX_H
|
|
#define LLVM_LIB_TARGET_DIRECTX_DIRECTX_H
|
|
|
|
namespace llvm {
|
|
class ModulePass;
|
|
class PassRegistry;
|
|
class raw_ostream;
|
|
|
|
/// Initializer for dxil writer pass
|
|
void initializeWriteDXILPassPass(PassRegistry &);
|
|
|
|
/// Initializer for dxil embedder pass
|
|
void initializeEmbedDXILPassPass(PassRegistry &);
|
|
|
|
/// Initializer for DXIL-prepare
|
|
void initializeDXILPrepareModulePass(PassRegistry &);
|
|
|
|
/// Pass to convert modules into DXIL-compatable modules
|
|
ModulePass *createDXILPrepareModulePass();
|
|
|
|
/// Initializer for DXILOpLowering
|
|
void initializeDXILOpLoweringLegacyPass(PassRegistry &);
|
|
|
|
/// Pass to lowering LLVM intrinsic call to DXIL op function call.
|
|
ModulePass *createDXILOpLoweringLegacyPass();
|
|
|
|
/// Initializer for DXILTranslateMetadata.
|
|
void initializeDXILTranslateMetadataPass(PassRegistry &);
|
|
|
|
/// Pass to emit metadata for DXIL.
|
|
ModulePass *createDXILTranslateMetadataPass();
|
|
|
|
/// Initializer for DXILTranslateMetadata.
|
|
void initializeDXILResourceWrapperPass(PassRegistry &);
|
|
|
|
/// Pass to pretty print DXIL metadata.
|
|
ModulePass *createDXILPrettyPrinterPass(raw_ostream &OS);
|
|
|
|
/// Initializer for DXILPrettyPrinter.
|
|
void initializeDXILPrettyPrinterPass(PassRegistry &);
|
|
|
|
/// Initializer for dxil::ShaderFlagsAnalysisWrapper pass.
|
|
void initializeShaderFlagsAnalysisWrapperPass(PassRegistry &);
|
|
|
|
/// Initializer for DXContainerGlobals pass.
|
|
void initializeDXContainerGlobalsPass(PassRegistry &);
|
|
|
|
/// Pass for generating DXContainer part globals.
|
|
ModulePass *createDXContainerGlobalsPass();
|
|
} // namespace llvm
|
|
|
|
#endif // LLVM_LIB_TARGET_DIRECTX_DIRECTX_H
|