Updates the linalg::vectorize function to return a `FailureOr<VectorizationResult>` containing the values to replace the original operation, instead of directly replacing the original operation. This aligns better with the style of transforms used with the TilingInterface, and gives more control to users over the lowering, since it allows for additional transformation of the IR before replacement. There was already a `VectorizationResult` defined, which was used for the internal vectorize implementation using `CustomVectorizationHook`s, so the old struct is renamed to `VectorizationHookResult`. Note for integration: The replacement of the original operation is now the responsibility of the caller, so wherever `linalg::vectorize` is used, the caller must also do `rewriter.replaceOp(vectorizeResults->replacements)`. --------- Signed-off-by: Max Dawkins <max.dawkins@gmail.com>
Multi-Level Intermediate Representation
See https://mlir.llvm.org/ for more information.