]> git.ipfire.org Git - thirdparty/gcc.git/commit
rs6000: Add OPTION_MASK_POWER8 [PR101865]
authorPeter Bergner <bergner@linux.ibm.com>
Thu, 2 May 2024 23:07:05 +0000 (18:07 -0500)
committerPeter Bergner <bergner@linux.ibm.com>
Thu, 2 May 2024 23:07:05 +0000 (18:07 -0500)
commitf8f02fd0bfeeb733a044a120b394eeac48de318a
tree91c8e258ee71c91a0830ae6832a2661b295b352d
parent26d48b6d3e2d07583f25f0769d0c005864760aee
rs6000: Add OPTION_MASK_POWER8 [PR101865]

The bug in PR101865 is the _ARCH_PWR8 predefine macro is conditional upon
TARGET_DIRECT_MOVE, which can be false for some -mcpu=power8 compiles if the
-mno-altivec or -mno-vsx options are used.  The solution here is to create
a new OPTION_MASK_POWER8 mask that is true for -mcpu=power8, regardless of
Altivec or VSX enablement.

Unfortunately, the only way to create an OPTION_MASK_* mask is to create
a new option, which we have done here, but marked it as WarnRemoved since
we do not want users using it.  For stage1, we will look into how we can
create ISA mask flags for use in the compiler without the need for explicit
options.

2024-04-12  Will Schmidt  <will_schmidt@linux.ibm.com>
    Peter Bergner  <bergner@linux.ibm.com>

gcc/
PR target/101865
* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Use
OPTION_MASK_POWER8.
* config/rs6000/rs6000-cpus.def (POWERPC_MASKS): Add OPTION_MASK_POWER8.
(ISA_2_7_MASKS_SERVER): Likewise.
* config/rs6000/rs6000.c (rs6000_option_override_internal): Update
comment.  Use OPTION_MASK_POWER8 and TARGET_POWER8.
* config/rs6000/rs6000.h (TARGET_SYNC_HI_QI): Use TARGET_POWER8.
* config/rs6000/rs6000.md (define_attr "isa"): Add p8.
(define_attr "enabled"): Handle it.
(define_insn "prefetch"): Use TARGET_POWER8.
* config/rs6000/rs6000.opt (mpower8-internal): New.

gcc/testsuite/
PR target/101865
* gcc.target/powerpc/predefine-p7-novsx.c: New test.
* gcc.target/powerpc/predefine-p8-noaltivec-novsx.c: New test.
* gcc.target/powerpc/predefine-p8-noaltivec.c: New test.
* gcc.target/powerpc/predefine-p8-novsx.c: New test.
* gcc.target/powerpc/predefine-p8-pragma-vsx.c: New test.
* gcc.target/powerpc/predefine-p9-novsx.c: New test.

(cherry picked from commit aa57af93ba22865be747f926e4e5f219e7f8758a)
12 files changed:
gcc/config/rs6000/rs6000-c.c
gcc/config/rs6000/rs6000-cpus.def
gcc/config/rs6000/rs6000.c
gcc/config/rs6000/rs6000.h
gcc/config/rs6000/rs6000.md
gcc/config/rs6000/rs6000.opt
gcc/testsuite/gcc.target/powerpc/predefine-p7-novsx.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/predefine-p8-noaltivec-novsx.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/predefine-p8-noaltivec.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/predefine-p8-novsx.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/predefine-p8-pragma-vsx.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/predefine-p9-novsx.c [new file with mode: 0644]