@@ -575,23 +575,23 @@ struct StoreTileSliceConversion
575
575
}
576
576
};
577
577
578
- // / Lower `arm_sme.move_vector_to_tile_slice ` to SME intrinsics.
579
- struct MoveVectorToTileSliceConversion
580
- : public ConvertArmSMEOpToLLVMPattern<arm_sme::MoveVectorToTileSliceOp > {
578
+ // / Lower `arm_sme.insert_tile_slice ` to SME intrinsics.
579
+ struct InsertTileSliceConversion
580
+ : public ConvertArmSMEOpToLLVMPattern<arm_sme::InsertTileSliceOp > {
581
581
using ConvertArmSMEOpToLLVMPattern::ConvertArmSMEOpToLLVMPattern;
582
582
583
583
LogicalResult
584
- matchAndRewrite (arm_sme::MoveVectorToTileSliceOp moveVectorToTileSliceOp ,
585
- arm_sme::MoveVectorToTileSliceOp ::Adaptor adaptor,
584
+ matchAndRewrite (arm_sme::InsertTileSliceOp insertTileSliceOp ,
585
+ arm_sme::InsertTileSliceOp ::Adaptor adaptor,
586
586
ConversionPatternRewriter &rewriter) const override {
587
- auto loc = moveVectorToTileSliceOp .getLoc ();
588
- auto tileType = moveVectorToTileSliceOp .getTileType ();
587
+ auto loc = insertTileSliceOp .getLoc ();
588
+ auto tileType = insertTileSliceOp .getTileType ();
589
589
590
- auto tileId = getTileIdOrError (moveVectorToTileSliceOp );
590
+ auto tileId = getTileIdOrError (insertTileSliceOp );
591
591
if (!tileId)
592
592
return failure ();
593
593
594
- auto tileSlice = moveVectorToTileSliceOp .getTileSliceIndex ();
594
+ auto tileSlice = insertTileSliceOp .getTileSliceIndex ();
595
595
596
596
// Cast tile slice from index to i32 for intrinsic.
597
597
auto tileSliceI32 = rewriter.create <arith::IndexCastUIOp>(
@@ -606,42 +606,40 @@ struct MoveVectorToTileSliceConversion
606
606
auto allActiveMask = rewriter.create <vector::SplatOp>(loc, predTy, one);
607
607
608
608
// Create 'arm_sme.intr.write.(horiz|vert)' to write vector to tile slice.
609
- switch (moveVectorToTileSliceOp .getLayout ()) {
609
+ switch (insertTileSliceOp .getLayout ()) {
610
610
case arm_sme::TileSliceLayout::Horizontal:
611
611
rewriter.create <arm_sme::aarch64_sme_write_horiz>(
612
612
loc, tileId, tileSliceI32, allActiveMask,
613
- moveVectorToTileSliceOp .getVector ());
613
+ insertTileSliceOp .getVector ());
614
614
break ;
615
615
case arm_sme::TileSliceLayout::Vertical:
616
616
rewriter.create <arm_sme::aarch64_sme_write_vert>(
617
617
loc, tileId, tileSliceI32, allActiveMask,
618
- moveVectorToTileSliceOp .getVector ());
618
+ insertTileSliceOp .getVector ());
619
619
break ;
620
620
}
621
621
622
- // Intrinsic has no result, replace 'arm_sme.move_vector_to_tile_slice ' with
622
+ // Intrinsic has no result, replace 'arm_sme.insert_tile_slice ' with
623
623
// the input tile to preserve dataflow.
624
- rewriter.replaceOp (moveVectorToTileSliceOp,
625
- moveVectorToTileSliceOp.getTile ());
624
+ rewriter.replaceOp (insertTileSliceOp, insertTileSliceOp.getTile ());
626
625
627
626
return success ();
628
627
}
629
628
};
630
629
631
- // / Lower `arm_sme.move_tile_slice_to_vector ` to SME intrinsics.
632
- struct MoveTileSliceToVectorConversion
633
- : public ConvertArmSMEOpToLLVMPattern<arm_sme::MoveTileSliceToVectorOp > {
630
+ // / Lower `arm_sme.extract_tile_slice ` to SME intrinsics.
631
+ struct ExtractTileSliceConversion
632
+ : public ConvertArmSMEOpToLLVMPattern<arm_sme::ExtractTileSliceOp > {
634
633
using ConvertArmSMEOpToLLVMPattern::ConvertArmSMEOpToLLVMPattern;
635
634
636
635
LogicalResult
637
- matchAndRewrite (arm_sme::MoveTileSliceToVectorOp moveTileSliceToVector,
638
- OpAdaptor,
636
+ matchAndRewrite (arm_sme::ExtractTileSliceOp extractTileSlice, OpAdaptor,
639
637
ConversionPatternRewriter &rewriter) const override {
640
- auto loc = moveTileSliceToVector .getLoc ();
641
- auto sliceType = moveTileSliceToVector .getSliceType ();
642
- auto sliceIndex = moveTileSliceToVector .getTileSliceIndex ();
638
+ auto loc = extractTileSlice .getLoc ();
639
+ auto sliceType = extractTileSlice .getSliceType ();
640
+ auto sliceIndex = extractTileSlice .getTileSliceIndex ();
643
641
644
- auto tileId = getTileIdOrError (moveTileSliceToVector );
642
+ auto tileId = getTileIdOrError (extractTileSlice );
645
643
if (!tileId)
646
644
return failure ();
647
645
@@ -659,16 +657,16 @@ struct MoveTileSliceToVectorConversion
659
657
loc, rewriter.getI32Type (), sliceIndex);
660
658
661
659
// Create 'arm_sme.intr.read.(horiz|vert)' to extract the tile slice.
662
- switch (moveTileSliceToVector .getLayout ()) {
660
+ switch (extractTileSlice .getLayout ()) {
663
661
case arm_sme::TileSliceLayout::Horizontal:
664
662
rewriter.replaceOpWithNewOp <arm_sme::aarch64_sme_read_horiz>(
665
- moveTileSliceToVector , sliceType, zeroVector, allTruePredicate,
666
- tileId, sliceIndexI32);
663
+ extractTileSlice , sliceType, zeroVector, allTruePredicate, tileId ,
664
+ sliceIndexI32);
667
665
break ;
668
666
case arm_sme::TileSliceLayout::Vertical:
669
667
rewriter.replaceOpWithNewOp <arm_sme::aarch64_sme_read_vert>(
670
- moveTileSliceToVector , sliceType, zeroVector, allTruePredicate,
671
- tileId, sliceIndexI32);
668
+ extractTileSlice , sliceType, zeroVector, allTruePredicate, tileId ,
669
+ sliceIndexI32);
672
670
break ;
673
671
}
674
672
@@ -985,8 +983,8 @@ void mlir::populateArmSMEToLLVMConversionPatterns(LLVMTypeConverter &converter,
985
983
});
986
984
987
985
addArmSMEConversionPatterns<
988
- LoadTileSliceConversion, MoveTileSliceToVectorConversion ,
989
- MoveVectorToTileSliceConversion , StoreTileSliceConversion,
986
+ LoadTileSliceConversion, ExtractTileSliceConversion ,
987
+ InsertTileSliceConversion , StoreTileSliceConversion,
990
988
StreamingVLOpConversion, OuterProductOpConversion,
991
989
OuterProductWideningOpConversion<arm_sme::FMopa2WayOp,
992
990
arm_sme::aarch64_sme_mopa_wide>,
0 commit comments