
Now only DXILTranslateMetadata uses DXILResources, so DXILResourceWrapper is only used by DXILTranslateMetadata. Once we add lower for createHandle, DXILResourceWrapper will be used in more passes. Also we can add resource index allocation in DXILResourceWrapper. Reviewed By: beanz Differential Revision: https://reviews.llvm.org/D135190
53 lines
1.6 KiB
C++
53 lines
1.6 KiB
C++
//===- DXILResourceAnalysis.cpp - DXIL Resource analysis-------------------===//
|
|
//
|
|
// 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
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
///
|
|
/// \file This file contains Analysis for information about DXIL resources.
|
|
///
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "DXILResourceAnalysis.h"
|
|
#include "DirectX.h"
|
|
#include "llvm/IR/PassManager.h"
|
|
|
|
using namespace llvm;
|
|
|
|
#define DEBUG_TYPE "dxil-resource-analysis"
|
|
|
|
dxil::Resources DXILResourceAnalysis::run(Module &M,
|
|
ModuleAnalysisManager &AM) {
|
|
dxil::Resources R;
|
|
R.collect(M);
|
|
return R;
|
|
}
|
|
|
|
AnalysisKey DXILResourceAnalysis::Key;
|
|
|
|
PreservedAnalyses DXILResourcePrinterPass::run(Module &M,
|
|
ModuleAnalysisManager &AM) {
|
|
dxil::Resources Res = AM.getResult<DXILResourceAnalysis>(M);
|
|
Res.print(OS);
|
|
return PreservedAnalyses::all();
|
|
}
|
|
|
|
char DXILResourceWrapper::ID = 0;
|
|
INITIALIZE_PASS_BEGIN(DXILResourceWrapper, DEBUG_TYPE,
|
|
"DXIL resource Information", true, true)
|
|
INITIALIZE_PASS_END(DXILResourceWrapper, DEBUG_TYPE,
|
|
"DXIL resource Information", true, true)
|
|
|
|
bool DXILResourceWrapper::runOnModule(Module &M) {
|
|
Resources.collect(M);
|
|
return false;
|
|
}
|
|
|
|
DXILResourceWrapper::DXILResourceWrapper() : ModulePass(ID) {}
|
|
|
|
void DXILResourceWrapper::print(raw_ostream &OS, const Module *) const {
|
|
Resources.print(OS);
|
|
}
|