Vladimir Mezentsev <vladimir.mezent...@oracle.com> > On 10/19/2017 06:37 AM, Richard Earnshaw (lists) wrote: >> On 19/10/17 14:07, Wilco Dijkstra wrote: >>> Vladimir wrote: >>> >>> +# Disable floating-point expression contraction >>> +LIBGCC2_FFP_CONTRAST_CFLAGS = -ffp-contract=off >>> + >>> >>> It looks like this disables fp-contract in all of libgcc... >>> What is the the number of FMAs in libgcc before/after? > > How can I find this number ? > dis <all functions in libgcc> | grep <all FMAs> | wc
Eg. objdump -d ~/install/gcc/lib64/libgcc_s.so | grep -c fmadd Also grep fmsub, fnmadd, fnmsub. > > It's probably better to do this with an attribute > > > > __attribute__((optimize("fp-contract=off"))) > > > > on the affected functions. > > I like your suggestion. I don't think this will work in general, IIRC only a few targets correctly implement the optimize pragma. Changing the makefile to build only __divdc3/__divtc3/__divsc3/__divhc3 without FMA looks like a better approach. However we also need to decide whether this is the best possible fix. It will affect accuracy of other inputs as well... Wilco