This patch enables specifying scalable tile sizes when using the
Transform dialect to drive tiling, e.g.:
%1, %loop = transform.structured.tile %0 [[4]]
This is implemented by extending the TileOp with a dedicated attribute
for "scalability" and by updating various parsing hooks.
This change is a part of larger effort to enable scalable vectorisation
in Linalg. See this RFC for more context:
Do we assume that the scalable dimension is always the last? If not, I'd rather model this as an optional integer attribute that indicates the position of the scalable dimension (and is absent when no dimensions are scalable).