[mlir][linalg] lower index operations during linalg to vector lowering.
authorTobias Gysi <gysit@google.com>
Tue, 20 Apr 2021 11:26:44 +0000 (11:26 +0000)
committerTobias Gysi <gysit@google.com>
Tue, 20 Apr 2021 11:55:44 +0000 (11:55 +0000)
commitb9715156ff909fb38725893afb1d18709cb7f1bd
treebf51e59cdf731d0cec3a7d4b43605aee1b9f5445
parente156f2515c18555f839eabc62cc6517f1d2b0f42
[mlir][linalg] lower index operations during linalg to vector lowering.

The patch extends the vectorization pass to lower linalg index operations to vector code. It allocates constant 1d vectors that enumerate the indexes along the iteration dimensions and broadcasts/transposes these 1d vectors to the iteration space.

Differential Revision: https://reviews.llvm.org/D100373
mlir/include/mlir/Dialect/Linalg/IR/LinalgInterfaces.td
mlir/include/mlir/IR/Builders.h
mlir/lib/Dialect/Linalg/IR/LinalgInterfaces.cpp
mlir/lib/Dialect/Linalg/Transforms/Transforms.cpp
mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp
mlir/lib/IR/Builders.cpp
mlir/test/Dialect/Linalg/vectorization.mlir