[PATCH, rs6000] Improve atomic_load/store code gen for Power8 TI mode

Bill Schmidt wschmidt@linux.vnet.ibm.com
Wed Apr 9 18:56:00 GMT 2014


On Tue, 2014-04-08 at 13:39 -0500, Pat Haugen wrote:
> On 03/25/2014 11:20 AM, Pat Haugen wrote:
> > Power8 can use lq/stq instructions for TI mode atomic_load/store. 
> > Bootstrap/regtest with no new failures. Ok for trunk and 4.8 (once 
> > bootstrap/regtest finishes)?
> >
> > -Pat
> >
> >
> > 2014-03-25  Pat Haugen <pthaugen@us.ibm.com>
> >
> >         * config/rs6000/sync.md (AINT mode_iterator): Move definition.
> >         (loadsync_<mode>): Change mode.
> >         (atomic_load<mode>, atomic_store<mode>): Add support for TI mode.
> >         (load_quadpti, store_quadpti): New.
> >         * config/rs6000/rs6000.md (unspec enum): Add UNSPEC_LSQ.
> >
> > gcc/testsuite:
> >         * gcc.target/powerpc/atomic_load_store-p8.c: New.
> 
> Updated patch which was approved off list and I have committed.
> 

Unfortunately this broke bootstrap on powerpc64le-linux-gnu on 4.8:

checking for suffix of executables... /home/wschmidt/gcc/gcc-4_8-base/libatomic\
/load_n.c: In function 'libat_load_16':
/home/wschmidt/gcc/gcc-4_8-base/libatomic/load_n.c:58:31: error: invalid failur\
e memory model for '__atomic_compare_exchange'
     atomic_compare_exchange_n (mptr, &t, 0, true,
                               ^
make[4]: *** [load_16_.lo] Error 1
make[4]: *** Waiting for unfinished jobs....

Thanks,
Bill



More information about the Gcc-patches mailing list