@@ -2658,26 +2658,23 @@ SmallVector<OpFoldResult> transform::TileUsingForOp::getMixedSizes() {
2658
2658
// `array` prefix to be consistent in the IR with `parseDynamicIndexList`.
2659
2659
ParseResult parseOptionalInterchange (OpAsmParser &parser,
2660
2660
OperationState &result) {
2661
- if (succeeded (parser.parseOptionalLBrace ())) {
2662
- if (failed (parser.parseKeyword (" interchange" )))
2663
- return parser.emitError (parser.getNameLoc ()) << " expect `interchange`" ;
2664
- if (failed (parser.parseEqual ()))
2665
- return parser.emitError (parser.getNameLoc ()) << " expect `=`" ;
2666
- result.addAttribute (" interchange" ,
2667
- DenseI64ArrayAttr::parse (parser, Type{}));
2668
- if (failed (parser.parseRBrace ()))
2669
- return parser.emitError (parser.getNameLoc ()) << " expect `}`" ;
2670
- }
2661
+ if (failed (parser.parseOptionalKeyword (" interchange" )))
2662
+ return success ();
2663
+ if (failed (parser.parseEqual ()))
2664
+ return failure ();
2665
+ result.addAttribute (
2666
+ transform::TileUsingForOp::getInterchangeAttrName (result.name ),
2667
+ DenseI64ArrayAttr::parse (parser, Type{}));
2671
2668
return success ();
2672
2669
}
2673
2670
2674
2671
void printOptionalInterchange (OpAsmPrinter &p,
2675
2672
ArrayRef<int64_t > interchangeVals) {
2676
2673
if (!interchangeVals.empty ()) {
2677
- p << " { interchange = [" ;
2674
+ p << " interchange = [" ;
2678
2675
llvm::interleaveComma (interchangeVals, p,
2679
2676
[&](int64_t integer) { p << integer; });
2680
- p << " ]} " ;
2677
+ p << " ]" ;
2681
2678
}
2682
2679
}
2683
2680
@@ -2693,6 +2690,7 @@ ParseResult transform::TileUsingForOp::parse(OpAsmParser &parser,
2693
2690
if (parser.parseOperand (target) || parser.getCurrentLocation (&operandLoc) ||
2694
2691
parseDynamicIndexList (parser, dynamicSizes, staticSizes, scalableVals) ||
2695
2692
parseOptionalInterchange (parser, result) ||
2693
+ parser.parseOptionalAttrDict (result.attributes ) ||
2696
2694
parser.parseColonType (functionalType))
2697
2695
return ParseResult::failure ();
2698
2696
@@ -2727,6 +2725,11 @@ void TileUsingForOp::print(OpAsmPrinter &p) {
2727
2725
/* valueTypes=*/ {}, getScalableSizesAttr (),
2728
2726
OpAsmParser::Delimiter::Square);
2729
2727
printOptionalInterchange (p, getInterchange ());
2728
+ p.printOptionalAttrDict (
2729
+ (*this )->getAttrs (),
2730
+ /* elidedAttrs=*/ {getInterchangeAttrName (getOperation ()->getName ()),
2731
+ getScalableSizesAttrName (getOperation ()->getName ()),
2732
+ getStaticSizesAttrName (getOperation ()->getName ())});
2730
2733
p << " : " ;
2731
2734
p.printFunctionalType (getOperands ().getTypes (), getResults ().getTypes ());
2732
2735
}
0 commit comments