MLIR  20.0.0git
Classes | Namespaces | Functions
StaticValueUtils.h File Reference
#include "mlir/IR/Builders.h"
#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...
 
struct  mlir::SaturatedInteger
 Idiomatic saturated operations on values like offsets, sizes, and strides. More...
 

Namespaces

 mlir
 Include the generated interface declarations.
 

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...
 
std::pair< int64_t, OpFoldResult > mlir::getSimplifiedOfrAndStaticSizePair (OpFoldResult ofr, Builder &b)
 Given OpFoldResult representing dim size value (*), generates a pair of sizes: 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::areAllConstantIntValue (ArrayRef< OpFoldResult > ofrs, int64_t value)
 Return true if all of ofrs are constant integers equal to value. More...
 
bool mlir::areConstantIntValues (ArrayRef< OpFoldResult > ofrs, ArrayRef< int64_t > values)
 Return true if all of ofrs are constant integers equal to the corresponding value in values. 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< SmallVector< int64_t >, SmallVector< Value > > mlir::decomposeMixedValues (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)
 
bool mlir::hasValidSizesOffsets (SmallVector< int64_t > sizesOrOffsets)
 Helper function to check whether the passed in sizes or offsets are valid. More...
 
bool mlir::hasValidStrides (SmallVector< int64_t > strides)
 Helper function to check whether the passed in strides are valid. More...
 
LogicalResult mlir::foldDynamicIndexList (SmallVectorImpl< OpFoldResult > &ofrs, bool onlyNonNegative=false, bool onlyNonZero=false)
 Returns "success" when any of the elements in ofrs is a constant value. More...
 
LogicalResult mlir::foldDynamicOffsetSizeList (SmallVectorImpl< OpFoldResult > &offsetsOrSizes)
 Returns "success" when any of the elements in offsetsOrSizes is a constant value. More...
 
LogicalResult mlir::foldDynamicStrideList (SmallVectorImpl< OpFoldResult > &strides)
 Returns "success" when any of the elements in strides 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...