From c59ab176007d673ff5db281c580c96d71bddf01a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ingo=20M=C3=BCller?= Date: Fri, 15 Sep 2023 15:22:02 +0000 Subject: [PATCH] [mlir][linalg][transform] Add some debug output to vectorization. This helps to understand what the problem is when vectorization of structured ops failes due to mismatching vector sizes. --- mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp b/mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp index f873bd0e0b68e..51a83c35e4cda 100644 --- a/mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp +++ b/mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp @@ -924,7 +924,6 @@ getTensorExtractMemoryAccessPattern(tensor::ExtractOp extractOp, targetShape.back() == 1) return VectorMemoryAccessKind::Gather; - // 2. Assume that it's a gather load when reading _from_ a tensor for which // the trailing dimension is 1, e.g. `tensor<1x4x1xi32>`. // TODO: Relax this condition. @@ -1484,6 +1483,10 @@ static LogicalResult vectorizeDynamicLinalgOpPrecondition(linalg::LinalgOp op) { static LogicalResult isValidMaskedInputVector(ArrayRef shape, ArrayRef inputVectorSizes) { + LDBG("Iteration space static sizes:"); + LLVM_DEBUG(llvm::interleaveComma(shape, llvm::dbgs())); + LLVM_DEBUG(llvm::dbgs() << "\n"); + if (inputVectorSizes.size() != shape.size()) { LDBG("Input vector sizes don't match the number of loops"); return failure();