[mlir] Fix bug in TransferOpReduceRank when all dims are broadcasts
authorMatthias Springer <springerm@google.com>
Tue, 4 May 2021 01:43:10 +0000 (10:43 +0900)
committerMatthias Springer <springerm@google.com>
Tue, 4 May 2021 02:21:44 +0000 (11:21 +0900)
TransferReadOps that are a scalar read + broadcast are handled by TransferReadToVectorLoadLowering.

Differential Revision: https://reviews.llvm.org/D101808

mlir/lib/Dialect/Vector/VectorTransforms.cpp

index 2c8b337..3804295 100644 (file)
@@ -2970,6 +2970,9 @@ struct TransferOpReduceRank : public OpRewritePattern<vector::TransferReadOp> {
       return failure();
     SmallVector<int64_t> newShape = llvm::to_vector<4>(
         originalVecType.getShape().take_back(reducedShapeRank));
+    // Vector rank cannot be zero. Handled by TransferReadToVectorLoadLowering.
+    if (newShape.empty())
+      return failure();
     VectorType newReadType =
         VectorType::get(newShape, originalVecType.getElementType());
     ArrayAttr newInBounds =