> -----Original Message----- > From: Claudio Bantaloukas <[email protected]> > Sent: 24 November 2025 18:01 > To: Gcc Patches ML <[email protected]> > Cc: Alex Coplan <[email protected]>; Alice Carlotti > <[email protected]>; Andrew Pinski > <[email protected]>; Kyrylo Tkachov > <[email protected]>; Richard Earnshaw <[email protected]>; > Tamar Christina <[email protected]>; Wilco Dijkstra > <[email protected]>; Claudio Bantaloukas > <[email protected]> > Subject: [PATCH v3 2/9] aarch64: extend sme intrinsics to mfp8 > > > This patch extends the following intrinsics to support svmfloat8_t types and > adds tests based on the equivalent ones for svuint8_t. > > SME: > - svread_hor_za8[_mf8]_m, svread_hor_za128[_mf8]_m and related ver. > - svwrite_hor_za8[_mf8]_m, svwrite_hor_za128[_mf8]_m and related ver. > > SME2: > - svread_hor_za8_mf8_vg2, svread_hor_za8_mf8_vg4 and related ver. > - svwrite_hor_za8[_mf8]_vg2, svwrite_hor_za8[_mf8]_vg4 and related ver. > - svread_za8[_mf8]_vg1x2, svread_za8[_mf8]_vg1x4. > - svwrite_za8[_mf8]_vg1x2, svwrite_za8[_mf8]_vg1x4. > - svsel[_mf8_x2], svsel[_mf8_x4]. > - svzip[_mf8_x2], svzip[_mf8_x4]. > - svzipq[_mf8_x2], svzipq[_mf8_x4]. > - svuzp[_mf8_x2], svuzp[_mf8_x4]. > - svuzpq[_mf8_x2], svuzpq[_mf8_x4]. > - svld1[_mf8]_x2, svld1[_mf8]_x4. > - svld1_vnum[_mf8]_x2, svld1_vnum[_mf8]_x4. > > SVE2.1/SME2: > - svldnt1[_mf8]_x2, svldnt1[_mf8]_x4. > - svldnt1_vnum[_mf8]_x2, svldnt1_vnum[_mf8]_x4. > - svrevd[_mf8]_m, svrevd[_mf8]_z, svrevd[_mf8]_x. > - svst1[_mf8_x2], svst1[_mf8_x4]. > - svst1_vnum[_mf8_x2], svst1_vnum[_mf8_x4]. > - svstnt1[_mf8_x2], svstnt1[_mf8_x4]. > - svstnt1_vnum[_mf8_x2], svstnt1_vnum[_mf8_x4]. > > SME2.1: > - svreadz_hor_za8_u8, svreadz_hor_za8_u8_vg2, svreadz_hor_za8_u8_vg4 > and related > ver. > - svreadz_hor_za128_u8, svreadz_ver_za128_u8. > - svreadz_za8_u8_vg1x2, svreadz_za8_u8_vg1x4. > > This change follows ACLE 2024Q4.
OK. For some of these tests I think we could have simplified the regexp by disabling instruction scheduling so we don't need all the |, but that seems to be convention here so just something for next time. Thanks, Tamar > > gcc/ > * config/aarch64/aarch64-sve-builtins.cc (TYPES_za_bhsd_data): Add > D (za8, mf8) combination to za_bhsd_data. > > gcc/testsuite/ > * gcc.target/aarch64/sme/acle-asm/revd_mf8.c: Added test file. > * gcc.target/aarch64/sme2/acle-asm/ld1_mf8_x2.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/ld1_mf8_x4.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/ldnt1_mf8_x2.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/ldnt1_mf8_x4.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/readz_ver_za128.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/sel_mf8_x2.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/sel_mf8_x4.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/st1_mf8_x2.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/st1_mf8_x4.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/stnt1_mf8_x2.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/stnt1_mf8_x4.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/uzp_mf8_x2.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/uzp_mf8_x4.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/uzpq_mf8_x2.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/uzpq_mf8_x4.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/zip_mf8_x2.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/zip_mf8_x4.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/zipq_mf8_x2.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/zipq_mf8_x4.c: Likewise. > * gcc.target/aarch64/sve2/acle/asm/ld1_mf8_x2.c: Likewise. > * gcc.target/aarch64/sve2/acle/asm/ld1_mf8_x4.c: Likewise. > * gcc.target/aarch64/sve2/acle/asm/ldnt1_mf8_x2.c: Likewise. > * gcc.target/aarch64/sve2/acle/asm/ldnt1_mf8_x4.c: Likewise. > * gcc.target/aarch64/sve2/acle/asm/revd_mf8.c: Likewise. > * gcc.target/aarch64/sve2/acle/asm/stnt1_mf8_x2.c: Likewise. > * gcc.target/aarch64/sve2/acle/asm/stnt1_mf8_x4.c: Likewise. > * gcc.target/aarch64/sme/acle-asm/read_hor_za128.c: Added mf8 > tests. > * gcc.target/aarch64/sme/acle-asm/read_hor_za8.c: Likewise. > * gcc.target/aarch64/sme/acle-asm/read_ver_za128.c: Likewise. > * gcc.target/aarch64/sme/acle-asm/read_ver_za8.c: Likewise. > * gcc.target/aarch64/sme/acle-asm/write_hor_za128.c: Likewise. > * gcc.target/aarch64/sme/acle-asm/write_hor_za8.c: Likewise. > * gcc.target/aarch64/sme/acle-asm/write_ver_za128.c: Likewise. > * gcc.target/aarch64/sme/acle-asm/write_ver_za8.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/read_hor_za8_vg2.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/read_hor_za8_vg4.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/read_ver_za8_vg2.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/read_ver_za8_vg4.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/read_za8_vg1x2.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/read_za8_vg1x4.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/readz_hor_za128.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/readz_hor_za8_vg2.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/readz_hor_za8_vg4.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/readz_hor_za8.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/readz_ver_za8_vg2.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/readz_ver_za8_vg4.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/readz_ver_za8.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/readz_za8_vg1x2.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/readz_za8_vg1x4.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/write_hor_za8_vg2.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/write_hor_za8_vg4.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/write_ver_za8_vg2.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/write_ver_za8_vg4.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/write_za8_vg1x2.c: Likewise. > * gcc.target/aarch64/sme2/acle-asm/write_za8_vg1x4.c: Likewise. > --- > gcc/config/aarch64/aarch64-sve-builtins.cc | 4 +- > .../aarch64/sme/acle-asm/read_hor_za128.c | 31 ++ > .../aarch64/sme/acle-asm/read_hor_za8.c | 31 ++ > .../aarch64/sme/acle-asm/read_ver_za128.c | 31 ++ > .../aarch64/sme/acle-asm/read_ver_za8.c | 31 ++ > .../aarch64/sme/acle-asm/revd_mf8.c | 76 ++++ > .../aarch64/sme/acle-asm/write_hor_za128.c | 10 + > .../aarch64/sme/acle-asm/write_hor_za8.c | 10 + > .../aarch64/sme/acle-asm/write_ver_za128.c | 10 + > .../aarch64/sme/acle-asm/write_ver_za8.c | 10 + > .../aarch64/sme2/acle-asm/ld1_mf8_x2.c | 262 +++++++++++++ > .../aarch64/sme2/acle-asm/ld1_mf8_x4.c | 354 +++++++++++++++++ > .../aarch64/sme2/acle-asm/ldnt1_mf8_x2.c | 262 +++++++++++++ > .../aarch64/sme2/acle-asm/ldnt1_mf8_x4.c | 354 +++++++++++++++++ > .../aarch64/sme2/acle-asm/read_hor_za8_vg2.c | 78 ++++ > .../aarch64/sme2/acle-asm/read_hor_za8_vg4.c | 91 +++++ > .../aarch64/sme2/acle-asm/read_ver_za8_vg2.c | 78 ++++ > .../aarch64/sme2/acle-asm/read_ver_za8_vg4.c | 91 +++++ > .../aarch64/sme2/acle-asm/read_za8_vg1x2.c | 48 +++ > .../aarch64/sme2/acle-asm/read_za8_vg1x4.c | 54 +++ > .../aarch64/sme2/acle-asm/readz_hor_za128.c | 10 + > .../aarch64/sme2/acle-asm/readz_hor_za8.c | 10 + > .../aarch64/sme2/acle-asm/readz_hor_za8_vg2.c | 78 ++++ > .../aarch64/sme2/acle-asm/readz_hor_za8_vg4.c | 91 +++++ > .../aarch64/sme2/acle-asm/readz_ver_za128.c | 197 ++++++++++ > .../aarch64/sme2/acle-asm/readz_ver_za8.c | 10 + > .../aarch64/sme2/acle-asm/readz_ver_za8_vg2.c | 77 ++++ > .../aarch64/sme2/acle-asm/readz_ver_za8_vg4.c | 90 +++++ > .../aarch64/sme2/acle-asm/readz_za8_vg1x2.c | 48 +++ > .../aarch64/sme2/acle-asm/readz_za8_vg1x4.c | 56 +++ > .../aarch64/sme2/acle-asm/sel_mf8_x2.c | 92 +++++ > .../aarch64/sme2/acle-asm/sel_mf8_x4.c | 92 +++++ > .../aarch64/sme2/acle-asm/st1_mf8_x2.c | 262 +++++++++++++ > .../aarch64/sme2/acle-asm/st1_mf8_x4.c | 354 +++++++++++++++++ > .../aarch64/sme2/acle-asm/stnt1_mf8_x2.c | 262 +++++++++++++ > .../aarch64/sme2/acle-asm/stnt1_mf8_x4.c | 354 +++++++++++++++++ > .../aarch64/sme2/acle-asm/uzp_mf8_x2.c | 77 ++++ > .../aarch64/sme2/acle-asm/uzp_mf8_x4.c | 73 ++++ > .../aarch64/sme2/acle-asm/uzpq_mf8_x2.c | 77 ++++ > .../aarch64/sme2/acle-asm/uzpq_mf8_x4.c | 73 ++++ > .../aarch64/sme2/acle-asm/write_hor_za8_vg2.c | 78 ++++ > .../aarch64/sme2/acle-asm/write_hor_za8_vg4.c | 91 +++++ > .../aarch64/sme2/acle-asm/write_ver_za8_vg2.c | 78 ++++ > .../aarch64/sme2/acle-asm/write_ver_za8_vg4.c | 91 +++++ > .../aarch64/sme2/acle-asm/write_za8_vg1x2.c | 48 +++ > .../aarch64/sme2/acle-asm/write_za8_vg1x4.c | 54 +++ > .../aarch64/sme2/acle-asm/zip_mf8_x2.c | 77 ++++ > .../aarch64/sme2/acle-asm/zip_mf8_x4.c | 73 ++++ > .../aarch64/sme2/acle-asm/zipq_mf8_x2.c | 77 ++++ > .../aarch64/sme2/acle-asm/zipq_mf8_x4.c | 73 ++++ > .../aarch64/sve2/acle/asm/ld1_mf8_x2.c | 269 +++++++++++++ > .../aarch64/sve2/acle/asm/ld1_mf8_x4.c | 361 ++++++++++++++++++ > .../aarch64/sve2/acle/asm/ldnt1_mf8_x2.c | 269 +++++++++++++ > .../aarch64/sve2/acle/asm/ldnt1_mf8_x4.c | 361 ++++++++++++++++++ > .../aarch64/sve2/acle/asm/revd_mf8.c | 80 ++++ > .../aarch64/sve2/acle/asm/stnt1_mf8_x2.c | 269 +++++++++++++ > .../aarch64/sve2/acle/asm/stnt1_mf8_x4.c | 361 ++++++++++++++++++ > 57 files changed, 7007 insertions(+), 2 deletions(-) > create mode 100644 gcc/testsuite/gcc.target/aarch64/sme/acle- > asm/revd_mf8.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle- > asm/ld1_mf8_x2.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle- > asm/ld1_mf8_x4.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle- > asm/ldnt1_mf8_x2.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle- > asm/ldnt1_mf8_x4.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle- > asm/readz_ver_za128.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle- > asm/sel_mf8_x2.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle- > asm/sel_mf8_x4.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle- > asm/st1_mf8_x2.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle- > asm/st1_mf8_x4.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle- > asm/stnt1_mf8_x2.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle- > asm/stnt1_mf8_x4.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle- > asm/uzp_mf8_x2.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle- > asm/uzp_mf8_x4.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle- > asm/uzpq_mf8_x2.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle- > asm/uzpq_mf8_x4.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle- > asm/zip_mf8_x2.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle- > asm/zip_mf8_x4.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle- > asm/zipq_mf8_x2.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle- > asm/zipq_mf8_x4.c > create mode 100644 > gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1_mf8_x2.c > create mode 100644 > gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1_mf8_x4.c > create mode 100644 > gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_mf8_x2.c > create mode 100644 > gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_mf8_x4.c > create mode 100644 > gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_mf8.c > create mode 100644 > gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_mf8_x2.c > create mode 100644 > gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_mf8_x4.c
