LGTM, thanks :) Alexandre Oliva <ol...@adacore.com> 於 2025年4月15日 週二 12:25 寫道:
> > And here's another that came up more recently: > > The gcc-14 backport that split the pr114194 testcase for rv32 and rv64 > would only generate the expected rv32 sequence if commit > 6b315907c0353f71169a7555e653d29a981fef67 had also been backported, but > it wasn't. Without it, we get the same code as before on both rv32 > and rv64, so revert to the original test. > > Also tested on riscv64-elf and riscv32-elf on x86_64-linux-gnu. > Ok for gcc-14? > > > for gcc/testsuite/ChangeLog > > PR target/118601 > * gcc.target/riscv/rvv/xtheadvector/pr114194.c: Restore. > * gcc.target/riscv/rvv/xtheadvector/pr114194-rv64.c: Remove. > * gcc.target/riscv/rvv/xtheadvector/pr114194-rv32.c: Likewise. > --- > .../riscv/rvv/xtheadvector/pr114194-rv32.c | 51 > ------------------ > .../riscv/rvv/xtheadvector/pr114194-rv64.c | 55 > -------------------- > .../gcc.target/riscv/rvv/xtheadvector/pr114194.c | 56 > ++++++++++++++++++++ > 3 files changed, 56 insertions(+), 106 deletions(-) > delete mode 100644 > gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/pr114194-rv32.c > delete mode 100644 > gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/pr114194-rv64.c > create mode 100644 > gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/pr114194.c > > diff --git > a/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/pr114194-rv32.c > b/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/pr114194-rv32.c > deleted file mode 100644 > index 0bee5ec33de83..0000000000000 > --- a/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/pr114194-rv32.c > +++ /dev/null > @@ -1,51 +0,0 @@ > -/* { dg-do compile { target rv32 } } */ > -/* { dg-options "-march=rv32gc_xtheadvector -O2" } */ > -/* { dg-final { check-function-bodies "**" "" } } */ > - > -/* > -** foo0_1: > -** sb\tzero,0\([a-x0-9]+\) > -** ret > -*/ > -void foo0_1 (void *p) > -{ > - __builtin_memset (p, 0, 1); > -} > - > -/* > -** foo0_7: > -** li\t[a-x0-9]+,7 > -** th.vsetvli\tzero,[a-x0-9]+,e8,m1 > -** th\.vmv\.v\.i\tv[0-9],0 > -** th\.vse\.v\tv[0-9]+,0\([a-x0-9]+\) > -** ret > -*/ > -void foo0_7 (void *p) > -{ > - __builtin_memset (p, 0, 7); > -} > - > -/* > -** foo1_1: > -** li\t[a-x0-9]+,1 > -** sb\t[a-x0-9]+,0\([a-x0-9]+\) > -** ret > -*/ > -void foo1_1 (void *p) > -{ > - __builtin_memset (p, 1, 1); > -} > - > -/* > -** foo1_5: > -** li\t[a-x0-9]+,5 > -** th.vsetvli\tzero,[a-x0-9]+,e8,m1 > -** th\.vmv\.v\.i\tv[0-9],1 > -** th\.vse\.v\tv[0-9]+,0\([a-x0-9]+\) > -** ret > -*/ > - > -void foo1_5 (void *p) > -{ > - __builtin_memset (p, 1, 5); > -} > diff --git > a/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/pr114194-rv64.c > b/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/pr114194-rv64.c > deleted file mode 100644 > index 84333c1cf5a7c..0000000000000 > --- a/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/pr114194-rv64.c > +++ /dev/null > @@ -1,55 +0,0 @@ > -/* { dg-do compile { target rv64 } } */ > -/* { dg-options "-march=rv64gc_xtheadvector -O2" } */ > -/* { dg-final { check-function-bodies "**" "" } } */ > - > -/* > -** foo0_1: > -** sb\tzero,0\([a-x0-9]+\) > -** ret > -*/ > -void foo0_1 (void *p) > -{ > - __builtin_memset (p, 0, 1); > -} > - > -/* > -** foo0_7: > -** sb\tzero,0\([a-x0-9]+\) > -** sb\tzero,1\([a-x0-9]+\) > -** sb\tzero,2\([a-x0-9]+\) > -** sb\tzero,3\([a-x0-9]+\) > -** sb\tzero,4\([a-x0-9]+\) > -** sb\tzero,5\([a-x0-9]+\) > -** sb\tzero,6\([a-x0-9]+\) > -** ret > -*/ > -void foo0_7 (void *p) > -{ > - __builtin_memset (p, 0, 7); > -} > - > -/* > -** foo1_1: > -** li\t[a-x0-9]+,1 > -** sb\t[a-x0-9]+,0\([a-x0-9]+\) > -** ret > -*/ > -void foo1_1 (void *p) > -{ > - __builtin_memset (p, 1, 1); > -} > - > -/* > -** foo1_5: > -** li\t[a-x0-9]+,1 > -** sb\t[a-x0-9]+,0\([a-x0-9]+\) > -** sb\t[a-x0-9]+,1\([a-x0-9]+\) > -** sb\t[a-x0-9]+,2\([a-x0-9]+\) > -** sb\t[a-x0-9]+,3\([a-x0-9]+\) > -** sb\t[a-x0-9]+,4\([a-x0-9]+\) > -** ret > -*/ > -void foo1_5 (void *p) > -{ > - __builtin_memset (p, 1, 5); > -} > diff --git a/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/pr114194.c > b/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/pr114194.c > new file mode 100644 > index 0000000000000..2e53a7ecc3e71 > --- /dev/null > +++ b/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/pr114194.c > @@ -0,0 +1,56 @@ > +/* { dg-do compile } */ > +/* { dg-options "-march=rv32gc_xtheadvector -O2" { target { rv32 } } } */ > +/* { dg-options "-march=rv64gc_xtheadvector -O2" { target { rv64 } } } */ > +/* { dg-final { check-function-bodies "**" "" } } */ > + > +/* > +** foo0_1: > +** sb\tzero,0\([a-x0-9]+\) > +** ret > +*/ > +void foo0_1 (void *p) > +{ > + __builtin_memset (p, 0, 1); > +} > + > +/* > +** foo0_7: > +** sb\tzero,0\([a-x0-9]+\) > +** sb\tzero,1\([a-x0-9]+\) > +** sb\tzero,2\([a-x0-9]+\) > +** sb\tzero,3\([a-x0-9]+\) > +** sb\tzero,4\([a-x0-9]+\) > +** sb\tzero,5\([a-x0-9]+\) > +** sb\tzero,6\([a-x0-9]+\) > +** ret > +*/ > +void foo0_7 (void *p) > +{ > + __builtin_memset (p, 0, 7); > +} > + > +/* > +** foo1_1: > +** li\t[a-x0-9]+,1 > +** sb\t[a-x0-9]+,0\([a-x0-9]+\) > +** ret > +*/ > +void foo1_1 (void *p) > +{ > + __builtin_memset (p, 1, 1); > +} > + > +/* > +** foo1_5: > +** li\t[a-x0-9]+,1 > +** sb\t[a-x0-9]+,0\([a-x0-9]+\) > +** sb\t[a-x0-9]+,1\([a-x0-9]+\) > +** sb\t[a-x0-9]+,2\([a-x0-9]+\) > +** sb\t[a-x0-9]+,3\([a-x0-9]+\) > +** sb\t[a-x0-9]+,4\([a-x0-9]+\) > +** ret > +*/ > +void foo1_5 (void *p) > +{ > + __builtin_memset (p, 1, 5); > +} > > > -- > Alexandre Oliva, happy hacker https://blog.lx.oliva.nom.br/ > Free Software Activist FSFLA co-founder GNU Toolchain Engineer > More tolerance and less prejudice are key for inclusion and diversity. > Excluding neuro-others for not behaving ""normal"" is *not* inclusive! >