The lower_vectors operation of the transform dialect takes a lot of arguments to build.
In order to make C++ code easier to work with when using this instruction, introduce a new structure, named LowerVectorsOptions, that aggregates all the options that are used to build this instruction.
This allows to use patterns like:
LowerVectorsOptions opts; opts.setOptZ(...) .setOptY(...)...; builder.create<LowerVectorsOp>(target, opts);
Instead of having to pass all N options directly to the builder and set them in the right order.
NFC.
Note: I'm looking whether we can set this structure in a .td file like LoopOptionsAttr but not sure how good/bad this will look.
Note 2: I've derived LowerVectorsOptions from VectorTransformsOptions because LowerVectorsOp needs to cover a couple more options. We could avoid introducing this new structure and stick to VectorTransformsOptions but we would have to pass the missing two booleans, i.e., it felt half way done.
That all block may be overkill but is convenient in practice.