diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2022-05-31 18:04:47 -0300 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2022-06-01 10:47:44 -0300 |
commit | 3323476641432c061f1ff59b6d3dc2ee3593dea7 (patch) | |
tree | 6d315f7cd21758b1155b214ab896c17e59048729 /sysdeps/ieee754 | |
parent | da39afa4ffcc94a97de33222f3cda236daac410e (diff) | |
download | glibc-3323476641432c061f1ff59b6d3dc2ee3593dea7.zip glibc-3323476641432c061f1ff59b6d3dc2ee3593dea7.tar.gz glibc-3323476641432c061f1ff59b6d3dc2ee3593dea7.tar.bz2 |
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.c | 5 |
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 ad54b1c..e157ff0 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; |