OSDN Git Service

hardfloat: implement float32/64 fused multiply-add
authorEmilio G. Cota <cota@braap.org>
Sat, 17 Mar 2018 05:17:30 +0000 (01:17 -0400)
committerAlex Bennée <alex.bennee@linaro.org>
Mon, 17 Dec 2018 08:25:25 +0000 (08:25 +0000)
commitccf770ba7396c240ca8a1564740083742dd04c08
tree51ea3f1279259942c56df222e2a4e10eb71b7b22
parent4a6295613f533a6841de5968c50e1ca36748807e
hardfloat: implement float32/64 fused multiply-add

Performance results for fp-bench:

1. Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz
- before:
fma-single: 74.73 MFlops
fma-double: 74.54 MFlops
- after:
fma-single: 203.37 MFlops
fma-double: 169.37 MFlops

2. ARM Aarch64 A57 @ 2.4GHz
- before:
fma-single: 23.24 MFlops
fma-double: 23.70 MFlops
- after:
fma-single: 66.14 MFlops
fma-double: 63.10 MFlops

3. IBM POWER8E @ 2.1 GHz
- before:
fma-single: 37.26 MFlops
fma-double: 37.29 MFlops
- after:
fma-single: 48.90 MFlops
fma-double: 59.51 MFlops

Here having 3FP64 set to 1 pays off for x86_64:
[1] 170.15 vs [0] 153.12 MFlops

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Emilio G. Cota <cota@braap.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
fpu/softfloat.c