On Mon, Jan 21, 2019 at 5:15 PM H.J. Lu <hjl.to...@gmail.com> wrote: > > TI->SF and TI->DF conversions in libgcc2.c: > > FSTYPE > FUNC (DWtype u) > { > ... > } > > have no rounding mode support. We should replace __floattisf, __floattidf, > __floatuntisf and __floatuntidf in libgcc2.c with these from soft-fp. > > PR libgcc/88931 > * config/i386/64/t-softfp-compat (libgcc2-ti-functions): New. > (LIB2FUNCS_EXCLUDE): Likewise. > (libgcc2-ti-softp): Likewise. > (LIB2ADD): Likewise. > --- > libgcc/config/i386/64/t-softfp-compat | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/libgcc/config/i386/64/t-softfp-compat > b/libgcc/config/i386/64/t-softfp-compat > index 0978695c3a4..abb78032bf5 100644 > --- a/libgcc/config/i386/64/t-softfp-compat > +++ b/libgcc/config/i386/64/t-softfp-compat > @@ -13,3 +13,11 @@ libgcc2-tf-functions = _divtc3 _multc3 _powitf2 > LIB2FUNCS_EXCLUDE += $(libgcc2-tf-functions) > libgcc2-tf-compats = $(addsuffix .c, $(libgcc2-tf-functions)) > LIB2ADD += $(addprefix $(srcdir)/config/i386/64/, $(libgcc2-tf-compats)) > + > +# Replace _floatdisf, _floatdidf, _floatundisf and _floatundidf in > +# libgcc2.c, which have no rounding mode support, with floattisf.c, > +# floattidf.c, floatundisf.c and floatundidf.c from soft-fp. > +libgcc2-ti-functions = _floatdisf _floatdidf _floatundisf _floatundidf > +LIB2FUNCS_EXCLUDE += $(libgcc2-ti-functions) > +libgcc2-ti-softp = floattisf.c floattidf.c floatuntisf.c floatuntidf.c > +LIB2ADD += $(addprefix $(srcdir)/soft-fp/, $(libgcc2-ti-softp))
It is not that simple. Please note that libgcc2 functions use FP instructions in narrower mode (so, in effect still use FPU), while soft-fp functions don't even touch the FPU, and do everything using bit twiddling. I think that your change would introduce qoute noticeable runtime regressions. Uros. > -- > 2.20.1 >