[llvm] [DirectX] Flatten arrays (PR #114332)
Farzon Lotfi via llvm-commits
llvm-commits at lists.llvm.org
Thu Oct 31 09:56:24 PDT 2024
================
@@ -0,0 +1,25 @@
+//===- DXILFlattenArrays.h - Perform flattening of DXIL Arrays -*- C++ -*-===//
+//
+// 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
+//
+//===---------------------------------------------------------------------===//
+
+#ifndef LLVM_TARGET_DIRECTX_DXILFLATTENARRAYS_H
+#define LLVM_TARGET_DIRECTX_DXILFLATTENARRAYS_H
+
+#include "DXILResource.h"
+#include "llvm/IR/PassManager.h"
+#include "llvm/Pass.h"
+
+namespace llvm {
+
+/// A pass that transforms multidimensional arrays into one-dimensional arrays.
+class DXILFlattenArrays : public PassInfoMixin<DXILFlattenArrays> {
+public:
+ PreservedAnalyses run(Module &M, ModuleAnalysisManager &);
----------------
farzonl wrote:
Analysis managers are used to extract specific analysis from a module or function. Functions also have analysis managers. A common thing might be to do something like `FAM.getResult<llvm::LoopAnalysis>(F);` which would give you a `llvm::LoopInfo` you could iterate over if say you wanted to do something like back edge detection.
I have only found a few cases where I had to personally use the module analysis manager. Most of the time the `FunctionAnalysisManager` tends to be more useful to what I need so I would get it by doing:
```cpp
llvm::FunctionAnalysisManager &FAM =
MAM.getResult<llvm::FunctionAnalysisManagerModuleProxy>(M).getManager();
```
In the case of this pass and Analysis manager wasn't needed at all.
https://github.com/llvm/llvm-project/pull/114332
More information about the llvm-commits
mailing list