MLIR  18.0.0git
Classes | Namespaces | Functions
StaticValueUtils.h File Reference
#include "mlir/IR/BuiltinAttributes.h"
#include "mlir/IR/OpDefinition.h"
#include "mlir/Support/LLVM.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/SmallVectorExtras.h"

Go to the source code of this file.

Classes

struct  mlir::Range
 Represents a range (offset, size, and stride) where each element of the triple may be dynamic or static. More...
 

Namespaces

 mlir
 This header declares functions that assist transformations in the MemRef dialect.
 

Functions

bool mlir::isZeroIndex (OpFoldResult v)
 Return true if v is an IntegerAttr with value 0 of a ConstantIndexOp with attribute with value 0. More...
 
std::tuple< SmallVector< OpFoldResult >, SmallVector< OpFoldResult >, SmallVector< OpFoldResult > > mlir::getOffsetsSizesAndStrides (ArrayRef< Range > ranges)
 Given an array of Range values, return a tuple of (offset vector, sizes vector, and strides vector) formed by separating out the individual elements of each range. More...
 
void mlir::dispatchIndexOpFoldResult (OpFoldResult ofr, SmallVectorImpl< Value > &dynamicVec, SmallVectorImpl< int64_t > &staticVec)
 Helper function to dispatch an OpFoldResult into staticVec if: a) it is an IntegerAttr In other cases, the OpFoldResult is dispached to the dynamicVec. More...
 
void mlir::dispatchIndexOpFoldResults (ArrayRef< OpFoldResult > ofrs, SmallVectorImpl< Value > &dynamicVec, SmallVectorImpl< int64_t > &staticVec)
 Helper function to dispatch multiple OpFoldResults according to the behavior of dispatchIndexOpFoldResult(OpFoldResult ofr for a single OpFoldResult. More...
 
template<typename IntTy >
SmallVector< IntTy > mlir::extractFromIntegerArrayAttr (Attribute attr)
 Extract integer values from the assumed ArrayAttr of IntegerAttr. More...
 
OpFoldResult mlir::getAsOpFoldResult (Value val)
 Given a value, try to extract a constant Attribute. More...
 
SmallVector< OpFoldResult > mlir::getAsOpFoldResult (ValueRange values)
 Given an array of values, try to extract a constant Attribute from each value. More...
 
SmallVector< OpFoldResult > mlir::getAsOpFoldResult (ArrayAttr arrayAttr)
 Convert arrayAttr to a vector of OpFoldResult. More...
 
OpFoldResult mlir::getAsIndexOpFoldResult (MLIRContext *ctx, int64_t val)
 Convert int64_t to integer attributes of index type and return them as OpFoldResult. More...
 
SmallVector< OpFoldResult > mlir::getAsIndexOpFoldResult (MLIRContext *ctx, ArrayRef< int64_t > values)
 
std::optional< int64_t > mlir::getConstantIntValue (OpFoldResult ofr)
 If ofr is a constant integer or an IntegerAttr, return the integer. More...
 
std::optional< SmallVector< int64_t > > mlir::getConstantIntValues (ArrayRef< OpFoldResult > ofrs)
 If all ofrs are constant integers or IntegerAttrs, return the integers. More...
 
bool mlir::isConstantIntValue (OpFoldResult ofr, int64_t value)
 Return true if ofr is constant integer equal to value. More...
 
bool mlir::isEqualConstantIntOrValue (OpFoldResult ofr1, OpFoldResult ofr2)
 Return true if ofr1 and ofr2 are the same integer constant attribute values or the same SSA value. More...
 
bool mlir::isEqualConstantIntOrValueArray (ArrayRef< OpFoldResult > ofrs1, ArrayRef< OpFoldResult > ofrs2)
 
SmallVector< OpFoldResult > mlir::getMixedValues (ArrayRef< int64_t > staticValues, ValueRange dynamicValues, Builder &b)
 Return a vector of OpFoldResults with the same size a staticValues, but all elements for which ShapedType::isDynamic is true, will be replaced by dynamicValues. More...
 
std::pair< ArrayAttr, SmallVector< Value > > mlir::decomposeMixedValues (Builder &b, const SmallVectorImpl< OpFoldResult > &mixedValues)
 Decompose a vector of mixed static or dynamic values into the corresponding pair of arrays. More...
 
SmallVector< Value > mlir::getValuesSortedByKey (ArrayRef< Attribute > keys, ArrayRef< Value > values, llvm::function_ref< bool(Attribute, Attribute)> compare)
 Helper to sort values according to matching keys. More...
 
SmallVector< OpFoldResult > mlir::getValuesSortedByKey (ArrayRef< Attribute > keys, ArrayRef< OpFoldResult > values, llvm::function_ref< bool(Attribute, Attribute)> compare)
 
SmallVector< int64_t > mlir::getValuesSortedByKey (ArrayRef< Attribute > keys, ArrayRef< int64_t > values, llvm::function_ref< bool(Attribute, Attribute)> compare)
 
LogicalResult mlir::foldDynamicIndexList (SmallVectorImpl< OpFoldResult > &ofrs)
 Returns "success" when any of the elements in ofrs is a constant value. More...
 
std::optional< int64_t > mlir::constantTripCount (OpFoldResult lb, OpFoldResult ub, OpFoldResult step)
 Return the number of iterations for a loop with a lower bound lb, upper bound ub and step step. More...