aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog73
-rw-r--r--NEWS3
-rw-r--r--manual/arith.texi19
-rw-r--r--math/Makefile4
-rw-r--r--math/Versions5
-rw-r--r--math/auto-libm-test-in95
-rw-r--r--math/auto-libm-test-out-narrow-sub23487
-rw-r--r--math/bits/mathcalls-narrow.h3
-rw-r--r--math/gen-auto-libm-tests.c1
-rw-r--r--math/libm-test-narrow-sub.inc179
-rw-r--r--math/math-narrow.h58
-rw-r--r--sysdeps/i386/fpu/s_f32xsubf64.c41
-rw-r--r--sysdeps/ieee754/dbl-64/s_f32xsubf64.c30
-rw-r--r--sysdeps/ieee754/dbl-64/s_fsub.c34
-rw-r--r--sysdeps/ieee754/float128/float128_private.h2
-rw-r--r--sysdeps/ieee754/float128/s_f32subf128.c6
-rw-r--r--sysdeps/ieee754/float128/s_f64subf128.c10
-rw-r--r--sysdeps/ieee754/float128/s_f64xsubf128.c2
-rw-r--r--sysdeps/ieee754/ldbl-128/s_dsubl.c37
-rw-r--r--sysdeps/ieee754/ldbl-128/s_f64xsubf128.c38
-rw-r--r--sysdeps/ieee754/ldbl-128/s_fsubl.c33
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/s_dsubl.c27
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/s_fsubl.c27
-rw-r--r--sysdeps/ieee754/ldbl-96/s_dsubl.c33
-rw-r--r--sysdeps/ieee754/ldbl-96/s_fsubl.c31
-rw-r--r--sysdeps/ieee754/ldbl-opt/Makefile5
-rw-r--r--sysdeps/ieee754/ldbl-opt/Versions2
-rw-r--r--sysdeps/ieee754/ldbl-opt/nldbl-compat.h1
-rw-r--r--sysdeps/ieee754/ldbl-opt/nldbl-dsub.c28
-rw-r--r--sysdeps/ieee754/ldbl-opt/nldbl-fsub.c28
-rw-r--r--sysdeps/ieee754/soft-fp/s_dsubl.c59
-rw-r--r--sysdeps/ieee754/soft-fp/s_fsub.c56
-rw-r--r--sysdeps/ieee754/soft-fp/s_fsubl.c55
-rw-r--r--sysdeps/mach/hurd/i386/libm.abilist13
-rw-r--r--sysdeps/powerpc/fpu/libm-test-ulps4
-rw-r--r--sysdeps/unix/sysv/linux/aarch64/libm.abilist13
-rw-r--r--sysdeps/unix/sysv/linux/alpha/libm.abilist14
-rw-r--r--sysdeps/unix/sysv/linux/arm/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/hppa/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/i386/libm.abilist13
-rw-r--r--sysdeps/unix/sysv/linux/ia64/libm.abilist13
-rw-r--r--sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips32/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/libm.abilist13
-rw-r--r--sysdeps/unix/sysv/linux/nios2/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist7
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist7
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist14
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist7
-rw-r--r--sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist13
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist14
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist14
-rw-r--r--sysdeps/unix/sysv/linux/sh/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist14
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist13
-rw-r--r--sysdeps/unix/sysv/linux/tile/tilegx32/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/tile/tilegx64/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/64/libm.abilist13
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist13
61 files changed, 24780 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 72dd269a5c..08488fe2b2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,76 @@
+2018-03-20 Joseph Myers <joseph@codesourcery.com>
+
+ * math/Makefile (libm-narrow-fns): Add sub.
+ (libm-test-funcs-narrow): Likewise.
+ * math/Versions (GLIBC_2.28): Add narrowing subtract functions.
+ * math/bits/mathcalls-narrow.h (sub): Use __MATHCALL_NARROW.
+ * math/gen-auto-libm-tests.c (test_functions): Add sub.
+ * math/math-narrow.h (CHECK_NARROW_SUB): New macro.
+ (NARROW_SUB_ROUND_TO_ODD): Likewise.
+ (NARROW_SUB_TRIVIAL): Likewise.
+ * sysdeps/ieee754/float128/float128_private.h (__fsubl): New
+ macro.
+ (__dsubl): Likewise.
+ * sysdeps/ieee754/ldbl-opt/Makefile (libnldbl-calls): Add fsub and
+ dsub.
+ (CFLAGS-nldbl-dsub.c): New variable.
+ (CFLAGS-nldbl-fsub.c): Likewise.
+ * sysdeps/ieee754/ldbl-opt/Versions (GLIBC_2.28): Add
+ __nldbl_dsubl.
+ * sysdeps/ieee754/ldbl-opt/nldbl-compat.h (__nldbl_dsubl): New
+ prototype.
+ * manual/arith.texi (Misc FP Arithmetic): Document fsub, fsubl,
+ dsubl, fMsubfN, fMsubfNx, fMxsubfN and fMxsubfNx.
+ * math/auto-libm-test-in: Add tests of sub.
+ * math/auto-libm-test-out-narrow-sub: New generated file.
+ * math/libm-test-narrow-sub.inc: New file.
+ * sysdeps/i386/fpu/s_f32xsubf64.c: Likewise.
+ * sysdeps/ieee754/dbl-64/s_f32xsubf64.c: Likewise.
+ * sysdeps/ieee754/dbl-64/s_fsub.c: Likewise.
+ * sysdeps/ieee754/float128/s_f32subf128.c: Likewise.
+ * sysdeps/ieee754/float128/s_f64subf128.c: Likewise.
+ * sysdeps/ieee754/float128/s_f64xsubf128.c: Likewise.
+ * sysdeps/ieee754/ldbl-128/s_dsubl.c: Likewise.
+ * sysdeps/ieee754/ldbl-128/s_f64xsubf128.c: Likewise.
+ * sysdeps/ieee754/ldbl-128/s_fsubl.c: Likewise.
+ * sysdeps/ieee754/ldbl-128ibm/s_dsubl.c: Likewise.
+ * sysdeps/ieee754/ldbl-128ibm/s_fsubl.c: Likewise.
+ * sysdeps/ieee754/ldbl-96/s_dsubl.c: Likewise.
+ * sysdeps/ieee754/ldbl-96/s_fsubl.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/nldbl-dsub.c: Likewise.
+ * sysdeps/ieee754/ldbl-opt/nldbl-fsub.c: Likewise.
+ * sysdeps/ieee754/soft-fp/s_dsubl.c: Likewise.
+ * sysdeps/ieee754/soft-fp/s_fsub.c: Likewise.
+ * sysdeps/ieee754/soft-fp/s_fsubl.c: Likewise.
+ * sysdeps/powerpc/fpu/libm-test-ulps: Update.
+ * sysdeps/mach/hurd/i386/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/aarch64/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/alpha/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/arm/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/hppa/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/i386/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/ia64/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/microblaze/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/mips/mips32/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/mips/mips64/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/nios2/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/sh/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/tile/tilegx32/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/tile/tilegx64/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/64/libm.abilist: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist: Likewise.
+
2018-03-19 Joseph Myers <joseph@codesourcery.com>
[BZ #20079]
diff --git a/NEWS b/NEWS
index 5c0a3c6780..9fb4c7a3f6 100644
--- a/NEWS
+++ b/NEWS
@@ -15,6 +15,9 @@ Major new features:
- fadd, faddl, daddl and corresponding fMaddfN, fMaddfNx, fMxaddfN and
fMxaddfNx functions.
+ - fsub, fsubl, dsubl and corresponding fMsubfN, fMsubfNx, fMxsubfN and
+ fMxsubfNx functions.
+
* Nominative and genitive month names are now supported for the Catalan and
Czech languages. The Catalan and Greek languages now support abbreviated
alternative month names.
diff --git a/manual/arith.texi b/manual/arith.texi
index 39f2a5da58..116788ba9a 100644
--- a/manual/arith.texi
+++ b/manual/arith.texi
@@ -2210,6 +2210,25 @@ function without any intermediate rounding to the type of the
arguments.
@end deftypefun
+@deftypefun float fsub (double @var{x}, double @var{y})
+@deftypefunx float fsubl (long double @var{x}, long double @var{y})
+@deftypefunx double dsubl (long double @var{x}, long double @var{y})
+@deftypefunx _FloatM fMsubfN (_Float@var{N} @var{x}, _Float@var{N} @var{y})
+@deftypefunx _FloatM fMsubfNx (_Float@var{N}x @var{x}, _Float@var{N}x @var{y})
+@deftypefunx _FloatMx fMxsubfN (_Float@var{N} @var{x}, _Float@var{N} @var{y})
+@deftypefunx _FloatMx fMxsubfNx (_Float@var{N}x @var{x}, _Float@var{N}x @var{y})
+@standards{TS 18661-1:2014, math.h}
+@standardsx{fMsubfN, TS 18661-3:2015, math.h}
+@standardsx{fMsubfNx, TS 18661-3:2015, math.h}
+@standardsx{fMxsubfN, TS 18661-3:2015, math.h}
+@standardsx{fMxsubfNx, TS 18661-3:2015, math.h}
+@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
+These functions, from TS 18661-1:2014 and TS 18661-3:2015, return
+@math{@var{x} - @var{y}}, rounded once to the return type of the
+function without any intermediate rounding to the type of the
+arguments.
+@end deftypefun
+
@node Complex Numbers
@section Complex Numbers
@pindex complex.h
diff --git a/math/Makefile b/math/Makefile
index 12dcedd7f7..7cc0d16b0c 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -89,7 +89,7 @@ libm-compat-calls = \
w_lgammaF_r_compat w_lgammaF_compat2 w_expF_compat \
w_lgamma_compatF k_standardF
-libm-narrow-fns = add
+libm-narrow-fns = add sub
libm-narrow-types-basic = s_fF s_f32xFf64
libm-narrow-types-ldouble-yes = s_fFl s_dFl
libm-narrow-types-float128-yes = s_f32Ff128 s_f64Ff128 s_f64xFf128
@@ -284,7 +284,7 @@ libm-test-funcs-noauto = canonicalize ceil cimag conj copysign cproj creal \
scalbln scalbn setpayload setpayloadsig signbit \
significand totalorder totalordermag trunc ufromfp \
ufromfpx
-libm-test-funcs-narrow = add
+libm-test-funcs-narrow = add sub
libm-test-funcs-all = $(libm-test-funcs-auto) $(libm-test-funcs-noauto)
libm-test-c-auto = $(foreach f,$(libm-test-funcs-auto),libm-test-$(f).c)
libm-test-c-noauto = $(foreach f,$(libm-test-funcs-noauto),libm-test-$(f).c)
diff --git a/math/Versions b/math/Versions
index 9191c0f648..87c7ff601c 100644
--- a/math/Versions
+++ b/math/Versions
@@ -555,9 +555,14 @@ libm {
# Functions not involving _Float64x or _Float128, for all configurations.
fadd; faddl; daddl;
f32addf32x; f32addf64; f32xaddf64;
+ fsub; fsubl; dsubl;
+ f32subf32x; f32subf64; f32xsubf64;
# Functions involving _Float64x or _Float128, for some configurations.
f32addf64x; f32a