On Tue, Apr 1, 2014 at 7:55 PM, Michael Meissner
<meiss...@linux.vnet.ibm.com> wrote:
> In backporting the power8 changes to the 4.8 branch, one of the testers of
> these patches noticed that libgcc cannot be built on a linux SPE target.  The
> reason was the _Decimal64 type did not have a proper move insn in the SPE
> environment.  This patch fixes that issue.  In looking at the patch, I
> discovered two other thinkos that are fixed in this patch.
>
> The first problem is the movdf/movdd insns for 32-bit without hardware 
> floating
> point, checked whether we had hardware single precision support, when it 
> should
> have been checking that we had hardware double precision support.
>
> The second problem was that some of the types believed they could use the
> floating point registers in a SPE or software emulation enviornment.  So I
> added additional code to turn off the use of the FPRs in this case.
>
> I have done bootstraps and make check on 64-bit PowerPC linux systems with no
> regression.  In addition, I tested the code generated using cross compilers to
> the Linux SPE system.  Is this patch acceptible to be checked in the trunk 
> (and
> to the 4.8 branch when the other patches are approved)?
>
> 2014-04-01  Michael Meissner  <meiss...@linux.vnet.ibm.com>
>
>         PR target/60735
>         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): If we have
>         software floating point or no floating point registers, do not
>         allow any type in the FPRs.  Eliminate a test for SPE SIMD types
>         in GPRs that occurs after we tested for GPRs that would never be
>         true.
>
>         * config/rs6000/rs6000.md (mov<mode>_softfloat32, FMOVE64):
>         Rewrite tests to use TARGET_DOUBLE_FLOAT and TARGET_E500_DOUBLE,
>         since the FMOVE64 type is DFmode/DDmode.  If TARGET_E500_DOUBLE,
>         specifically allow DDmode, since that does not use the SPE SIMD
>         instructions.

Okay for trunk and the 4.8 backport.

Thanks, David

Reply via email to