On Sat, Jan 17, 2015 at 09:18:14PM -0500, David Edelsohn wrote:
> Thanks, David
> 
>         * config/rs6000/default64.h: Include rs6000-cpus.def.
>         (TARGET_DEFAULT) [LITTLE_ENDIAN]: Use ISA 2.7 (POWER8).
>         * config/rs6000/driver-rs6000.c (detect_processor_aix): Add POWER7.
>         * config/rs6000/linux64.h: Always default to POWER8.
>         * config/rs6000/rs6000.c (rs6000_file_start): Emit .machine
>         pseudo-op to specify assembler dialect.

Unfortunately, this broke all qi/hi mode atomics on ppc64le, when configured
--with-cpu=power7 --with-tune=power8.
The problem is that TARGET_SYNC_HI_QI is defined as
TARGET_QUAD_MEMORY || TARGET_QUAD_MEMORY_ATOMIC || TARGET_DIRECT_MOVE
and from these 3, despite the configured default or even explicit
-mcpu=power7 the second one was never cleared.

The following patch seems to fix it, ok for trunk if testing passes?

What about release branches?

2015-01-26  Jakub Jelinek  <ja...@redhat.com>

        * config/rs6000/rs6000-cpus.def (POWERPC_MASKS): Add
        OPTION_MASK_QUAD_MEMORY_ATOMIC.

--- gcc/config/rs6000/rs6000-cpus.def.jj        2015-01-05 13:07:17.000000000 
+0100
+++ gcc/config/rs6000/rs6000-cpus.def   2015-01-26 10:41:54.267031985 +0100
@@ -93,6 +93,7 @@
                                 | OPTION_MASK_PPC_GFXOPT               \
                                 | OPTION_MASK_PPC_GPOPT                \
                                 | OPTION_MASK_QUAD_MEMORY              \
+                                | OPTION_MASK_QUAD_MEMORY_ATOMIC       \
                                 | OPTION_MASK_RECIP_PRECISION          \
                                 | OPTION_MASK_SOFT_FLOAT               \
                                 | OPTION_MASK_STRICT_ALIGN_OPTIONAL    \


        Jakub

Reply via email to