summaryrefslogtreecommitdiff
path: root/llvm/lib/Target/DirectX/DXILTranslateMetadata.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Target/DirectX/DXILTranslateMetadata.cpp')
-rw-r--r--llvm/lib/Target/DirectX/DXILTranslateMetadata.cpp72
1 files changed, 42 insertions, 30 deletions
diff --git a/llvm/lib/Target/DirectX/DXILTranslateMetadata.cpp b/llvm/lib/Target/DirectX/DXILTranslateMetadata.cpp
index 21089a232783..55b3d9456842 100644
--- a/llvm/lib/Target/DirectX/DXILTranslateMetadata.cpp
+++ b/llvm/lib/Target/DirectX/DXILTranslateMetadata.cpp
@@ -1,13 +1,12 @@
-//===- DXILTranslateMetadata.cpp - Pass to emit DXIL metadata ---*- C++ -*-===//
+//===- DXILTranslateMetadata.cpp - Pass to emit DXIL metadata -------------===//
//
// 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
//
//===----------------------------------------------------------------------===//
-///
-//===----------------------------------------------------------------------===//
+#include "DXILTranslateMetadata.h"
#include "DXILMetadata.h"
#include "DXILResource.h"
#include "DXILResourceAnalysis.h"
@@ -23,11 +22,35 @@
using namespace llvm;
using namespace llvm::dxil;
+static void translateMetadata(Module &M, const dxil::Resources &MDResources,
+ const ComputedShaderFlags &ShaderFlags) {
+ dxil::ValidatorVersionMD ValVerMD(M);
+ if (ValVerMD.isEmpty())
+ ValVerMD.update(VersionTuple(1, 0));
+ dxil::createShaderModelMD(M);
+ dxil::createDXILVersionMD(M);
+
+ MDResources.write(M);
+
+ dxil::createEntryMD(M, static_cast<uint64_t>(ShaderFlags));
+}
+
+PreservedAnalyses DXILTranslateMetadata::run(Module &M,
+ ModuleAnalysisManager &MAM) {
+ const dxil::Resources &MDResources = MAM.getResult<DXILResourceMDAnalysis>(M);
+ const ComputedShaderFlags &ShaderFlags =
+ MAM.getResult<ShaderFlagsAnalysis>(M);
+
+ translateMetadata(M, MDResources, ShaderFlags);
+
+ return PreservedAnalyses::all();
+}
+
namespace {
-class DXILTranslateMetadata : public ModulePass {
+class DXILTranslateMetadataLegacy : public ModulePass {
public:
static char ID; // Pass identification, replacement for typeid
- explicit DXILTranslateMetadata() : ModulePass(ID) {}
+ explicit DXILTranslateMetadataLegacy() : ModulePass(ID) {}
StringRef getPassName() const override { return "DXIL Translate Metadata"; }
@@ -37,39 +60,28 @@ public:
AU.addRequired<ShaderFlagsAnalysisWrapper>();
}
- bool runOnModule(Module &M) override;
+ bool runOnModule(Module &M) override {
+ const dxil::Resources &MDResources =
+ getAnalysis<DXILResourceMDWrapper>().getDXILResource();
+ const ComputedShaderFlags &ShaderFlags =
+ getAnalysis<ShaderFlagsAnalysisWrapper>().getShaderFlags();
+
+ translateMetadata(M, MDResources, ShaderFlags);
+ return true;
+ }
};
} // namespace
-bool DXILTranslateMetadata::runOnModule(Module &M) {
-
- dxil::ValidatorVersionMD ValVerMD(M);
- if (ValVerMD.isEmpty())
- ValVerMD.update(VersionTuple(1, 0));
- dxil::createShaderModelMD(M);
- dxil::createDXILVersionMD(M);
-
- const dxil::Resources &Res =
- getAnalysis<DXILResourceMDWrapper>().getDXILResource();
- Res.write(M);
-
- const uint64_t Flags = static_cast<uint64_t>(
- getAnalysis<ShaderFlagsAnalysisWrapper>().getShaderFlags());
- dxil::createEntryMD(M, Flags);
-
- return false;
-}
-
-char DXILTranslateMetadata::ID = 0;
+char DXILTranslateMetadataLegacy::ID = 0;
-ModulePass *llvm::createDXILTranslateMetadataPass() {
- return new DXILTranslateMetadata();
+ModulePass *llvm::createDXILTranslateMetadataLegacyPass() {
+ return new DXILTranslateMetadataLegacy();
}
-INITIALIZE_PASS_BEGIN(DXILTranslateMetadata, "dxil-translate-metadata",
+INITIALIZE_PASS_BEGIN(DXILTranslateMetadataLegacy, "dxil-translate-metadata",
"DXIL Translate Metadata", false, false)
INITIALIZE_PASS_DEPENDENCY(DXILResourceMDWrapper)
INITIALIZE_PASS_DEPENDENCY(ShaderFlagsAnalysisWrapper)
-INITIALIZE_PASS_END(DXILTranslateMetadata, "dxil-translate-metadata",
+INITIALIZE_PASS_END(DXILTranslateMetadataLegacy, "dxil-translate-metadata",
"DXIL Translate Metadata", false, false)