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 creating a custom parser. 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, it's
tricky to test this change. In the meantime, 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:
Similar patch for tiling: https://reviews.llvm.org/D150944
Nit: don't hardcode 4 here.