https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91970

--- Comment #6 from joseph at codesourcery dot com <joseph at codesourcery dot 
com> ---
Arm only uses soft-fp for Thumb-1; otherwise it uses Arm-specific assembly 
code.

A natural fix might be, for these particular functions, in the hard-float 
case, to use the libgcc2.c versions instead; I expect that's faster than 
doing them entirely as software floating-point while respecting exceptions 
and rounding modes.  Arguably for the other functions, in the hard-float 
case, it would be best to build the t-hardfp versions to keep the libgcc 
size down, instead of the assembly versions.  In both cases you'd need to 
make sure the functions have the ABI-specified names, that they get 
properly built for the base PCS rather than the VFP variant, where the ABI 
requires that, and that any other ABI requirements are met (the default 
libgcc versions, compiled as C code, might not always follow the same 
interface as the ABI-defined functions).

The only case where soft-fp support for exceptions and rounding modes 
seems likely to be useful for Arm is those processors that do 
single-precision-only floating point in hardware, for which use of soft-fp 
for double precision would make sense in order to support exceptions and 
rounding modes (along with t-hardfp for single precision).  (Also, I 
suppose, use of soft-fp with exceptions and rounding modes would make 
sense for half-precision on hardware with floating-point support only for 
single and maybe double precision.)

Reply via email to