[PATCH 2/2] [SPARC] Add -mfsmuld option
Sebastian Huber
sebastian.huber@embedded-brains.de
Wed Jul 26 08:18:00 GMT 2017
On 26/07/17 10:13, Sebastian Huber wrote:
> On 26/07/17 10:09, Eric Botcazou wrote:
>
>>> Add the -mfsmuld option to control the generation of the FsMULd
>>> instruction. In general, this instruction is available in architecture
>>> version V8 and V9 CPUs with FPU. Some CPUs of this category do not
>>> support this instruction properly, e.g. AT697E, AT697F and UT699. Some
>>> CPUs of this category do not implement it in hardware, e.g. LEON3/4
>>> with
>>> GRFPU-lite.
>> OK on principle, but could we avoid all this shuffling with MASK_FSMULD?
>> Having to write MASK_V8|MASK_FSMULD and MASK_V9|MASK_FSMULD is awkward.
>>
>> What about automatically setting MASK_FSMULD if MASK_FPU is set and
>> disabling
>> it by default for v7, cypress and leon (i.e MASK_ISA|MASK_FSMULD for
>> them)?
>
> That was my first approach, however, this didn't work well. The
> -fno-fsmuld option didn't work here and was ignored. I guess this is
> due to the asymmetric handling of the enable/disable CPU target flags
> handling with respect to the target_flags_explicit:
>
> target_flags &= ~cpu->disable;
> target_flags |= (cpu->enable
> #ifndef HAVE_AS_FMAF_HPC_VIS3
> & ~(MASK_FMAF | MASK_VIS3)
> #endif
> #ifndef HAVE_AS_SPARC4
> & ~MASK_CBCOND
> #endif
> #ifndef HAVE_AS_SPARC5_VIS4
> & ~(MASK_VIS4 | MASK_SUBXC)
> #endif
> #ifndef HAVE_AS_SPARC6
> & ~(MASK_VIS4B)
> #endif
> #ifndef HAVE_AS_LEON
> & ~(MASK_LEON | MASK_LEON3)
> #endif
> & ~(target_flags_explicit & MASK_FEATURES)
> );
>
I will try it again using
target_flags |= MASK_FSMULD & ~target_flags_explicit;
before this block above.
If !TARGET_FPU, this flag is cleared later.
--
Sebastian Huber, embedded brains GmbH
Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone : +49 89 189 47 41-16
Fax : +49 89 189 47 41-09
E-Mail : sebastian.huber@embedded-brains.de
PGP : Public key available on request.
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
More information about the Gcc-patches
mailing list