MLIR  17.0.0git
Classes | Namespaces | Functions
StaticValueUtils.h File Reference
#include "mlir/IR/OpDefinition.h"
#include "mlir/Support/LLVM.h"
#include "llvm/ADT/SmallVector.h"
+ Include dependency graph for StaticValueUtils.h:
+ This graph shows which files directly or indirectly include this file:

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 assit 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...
 
SmallVector< int64_t, 4 > mlir::extractFromI64ArrayAttr (Attribute attr)
 Extract int64_t 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...
 
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)
 
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...