[PATCH v2 00/10] LoongArch: Hard Float Support Of Math Functions.
Xiaolin Tang
tangxiaolin@loongson.cn
Mon Nov 7 14:05:13 GMT 2022
Hi, reviewers.
Those patches contains hardware floating-point support of math fuctions
for the LoongArch ISA. LoongArch ISA has many hardware floating-point
instructions that can be used in the corresponding math functions,
and the performance of those newly implemented functions is good.
Changes from v1 to v2:
1. Delete copysign{f/ } to implement it on compiler.
(https://gcc.gnu.org/pipermail/gcc-patches/2022-November/605071.html)
2. Replace __builtin_expect with __glibc_likely or __glibc_unlikely.
3. Add a brief description on each file header.
4. Split one patch to ten patches for similar functions implementation.
instructions functions
fma.{s/d} __fma{f/ }
f{max/min}.{s/d}, fclass.{s/d} __f{max/min}i{mum/mum_mum}{f/ }
f{maxa/mina}.{s/d} __f{max,min}mag{f/ }
f{maxa/mina}.{s/d}, fclass.{s/d __f{max/min}imum{_mag/_mag_num}{f/ }
frint.{s/d} __{ /l/ll}rint{f/ }
fscaleb.{s/d}, fclass.{s/d} __scalbn{f/ }, __ieee754__scalb{f/ }
flogb.{s/d}, fclass.{s/d} __logb{f/ }, __ieee754_ilogb{f/ }
fclass.{s/d} __fpclassify{f/ }, __issignaling{f/ }
__finite{f/ }, __isnan{f/ }, isinff{f/ }
Xiaolin Tang (10):
LoongArch: Hard Float Support for functions {ll/l/ }rint{f/ }.
LoongArch: Use __builtin_{fma, fmaf} to implement function {fma,
fmaf}.
LoongArch: Hard Float Support for float-point classification
functions.
LoongArch: Hard Float Support for functions logb{f/ },
__ieee754_ilogb{f/ }.
LoongArch: Hard Float Support for functions scalb{f/ }, scalbn{f/ }.
LoongArch: Hard Float Support for fmaximum{f/ }, fminimum{f/ }.
LoongArch: Hard Float Support for fmaximum_num{f/ }, fminimum_num{f/
}.
LoongArch: Hard Float Support for fmaxmag{f/ }, fminmag{f/ }.
LoongArch: Hard Float Support for fmaximum_mag{f/ }, fminimum_mag{f/
}.
LoongArch: Hard Float Support for fmaximum_mag_num{f/ },
fminimum_mag_num{f/ }.
sysdeps/loongarch/fpu/e_ilogb.c | 39 ++++++++++++
sysdeps/loongarch/fpu/e_ilogbf.c | 39 ++++++++++++
sysdeps/loongarch/fpu/e_scalb.c | 61 +++++++++++++++++++
sysdeps/loongarch/fpu/e_scalbf.c | 61 +++++++++++++++++++
sysdeps/loongarch/fpu/math-use-builtins-fma.h | 4 ++
sysdeps/loongarch/fpu/s_finite.c | 30 +++++++++
sysdeps/loongarch/fpu/s_finitef.c | 30 +++++++++
sysdeps/loongarch/fpu/s_fmaximum.c | 40 ++++++++++++
sysdeps/loongarch/fpu/s_fmaximum_mag.c | 40 ++++++++++++
sysdeps/loongarch/fpu/s_fmaximum_mag_num.c | 48 +++++++++++++++
sysdeps/loongarch/fpu/s_fmaximum_mag_numf.c | 48 +++++++++++++++
sysdeps/loongarch/fpu/s_fmaximum_magf.c | 40 ++++++++++++
sysdeps/loongarch/fpu/s_fmaximum_num.c | 48 +++++++++++++++
sysdeps/loongarch/fpu/s_fmaximum_numf.c | 49 +++++++++++++++
sysdeps/loongarch/fpu/s_fmaximumf.c | 40 ++++++++++++
sysdeps/loongarch/fpu/s_fmaxmag.c | 29 +++++++++
sysdeps/loongarch/fpu/s_fmaxmagf.c | 29 +++++++++
sysdeps/loongarch/fpu/s_fminimum.c | 40 ++++++++++++
sysdeps/loongarch/fpu/s_fminimum_mag.c | 40 ++++++++++++
sysdeps/loongarch/fpu/s_fminimum_mag_num.c | 48 +++++++++++++++
sysdeps/loongarch/fpu/s_fminimum_mag_numf.c | 48 +++++++++++++++
sysdeps/loongarch/fpu/s_fminimum_magf.c | 40 ++++++++++++
sysdeps/loongarch/fpu/s_fminimum_num.c | 48 +++++++++++++++
sysdeps/loongarch/fpu/s_fminimum_numf.c | 48 +++++++++++++++
sysdeps/loongarch/fpu/s_fminimumf.c | 40 ++++++++++++
sysdeps/loongarch/fpu/s_fminmag.c | 29 +++++++++
sysdeps/loongarch/fpu/s_fminmagf.c | 29 +++++++++
sysdeps/loongarch/fpu/s_fpclassify.c | 38 ++++++++++++
sysdeps/loongarch/fpu/s_fpclassifyf.c | 38 ++++++++++++
sysdeps/loongarch/fpu/s_isinf.c | 30 +++++++++
sysdeps/loongarch/fpu/s_isinff.c | 30 +++++++++
sysdeps/loongarch/fpu/s_isnan.c | 31 ++++++++++
sysdeps/loongarch/fpu/s_isnanf.c | 31 ++++++++++
sysdeps/loongarch/fpu/s_issignaling.c | 29 +++++++++
sysdeps/loongarch/fpu/s_issignalingf.c | 29 +++++++++
sysdeps/loongarch/fpu/s_llrint.c | 29 +++++++++
sysdeps/loongarch/fpu/s_llrintf.c | 29 +++++++++
sysdeps/loongarch/fpu/s_logb.c | 30 +++++++++
sysdeps/loongarch/fpu/s_logbf.c | 30 +++++++++
sysdeps/loongarch/fpu/s_lrint.c | 29 +++++++++
sysdeps/loongarch/fpu/s_lrintf.c | 29 +++++++++
sysdeps/loongarch/fpu/s_rint.c | 29 +++++++++
sysdeps/loongarch/fpu/s_rintf.c | 29 +++++++++
sysdeps/loongarch/fpu/s_scalbn.c | 29 +++++++++
sysdeps/loongarch/fpu/s_scalbnf.c | 29 +++++++++
sysdeps/loongarch/fpu_control.h | 17 ++++++
46 files changed, 1650 insertions(+)
create mode 100644 sysdeps/loongarch/fpu/e_ilogb.c
create mode 100644 sysdeps/loongarch/fpu/e_ilogbf.c
create mode 100644 sysdeps/loongarch/fpu/e_scalb.c
create mode 100644 sysdeps/loongarch/fpu/e_scalbf.c
create mode 100644 sysdeps/loongarch/fpu/math-use-builtins-fma.h
create mode 100644 sysdeps/loongarch/fpu/s_finite.c
create mode 100644 sysdeps/loongarch/fpu/s_finitef.c
create mode 100644 sysdeps/loongarch/fpu/s_fmaximum.c
create mode 100644 sysdeps/loongarch/fpu/s_fmaximum_mag.c
create mode 100644 sysdeps/loongarch/fpu/s_fmaximum_mag_num.c
create mode 100644 sysdeps/loongarch/fpu/s_fmaximum_mag_numf.c
create mode 100644 sysdeps/loongarch/fpu/s_fmaximum_magf.c
create mode 100644 sysdeps/loongarch/fpu/s_fmaximum_num.c
create mode 100644 sysdeps/loongarch/fpu/s_fmaximum_numf.c
create mode 100644 sysdeps/loongarch/fpu/s_fmaximumf.c
create mode 100644 sysdeps/loongarch/fpu/s_fmaxmag.c
create mode 100644 sysdeps/loongarch/fpu/s_fmaxmagf.c
create mode 100644 sysdeps/loongarch/fpu/s_fminimum.c
create mode 100644 sysdeps/loongarch/fpu/s_fminimum_mag.c
create mode 100644 sysdeps/loongarch/fpu/s_fminimum_mag_num.c
create mode 100644 sysdeps/loongarch/fpu/s_fminimum_mag_numf.c
create mode 100644 sysdeps/loongarch/fpu/s_fminimum_magf.c
create mode 100644 sysdeps/loongarch/fpu/s_fminimum_num.c
create mode 100644 sysdeps/loongarch/fpu/s_fminimum_numf.c
create mode 100644 sysdeps/loongarch/fpu/s_fminimumf.c
create mode 100644 sysdeps/loongarch/fpu/s_fminmag.c
create mode 100644 sysdeps/loongarch/fpu/s_fminmagf.c
create mode 100644 sysdeps/loongarch/fpu/s_fpclassify.c
create mode 100644 sysdeps/loongarch/fpu/s_fpclassifyf.c
create mode 100644 sysdeps/loongarch/fpu/s_isinf.c
create mode 100644 sysdeps/loongarch/fpu/s_isinff.c
create mode 100644 sysdeps/loongarch/fpu/s_isnan.c
create mode 100644 sysdeps/loongarch/fpu/s_isnanf.c
create mode 100644 sysdeps/loongarch/fpu/s_issignaling.c
create mode 100644 sysdeps/loongarch/fpu/s_issignalingf.c
create mode 100644 sysdeps/loongarch/fpu/s_llrint.c
create mode 100644 sysdeps/loongarch/fpu/s_llrintf.c
create mode 100644 sysdeps/loongarch/fpu/s_logb.c
create mode 100644 sysdeps/loongarch/fpu/s_logbf.c
create mode 100644 sysdeps/loongarch/fpu/s_lrint.c
create mode 100644 sysdeps/loongarch/fpu/s_lrintf.c
create mode 100644 sysdeps/loongarch/fpu/s_rint.c
create mode 100644 sysdeps/loongarch/fpu/s_rintf.c
create mode 100644 sysdeps/loongarch/fpu/s_scalbn.c
create mode 100644 sysdeps/loongarch/fpu/s_scalbnf.c
--
2.36.0
More information about the Libc-alpha
mailing list