Message ID | ZfpjKIVYVbb2MEuQ@cowardly-lion.the-meissners.org |
---|---|
State | New |
Headers | show |
Series | Add support for -mcpu=power11 | expand |
Hi Mike, on 2024/3/20 12:16, Michael Meissner wrote: > This patch adds some simple tests for -mcpu=power11 support. In order to run > these tests, you need an assembler that supports the appropriate option for > supporting the Power11 processor (-mpower11 under Linux or -mpwr11 under AIX). > > I have tested this patch on a little endian power10 system and a big endian > power9 system using the latest binutils which includes support for power11. > There were no regressions, and the 3 power11 tests added ran on both systems. > Can I check this patch into GCC 15 when it opens up for general patches? > > 2024-03-18 Michael Meissner <meissner@linux.ibm.com> > > gcc/testsuite/ > > * gcc.target/powerpc/power11-1.c: New test. > * gcc.target/powerpc/power11-2.c: Likewise. > * gcc.target/powerpc/power11-3.c: Likewise. > * lib/target-supports.exp (check_effective_target_power11_ok): Add new > effective target. > --- > gcc/testsuite/gcc.target/powerpc/power11-1.c | 13 +++++++++++++ > gcc/testsuite/gcc.target/powerpc/power11-2.c | 20 ++++++++++++++++++++ > gcc/testsuite/gcc.target/powerpc/power11-3.c | 10 ++++++++++ > gcc/testsuite/lib/target-supports.exp | 17 +++++++++++++++++ > 4 files changed, 60 insertions(+) > create mode 100644 gcc/testsuite/gcc.target/powerpc/power11-1.c > create mode 100644 gcc/testsuite/gcc.target/powerpc/power11-2.c > create mode 100644 gcc/testsuite/gcc.target/powerpc/power11-3.c > > diff --git a/gcc/testsuite/gcc.target/powerpc/power11-1.c b/gcc/testsuite/gcc.target/powerpc/power11-1.c > new file mode 100644 > index 00000000000..6a2e802eedf > --- /dev/null > +++ b/gcc/testsuite/gcc.target/powerpc/power11-1.c > @@ -0,0 +1,13 @@ > +/* { dg-do compile { target powerpc*-*-* } } */ > +/* { dg-require-effective-target power11_ok } */ > +/* { dg-options "-mdejagnu-cpu=power11 -O2" } */ > + > +/* Basic check to see if the compiler supports -mcpu=power11. */ > + > +#ifndef _ARCH_PWR11 > +#error "-mcpu=power11 is not supported" > +#endif > + > +void foo (void) > +{ > +} > diff --git a/gcc/testsuite/gcc.target/powerpc/power11-2.c b/gcc/testsuite/gcc.target/powerpc/power11-2.c > new file mode 100644 > index 00000000000..7b9904c1d29 > --- /dev/null > +++ b/gcc/testsuite/gcc.target/powerpc/power11-2.c > @@ -0,0 +1,20 @@ > +/* { dg-do compile { target powerpc*-*-* } } */ > +/* { dg-require-effective-target power11_ok } */ > +/* { dg-options "-O2" } */ > + > +/* Check if we can set the power11 target via a target attribute. */ > + > +__attribute__((__target__("cpu=power9"))) > +void foo_p9 (void) > +{ > +} > + > +__attribute__((__target__("cpu=power10"))) > +void foo_p10 (void) > +{ > +} > + > +__attribute__((__target__("cpu=power11"))) > +void foo_p11 (void) > +{ > +} > diff --git a/gcc/testsuite/gcc.target/powerpc/power11-3.c b/gcc/testsuite/gcc.target/powerpc/power11-3.c > new file mode 100644 > index 00000000000..9b2d643cc0f > --- /dev/null > +++ b/gcc/testsuite/gcc.target/powerpc/power11-3.c > @@ -0,0 +1,10 @@ > +/* { dg-do compile { target powerpc*-*-* } } */ > +/* { dg-require-effective-target power11_ok } */ > +/* { dg-options "-mdejagnu-cpu=power8 -O2" } */ > + > +/* Check if we can set the power11 target via a target_clones attribute. */ > + > +__attribute__((__target_clones__("cpu=power11,cpu=power9,default"))) > +void foo (void) > +{ > +} > diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp > index 467b539b20d..be80494be80 100644 > --- a/gcc/testsuite/lib/target-supports.exp > +++ b/gcc/testsuite/lib/target-supports.exp > @@ -7104,6 +7104,23 @@ proc check_effective_target_power10_ok { } { > } > } > > +# Return 1 if this is a PowerPC target supporting -mcpu=power11. > + > +proc check_effective_target_power11_ok { } { > + if { ([istarget powerpc*-*-*]) } { > + return [check_no_compiler_messages power11_ok object { > + int main (void) { > + #ifndef _ARCH_PWR11 > + #error "-mcpu=power11 is not supported" > + #endif > + return 0; > + } > + } "-mcpu=power11"] > + } else { > + return 0 > + } > +} Sorry that I didn't catch this before, this effective target looks useless since its users power11-[123].c are all for compiling and the compilation doesn't rely on assembler behavior. power11-1.c has checked for _ARCH_PWR11, maybe we want some cases with "dg-do assemble" to adopt this? btw, the other two sub-patches in this series look good to me, as I know this series has been on Segher's TODO list, I'll leave the approvals to him. BR, Kewen
diff --git a/gcc/testsuite/gcc.target/powerpc/power11-1.c b/gcc/testsuite/gcc.target/powerpc/power11-1.c new file mode 100644 index 00000000000..6a2e802eedf --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/power11-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile { target powerpc*-*-* } } */ +/* { dg-require-effective-target power11_ok } */ +/* { dg-options "-mdejagnu-cpu=power11 -O2" } */ + +/* Basic check to see if the compiler supports -mcpu=power11. */ + +#ifndef _ARCH_PWR11 +#error "-mcpu=power11 is not supported" +#endif + +void foo (void) +{ +} diff --git a/gcc/testsuite/gcc.target/powerpc/power11-2.c b/gcc/testsuite/gcc.target/powerpc/power11-2.c new file mode 100644 index 00000000000..7b9904c1d29 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/power11-2.c @@ -0,0 +1,20 @@ +/* { dg-do compile { target powerpc*-*-* } } */ +/* { dg-require-effective-target power11_ok } */ +/* { dg-options "-O2" } */ + +/* Check if we can set the power11 target via a target attribute. */ + +__attribute__((__target__("cpu=power9"))) +void foo_p9 (void) +{ +} + +__attribute__((__target__("cpu=power10"))) +void foo_p10 (void) +{ +} + +__attribute__((__target__("cpu=power11"))) +void foo_p11 (void) +{ +} diff --git a/gcc/testsuite/gcc.target/powerpc/power11-3.c b/gcc/testsuite/gcc.target/powerpc/power11-3.c new file mode 100644 index 00000000000..9b2d643cc0f --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/power11-3.c @@ -0,0 +1,10 @@ +/* { dg-do compile { target powerpc*-*-* } } */ +/* { dg-require-effective-target power11_ok } */ +/* { dg-options "-mdejagnu-cpu=power8 -O2" } */ + +/* Check if we can set the power11 target via a target_clones attribute. */ + +__attribute__((__target_clones__("cpu=power11,cpu=power9,default"))) +void foo (void) +{ +} diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index 467b539b20d..be80494be80 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -7104,6 +7104,23 @@ proc check_effective_target_power10_ok { } { } } +# Return 1 if this is a PowerPC target supporting -mcpu=power11. + +proc check_effective_target_power11_ok { } { + if { ([istarget powerpc*-*-*]) } { + return [check_no_compiler_messages power11_ok object { + int main (void) { + #ifndef _ARCH_PWR11 + #error "-mcpu=power11 is not supported" + #endif + return 0; + } + } "-mcpu=power11"] + } else { + return 0 + } +} + # Return 1 if this is a PowerPC target supporting -mfloat128 via either # software emulation on power7/power8 systems or hardware support on power9.