Path: blob/main/contrib/llvm-project/llvm/lib/Target/DirectX/DXILTranslateMetadata.cpp
35266 views
//===- DXILTranslateMetadata.cpp - Pass to emit DXIL metadata ---*- C++ -*-===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//7///8//===----------------------------------------------------------------------===//910#include "DXILMetadata.h"11#include "DXILResource.h"12#include "DXILResourceAnalysis.h"13#include "DXILShaderFlags.h"14#include "DirectX.h"15#include "llvm/ADT/StringSet.h"16#include "llvm/IR/Constants.h"17#include "llvm/IR/Metadata.h"18#include "llvm/IR/Module.h"19#include "llvm/Pass.h"20#include "llvm/TargetParser/Triple.h"2122using namespace llvm;23using namespace llvm::dxil;2425namespace {26class DXILTranslateMetadata : public ModulePass {27public:28static char ID; // Pass identification, replacement for typeid29explicit DXILTranslateMetadata() : ModulePass(ID) {}3031StringRef getPassName() const override { return "DXIL Metadata Emit"; }3233void getAnalysisUsage(AnalysisUsage &AU) const override {34AU.setPreservesAll();35AU.addRequired<DXILResourceWrapper>();36AU.addRequired<ShaderFlagsAnalysisWrapper>();37}3839bool runOnModule(Module &M) override;40};4142} // namespace4344bool DXILTranslateMetadata::runOnModule(Module &M) {4546dxil::ValidatorVersionMD ValVerMD(M);47if (ValVerMD.isEmpty())48ValVerMD.update(VersionTuple(1, 0));49dxil::createShaderModelMD(M);50dxil::createDXILVersionMD(M);5152const dxil::Resources &Res =53getAnalysis<DXILResourceWrapper>().getDXILResource();54Res.write(M);5556const uint64_t Flags = static_cast<uint64_t>(57getAnalysis<ShaderFlagsAnalysisWrapper>().getShaderFlags());58dxil::createEntryMD(M, Flags);5960return false;61}6263char DXILTranslateMetadata::ID = 0;6465ModulePass *llvm::createDXILTranslateMetadataPass() {66return new DXILTranslateMetadata();67}6869INITIALIZE_PASS_BEGIN(DXILTranslateMetadata, "dxil-metadata-emit",70"DXIL Metadata Emit", false, false)71INITIALIZE_PASS_DEPENDENCY(DXILResourceWrapper)72INITIALIZE_PASS_DEPENDENCY(ShaderFlagsAnalysisWrapper)73INITIALIZE_PASS_END(DXILTranslateMetadata, "dxil-metadata-emit",74"DXIL Metadata Emit", false, false)757677