| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- ///////////////////////////////////////////////////////////////////////////////
- // //
- // DxilRenameResourcesPass.cpp //
- // Copyright (C) Microsoft Corporation. All rights reserved. //
- // This file is distributed under the University of Illinois Open Source //
- // License. See LICENSE.TXT for details. //
- // //
- ///////////////////////////////////////////////////////////////////////////////
- #include "llvm/Pass.h"
- #include "llvm/IR/Function.h"
- #include "llvm/IR/Instruction.h"
- #include "llvm/IR/Instructions.h"
- #include "llvm/IR/LLVMContext.h"
- #include "llvm/IR/Module.h"
- #include "dxc/DXIL/DxilModule.h"
- #include "dxc/HLSL/DxilGenerationPass.h"
- using namespace llvm;
- using namespace hlsl;
- // Rename resources with prefix
- namespace {
- class DxilRenameResources : public ModulePass {
- public:
- static char ID; // Pass identification, replacement for typeid
- explicit DxilRenameResources()
- : ModulePass(ID) {}
- void applyOptions(PassOptions O) override {
- GetPassOptionBool(O, "from-binding", &m_bFromBinding, false);
- GetPassOptionBool(O, "keep-name", &m_bKeepName, true);
- StringRef prefix;
- GetPassOption(O, "prefix", &prefix);
- m_Prefix = prefix.str();
- }
- const char *getPassName() const override {
- return "DXIL rename resources";
- }
- bool runOnModule(Module &M) override {
- DxilModule &DM = M.GetOrCreateDxilModule();
- bool bChanged = false;
- if (m_bFromBinding) {
- bChanged = DM.RenameResourceGlobalsWithBinding(m_bKeepName);
- }
- if (!m_Prefix.empty()) {
- bChanged |= DM.RenameResourcesWithPrefix(m_Prefix);
- }
- if (bChanged) {
- DM.ReEmitDxilResources();
- }
- return bChanged;
- }
- private:
- bool m_bFromBinding;
- bool m_bKeepName;
- std::string m_Prefix;
- };
- char DxilRenameResources::ID = 0;
- }
- ModulePass *llvm::createDxilRenameResourcesPass() {
- return new DxilRenameResources();
- }
- INITIALIZE_PASS(DxilRenameResources,
- "dxil-rename-resources",
- "DXIL rename resources", false, false)
|