[mlir][transform] Add support for expressing scalable vector sizes
This patch enables specifying scalable vector sizes when using the Transform dialect to drive vectorisation, e.g.: ``` transform.structured.masked_vectorize %0 vector_sizes [8, 16, [4]] ``` This is implemented by extending the MaskedVectorizeOp with a dedicated attribute for "scalability" and by overloading `parseDynamicIndexList` so that MaskedVectorizeOp can continue using the auto-generated parser and printer. At the moment, only the trailing vec size can be scalable. The following is not yet supported: ``` transform.structured.masked_vectorize %0 vector_sizes [8, [16], [4]] ``` As the vectoriser does not support scalable vectorisation just yet, a warning is issues when scalable vector sizes are used. You can also use the debug output, `--debug-only=linalg-vectorization`, to check whether scalable vectorisation has been switched on. This change is a part of a larger effort to enable scalable vectorisation in Linalg. See this RFC for more context: * https://discourse.llvm.org/t/rfc-scalable-vectorisation-in-linalg/ Similar patch for tiling: https://reviews.llvm.org/D150944 Differential Revision: https://reviews.llvm.org/D151892
Loading
Please sign in to comment