From 3297d019e108aa9d16fc5a6a5aee0854f377f289 Mon Sep 17 00:00:00 2001 From: Adhemerval Zanella Date: Thu, 9 Apr 2020 16:38:27 -0300 Subject: ia64: Use generic exp10f The generic implementation is slight worse (Itanium(R) Processor 9020): Before new code: "exp10f": { "workload-spec2017.wrf (adapted)": { "duration": 3.61582e+08, "iterations": 2.384e+07, "reciprocal-throughput": 14.8334, "latency": 15.5006, "max-throughput": 6.74153e+07, "min-throughput": 6.45136e+07 } } With new code: "exp10f": { "workload-spec2017.wrf (adapted)": { "duration": 3.85549e+08, "iterations": 2.384e+07, "reciprocal-throughput": 15.8391, "latency": 16.5056, "max-throughput": 6.31348e+07, "min-throughput": 6.05857e+07 } } However it fixes all the issues on both: math/test-float-exp10 math/test-float32-exp10 (all the issues wrong results for non default rounding modes). The existing ia64 libm interface uses matherrf and matherrl in addition to matherr for SVID error handling. However, there is no such error handling support for exp10f in ia64 libm. So replacing it with the generic implementation should be fine. Checked on ia64-linux-gnu. --- sysdeps/ia64/fpu/e_exp10f.c | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 sysdeps/ia64/fpu/e_exp10f.c (limited to 'sysdeps/ia64/fpu/e_exp10f.c') diff --git a/sysdeps/ia64/fpu/e_exp10f.c b/sysdeps/ia64/fpu/e_exp10f.c new file mode 100644 index 0000000000..fc9b65da96 --- /dev/null +++ b/sysdeps/ia64/fpu/e_exp10f.c @@ -0,0 +1,5 @@ +/* IA64 does not provided the finite symbol alias. */ +#include +#undef libm_alias_finite +#define libm_alias_finite(a, b) +#include -- cgit v1.2.3