[mlir][vector] Masking support for reductions in Linalg vectorizer
authorDiego Caballero <diegocaballero@google.com>
Fri, 13 Jan 2023 20:36:40 +0000 (20:36 +0000)
committerDiego Caballero <diegocaballero@google.com>
Fri, 13 Jan 2023 20:45:04 +0000 (20:45 +0000)
commitafc3756e6c6da68f066703f384aca6c2ffb54286
tree3ee22f3c7d075f6d79020db41ed491672b785e78
parent60dd937d56e6d941e45fdc43b1c7abb7b365788d
[mlir][vector] Masking support for reductions in Linalg vectorizer

This patch enables vectorization of reductions in Linalg vectorizer
using the vector.mask operation. It also introduces the logic to slice
and propagate the vector mask of a masked multi-reduction to their
respective lowering operations.

Reviewed By: nicolasvasilache

Differential Revision: https://reviews.llvm.org/D141571
mlir/include/mlir/Dialect/Vector/IR/VectorOps.h
mlir/include/mlir/Dialect/Vector/IR/VectorOps.td
mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp
mlir/lib/Dialect/Vector/IR/VectorOps.cpp
mlir/lib/Dialect/Vector/Transforms/VectorMultiDimReductionTransforms.cpp
mlir/test/Dialect/Linalg/vectorization.mlir
mlir/test/Dialect/Vector/vector-multi-reduction-lowering.mlir