This revision retires the LinalgCodegenStrategy vectorization pattern. Please see the context: https://discourse.llvm.org/t/psa-retire-linalg-filter-based-patterns/63785.
This revision improves the transform dialect's VectorizeOp in different ways below:
- Adds LinalgDialect as a dependent dialect. When transform.structured.vectorize vectorizes tensor.pad, it generates linalg.init_tensor. In this case, linalg dialect must be registered.
- Inserts CopyVectorizationPattern in order to vectorize memref.copy.
- Creates two attributes: disable_multi_reduction_to_contract_patterns and disable_transfer_permutation_map_lowering_patterns. They are limiting the power of vectorization and are currently intended for testing purposes.
It also removes some of the "CHECK: vector.transfer_write" in the vectorization.mlir test. They are redundant writes, at the end of the code there is a rewrite to the same place. Transform dialect no longer generates them.
Depends on D133684 that retires the LinalgCodegenStrategy vectorization pass.
The op semantics start to become more complex and it is unclear with the current doc what this does.
Please make these 2 new attributes very loud and spell them as UnitAttr:$disable_multi_reduction_to_contract_patterns and UnitAttr:$disable_transfer_permutation_map_lowering_patterns.
Please document the options and mark them as "limiting the power of vectorization and are currently intended for testing purposes".