1*d415bd75Srobert //===- DXILResourceAnalysis.cpp - DXIL Resource analysis-------------------===//
2*d415bd75Srobert //
3*d415bd75Srobert // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*d415bd75Srobert // See https://llvm.org/LICENSE.txt for license information.
5*d415bd75Srobert // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*d415bd75Srobert //
7*d415bd75Srobert //===----------------------------------------------------------------------===//
8*d415bd75Srobert ///
9*d415bd75Srobert /// \file This file contains Analysis for information about DXIL resources.
10*d415bd75Srobert ///
11*d415bd75Srobert //===----------------------------------------------------------------------===//
12*d415bd75Srobert
13*d415bd75Srobert #include "DXILResourceAnalysis.h"
14*d415bd75Srobert #include "DirectX.h"
15*d415bd75Srobert #include "llvm/IR/PassManager.h"
16*d415bd75Srobert
17*d415bd75Srobert using namespace llvm;
18*d415bd75Srobert
19*d415bd75Srobert #define DEBUG_TYPE "dxil-resource-analysis"
20*d415bd75Srobert
run(Module & M,ModuleAnalysisManager & AM)21*d415bd75Srobert dxil::Resources DXILResourceAnalysis::run(Module &M,
22*d415bd75Srobert ModuleAnalysisManager &AM) {
23*d415bd75Srobert dxil::Resources R;
24*d415bd75Srobert R.collect(M);
25*d415bd75Srobert return R;
26*d415bd75Srobert }
27*d415bd75Srobert
28*d415bd75Srobert AnalysisKey DXILResourceAnalysis::Key;
29*d415bd75Srobert
run(Module & M,ModuleAnalysisManager & AM)30*d415bd75Srobert PreservedAnalyses DXILResourcePrinterPass::run(Module &M,
31*d415bd75Srobert ModuleAnalysisManager &AM) {
32*d415bd75Srobert dxil::Resources Res = AM.getResult<DXILResourceAnalysis>(M);
33*d415bd75Srobert Res.print(OS);
34*d415bd75Srobert return PreservedAnalyses::all();
35*d415bd75Srobert }
36*d415bd75Srobert
37*d415bd75Srobert char DXILResourceWrapper::ID = 0;
38*d415bd75Srobert INITIALIZE_PASS_BEGIN(DXILResourceWrapper, DEBUG_TYPE,
39*d415bd75Srobert "DXIL resource Information", true, true)
40*d415bd75Srobert INITIALIZE_PASS_END(DXILResourceWrapper, DEBUG_TYPE,
41*d415bd75Srobert "DXIL resource Information", true, true)
42*d415bd75Srobert
runOnModule(Module & M)43*d415bd75Srobert bool DXILResourceWrapper::runOnModule(Module &M) {
44*d415bd75Srobert Resources.collect(M);
45*d415bd75Srobert return false;
46*d415bd75Srobert }
47*d415bd75Srobert
DXILResourceWrapper()48*d415bd75Srobert DXILResourceWrapper::DXILResourceWrapper() : ModulePass(ID) {}
49*d415bd75Srobert
print(raw_ostream & OS,const Module *) const50*d415bd75Srobert void DXILResourceWrapper::print(raw_ostream &OS, const Module *) const {
51*d415bd75Srobert Resources.print(OS);
52*d415bd75Srobert }
53