@@ -3959,7 +3959,7 @@ verifyTransferOp(VectorTransferOpInterface op, ShapedType shapedType,
3959
3959
<< AffineMapAttr::get (permutationMap)
3960
3960
<< " vs inBounds of size: " << inBounds.size ();
3961
3961
for (unsigned int i = 0 , e = permutationMap.getNumResults (); i < e; ++i)
3962
- if (isa<AffineConstantExpr>(permutationMap.getResult (i)) && inBounds[i])
3962
+ if (isa<AffineConstantExpr>(permutationMap.getResult (i)) && ! inBounds[i])
3963
3963
return op->emitOpError (" requires broadcast dimensions to be in-bounds" );
3964
3964
3965
3965
return success ();
@@ -4042,6 +4042,14 @@ ParseResult TransferReadOp::parse(OpAsmParser &parser, OperationState &result) {
4042
4042
result.addAttribute (inBoundsAttrName,
4043
4043
builder.getDenseBoolArrayAttr (
4044
4044
SmallVector<bool >(permMap.getNumResults (), false )));
4045
+ } else {
4046
+ SmallVector<bool > inBoundsVec;
4047
+ for (auto el : llvm::cast<ArrayAttr>(inBoundsAttr).getValue ()) {
4048
+ inBoundsVec.emplace_back (llvm::cast<BoolAttr>(el).getValue ());
4049
+ }
4050
+ result.attributes .erase (inBoundsAttrName);
4051
+ result.addAttribute (inBoundsAttrName,
4052
+ builder.getDenseBoolArrayAttr (inBoundsVec));
4045
4053
}
4046
4054
if (parser.resolveOperand (sourceInfo, shapedType, result.operands ) ||
4047
4055
parser.resolveOperands (indexInfo, indexType, result.operands ) ||
@@ -4423,7 +4431,16 @@ ParseResult TransferWriteOp::parse(OpAsmParser &parser,
4423
4431
result.addAttribute (inBoundsAttrName,
4424
4432
builder.getDenseBoolArrayAttr (
4425
4433
SmallVector<bool >(permMap.getNumResults (), false )));
4434
+ } else {
4435
+ SmallVector<bool > inBoundsVec;
4436
+ for (auto el : llvm::cast<ArrayAttr>(inBoundsAttr).getValue ()) {
4437
+ inBoundsVec.emplace_back (llvm::cast<BoolAttr>(el).getValue ());
4438
+ }
4439
+ result.attributes .erase (inBoundsAttrName);
4440
+ result.addAttribute (inBoundsAttrName,
4441
+ builder.getDenseBoolArrayAttr (inBoundsVec));
4426
4442
}
4443
+
4427
4444
if (parser.resolveOperand (vectorInfo, vectorType, result.operands ) ||
4428
4445
parser.resolveOperand (sourceInfo, shapedType, result.operands ) ||
4429
4446
parser.resolveOperands (indexInfo, indexType, result.operands ))
0 commit comments