|
MLIR 22.0.0git
|
#include "mlir/Dialect/Affine/IR/AffineOps.h"#include "mlir/Dialect/Arith/IR/Arith.h"#include "mlir/Dialect/GPU/IR/GPUDialect.h"#include "mlir/Dialect/GPU/Utils/DistributionUtils.h"#include "mlir/Dialect/MemRef/IR/MemRef.h"#include "mlir/Dialect/SCF/IR/SCF.h"#include "mlir/Dialect/Vector/IR/VectorOps.h"#include "mlir/Dialect/Vector/Transforms/VectorDistribution.h"#include "mlir/IR/AffineExpr.h"#include "mlir/IR/Attributes.h"#include "mlir/IR/BuiltinTypes.h"#include "mlir/Interfaces/SideEffectInterfaces.h"#include "mlir/Transforms/RegionUtils.h"#include "llvm/ADT/SetVector.h"#include "llvm/ADT/SmallVectorExtras.h"#include "llvm/Support/FormatVariadic.h"#include <utility>Go to the source code of this file.
Functions | |
| static AffineMap | calculateImplicitMap (VectorType sequentialType, VectorType distributedType) |
| Currently the distribution map is implicit based on the vector shape. | |
| static int | getDistributedDim (VectorType sequentialType, VectorType distributedType) |
| Given a sequential and distributed vector type, returns the distributed dimension. | |
| static Operation * | cloneOpWithOperandsAndTypes (RewriterBase &rewriter, Location loc, Operation *op, ArrayRef< Value > operands, ArrayRef< Type > resultTypes) |
| static bool | canBeHoisted (Operation *op, function_ref< bool(Value)> definedOutside) |
| Helper to know if an op can be hoisted out of the region. | |
|
static |
Currently the distribution map is implicit based on the vector shape.
In the future it will be part of the op. Example:
Would have an implicit map of: (d0, d1, d2) -> (d0, d2)
Definition at line 42 of file VectorDistribute.cpp.
References mlir::AffineMap::get(), and mlir::getAffineDimExpr().
|
static |
Helper to know if an op can be hoisted out of the region.
Definition at line 2308 of file VectorDistribute.cpp.
References mlir::Operation::getNumRegions(), mlir::Operation::getOperands(), and mlir::isMemoryEffectFree().
Referenced by hoistSubsetAtIterArg().
|
static |
Definition at line 190 of file VectorDistribute.cpp.
References mlir::OpBuilder::create(), mlir::Operation::getAttrs(), mlir::Operation::getName(), and mlir::OperationName::getStringRef().
|
static |
Given a sequential and distributed vector type, returns the distributed dimension.
This function expects that only a single dimension is distributed.
Definition at line 61 of file VectorDistribute.cpp.