1 //===- DXILResourceAnalysis.h - DXIL Resource analysis-------------------===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
9 /// \file This file contains Analysis for information about DXIL resources.
11 //===----------------------------------------------------------------------===//
13 #ifndef LLVM_TARGET_DIRECTX_DXILRESOURCEANALYSIS_H
14 #define LLVM_TARGET_DIRECTX_DXILRESOURCEANALYSIS_H
16 #include "DXILResource.h"
17 #include "llvm/IR/PassManager.h"
18 #include "llvm/Pass.h"
22 /// Analysis pass that exposes the \c DXILResource for a module.
23 class DXILResourceAnalysis
: public AnalysisInfoMixin
<DXILResourceAnalysis
> {
24 friend AnalysisInfoMixin
<DXILResourceAnalysis
>;
25 static AnalysisKey Key
;
28 typedef dxil::Resources Result
;
29 dxil::Resources
run(Module
&M
, ModuleAnalysisManager
&AM
);
32 /// Printer pass for the \c DXILResourceAnalysis results.
33 class DXILResourcePrinterPass
: public PassInfoMixin
<DXILResourcePrinterPass
> {
37 explicit DXILResourcePrinterPass(raw_ostream
&OS
) : OS(OS
) {}
38 PreservedAnalyses
run(Module
&M
, ModuleAnalysisManager
&AM
);
39 static bool isRequired() { return true; }
42 /// The legacy pass manager's analysis pass to compute DXIL resource
44 class DXILResourceWrapper
: public ModulePass
{
45 dxil::Resources Resources
;
48 static char ID
; // Pass identification, replacement for typeid
50 DXILResourceWrapper();
52 dxil::Resources
&getDXILResource() { return Resources
; }
53 const dxil::Resources
&getDXILResource() const { return Resources
; }
55 /// Calculate the DXILResource for the module.
56 bool runOnModule(Module
&M
) override
;
58 void print(raw_ostream
&O
, const Module
*M
= nullptr) const override
;
62 #endif // LLVM_TARGET_DIRECTX_DXILRESOURCEANALYSIS_H