@@ -2477,7 +2477,7 @@ void transform::TileUsingForOp::build(
2477
2477
/* target=*/ target,
2478
2478
/* dynamic_sizes=*/ dynamicTileSizes,
2479
2479
/* static_sizes=*/ staticTileSizesAttr,
2480
- /* interchange=*/ builder.getDenseI64ArrayAttr (interchange),
2480
+ /* interchange=*/ builder.getI64ArrayAttr (interchange),
2481
2481
/* scalable_sizes=*/ expandedScalableSizes);
2482
2482
}
2483
2483
@@ -2611,7 +2611,8 @@ transform::TileUsingForOp::apply(transform::TransformRewriter &rewriter,
2611
2611
});
2612
2612
}
2613
2613
2614
- tilingOptions.setInterchange (getInterchange ());
2614
+ tilingOptions.setInterchange (
2615
+ extractFromIntegerArrayAttr<int64_t >(getInterchange ()));
2615
2616
FailureOr<scf::SCFTilingResult> maybeTilingResult =
2616
2617
tileUsingSCFForOp (rewriter, tilingInterface, tilingOptions);
2617
2618
if (failed (maybeTilingResult))
@@ -2648,33 +2649,6 @@ SmallVector<OpFoldResult> transform::TileUsingForOp::getMixedSizes() {
2648
2649
return results;
2649
2650
}
2650
2651
2651
- // We want to parse `DenseI64ArrayAttr` using the short form without the
2652
- // `array` prefix to be consistent in the IR with `parseDynamicIndexList`.
2653
- ParseResult parseOptionalInterchange (OpAsmParser &parser,
2654
- OperationState &result) {
2655
- if (succeeded (parser.parseOptionalLBrace ())) {
2656
- if (failed (parser.parseKeyword (" interchange" )))
2657
- return parser.emitError (parser.getNameLoc ()) << " expect `interchange`" ;
2658
- if (failed (parser.parseEqual ()))
2659
- return parser.emitError (parser.getNameLoc ()) << " expect `=`" ;
2660
- result.addAttribute (" interchange" ,
2661
- DenseI64ArrayAttr::parse (parser, Type{}));
2662
- if (failed (parser.parseRBrace ()))
2663
- return parser.emitError (parser.getNameLoc ()) << " expect `}`" ;
2664
- }
2665
- return success ();
2666
- }
2667
-
2668
- void printOptionalInterchange (OpAsmPrinter &p,
2669
- ArrayRef<int64_t > interchangeVals) {
2670
- if (!interchangeVals.empty ()) {
2671
- p << " {interchange = [" ;
2672
- llvm::interleaveComma (interchangeVals, p,
2673
- [&](int64_t integer) { p << integer; });
2674
- p << " ]}" ;
2675
- }
2676
- }
2677
-
2678
2652
ParseResult transform::TileUsingForOp::parse (OpAsmParser &parser,
2679
2653
OperationState &result) {
2680
2654
OpAsmParser::UnresolvedOperand target;
@@ -2686,7 +2660,7 @@ ParseResult transform::TileUsingForOp::parse(OpAsmParser &parser,
2686
2660
2687
2661
if (parser.parseOperand (target) || parser.getCurrentLocation (&operandLoc) ||
2688
2662
parseDynamicIndexList (parser, dynamicSizes, staticSizes, scalableVals) ||
2689
- parseOptionalInterchange ( parser, result) ||
2663
+ parser. parseOptionalAttrDict ( result. attributes ) ||
2690
2664
parser.parseColonType (functionalType))
2691
2665
return ParseResult::failure ();
2692
2666
@@ -2720,7 +2694,10 @@ void TileUsingForOp::print(OpAsmPrinter &p) {
2720
2694
printDynamicIndexList (p, getOperation (), getDynamicSizes (), getStaticSizes (),
2721
2695
/* valueTypes=*/ {}, getScalableSizesAttr (),
2722
2696
OpAsmParser::Delimiter::Square);
2723
- printOptionalInterchange (p, getInterchange ());
2697
+ p.printOptionalAttrDict (
2698
+ (*this )->getAttrs (),
2699
+ /* elidedAttrs=*/ {getScalableSizesAttrName (getOperation ()->getName ()),
2700
+ getStaticSizesAttrName (getOperation ()->getName ())});
2724
2701
p << " : " ;
2725
2702
p.printFunctionalType (getOperands ().getTypes (), getResults ().getTypes ());
2726
2703
}
0 commit comments