]> git.proxmox.com Git - mirror_qemu.git/commit
hardfloat: fix float32/64 fused multiply-add
authorKito Cheng <kito.cheng@gmail.com>
Fri, 22 Mar 2019 20:43:20 +0000 (16:43 -0400)
committerAlex Bennée <alex.bennee@linaro.org>
Mon, 25 Mar 2019 10:35:32 +0000 (10:35 +0000)
commit896f51fbfa132a6d05a1195f45d6bd9e9df07893
tree680a004dae56a7d9d777cb54830f9927dfac2abb
parent7ca96e1a9cadc32af7df73dcf4438b08667d07a6
hardfloat: fix float32/64 fused multiply-add

Before falling back to softfloat FMA, we do not restore the original
values of inputs A and C. Fix it.

This bug was caught by running gcc's testsuite on RISC-V qemu.

Note that this change gives a small perf increase for fp-bench:

  Host: Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz
  Command: perf stat -r 3 taskset -c 0 ./fp-bench -o mulAdd -p $prec

- $prec = single:
  - before:
    101.71 MFlops
    102.18 MFlops
    100.96 MFlops
  - after:
    103.63 MFlops
    103.05 MFlops
    102.96 MFlops

- $prec = double:
  - before:
    173.10 MFlops
    173.93 MFlops
    172.11 MFlops
  - after:
    178.49 MFlops
    178.88 MFlops
    178.66 MFlops

Signed-off-by: Kito Cheng <kito.cheng@gmail.com>
Signed-off-by: Emilio G. Cota <cota@braap.org>
Message-Id: <20190322204320.17777-1-cota@braap.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
fpu/softfloat.c