This change is NFC with regards to the VectorUnroll transform patterns.
Previously, the vector unrolling transform could only be applied by running a
set of rewrite patterns, and parameters such as the target shape need to be
provided via a callback. This can make it awkward to write transformations that
could compose with unrolling directly.
This change exposes the unrolling transform as a function, vector::unroll,
that accepts any VectorUnrollOpInterface op and returns (1) a set of operations
corresponding to the unrolled target and (2) the replacement value. The various
different patterns in the VectorUnroll transform are replaced by a single
rewrite pattern operating on the VectorUnrollOpInterface.
A transform operation transform.vector.unroll is added.
Depends on D150000.
Can we return OpFoldResults here and let the called materialize with getValueOrCreateConstantIndexOp ?
The need for Values is because the vector transfer operations do not take the mixed form.