//===- AffineValueMap.h - MLIR Affine Value Map Class -----------*- 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 // //===----------------------------------------------------------------------===// // // An AffineValueMap is an affine map plus its ML value operands and results for // analysis purposes. //===----------------------------------------------------------------------===// #ifndef MLIR_DIALECT_AFFINE_IR_AFFINEVALUEMAP_H #define MLIR_DIALECT_AFFINE_IR_AFFINEVALUEMAP_H #include "mlir/IR/AffineMap.h" #include "mlir/IR/OperationSupport.h" #include "mlir/IR/Value.h" namespace mlir { namespace affine { /// An AffineValueMap is an affine map plus its ML value operands and /// results for analysis purposes. The structure is still a tree form that is /// same as that of an affine map or an AffineApplyOp. However, its operands, /// results, and its map can themselves change as a result of /// substitutions, simplifications, and other analysis. // An affine value map can readily be constructed from an AffineApplyOp, or an // AffineBound of a AffineForOp. It can be further transformed, substituted // into, or simplified. Unlike AffineMap's, AffineValueMap's are created and // destroyed during analysis. Only the AffineMap expressions that are pointed by // them are unique'd. An affine value map, and the operations on it, maintain // the invariant that operands are always positionally aligned with the // AffineDimExpr and AffineSymbolExpr in the underlying AffineMap. class AffineValueMap { … }; } // namespace affine } // namespace mlir #endif // MLIR_DIALECT_AFFINE_IR_AFFINEVALUEMAP_H