Revert " [LoongArch][ISel] Check the number of sign bits in `PatGprGpr_32` (#107432)"
[llvm-project.git] / llvm / lib / Target / DirectX / DXILResourceAnalysis.h
blobbce41160b95ec9723459f818b139f83fe29c55a2
1 //===- DXILResourceAnalysis.h - DXIL Resource analysis-------------------===//
2 //
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
6 //
7 //===----------------------------------------------------------------------===//
8 ///
9 /// \file This file contains Analysis for information about DXIL resources.
10 ///
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"
19 #include <memory>
21 namespace llvm {
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;
27 public:
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> {
34 raw_ostream &OS;
36 public:
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
43 /// information.
44 class DXILResourceWrapper : public ModulePass {
45 dxil::Resources Resources;
47 public:
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;
60 } // namespace llvm
62 #endif // LLVM_TARGET_DIRECTX_DXILRESOURCEANALYSIS_H