I would suggest rename those __builtin_riscv_* to __builtin_riscv_cmo_*, that's less confusing, __builtin_riscv_zero just seems like it will return a zero value.
On Fri, Mar 4, 2022 at 10:52 AM <yul...@nj.iscas.ac.cn> wrote: > > From: yulong-plct <yul...@nj.iscas.ac.cn> > > This commit adds testcases about CMO instructions. > 7 > 8 gcc/testsuite/ChangeLog: > 9 > 10 * gcc.target/riscv/cmo-zicbom-1.c: New test. > 11 * gcc.target/riscv/cmo-zicbom-2.c: New test. > 12 * gcc.target/riscv/cmo-zicbop-1.c: New test. > 13 * gcc.target/riscv/cmo-zicbop-2.c: New test. > 14 * gcc.target/riscv/cmo-zicboz-1.c: New test. > 15 * gcc.target/riscv/cmo-zicboz-2.c: New test. > > --- > gcc/testsuite/gcc.target/riscv/cmo-zicbom-1.c | 21 +++++++++++++++++ > gcc/testsuite/gcc.target/riscv/cmo-zicbom-2.c | 21 +++++++++++++++++ > gcc/testsuite/gcc.target/riscv/cmo-zicbop-1.c | 23 +++++++++++++++++++ > gcc/testsuite/gcc.target/riscv/cmo-zicbop-2.c | 23 +++++++++++++++++++ > gcc/testsuite/gcc.target/riscv/cmo-zicboz-1.c | 9 ++++++++ > gcc/testsuite/gcc.target/riscv/cmo-zicboz-2.c | 9 ++++++++ > 6 files changed, 106 insertions(+) > create mode 100644 gcc/testsuite/gcc.target/riscv/cmo-zicbom-1.c > create mode 100644 gcc/testsuite/gcc.target/riscv/cmo-zicbom-2.c > create mode 100644 gcc/testsuite/gcc.target/riscv/cmo-zicbop-1.c > create mode 100644 gcc/testsuite/gcc.target/riscv/cmo-zicbop-2.c > create mode 100644 gcc/testsuite/gcc.target/riscv/cmo-zicboz-1.c > create mode 100644 gcc/testsuite/gcc.target/riscv/cmo-zicboz-2.c > > diff --git a/gcc/testsuite/gcc.target/riscv/cmo-zicbom-1.c > b/gcc/testsuite/gcc.target/riscv/cmo-zicbom-1.c > new file mode 100644 > index 00000000000..16935ff3d31 > --- /dev/null > +++ b/gcc/testsuite/gcc.target/riscv/cmo-zicbom-1.c > @@ -0,0 +1,21 @@ > +/* { dg-do compile } */ > +/* { dg-options "-march=rv64gc_zicbom -mabi=lp64" } */ > + > +int foo1() > +{ > + return __builtin_riscv_clean(); > +} > + > +int foo2() > +{ > + return __builtin_riscv_flush(); > +} > + > +int foo3() > +{ > + return __builtin_riscv_inval(); > +} > + > +/* { dg-final { scan-assembler-times "cbo.clean" 1 } } */ > +/* { dg-final { scan-assembler-times "cbo.flush" 1 } } */ > +/* { dg-final { scan-assembler-times "cbo.inval" 1 } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/riscv/cmo-zicbom-2.c > b/gcc/testsuite/gcc.target/riscv/cmo-zicbom-2.c > new file mode 100644 > index 00000000000..fc14f2b9c2b > --- /dev/null > +++ b/gcc/testsuite/gcc.target/riscv/cmo-zicbom-2.c > @@ -0,0 +1,21 @@ > +/* { dg-do compile } */ > +/* { dg-options "-march=rv32gc_zicbom -mabi=ilp32" } */ > + > +int foo1() > +{ > + return __builtin_riscv_clean(); > +} > + > +int foo2() > +{ > + return __builtin_riscv_flush(); > +} > + > +int foo3() > +{ > + return __builtin_riscv_inval(); > +} > + > +/* { dg-final { scan-assembler-times "cbo.clean" 1 } } */ > +/* { dg-final { scan-assembler-times "cbo.flush" 1 } } */ > +/* { dg-final { scan-assembler-times "cbo.inval" 1 } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/riscv/cmo-zicbop-1.c > b/gcc/testsuite/gcc.target/riscv/cmo-zicbop-1.c > new file mode 100644 > index 00000000000..b8bac2e8c51 > --- /dev/null > +++ b/gcc/testsuite/gcc.target/riscv/cmo-zicbop-1.c > @@ -0,0 +1,23 @@ > +/* { dg-do compile target { { rv64-*-*}}} */ > +/* { dg-options "-march=rv64gc_zicbop -mabi=lp64" } */ > + > +void foo (char *p) > +{ > + __builtin_prefetch (p, 0, 0); > + __builtin_prefetch (p, 0, 1); > + __builtin_prefetch (p, 0, 2); > + __builtin_prefetch (p, 0, 3); > + __builtin_prefetch (p, 1, 0); > + __builtin_prefetch (p, 1, 1); > + __builtin_prefetch (p, 1, 2); > + __builtin_prefetch (p, 1, 3); > +} > + > +int foo1() > +{ > + return __builtin_riscv_prefetchi(1); > +} > + > +/* { dg-final { scan-assembler-times "prefetch.i" 1 } } */ > +/* { dg-final { scan-assembler-times "prefetch.r" 4 } } */ > +/* { dg-final { scan-assembler-times "prefetch.w" 4 } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/riscv/cmo-zicbop-2.c > b/gcc/testsuite/gcc.target/riscv/cmo-zicbop-2.c > new file mode 100644 > index 00000000000..5ace6e2b349 > --- /dev/null > +++ b/gcc/testsuite/gcc.target/riscv/cmo-zicbop-2.c > @@ -0,0 +1,23 @@ > +/* { dg-do compile target { { rv32-*-*}}} */ > +/* { dg-options "-march=rv32gc_zicbop -mabi=ilp32" } */ > + > +void foo (char *p) > +{ > + __builtin_prefetch (p, 0, 0); > + __builtin_prefetch (p, 0, 1); > + __builtin_prefetch (p, 0, 2); > + __builtin_prefetch (p, 0, 3); > + __builtin_prefetch (p, 1, 0); > + __builtin_prefetch (p, 1, 1); > + __builtin_prefetch (p, 1, 2); > + __builtin_prefetch (p, 1, 3); > +} > + > +int foo1() > +{ > + return __builtin_riscv_prefetchi(1); > +} > + > +/* { dg-final { scan-assembler-times "prefetch.i" 1 } } */ > +/* { dg-final { scan-assembler-times "prefetch.r" 4 } } */ > +/* { dg-final { scan-assembler-times "prefetch.w" 4 } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/riscv/cmo-zicboz-1.c > b/gcc/testsuite/gcc.target/riscv/cmo-zicboz-1.c > new file mode 100644 > index 00000000000..c2401fe0cf9 > --- /dev/null > +++ b/gcc/testsuite/gcc.target/riscv/cmo-zicboz-1.c > @@ -0,0 +1,9 @@ > +/* { dg-do compile } */ > +/* { dg-options "-march=rv64gc_zicboz -mabi=lp64" } */ > + > +int foo1() > +{ > + return __builtin_riscv_zero(); > +} > + > +/* { dg-final { scan-assembler-times "cbo.zero" 1 } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/riscv/cmo-zicboz-2.c > b/gcc/testsuite/gcc.target/riscv/cmo-zicboz-2.c > new file mode 100644 > index 00000000000..98fb3bf978a > --- /dev/null > +++ b/gcc/testsuite/gcc.target/riscv/cmo-zicboz-2.c > @@ -0,0 +1,9 @@ > +/* { dg-do compile } */ > +/* { dg-options "-march=rv32gc_zicboz -mabi=ilp32" } */ > + > +int foo1() > +{ > + return __builtin_riscv_zero(); > +} > + > +/* { dg-final { scan-assembler-times "cbo.zero" 1 } } */ > \ No newline at end of file > -- > 2.17.1 >