@@ -629,18 +629,18 @@ func.func @arm_sme_streaming_vl_double_words() -> index {
629
629
630
630
// CHECK-LABEL: arm_sme_fmopa_2way_f16f16_to_f32
631
631
// CHECK: "arm_sme.intr.mopa.wide"({{.*}}) <{tile_id = 0 : i32}> : (vector<[8]xi1>, vector<[8]xi1>, vector<[8]xf16>, vector<[8]xf16>) -> ()
632
- func.func @arm_sme_fmopa_2way_f16f16_to_f32 (%vecA: vector <[8 ]xf16 >, %vecB: vector <[8 ]xf16 >) -> vector <[ 4 ]x[ 4 ]x f32 > {
632
+ func.func @arm_sme_fmopa_2way_f16f16_to_f32 (%vecA: vector <[8 ]xf16 >, %vecB: vector <[8 ]xf16 >) {
633
633
%result = arm_sme.fmopa_2way %vecA , %vecB : vector <[8 ]xf16 >, vector <[8 ]xf16 > into vector <[4 ]x[4 ]xf32 >
634
- return %result : vector <[4 ]x[4 ]xf32 >
634
+ " test.some_use " ( %result ) : ( vector <[4 ]x[4 ]xf32 >) -> ()
635
635
}
636
636
637
637
// -----
638
638
639
639
// CHECK-LABEL: arm_sme_fmopa_2way_bf16bf16_to_f32
640
640
// CHECK: "arm_sme.intr.mopa.wide"({{.*}}) <{tile_id = 0 : i32}> : (vector<[8]xi1>, vector<[8]xi1>, vector<[8]xbf16>, vector<[8]xbf16>) -> ()
641
- func.func @arm_sme_fmopa_2way_bf16bf16_to_f32 (%vecA: vector <[8 ]xbf16 >, %vecB: vector <[8 ]xbf16 >) -> vector <[ 4 ]x[ 4 ]x f32 > {
641
+ func.func @arm_sme_fmopa_2way_bf16bf16_to_f32 (%vecA: vector <[8 ]xbf16 >, %vecB: vector <[8 ]xbf16 >) {
642
642
%result = arm_sme.fmopa_2way %vecA , %vecB : vector <[8 ]xbf16 >, vector <[8 ]xbf16 > into vector <[4 ]x[4 ]xf32 >
643
- return %result : vector <[4 ]x[4 ]xf32 >
643
+ " test.some_use " ( %result ) : ( vector <[4 ]x[4 ]xf32 >) -> ()
644
644
}
645
645
646
646
//===----------------------------------------------------------------------===//
@@ -651,18 +651,18 @@ func.func @arm_sme_fmopa_2way_bf16bf16_to_f32(%vecA: vector<[8]xbf16>, %vecB: ve
651
651
652
652
// CHECK-LABEL: arm_sme_fmops_2way_f16f16_to_f32
653
653
// CHECK: "arm_sme.intr.mops.wide"({{.*}}) <{tile_id = 0 : i32}> : (vector<[8]xi1>, vector<[8]xi1>, vector<[8]xf16>, vector<[8]xf16>) -> ()
654
- func.func @arm_sme_fmops_2way_f16f16_to_f32 (%vecA: vector <[8 ]xf16 >, %vecB: vector <[8 ]xf16 >) -> vector <[ 4 ]x[ 4 ]x f32 > {
654
+ func.func @arm_sme_fmops_2way_f16f16_to_f32 (%vecA: vector <[8 ]xf16 >, %vecB: vector <[8 ]xf16 >) {
655
655
%result = arm_sme.fmops_2way %vecA , %vecB : vector <[8 ]xf16 >, vector <[8 ]xf16 > into vector <[4 ]x[4 ]xf32 >
656
- return %result : vector <[4 ]x[4 ]xf32 >
656
+ " test.some_use " ( %result ) : ( vector <[4 ]x[4 ]xf32 >) -> ()
657
657
}
658
658
659
659
// -----
660
660
661
661
// CHECK-LABEL: arm_sme_fmops_2way_bf16bf16_to_f32
662
662
// CHECK: "arm_sme.intr.mops.wide"({{.*}}) <{tile_id = 0 : i32}> : (vector<[8]xi1>, vector<[8]xi1>, vector<[8]xbf16>, vector<[8]xbf16>) -> ()
663
- func.func @arm_sme_fmops_2way_bf16bf16_to_f32 (%vecA: vector <[8 ]xbf16 >, %vecB: vector <[8 ]xbf16 >) -> vector <[ 4 ]x[ 4 ]x f32 > {
663
+ func.func @arm_sme_fmops_2way_bf16bf16_to_f32 (%vecA: vector <[8 ]xbf16 >, %vecB: vector <[8 ]xbf16 >) {
664
664
%result = arm_sme.fmops_2way %vecA , %vecB : vector <[8 ]xbf16 >, vector <[8 ]xbf16 > into vector <[4 ]x[4 ]xf32 >
665
- return %result : vector <[4 ]x[4 ]xf32 >
665
+ " test.some_use " ( %result ) : ( vector <[4 ]x[4 ]xf32 >) -> ()
666
666
}
667
667
668
668
//===----------------------------------------------------------------------===//
@@ -673,9 +673,9 @@ func.func @arm_sme_fmops_2way_bf16bf16_to_f32(%vecA: vector<[8]xbf16>, %vecB: ve
673
673
674
674
// CHECK-LABEL: arm_sme_smopa_2way_i16i16_to_i32
675
675
// CHECK: "arm_sme.intr.smopa.za32"({{.*}}) <{tile_id = 0 : i32}> : (vector<[8]xi1>, vector<[8]xi1>, vector<[8]xi16>, vector<[8]xi16>) -> ()
676
- func.func @arm_sme_smopa_2way_i16i16_to_i32 (%vecA: vector <[8 ]xi16 >, %vecB: vector <[8 ]xi16 >) -> vector <[ 4 ]x[ 4 ]x i32 > {
676
+ func.func @arm_sme_smopa_2way_i16i16_to_i32 (%vecA: vector <[8 ]xi16 >, %vecB: vector <[8 ]xi16 >) {
677
677
%result = arm_sme.smopa_2way %vecA , %vecB : vector <[8 ]xi16 >, vector <[8 ]xi16 > into vector <[4 ]x[4 ]xi32 >
678
- return %result : vector <[4 ]x[4 ]xi32 >
678
+ " test.some_use " ( %result ) : ( vector <[4 ]x[4 ]xi32 >) -> ()
679
679
}
680
680
681
681
//===----------------------------------------------------------------------===//
@@ -686,9 +686,9 @@ func.func @arm_sme_smopa_2way_i16i16_to_i32(%vecA: vector<[8]xi16>, %vecB: vecto
686
686
687
687
// CHECK-LABEL: arm_sme_smops_2way_i16i16_to_i32
688
688
// CHECK: "arm_sme.intr.smops.za32"({{.*}}) <{tile_id = 0 : i32}> : (vector<[8]xi1>, vector<[8]xi1>, vector<[8]xi16>, vector<[8]xi16>) -> ()
689
- func.func @arm_sme_smops_2way_i16i16_to_i32 (%vecA: vector <[8 ]xi16 >, %vecB: vector <[8 ]xi16 >) -> vector <[ 4 ]x[ 4 ]x i32 > {
689
+ func.func @arm_sme_smops_2way_i16i16_to_i32 (%vecA: vector <[8 ]xi16 >, %vecB: vector <[8 ]xi16 >) {
690
690
%result = arm_sme.smops_2way %vecA , %vecB : vector <[8 ]xi16 >, vector <[8 ]xi16 > into vector <[4 ]x[4 ]xi32 >
691
- return %result : vector <[4 ]x[4 ]xi32 >
691
+ " test.some_use " ( %result ) : ( vector <[4 ]x[4 ]xi32 >) -> ()
692
692
}
693
693
694
694
//===----------------------------------------------------------------------===//
@@ -699,9 +699,10 @@ func.func @arm_sme_smops_2way_i16i16_to_i32(%vecA: vector<[8]xi16>, %vecB: vecto
699
699
700
700
// CHECK-LABEL: arm_sme_umopa_2way_i16i16_to_i32
701
701
// CHECK: "arm_sme.intr.umopa.za32"({{.*}}) <{tile_id = 0 : i32}> : (vector<[8]xi1>, vector<[8]xi1>, vector<[8]xi16>, vector<[8]xi16>) -> ()
702
- func.func @arm_sme_umopa_2way_i16i16_to_i32 (%vecA: vector <[8 ]xi16 >, %vecB: vector <[8 ]xi16 >) -> vector <[ 4 ]x[ 4 ]x i32 > {
702
+ func.func @arm_sme_umopa_2way_i16i16_to_i32 (%vecA: vector <[8 ]xi16 >, %vecB: vector <[8 ]xi16 >) {
703
703
%result = arm_sme.umopa_2way %vecA , %vecB : vector <[8 ]xi16 >, vector <[8 ]xi16 > into vector <[4 ]x[4 ]xi32 >
704
- return %result : vector <[4 ]x[4 ]xi32 >
704
+ " test.some_use" (%result ) : (vector <[4 ]x[4 ]xi32 >) -> ()
705
+ return
705
706
}
706
707
707
708
//===----------------------------------------------------------------------===//
@@ -712,9 +713,10 @@ func.func @arm_sme_umopa_2way_i16i16_to_i32(%vecA: vector<[8]xi16>, %vecB: vecto
712
713
713
714
// CHECK-LABEL: arm_sme_umops_2way_i16i16_to_i32
714
715
// CHECK: "arm_sme.intr.umops.za32"({{.*}}) <{tile_id = 0 : i32}> : (vector<[8]xi1>, vector<[8]xi1>, vector<[8]xi16>, vector<[8]xi16>) -> ()
715
- func.func @arm_sme_umops_2way_i16i16_to_i32 (%vecA: vector <[8 ]xi16 >, %vecB: vector <[8 ]xi16 >) -> vector <[ 4 ]x[ 4 ]x i32 > {
716
+ func.func @arm_sme_umops_2way_i16i16_to_i32 (%vecA: vector <[8 ]xi16 >, %vecB: vector <[8 ]xi16 >) {
716
717
%result = arm_sme.umops_2way %vecA , %vecB : vector <[8 ]xi16 >, vector <[8 ]xi16 > into vector <[4 ]x[4 ]xi32 >
717
- return %result : vector <[4 ]x[4 ]xi32 >
718
+ " test.some_use" (%result ) : (vector <[4 ]x[4 ]xi32 >) -> ()
719
+ return
718
720
}
719
721
720
722
//===----------------------------------------------------------------------===//
@@ -725,18 +727,20 @@ func.func @arm_sme_umops_2way_i16i16_to_i32(%vecA: vector<[8]xi16>, %vecB: vecto
725
727
726
728
// CHECK-LABEL: arm_sme_smopa_4way_i8i8_to_i32
727
729
// CHECK: "arm_sme.intr.smopa.wide"({{.*}}) <{tile_id = 0 : i32}> : (vector<[16]xi1>, vector<[16]xi1>, vector<[16]xi8>, vector<[16]xi8>) -> ()
728
- func.func @arm_sme_smopa_4way_i8i8_to_i32 (%vecA: vector <[16 ]xi8 >, %vecB: vector <[16 ]xi8 >) -> vector <[ 4 ]x[ 4 ]x i32 > {
730
+ func.func @arm_sme_smopa_4way_i8i8_to_i32 (%vecA: vector <[16 ]xi8 >, %vecB: vector <[16 ]xi8 >) {
729
731
%result = arm_sme.smopa_4way %vecA , %vecB : vector <[16 ]xi8 >, vector <[16 ]xi8 > into vector <[4 ]x[4 ]xi32 >
730
- return %result : vector <[4 ]x[4 ]xi32 >
732
+ " test.some_use" (%result ) : (vector <[4 ]x[4 ]xi32 >) -> ()
733
+ return
731
734
}
732
735
733
736
// -----
734
737
735
738
// CHECK-LABEL: arm_sme_smopa_4way_i16i16_to_i64
736
739
// CHECK: "arm_sme.intr.smopa.wide"({{.*}}) <{tile_id = 0 : i32}> : (vector<[8]xi1>, vector<[8]xi1>, vector<[8]xi16>, vector<[8]xi16>) -> ()
737
- func.func @arm_sme_smopa_4way_i16i16_to_i64 (%vecA: vector <[8 ]xi16 >, %vecB: vector <[8 ]xi16 >) -> vector <[ 2 ]x[ 2 ]x i64 > {
740
+ func.func @arm_sme_smopa_4way_i16i16_to_i64 (%vecA: vector <[8 ]xi16 >, %vecB: vector <[8 ]xi16 >) {
738
741
%result = arm_sme.smopa_4way %vecA , %vecB : vector <[8 ]xi16 >, vector <[8 ]xi16 > into vector <[2 ]x[2 ]xi64 >
739
- return %result : vector <[2 ]x[2 ]xi64 >
742
+ " test.some_use" (%result ) : (vector <[2 ]x[2 ]xi64 >) -> ()
743
+ return
740
744
}
741
745
742
746
//===----------------------------------------------------------------------===//
@@ -747,18 +751,20 @@ func.func @arm_sme_smopa_4way_i16i16_to_i64(%vecA: vector<[8]xi16>, %vecB: vecto
747
751
748
752
// CHECK-LABEL: arm_sme_smops_4way_i8i8_to_i32
749
753
// CHECK: "arm_sme.intr.smops.wide"({{.*}}) <{tile_id = 0 : i32}> : (vector<[16]xi1>, vector<[16]xi1>, vector<[16]xi8>, vector<[16]xi8>) -> ()
750
- func.func @arm_sme_smops_4way_i8i8_to_i32 (%vecA: vector <[16 ]xi8 >, %vecB: vector <[16 ]xi8 >) -> vector <[ 4 ]x[ 4 ]x i32 > {
754
+ func.func @arm_sme_smops_4way_i8i8_to_i32 (%vecA: vector <[16 ]xi8 >, %vecB: vector <[16 ]xi8 >) {
751
755
%result = arm_sme.smops_4way %vecA , %vecB : vector <[16 ]xi8 >, vector <[16 ]xi8 > into vector <[4 ]x[4 ]xi32 >
752
- return %result : vector <[4 ]x[4 ]xi32 >
756
+ " test.some_use" (%result ) : (vector <[4 ]x[4 ]xi32 >) -> ()
757
+ return
753
758
}
754
759
755
760
// -----
756
761
757
762
// CHECK-LABEL: arm_sme_smops_4way_i16i16_to_i64
758
763
// CHECK: "arm_sme.intr.smops.wide"({{.*}}) <{tile_id = 0 : i32}> : (vector<[8]xi1>, vector<[8]xi1>, vector<[8]xi16>, vector<[8]xi16>) -> ()
759
- func.func @arm_sme_smops_4way_i16i16_to_i64 (%vecA: vector <[8 ]xi16 >, %vecB: vector <[8 ]xi16 >) -> vector <[ 2 ]x[ 2 ]x i64 > {
764
+ func.func @arm_sme_smops_4way_i16i16_to_i64 (%vecA: vector <[8 ]xi16 >, %vecB: vector <[8 ]xi16 >) {
760
765
%result = arm_sme.smops_4way %vecA , %vecB : vector <[8 ]xi16 >, vector <[8 ]xi16 > into vector <[2 ]x[2 ]xi64 >
761
- return %result : vector <[2 ]x[2 ]xi64 >
766
+ " test.some_use" (%result ) : (vector <[2 ]x[2 ]xi64 >) -> ()
767
+ return
762
768
}
763
769
764
770
//===----------------------------------------------------------------------===//
@@ -769,18 +775,20 @@ func.func @arm_sme_smops_4way_i16i16_to_i64(%vecA: vector<[8]xi16>, %vecB: vecto
769
775
770
776
// CHECK-LABEL: arm_sme_umopa_4way_i8i8_to_i32
771
777
// CHECK: "arm_sme.intr.umopa.wide"({{.*}}) <{tile_id = 0 : i32}> : (vector<[16]xi1>, vector<[16]xi1>, vector<[16]xi8>, vector<[16]xi8>) -> ()
772
- func.func @arm_sme_umopa_4way_i8i8_to_i32 (%vecA: vector <[16 ]xi8 >, %vecB: vector <[16 ]xi8 >) -> vector <[ 4 ]x[ 4 ]x i32 > {
778
+ func.func @arm_sme_umopa_4way_i8i8_to_i32 (%vecA: vector <[16 ]xi8 >, %vecB: vector <[16 ]xi8 >) {
773
779
%result = arm_sme.umopa_4way %vecA , %vecB : vector <[16 ]xi8 >, vector <[16 ]xi8 > into vector <[4 ]x[4 ]xi32 >
774
- return %result : vector <[4 ]x[4 ]xi32 >
780
+ " test.some_use" (%result ) : (vector <[4 ]x[4 ]xi32 >) -> ()
781
+ return
775
782
}
776
783
777
784
// -----
778
785
779
786
// CHECK-LABEL: arm_sme_umopa_4way_i16i16_to_i64
780
787
// CHECK: "arm_sme.intr.umopa.wide"({{.*}}) <{tile_id = 0 : i32}> : (vector<[8]xi1>, vector<[8]xi1>, vector<[8]xi16>, vector<[8]xi16>) -> ()
781
- func.func @arm_sme_umopa_4way_i16i16_to_i64 (%vecA: vector <[8 ]xi16 >, %vecB: vector <[8 ]xi16 >) -> vector <[ 2 ]x[ 2 ]x i64 > {
788
+ func.func @arm_sme_umopa_4way_i16i16_to_i64 (%vecA: vector <[8 ]xi16 >, %vecB: vector <[8 ]xi16 >) {
782
789
%result = arm_sme.umopa_4way %vecA , %vecB : vector <[8 ]xi16 >, vector <[8 ]xi16 > into vector <[2 ]x[2 ]xi64 >
783
- return %result : vector <[2 ]x[2 ]xi64 >
790
+ " test.some_use" (%result ) : (vector <[2 ]x[2 ]xi64 >) -> ()
791
+ return
784
792
}
785
793
786
794
//===----------------------------------------------------------------------===//
@@ -791,18 +799,20 @@ func.func @arm_sme_umopa_4way_i16i16_to_i64(%vecA: vector<[8]xi16>, %vecB: vecto
791
799
792
800
// CHECK-LABEL: arm_sme_umops_4way_i8i8_to_i32
793
801
// CHECK: "arm_sme.intr.umops.wide"({{.*}}) <{tile_id = 0 : i32}> : (vector<[16]xi1>, vector<[16]xi1>, vector<[16]xi8>, vector<[16]xi8>) -> ()
794
- func.func @arm_sme_umops_4way_i8i8_to_i32 (%vecA: vector <[16 ]xi8 >, %vecB: vector <[16 ]xi8 >) -> vector <[ 4 ]x[ 4 ]x i32 > {
802
+ func.func @arm_sme_umops_4way_i8i8_to_i32 (%vecA: vector <[16 ]xi8 >, %vecB: vector <[16 ]xi8 >) {
795
803
%result = arm_sme.umops_4way %vecA , %vecB : vector <[16 ]xi8 >, vector <[16 ]xi8 > into vector <[4 ]x[4 ]xi32 >
796
- return %result : vector <[4 ]x[4 ]xi32 >
804
+ " test.some_use" (%result ) : (vector <[4 ]x[4 ]xi32 >) -> ()
805
+ return
797
806
}
798
807
799
808
// -----
800
809
801
810
// CHECK-LABEL: arm_sme_umops_4way_i16i16_to_i64
802
811
// CHECK: "arm_sme.intr.umops.wide"({{.*}}) <{tile_id = 0 : i32}> : (vector<[8]xi1>, vector<[8]xi1>, vector<[8]xi16>, vector<[8]xi16>) -> ()
803
- func.func @arm_sme_umops_4way_i16i16_to_i64 (%vecA: vector <[8 ]xi16 >, %vecB: vector <[8 ]xi16 >) -> vector <[ 2 ]x[ 2 ]x i64 > {
812
+ func.func @arm_sme_umops_4way_i16i16_to_i64 (%vecA: vector <[8 ]xi16 >, %vecB: vector <[8 ]xi16 >) {
804
813
%result = arm_sme.umops_4way %vecA , %vecB : vector <[8 ]xi16 >, vector <[8 ]xi16 > into vector <[2 ]x[2 ]xi64 >
805
- return %result : vector <[2 ]x[2 ]xi64 >
814
+ " test.some_use" (%result ) : (vector <[2 ]x[2 ]xi64 >) -> ()
815
+ return
806
816
}
807
817
808
818
//===----------------------------------------------------------------------===//
@@ -813,18 +823,20 @@ func.func @arm_sme_umops_4way_i16i16_to_i64(%vecA: vector<[8]xi16>, %vecB: vecto
813
823
814
824
// CHECK-LABEL: arm_sme_sumopa_4way_i8i8_to_i32
815
825
// CHECK: "arm_sme.intr.sumopa.wide"({{.*}}) <{tile_id = 0 : i32}> : (vector<[16]xi1>, vector<[16]xi1>, vector<[16]xi8>, vector<[16]xi8>) -> ()
816
- func.func @arm_sme_sumopa_4way_i8i8_to_i32 (%vecA: vector <[16 ]xi8 >, %vecB: vector <[16 ]xi8 >) -> vector <[ 4 ]x[ 4 ]x i32 > {
826
+ func.func @arm_sme_sumopa_4way_i8i8_to_i32 (%vecA: vector <[16 ]xi8 >, %vecB: vector <[16 ]xi8 >) {
817
827
%result = arm_sme.sumopa_4way %vecA , %vecB : vector <[16 ]xi8 >, vector <[16 ]xi8 > into vector <[4 ]x[4 ]xi32 >
818
- return %result : vector <[4 ]x[4 ]xi32 >
828
+ " test.some_use" (%result ) : (vector <[4 ]x[4 ]xi32 >) -> ()
829
+ return
819
830
}
820
831
821
832
// -----
822
833
823
834
// CHECK-LABEL: arm_sme_sumopa_4way_i16i16_to_i64
824
835
// CHECK: "arm_sme.intr.sumopa.wide"({{.*}}) <{tile_id = 0 : i32}> : (vector<[8]xi1>, vector<[8]xi1>, vector<[8]xi16>, vector<[8]xi16>) -> ()
825
- func.func @arm_sme_sumopa_4way_i16i16_to_i64 (%vecA: vector <[8 ]xi16 >, %vecB: vector <[8 ]xi16 >) -> vector <[ 2 ]x[ 2 ]x i64 > {
836
+ func.func @arm_sme_sumopa_4way_i16i16_to_i64 (%vecA: vector <[8 ]xi16 >, %vecB: vector <[8 ]xi16 >) {
826
837
%result = arm_sme.sumopa_4way %vecA , %vecB : vector <[8 ]xi16 >, vector <[8 ]xi16 > into vector <[2 ]x[2 ]xi64 >
827
- return %result : vector <[2 ]x[2 ]xi64 >
838
+ " test.some_use" (%result ) : (vector <[2 ]x[2 ]xi64 >) -> ()
839
+ return
828
840
}
829
841
830
842
//===----------------------------------------------------------------------===//
@@ -835,18 +847,20 @@ func.func @arm_sme_sumopa_4way_i16i16_to_i64(%vecA: vector<[8]xi16>, %vecB: vect
835
847
836
848
// CHECK-LABEL: arm_sme_sumops_4way_i8i8_to_i32
837
849
// CHECK: "arm_sme.intr.sumops.wide"({{.*}}) <{tile_id = 0 : i32}> : (vector<[16]xi1>, vector<[16]xi1>, vector<[16]xi8>, vector<[16]xi8>) -> ()
838
- func.func @arm_sme_sumops_4way_i8i8_to_i32 (%vecA: vector <[16 ]xi8 >, %vecB: vector <[16 ]xi8 >) -> vector <[ 4 ]x[ 4 ]x i32 > {
850
+ func.func @arm_sme_sumops_4way_i8i8_to_i32 (%vecA: vector <[16 ]xi8 >, %vecB: vector <[16 ]xi8 >) {
839
851
%result = arm_sme.sumops_4way %vecA , %vecB : vector <[16 ]xi8 >, vector <[16 ]xi8 > into vector <[4 ]x[4 ]xi32 >
840
- return %result : vector <[4 ]x[4 ]xi32 >
852
+ " test.some_use" (%result ) : (vector <[4 ]x[4 ]xi32 >) -> ()
853
+ return
841
854
}
842
855
843
856
// -----
844
857
845
858
// CHECK-LABEL: arm_sme_sumops_4way_i16i16_to_i64
846
859
// CHECK: "arm_sme.intr.sumops.wide"({{.*}}) <{tile_id = 0 : i32}> : (vector<[8]xi1>, vector<[8]xi1>, vector<[8]xi16>, vector<[8]xi16>) -> ()
847
- func.func @arm_sme_sumops_4way_i16i16_to_i64 (%vecA: vector <[8 ]xi16 >, %vecB: vector <[8 ]xi16 >) -> vector <[ 2 ]x[ 2 ]x i64 > {
860
+ func.func @arm_sme_sumops_4way_i16i16_to_i64 (%vecA: vector <[8 ]xi16 >, %vecB: vector <[8 ]xi16 >) {
848
861
%result = arm_sme.sumops_4way %vecA , %vecB : vector <[8 ]xi16 >, vector <[8 ]xi16 > into vector <[2 ]x[2 ]xi64 >
849
- return %result : vector <[2 ]x[2 ]xi64 >
862
+ " test.some_use" (%result ) : (vector <[2 ]x[2 ]xi64 >) -> ()
863
+ return
850
864
}
851
865
852
866
//===----------------------------------------------------------------------===//
@@ -857,18 +871,20 @@ func.func @arm_sme_sumops_4way_i16i16_to_i64(%vecA: vector<[8]xi16>, %vecB: vect
857
871
858
872
// CHECK-LABEL: arm_sme_usmopa_4way_i8i8_to_i32
859
873
// CHECK: "arm_sme.intr.usmopa.wide"({{.*}}) <{tile_id = 0 : i32}> : (vector<[16]xi1>, vector<[16]xi1>, vector<[16]xi8>, vector<[16]xi8>) -> ()
860
- func.func @arm_sme_usmopa_4way_i8i8_to_i32 (%vecA: vector <[16 ]xi8 >, %vecB: vector <[16 ]xi8 >) -> vector <[4 ]x[4 ]xi32 > {
861
- %reuslt = arm_sme.usmopa_4way %vecA , %vecB : vector <[16 ]xi8 >, vector <[16 ]xi8 > into vector <[4 ]x[4 ]xi32 >
862
- return %reuslt : vector <[4 ]x[4 ]xi32 >
874
+ func.func @arm_sme_usmopa_4way_i8i8_to_i32 (%vecA: vector <[16 ]xi8 >, %vecB: vector <[16 ]xi8 >) {
875
+ %result = arm_sme.usmopa_4way %vecA , %vecB : vector <[16 ]xi8 >, vector <[16 ]xi8 > into vector <[4 ]x[4 ]xi32 >
876
+ " test.some_use" (%result ) : (vector <[4 ]x[4 ]xi32 >) -> ()
877
+ return
863
878
}
864
879
865
880
// -----
866
881
867
882
// CHECK-LABEL: arm_sme_usmopa_4way_i16i16_to_i64
868
883
// CHECK: "arm_sme.intr.usmopa.wide"({{.*}}) <{tile_id = 0 : i32}> : (vector<[8]xi1>, vector<[8]xi1>, vector<[8]xi16>, vector<[8]xi16>) -> ()
869
- func.func @arm_sme_usmopa_4way_i16i16_to_i64 (%vecA: vector <[8 ]xi16 >, %vecB: vector <[8 ]xi16 >) -> vector <[2 ]x[2 ]xi64 > {
870
- %reuslt = arm_sme.usmopa_4way %vecA , %vecB : vector <[8 ]xi16 >, vector <[8 ]xi16 > into vector <[2 ]x[2 ]xi64 >
871
- return %reuslt : vector <[2 ]x[2 ]xi64 >
884
+ func.func @arm_sme_usmopa_4way_i16i16_to_i64 (%vecA: vector <[8 ]xi16 >, %vecB: vector <[8 ]xi16 >) {
885
+ %result = arm_sme.usmopa_4way %vecA , %vecB : vector <[8 ]xi16 >, vector <[8 ]xi16 > into vector <[2 ]x[2 ]xi64 >
886
+ " test.some_use" (%result ) : (vector <[2 ]x[2 ]xi64 >) -> ()
887
+ return
872
888
}
873
889
874
890
//===----------------------------------------------------------------------===//
@@ -879,16 +895,45 @@ func.func @arm_sme_usmopa_4way_i16i16_to_i64(%vecA: vector<[8]xi16>, %vecB: vect
879
895
880
896
// CHECK-LABEL: arm_sme_usmops_4way_i8i8_to_i32
881
897
// CHECK: "arm_sme.intr.usmops.wide"({{.*}}) <{tile_id = 0 : i32}> : (vector<[16]xi1>, vector<[16]xi1>, vector<[16]xi8>, vector<[16]xi8>) -> ()
882
- func.func @arm_sme_usmops_4way_i8i8_to_i32 (%vecA: vector <[16 ]xi8 >, %vecB: vector <[16 ]xi8 >) -> vector <[4 ]x[4 ]xi32 > {
883
- %reuslt = arm_sme.usmops_4way %vecA , %vecB : vector <[16 ]xi8 >, vector <[16 ]xi8 > into vector <[4 ]x[4 ]xi32 >
884
- return %reuslt : vector <[4 ]x[4 ]xi32 >
898
+ func.func @arm_sme_usmops_4way_i8i8_to_i32 (%vecA: vector <[16 ]xi8 >, %vecB: vector <[16 ]xi8 >) {
899
+ %result = arm_sme.usmops_4way %vecA , %vecB : vector <[16 ]xi8 >, vector <[16 ]xi8 > into vector <[4 ]x[4 ]xi32 >
900
+ " test.some_use" (%result ) : (vector <[4 ]x[4 ]xi32 >) -> ()
901
+ return
885
902
}
886
903
887
904
// -----
888
905
889
906
// CHECK-LABEL: arm_sme_usmops_4way_i16i16_to_i64
890
907
// CHECK: "arm_sme.intr.usmops.wide"({{.*}}) <{tile_id = 0 : i32}> : (vector<[8]xi1>, vector<[8]xi1>, vector<[8]xi16>, vector<[8]xi16>) -> ()
891
- func.func @arm_sme_usmops_4way_i16i16_to_i64 (%vecA: vector <[8 ]xi16 >, %vecB: vector <[8 ]xi16 >) -> vector <[2 ]x[2 ]xi64 > {
892
- %reuslt = arm_sme.usmops_4way %vecA , %vecB : vector <[8 ]xi16 >, vector <[8 ]xi16 > into vector <[2 ]x[2 ]xi64 >
893
- return %reuslt : vector <[2 ]x[2 ]xi64 >
908
+ func.func @arm_sme_usmops_4way_i16i16_to_i64 (%vecA: vector <[8 ]xi16 >, %vecB: vector <[8 ]xi16 >) {
909
+ %result = arm_sme.usmops_4way %vecA , %vecB : vector <[8 ]xi16 >, vector <[8 ]xi16 > into vector <[2 ]x[2 ]xi64 >
910
+ " test.some_use" (%result ) : (vector <[2 ]x[2 ]xi64 >) -> ()
911
+ return
912
+ }
913
+
914
+ //===----------------------------------------------------------------------===//
915
+ // Operations on SME tile types allowed after conversion
916
+ //===----------------------------------------------------------------------===//
917
+
918
+ // -----
919
+
920
+ // The following operations on SME tile types are permitted after conversion:
921
+ //
922
+ // - arm_sme.copy_tile
923
+ // - arm_sme.get_tile
924
+ // - cf.br
925
+ // - any unregistered op such as 'test.some_use'.
926
+ //
927
+ // this test verifies this. Conversion will fail for operations with SME tile
928
+ // types not in this list, this is tested in 'unsupported.mlir'.
929
+
930
+ func.func @ops_on_tiles_legal_post_conversion (%ub : index ) {
931
+ %c0 = arith.constant 0 : index
932
+ %c1 = arith.constant 1 : index
933
+ %tile = arm_sme.get_tile : vector <[4 ]x[4 ]xf32 >
934
+ %copy = arm_sme.copy_tile %tile : vector <[4 ]x[4 ]xf32 >
935
+ cf.br ^bb1 (%copy : vector <[4 ]x[4 ]xf32 >)
936
+ ^bb1 (%x : vector <[4 ]x[4 ]xf32 >):
937
+ " test.some_use" (%x ) : (vector <[4 ]x[4 ]xf32 >) -> ()
938
+ return
894
939
}
0 commit comments