As we discussed in the patch review, there were some issues with using %Y for
the ISA 3.0 instructions LXSD and STXSD.

I have rewritten the patch so that we have a new memory constraint (%wY) that
explicitly targets those instructions.  I went back to the mov{DF,DD} patterns
and changed their use of %o to %wY.

I removed the test that was generated from the XalanNamespacesStack.cpp source
that showed up the problem.

I have bootstrapped this on a little endian power8 system and there were no
regressions in the test suite.  I also built Spec 2006 for power9 with this
compiler, and the xalancbmk benchmark now builds.  I will kick off a big endian
build on a power7 system.

Assuming there are no regressions in power7, are these patches ok to install in
the trunk, and backport to GCC 6.2 after a burn-in period?

2016-06-28  Michael Meissner  <meiss...@linux.vnet.ibm.com>

        PR target/71667
        * config/rs6000/constraints.md (wY constraint): New constraint to
        match the requirements for the LXSD and STXSD instructions.
        * config/rs6000/predicates.md (offsettable_mem_14bit_operand): New
        predicate to match the requirements for the LXSD and STXSD
        instructions.
        * config/rs6000/rs6000.md (mov<mode>_hardfloat32, FMOVE64 case):
        Use constaint wY for LXSD/STXSD instructions instead of 'o' or 'Y'
        to make sure that the bottom 2 bits of offset are 0, the address
        form is offsettable, and no updating is done in the address mode.
        (mov<mode>_hardfloat64, FMOVE64 case): Likewise.
        (movdi_internal32): Likewise
        (movdi_internal64): Likewise.

-- 
Michael Meissner, IBM
IBM, M/S 2506R, 550 King Street, Littleton, MA 01460-6245, USA
email: meiss...@linux.vnet.ibm.com, phone: +1 (978) 899-4797

Reply via email to