Message ID | 497284df-e67f-8071-7001-8074633ecc01@linux.ibm.com |
---|---|
State | New |
Headers | show |
Series | [v2] rs6000: Disable MMA if no VSX support [PR103627] | expand |
Hi! On Thu, Jan 27, 2022 at 07:21:33PM +0800, Kewen.Lin wrote: > PR target/103627 > * config/rs6000/rs6000.cc (rs6000_option_override_internal): Disable > MMA if !TARGET_VSX. > > gcc/testsuite/ChangeLog: > > PR target/103627 > * gcc.target/powerpc/pr103627-1.c: New test. > * gcc.target/powerpc/pr103627-2.c: New test. Okay for trunk. Thanks! Segher
on 2022/1/28 上午1:17, Segher Boessenkool wrote: > Hi! > > On Thu, Jan 27, 2022 at 07:21:33PM +0800, Kewen.Lin wrote: >> PR target/103627 >> * config/rs6000/rs6000.cc (rs6000_option_override_internal): Disable >> MMA if !TARGET_VSX. >> >> gcc/testsuite/ChangeLog: >> >> PR target/103627 >> * gcc.target/powerpc/pr103627-1.c: New test. >> * gcc.target/powerpc/pr103627-2.c: New test. > > Okay for trunk. Thanks! > > Thanks Segher! Commit it as r12-7078 and its successor as r12-7079. Since it's related to MMA support, I guess we want to backport it? If so, is it ok to backport to GCC 10 and 11 after one week or so? BR, Kewen
On Mon, Feb 07, 2022 at 01:54:00PM +0800, Kewen.Lin wrote: > on 2022/1/28 上午1:17, Segher Boessenkool wrote: > > On Thu, Jan 27, 2022 at 07:21:33PM +0800, Kewen.Lin wrote: > >> PR target/103627 > >> * config/rs6000/rs6000.cc (rs6000_option_override_internal): Disable > >> MMA if !TARGET_VSX. > >> > >> gcc/testsuite/ChangeLog: > >> > >> PR target/103627 > >> * gcc.target/powerpc/pr103627-1.c: New test. > >> * gcc.target/powerpc/pr103627-2.c: New test. > > > > Okay for trunk. Thanks! > > Thanks Segher! Commit it as r12-7078 and its successor as r12-7079. > > Since it's related to MMA support, I guess we want to backport it? Probably, yes. (Not because it is related to MMA, but more because the ICE will also exist on older compilers). > If so, is it ok to backport to GCC 10 and 11 after one week or so? Okay. Thanks! Segher
diff --git a/gcc/config/rs6000/rs6000.cc b/gcc/config/rs6000/rs6000.cc index a07db3a48bc..634937e052f 100644 --- a/gcc/config/rs6000/rs6000.cc +++ b/gcc/config/rs6000/rs6000.cc @@ -4491,6 +4491,16 @@ rs6000_option_override_internal (bool global_init_p) rs6000_isa_flags &= ~OPTION_MASK_MMA; } + /* MMA requires SIMD support as ISA 3.1 claims and our implementation + such as "*movoo" uses vector pair access which use VSX registers. + So make MMA require VSX support here. */ + if (TARGET_MMA && !TARGET_VSX) + { + if ((rs6000_isa_flags_explicit & OPTION_MASK_MMA) != 0) + error ("%qs requires %qs", "-mmma", "-mvsx"); + rs6000_isa_flags &= ~OPTION_MASK_MMA; + } + if (!TARGET_PCREL && TARGET_PCREL_OPT) rs6000_isa_flags &= ~OPTION_MASK_PCREL_OPT; diff --git a/gcc/testsuite/gcc.target/powerpc/pr103627-1.c b/gcc/testsuite/gcc.target/powerpc/pr103627-1.c new file mode 100644 index 00000000000..5cecf515e58 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr103627-1.c @@ -0,0 +1,16 @@ +/* { dg-require-effective-target power10_ok } */ +/* { dg-options "-mdejagnu-cpu=power10 -mno-vsx" } */ + +/* Verify compiler emits error message instead of ICE. */ + +extern float *dest; +extern __vector_quad src; + +int +foo () +{ + __builtin_mma_disassemble_acc (dest, &src); + /* { dg-error "'__builtin_mma_disassemble_acc' requires the '-mmma' option" "" { target *-*-* } .-1 } */ + return 0; +} + diff --git a/gcc/testsuite/gcc.target/powerpc/pr103627-2.c b/gcc/testsuite/gcc.target/powerpc/pr103627-2.c new file mode 100644 index 00000000000..89ae4f607bf --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr103627-2.c @@ -0,0 +1,16 @@ +/* { dg-require-effective-target power10_ok } */ +/* { dg-options "-mdejagnu-cpu=power10 -mmma -mno-vsx" } */ + +/* Verify the emitted error message. */ + +extern float *dest; +extern __vector_quad src; + +int +foo () +{ + __builtin_mma_disassemble_acc (dest, &src); + /* { dg-error "'-mmma' requires '-mvsx'" "mma" { target *-*-* } 0 } */ + return 0; +} +