MLIR  16.0.0git
DataLayoutAnalysis.h
Go to the documentation of this file.
1 //===- DataLayoutAnalysis.h - API for Querying Nested Data Layout -*- C++ -*-=//
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 #ifndef MLIR_ANALYSIS_DATALAYOUTANALYSIS_H
10 #define MLIR_ANALYSIS_DATALAYOUTANALYSIS_H
11 
12 #include "mlir/Support/LLVM.h"
13 #include "llvm/ADT/DenseMap.h"
14 
15 #include <memory>
16 
17 namespace mlir {
18 
19 class Operation;
20 class DataLayout;
21 
22 /// Stores data layout objects for each operation that specifies the data layout
23 /// above and below the given operation.
25 public:
26  /// Constructs the data layouts.
27  explicit DataLayoutAnalysis(Operation *root);
28 
29  /// Returns the data layout active active at the given operation, that is the
30  /// data layout specified by the closest ancestor that can specify one, or the
31  /// default layout if there is no such ancestor.
32  const DataLayout &getAbove(Operation *operation) const;
33 
34  /// Returns the data layout specified by the given operation or its closest
35  /// ancestor that can specify one.
36  const DataLayout &getAtOrAbove(Operation *operation) const;
37 
38 private:
39  /// Storage for individual data layouts.
41 
42  /// Default data layout in case no operations specify one.
43  std::unique_ptr<DataLayout> defaultLayout;
44 };
45 
46 } // namespace mlir
47 
48 #endif // MLIR_ANALYSIS_DATALAYOUTANALYSIS_H
Include the generated interface declarations.
Operation is a basic unit of execution within MLIR.
Definition: Operation.h:28
const DataLayout & getAtOrAbove(Operation *operation) const
Returns the data layout specified by the given operation or its closest ancestor that can specify one...
DataLayoutAnalysis(Operation *root)
Constructs the data layouts.
const DataLayout & getAbove(Operation *operation) const
Returns the data layout active active at the given operation, that is the data layout specified by th...
Stores data layout objects for each operation that specifies the data layout above and below the give...
The main mechanism for performing data layout queries.