aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/ieee754
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2022-05-31 18:04:47 -0300
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2022-06-01 10:47:44 -0300
commit3323476641432c061f1ff59b6d3dc2ee3593dea7 (patch)
tree6d315f7cd21758b1155b214ab896c17e59048729 /sysdeps/ieee754
parentda39afa4ffcc94a97de33222f3cda236daac410e (diff)
downloadglibc-3323476641432c061f1ff59b6d3dc2ee3593dea7.tar
glibc-3323476641432c061f1ff59b6d3dc2ee3593dea7.tar.gz
glibc-3323476641432c061f1ff59b6d3dc2ee3593dea7.tar.bz2
glibc-3323476641432c061f1ff59b6d3dc2ee3593dea7.zip
i686: Use generic sinf implementation for SSE2 version
Performance seems to be similar (gcc 11.2.1 on a Ryzen 9 5900X), the generic algorithm shows slight better performance for the 'workload-huge.wrf' input set. * s_sinf-sse2.S: "sinf": { "": { "duration": 3.72405e+09, "iterations": 2.38374e+08, "max": 63.973, "min": 11.211, "mean": 15.6227 }, "workload-random.wrf": { "duration": 3.76923e+09, "iterations": 8.4e+07, "reciprocal-throughput": 17.6355, "latency": 72.108, "max-throughput": 5.67037e+07, "min-throughput": 1.38681e+07 }, "workload-huge.wrf": { "duration": 3.76943e+09, "iterations": 6e+07, "reciprocal-throughput": 29.3493, "latency": 96.2985, "max-throughput": 3.40724e+07, "min-throughput": 1.03844e+07 } } * generic s_sinf.c: "sinf": { "": { "duration": 3.70989e+09, "iterations": 2.18025e+08, "max": 69.782, "min": 11.1, "mean": 17.0159 }, "workload-random.wrf": { "duration": 3.77213e+09, "iterations": 9.6e+07, "reciprocal-throughput": 17.5402, "latency": 61.0459, "max-throughput": 5.70119e+07, "min-throughput": 1.63811e+07 }, "workload-huge.wrf": { "duration": 3.81576e+09, "iterations": 5.6e+07, "reciprocal-throughput": 38.2111, "latency": 98.0659, "max-throughput": 2.61704e+07, "min-throughput": 1.01972e+07 } } Checked on i686-linux-gnu. Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
Diffstat (limited to 'sysdeps/ieee754')
-rw-r--r--sysdeps/ieee754/flt-32/s_sinf.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/sysdeps/ieee754/flt-32/s_sinf.c b/sysdeps/ieee754/flt-32/s_sinf.c
index ad54b1c7e6..e157ff071d 100644
--- a/sysdeps/ieee754/flt-32/s_sinf.c
+++ b/sysdeps/ieee754/flt-32/s_sinf.c
@@ -23,6 +23,10 @@
#include "math_config.h"
#include "s_sincosf.h"
+#ifndef SECTION
+# define SECTION
+#endif
+
#ifndef SINF
# define SINF_FUNC __sinf
#else
@@ -35,6 +39,7 @@
arithmetic.
*/
float
+SECTION
SINF_FUNC (float y)
{
double x = y;