[PATCH], PR target/78900, Fix PowerPC __float128 signbit
David Edelsohn
dje.gcc@gmail.com
Tue Jan 3 19:07:00 GMT 2017
On Fri, Dec 30, 2016 at 3:54 PM, Michael Meissner
<meissner@linux.vnet.ibm.com> wrote:
> The signbit-3.c test explicitly tests for the value coming from memory, a
> vector register, or a GPR. Unfortunately, the code did not handle splitting up
> the registers when the value was in a GPR.
>
> These patches add teh GPR support. While I was editing the code, I also did
> some cleanup.
>
> I removed the Fsignbit mode attribute, since the only two modes used both use
> the same attribute. This is a relic of the original code generation that also
> provided optimized signbit support for DFmode/SFmode. Since the DFmode/SFmode
> got dropped (GCC 6 was in stage 3, and we needed to get signbit working for
> __float128 -- it already worked for DFmode/SFmode, but the code generation
> could be improved).
>
> I also noticed that use of signbit tended to generate sign or zero extension.
> Since the function only returns 0/1, I added combiner insns to eliminate the
> extra zero/sign extend.
>
> I have tested this on both big endian and little endian power8 systems. The
> bootstrap and make check had no regressions. Is this ok to put into the trunk?
>
> The same error appears on GCC 6 as well. Assuming the patch applys cleanly and
> fixes the problem, can I install it on the GCC 6 branch as well after a burn in
> period?
>
> 2016-12-30 Michael Meissner <meissner@linux.vnet.ibm.com>
>
> PR target/78900
> * config/rs6000/rs6000.c (rs6000_split_signbit): Change some
> assertions. Add support for doing the signbit if the IEEE 128-bit
> floating point value is in a GPR.
> * config/rs6000/rs6000.md (Fsignbit): Delete.
> (signbit<mode>2_dm): Delete using <Fsignbit> and just use "wa".
> Update the length attribute if the value is in a GPR.
> (signbit<mode>2_dm_<su>ext): Add combiner pattern to eliminate
> the sign or zero extension instruction, since the value is always
> 0/1.
> (signbit<mode>2_dm2): Delete using <Fsignbit>.
This patch is okay for trunk and okay for GCC 6 branch after a week or
two of no problems.
Thanks, David
More information about the Gcc-patches
mailing list