//===- ScalableValueBoundsConstraintSet.h - Scalable Value Bounds ---------===// // // 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 MLIR_DIALECT_VECTOR_IR_SCALABLEVALUEBOUNDSCONSTRAINTSET_H #define MLIR_DIALECT_VECTOR_IR_SCALABLEVALUEBOUNDSCONSTRAINTSET_H #include "mlir/Analysis/Presburger/IntegerRelation.h" #include "mlir/Dialect/Vector/IR/VectorOps.h" #include "mlir/Interfaces/ValueBoundsOpInterface.h" namespace mlir::vector { namespace detail { /// Parent class for the value bounds RTTIExtends. Uses protected inheritance to /// hide all ValueBoundsConstraintSet methods by default (as some do not use the /// ScalableValueBoundsConstraintSet, so may produce unexpected results). struct ValueBoundsConstraintSet : protected ::mlir::ValueBoundsConstraintSet { … }; } // namespace detail /// A version of `ValueBoundsConstraintSet` that can solve for scalable bounds. struct ScalableValueBoundsConstraintSet : public llvm::RTTIExtends<ScalableValueBoundsConstraintSet, detail::ValueBoundsConstraintSet> { … }; ConstantOrScalableBound; } // namespace mlir::vector #endif // MLIR_DIALECT_VECTOR_IR_SCALABLEVALUEBOUNDSCONSTRAINTSET_H