MLIR
20.0.0git
|
#include "mlir/Dialect/Affine/IR/AffineOps.h"
#include "mlir/Dialect/Arith/IR/Arith.h"
#include "mlir/Dialect/Arith/Utils/Utils.h"
#include "mlir/Dialect/Linalg/IR/Linalg.h"
#include "mlir/Dialect/MemRef/IR/MemRef.h"
#include "mlir/Dialect/SCF/IR/SCF.h"
#include "mlir/Dialect/Tensor/IR/Tensor.h"
#include "mlir/Dialect/Utils/IndexingUtils.h"
#include "mlir/Dialect/Utils/StructuredOpsUtils.h"
#include "mlir/Dialect/Vector/IR/VectorOps.h"
#include "mlir/Dialect/Vector/Transforms/LoweringPatterns.h"
#include "mlir/Dialect/Vector/Utils/VectorUtils.h"
#include "mlir/IR/BuiltinAttributeInterfaces.h"
#include "mlir/IR/BuiltinTypes.h"
#include "mlir/IR/ImplicitLocOpBuilder.h"
#include "mlir/IR/Location.h"
#include "mlir/IR/Matchers.h"
#include "mlir/IR/PatternMatch.h"
#include "mlir/IR/TypeUtilities.h"
#include "mlir/Interfaces/VectorInterfaces.h"
Go to the source code of this file.
Macros | |
#define | DEBUG_TYPE "vector-contract-lowering" |
Functions | |
static std::optional< int64_t > | getResultIndex (AffineMap map, int64_t index) |
static SmallVector< Attribute > | adjustIter (ArrayAttr iteratorTypes, int64_t index) |
static AffineMap | adjustMap (AffineMap map, int64_t index, PatternRewriter &rewriter) |
static Value | reshapeLoad (Location loc, Value val, VectorType type, int64_t index, int64_t pos, PatternRewriter &rewriter) |
static Value | reshapeStore (Location loc, Value val, Value result, VectorType type, int64_t index, int64_t pos, PatternRewriter &rewriter) |
static std::optional< Value > | createContractArithOp (Location loc, Value x, Value y, Value acc, vector::CombiningKind kind, PatternRewriter &rewriter, bool isInt, Value mask=Value()) |
Helper to create arithmetic operation associated with a kind of contraction. More... | |
static SmallVector< int64_t > | getReductionIndex (AffineMap map, ArrayAttr iteratorTypes) |
Return the positions of the reductions in the given map. More... | |
static std::optional< unsigned > | getDimPosition (AffineMap map, unsigned dim) |
Look for a given dimension in an affine map and return its position. More... | |
static Value | createAdd (Location loc, Value x, Value y, bool isInt, PatternRewriter &rewriter) |
Creates an AddIOp if isInt is true otherwise create an arith::AddFOp using operands x and y . More... | |
static Value | createMul (Location loc, Value x, Value y, bool isInt, PatternRewriter &rewriter) |
Creates a MulIOp if isInt is true otherwise create an MulFOp using operands x and y`. More... | |
#define DEBUG_TYPE "vector-contract-lowering" |
Definition at line 35 of file LowerVectorContract.cpp.
|
static |
Definition at line 54 of file LowerVectorContract.cpp.
References mlir::detail::enumerate().
|
static |
Definition at line 67 of file LowerVectorContract.cpp.
References mlir::AffineMap::get(), mlir::getAffineDimExpr(), mlir::Builder::getContext(), mlir::AffineMap::getDimPosition(), mlir::AffineMap::getNumDims(), and mlir::AffineMap::getNumResults().
|
static |
Creates an AddIOp if isInt
is true otherwise create an arith::AddFOp using operands x
and y
.
Definition at line 195 of file LowerVectorContract.cpp.
References mlir::OpBuilder::create().
|
static |
Helper to create arithmetic operation associated with a kind of contraction.
Definition at line 133 of file LowerVectorContract.cpp.
References mlir::OpBuilder::create(), mlir::Value::getType(), mlir::vector::makeArithReduction(), MINUI, and mlir::vector::selectPassthru().
|
static |
Creates a MulIOp if isInt
is true otherwise create an MulFOp using operands x and
y`.
Definition at line 204 of file LowerVectorContract.cpp.
References mlir::OpBuilder::create().
|
static |
Look for a given dimension in an affine map and return its position.
Return std::nullopt if the dimension is not in the map results.
Definition at line 185 of file LowerVectorContract.cpp.
References mlir::AffineMap::getDimPosition(), and mlir::AffineMap::getNumResults().
|
static |
Return the positions of the reductions in the given map.
Definition at line 173 of file LowerVectorContract.cpp.
References mlir::AffineMap::getDimPosition(), mlir::AffineMap::getNumResults(), and mlir::vector::isReductionIterator().
|
static |
Definition at line 44 of file LowerVectorContract.cpp.
References mlir::AffineMap::getDimPosition(), and mlir::AffineMap::getNumResults().
|
static |
Definition at line 85 of file LowerVectorContract.cpp.
References mlir::OpBuilder::create(), mlir::VectorType::Builder::dropDim(), and mlir::Builder::getZeroAttr().
|
static |
Definition at line 110 of file LowerVectorContract.cpp.
References mlir::OpBuilder::create(), and mlir::VectorType::Builder::dropDim().