aboutsummaryrefslogtreecommitdiff
path: root/sysdeps
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/i386/i686/fpu/multiarch/libm-test-ulps18
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/Versions3
-rw-r--r--sysdeps/ieee754/ldbl-opt/Makefile2
-rw-r--r--sysdeps/ieee754/ldbl-opt/nldbl-rsqrt.c8
-rw-r--r--sysdeps/mach/hurd/i386/libm.abilist8
-rw-r--r--sysdeps/mach/hurd/x86_64/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/aarch64/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/alpha/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/arc/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/arm/be/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/arm/le/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/csky/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/hppa/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/i386/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist8
-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/be/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/le/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips32/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/or1k/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist9
-rw-r--r--sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/sh/be/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/sh/le/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/tst-skeleton-affinity.c5
-rw-r--r--sysdeps/unix/sysv/linux/tst-skeleton-thread-affinity.c36
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/64/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist8
-rw-r--r--sysdeps/x86_64/fpu/libm-test-ulps24
39 files changed, 318 insertions, 3 deletions
diff --git a/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps b/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
index b99c502..c10ddd2 100644
--- a/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
+++ b/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
@@ -1627,6 +1627,24 @@ float: 1
float128: 2
ldouble: 4
+Function: "rsqrt":
+float128: 1
+ldouble: 1
+
+Function: "rsqrt_downward":
+double: 1
+float128: 2
+ldouble: 2
+
+Function: "rsqrt_towardzero":
+double: 1
+float128: 2
+ldouble: 2
+
+Function: "rsqrt_upward":
+float128: 2
+ldouble: 2
+
Function: "sin":
double: 1
float: 1
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/Versions b/sysdeps/ieee754/ldbl-128ibm-compat/Versions
index 544e777..d535a2d 100644
--- a/sysdeps/ieee754/ldbl-128ibm-compat/Versions
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/Versions
@@ -153,6 +153,9 @@ libm {
__sinpiieee128;
__tanpiieee128;
}
+ GLIBC_2.42 {
+ __rsqrtieee128;
+ }
}
libc {
LDBL_IBM128_VERSION {
diff --git a/sysdeps/ieee754/ldbl-opt/Makefile b/sysdeps/ieee754/ldbl-opt/Makefile
index 1b4f4a2..dbc1ec4 100644
--- a/sysdeps/ieee754/ldbl-opt/Makefile
+++ b/sysdeps/ieee754/ldbl-opt/Makefile
@@ -180,6 +180,7 @@ libnldbl-calls = \
rint \
round \
roundeven \
+ rsqrt \
scalb \
scalbln \
scalbn \
@@ -379,6 +380,7 @@ CFLAGS-nldbl-remquo.c = -fno-builtin-remquol
CFLAGS-nldbl-rint.c = -fno-builtin-rintl
CFLAGS-nldbl-round.c = -fno-builtin-roundl
CFLAGS-nldbl-roundeven.c = -fno-builtin-roundevenl
+CFLAGS-nldbl-rsqrt.c = -fno-builtin-rsqrtl
CFLAGS-nldbl-scalb.c = -fno-builtin-scalbl
CFLAGS-nldbl-scalbln.c = -fno-builtin-scalblnl
CFLAGS-nldbl-scalbn.c = -fno-builtin-scalbnl
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-rsqrt.c b/sysdeps/ieee754/ldbl-opt/nldbl-rsqrt.c
new file mode 100644
index 0000000..cb1d91e
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-rsqrt.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+rsqrtl (double x)
+{
+ return rsqrt (x);
+}
diff --git a/sysdeps/mach/hurd/i386/libm.abilist b/sysdeps/mach/hurd/i386/libm.abilist
index a248abb..9e19a56 100644
--- a/sysdeps/mach/hurd/i386/libm.abilist
+++ b/sysdeps/mach/hurd/i386/libm.abilist
@@ -1277,3 +1277,11 @@ GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpif64x F
GLIBC_2.41 tanpil F
+GLIBC_2.42 rsqrt F
+GLIBC_2.42 rsqrtf F
+GLIBC_2.42 rsqrtf128 F
+GLIBC_2.42 rsqrtf32 F
+GLIBC_2.42 rsqrtf32x F
+GLIBC_2.42 rsqrtf64 F
+GLIBC_2.42 rsqrtf64x F
+GLIBC_2.42 rsqrtl F
diff --git a/sysdeps/mach/hurd/x86_64/libm.abilist b/sysdeps/mach/hurd/x86_64/libm.abilist
index 468962e..56b5025 100644
--- a/sysdeps/mach/hurd/x86_64/libm.abilist
+++ b/sysdeps/mach/hurd/x86_64/libm.abilist
@@ -1134,3 +1134,11 @@ GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpif64x F
GLIBC_2.41 tanpil F
+GLIBC_2.42 rsqrt F
+GLIBC_2.42 rsqrtf F
+GLIBC_2.42 rsqrtf128 F
+GLIBC_2.42 rsqrtf32 F
+GLIBC_2.42 rsqrtf32x F
+GLIBC_2.42 rsqrtf64 F
+GLIBC_2.42 rsqrtf64x F
+GLIBC_2.42 rsqrtl F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libm.abilist b/sysdeps/unix/sysv/linux/aarch64/libm.abilist
index 88a81da..de093b2 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libm.abilist
@@ -1245,3 +1245,11 @@ GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpif64x F
GLIBC_2.41 tanpil F
+GLIBC_2.42 rsqrt F
+GLIBC_2.42 rsqrtf F
+GLIBC_2.42 rsqrtf128 F
+GLIBC_2.42 rsqrtf32 F
+GLIBC_2.42 rsqrtf32x F
+GLIBC_2.42 rsqrtf64 F
+GLIBC_2.42 rsqrtf64x F
+GLIBC_2.42 rsqrtl F
diff --git a/sysdeps/unix/sysv/linux/alpha/libm.abilist b/sysdeps/unix/sysv/linux/alpha/libm.abilist
index 007fd86..ead3d73 100644
--- a/sysdeps/unix/sysv/linux/alpha/libm.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libm.abilist
@@ -1404,3 +1404,11 @@ GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpif64x F
GLIBC_2.41 tanpil F
+GLIBC_2.42 rsqrt F
+GLIBC_2.42 rsqrtf F
+GLIBC_2.42 rsqrtf128 F
+GLIBC_2.42 rsqrtf32 F
+GLIBC_2.42 rsqrtf32x F
+GLIBC_2.42 rsqrtf64 F
+GLIBC_2.42 rsqrtf64x F
+GLIBC_2.42 rsqrtl F
diff --git a/sysdeps/unix/sysv/linux/arc/libm.abilist b/sysdeps/unix/sysv/linux/arc/libm.abilist
index 0258cc7..e31cd32 100644
--- a/sysdeps/unix/sysv/linux/arc/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libm.abilist
@@ -829,3 +829,9 @@ GLIBC_2.41 tanpif32 F
GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpil F
+GLIBC_2.42 rsqrt F
+GLIBC_2.42 rsqrtf F
+GLIBC_2.42 rsqrtf32 F
+GLIBC_2.42 rsqrtf32x F
+GLIBC_2.42 rsqrtf64 F
+GLIBC_2.42 rsqrtl F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libm.abilist b/sysdeps/unix/sysv/linux/arm/be/libm.abilist
index d1531f7..cf32109 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libm.abilist
@@ -920,3 +920,9 @@ GLIBC_2.41 tanpif32 F
GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpil F
+GLIBC_2.42 rsqrt F
+GLIBC_2.42 rsqrtf F
+GLIBC_2.42 rsqrtf32 F
+GLIBC_2.42 rsqrtf32x F
+GLIBC_2.42 rsqrtf64 F
+GLIBC_2.42 rsqrtl F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libm.abilist b/sysdeps/unix/sysv/linux/arm/le/libm.abilist
index d1531f7..cf32109 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libm.abilist
@@ -920,3 +920,9 @@ GLIBC_2.41 tanpif32 F
GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpil F
+GLIBC_2.42 rsqrt F
+GLIBC_2.42 rsqrtf F
+GLIBC_2.42 rsqrtf32 F
+GLIBC_2.42 rsqrtf32x F
+GLIBC_2.42 rsqrtf64 F
+GLIBC_2.42 rsqrtl F
diff --git a/sysdeps/unix/sysv/linux/csky/libm.abilist b/sysdeps/unix/sysv/linux/csky/libm.abilist
index e55f6bf..55f6bfc 100644
--- a/sysdeps/unix/sysv/linux/csky/libm.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libm.abilist
@@ -895,3 +895,9 @@ GLIBC_2.41 tanpif32 F
GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpil F
+GLIBC_2.42 rsqrt F
+GLIBC_2.42 rsqrtf F
+GLIBC_2.42 rsqrtf32 F
+GLIBC_2.42 rsqrtf32x F
+GLIBC_2.42 rsqrtf64 F
+GLIBC_2.42 rsqrtl F
diff --git a/sysdeps/unix/sysv/linux/hppa/libm.abilist b/sysdeps/unix/sysv/linux/hppa/libm.abilist
index 4699d52..e6aee77 100644
--- a/sysdeps/unix/sysv/linux/hppa/libm.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libm.abilist
@@ -920,3 +920,9 @@ GLIBC_2.41 tanpif32 F
GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpil F
+GLIBC_2.42 rsqrt F
+GLIBC_2.42 rsqrtf F
+GLIBC_2.42 rsqrtf32 F
+GLIBC_2.42 rsqrtf32x F
+GLIBC_2.42 rsqrtf64 F
+GLIBC_2.42 rsqrtl F
diff --git a/sysdeps/unix/sysv/linux/i386/libm.abilist b/sysdeps/unix/sysv/linux/i386/libm.abilist
index d1ce0f7..fdf5178 100644
--- a/sysdeps/unix/sysv/linux/i386/libm.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libm.abilist
@@ -1284,3 +1284,11 @@ GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpif64x F
GLIBC_2.41 tanpil F
+GLIBC_2.42 rsqrt F
+GLIBC_2.42 rsqrtf F
+GLIBC_2.42 rsqrtf128 F
+GLIBC_2.42 rsqrtf32 F
+GLIBC_2.42 rsqrtf32x F
+GLIBC_2.42 rsqrtf64 F
+GLIBC_2.42 rsqrtf64x F
+GLIBC_2.42 rsqrtl F
diff --git a/sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist b/sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist
index bcfa004..deb97cc 100644
--- a/sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist
@@ -1124,3 +1124,11 @@ GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpif64x F
GLIBC_2.41 tanpil F
+GLIBC_2.42 rsqrt F
+GLIBC_2.42 rsqrtf F
+GLIBC_2.42 rsqrtf128 F
+GLIBC_2.42 rsqrtf32 F
+GLIBC_2.42 rsqrtf32x F
+GLIBC_2.42 rsqrtf64 F
+GLIBC_2.42 rsqrtf64x F
+GLIBC_2.42 rsqrtl F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
index d1531f7..cf32109 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
@@ -920,3 +920,9 @@ GLIBC_2.41 tanpif32 F
GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpil F
+GLIBC_2.42 rsqrt F
+GLIBC_2.42 rsqrtf F
+GLIBC_2.42 rsqrtf32 F
+GLIBC_2.42 rsqrtf32x F
+GLIBC_2.42 rsqrtf64 F
+GLIBC_2.42 rsqrtl F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
index c3c23fd..83d4a2e 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
@@ -956,3 +956,9 @@ GLIBC_2.41 tanpif32 F
GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpil F
+GLIBC_2.42 rsqrt F
+GLIBC_2.42 rsqrtf F
+GLIBC_2.42 rsqrtf32 F
+GLIBC_2.42 rsqrtf32x F
+GLIBC_2.42 rsqrtf64 F
+GLIBC_2.42 rsqrtl F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
index 2f6a2e7..1553be0 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
@@ -920,3 +920,9 @@ GLIBC_2.41 tanpif32 F
GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpil F
+GLIBC_2.42 rsqrt F
+GLIBC_2.42 rsqrtf F
+GLIBC_2.42 rsqrtf32 F
+GLIBC_2.42 rsqrtf32x F
+GLIBC_2.42 rsqrtf64 F
+GLIBC_2.42 rsqrtl F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
index 2f6a2e7..1553be0 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
@@ -920,3 +920,9 @@ GLIBC_2.41 tanpif32 F
GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpil F
+GLIBC_2.42 rsqrt F
+GLIBC_2.42 rsqrtf F
+GLIBC_2.42 rsqrtf32 F
+GLIBC_2.42 rsqrtf32x F
+GLIBC_2.42 rsqrtf64 F
+GLIBC_2.42 rsqrtl F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
index 85173a7..fa0a957 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
@@ -920,3 +920,9 @@ GLIBC_2.41 tanpif32 F
GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpil F
+GLIBC_2.42 rsqrt F
+GLIBC_2.42 rsqrtf F
+GLIBC_2.42 rsqrtf32 F
+GLIBC_2.42 rsqrtf32x F
+GLIBC_2.42 rsqrtf64 F
+GLIBC_2.42 rsqrtl F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
index 880f8c4..0f67bb4 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
@@ -1245,3 +1245,11 @@ GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpif64x F
GLIBC_2.41 tanpil F
+GLIBC_2.42 rsqrt F
+GLIBC_2.42 rsqrtf F
+GLIBC_2.42 rsqrtf128 F
+GLIBC_2.42 rsqrtf32 F
+GLIBC_2.42 rsqrtf32x F
+GLIBC_2.42 rsqrtf64 F
+GLIBC_2.42 rsqrtf64x F
+GLIBC_2.42 rsqrtl F
diff --git a/sysdeps/unix/sysv/linux/or1k/libm.abilist b/sysdeps/unix/sysv/linux/or1k/libm.abilist
index d9e71b8..1af1794 100644
--- a/sysdeps/unix/sysv/linux/or1k/libm.abilist
+++ b/sysdeps/unix/sysv/linux/or1k/libm.abilist
@@ -829,3 +829,9 @@ GLIBC_2.41 tanpif32 F
GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpil F
+GLIBC_2.42 rsqrt F
+GLIBC_2.42 rsqrtf F
+GLIBC_2.42 rsqrtf32 F
+GLIBC_2.42 rsqrtf32x F
+GLIBC_2.42 rsqrtf64 F
+GLIBC_2.42 rsqrtl F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
index 43d578d..58a3997 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
@@ -1067,3 +1067,9 @@ GLIBC_2.41 tanpif32 F
GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpil F
+GLIBC_2.42 rsqrt F
+GLIBC_2.42 rsqrtf F
+GLIBC_2.42 rsqrtf32 F
+GLIBC_2.42 rsqrtf32x F
+GLIBC_2.42 rsqrtf64 F
+GLIBC_2.42 rsqrtl F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
index 64a9ea1..48b7eee 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
@@ -1066,3 +1066,9 @@ GLIBC_2.41 tanpif32 F
GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpil F
+GLIBC_2.42 rsqrt F
+GLIBC_2.42 rsqrtf F
+GLIBC_2.42 rsqrtf32 F
+GLIBC_2.42 rsqrtf32x F
+GLIBC_2.42 rsqrtf64 F
+GLIBC_2.42 rsqrtl F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
index d45783a..a6666c2 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
@@ -1060,3 +1060,9 @@ GLIBC_2.41 tanpif32 F
GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpil F
+GLIBC_2.42 rsqrt F
+GLIBC_2.42 rsqrtf F
+GLIBC_2.42 rsqrtf32 F
+GLIBC_2.42 rsqrtf32x F
+GLIBC_2.42 rsqrtf64 F
+GLIBC_2.42 rsqrtl F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
index 44ca2f2..4bbc7d2 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
@@ -1429,3 +1429,12 @@ GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpif64x F
GLIBC_2.41 tanpil F
+GLIBC_2.42 __rsqrtieee128 F
+GLIBC_2.42 rsqrt F
+GLIBC_2.42 rsqrtf F
+GLIBC_2.42 rsqrtf128 F
+GLIBC_2.42 rsqrtf32 F
+GLIBC_2.42 rsqrtf32x F
+GLIBC_2.42 rsqrtf64 F
+GLIBC_2.42 rsqrtf64x F
+GLIBC_2.42 rsqrtl F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist
index ff187f3..9b905e4 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist
@@ -1124,3 +1124,11 @@ GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpif64x F
GLIBC_2.41 tanpil F
+GLIBC_2.42 rsqrt F
+GLIBC_2.42 rsqrtf F
+GLIBC_2.42 rsqrtf128 F
+GLIBC_2.42 rsqrtf32 F
+GLIBC_2.42 rsqrtf32x F
+GLIBC_2.42 rsqrtf64 F
+GLIBC_2.42 rsqrtf64x F
+GLIBC_2.42 rsqrtl F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist
index 2f0923d..7dd3f42 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist
@@ -1221,3 +1221,11 @@ GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpif64x F
GLIBC_2.41 tanpil F
+GLIBC_2.42 rsqrt F
+GLIBC_2.42 rsqrtf F
+GLIBC_2.42 rsqrtf128 F
+GLIBC_2.42 rsqrtf32 F
+GLIBC_2.42 rsqrtf32x F
+GLIBC_2.42 rsqrtf64 F
+GLIBC_2.42 rsqrtf64x F
+GLIBC_2.42 rsqrtl F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
index bc621c2..d193e5a 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
@@ -1348,3 +1348,11 @@ GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpif64x F
GLIBC_2.41 tanpil F
+GLIBC_2.42 rsqrt F
+GLIBC_2.42 rsqrtf F
+GLIBC_2.42 rsqrtf128 F
+GLIBC_2.42 rsqrtf32 F
+GLIBC_2.42 rsqrtf32x F
+GLIBC_2.42 rsqrtf64 F
+GLIBC_2.42 rsqrtf64x F
+GLIBC_2.42 rsqrtl F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
index 8de3065..3f6c019 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
@@ -1348,3 +1348,11 @@ GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpif64x F
GLIBC_2.41 tanpil F
+GLIBC_2.42 rsqrt F
+GLIBC_2.42 rsqrtf F
+GLIBC_2.42 rsqrtf128 F
+GLIBC_2.42 rsqrtf32 F
+GLIBC_2.42 rsqrtf32x F
+GLIBC_2.42 rsqrtf64 F
+GLIBC_2.42 rsqrtf64x F
+GLIBC_2.42 rsqrtl F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libm.abilist b/sysdeps/unix/sysv/linux/sh/be/libm.abilist
index 6df6a8d..9e95777 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libm.abilist
@@ -920,3 +920,9 @@ GLIBC_2.41 tanpif32 F
GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpil F
+GLIBC_2.42 rsqrt F
+GLIBC_2.42 rsqrtf F
+GLIBC_2.42 rsqrtf32 F
+GLIBC_2.42 rsqrtf32x F
+GLIBC_2.42 rsqrtf64 F
+GLIBC_2.42 rsqrtl F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libm.abilist b/sysdeps/unix/sysv/linux/sh/le/libm.abilist
index 6df6a8d..9e95777 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libm.abilist
@@ -920,3 +920,9 @@ GLIBC_2.41 tanpif32 F
GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpil F
+GLIBC_2.42 rsqrt F
+GLIBC_2.42 rsqrtf F
+GLIBC_2.42 rsqrtf32 F
+GLIBC_2.42 rsqrtf32x F
+GLIBC_2.42 rsqrtf64 F
+GLIBC_2.42 rsqrtl F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
index 991d96b..f0112eb 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
@@ -1355,3 +1355,11 @@ GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpif64x F
GLIBC_2.41 tanpil F
+GLIBC_2.42 rsqrt F
+GLIBC_2.42 rsqrtf F
+GLIBC_2.42 rsqrtf128 F
+GLIBC_2.42 rsqrtf32 F
+GLIBC_2.42 rsqrtf32x F
+GLIBC_2.42 rsqrtf64 F
+GLIBC_2.42 rsqrtf64x F
+GLIBC_2.42 rsqrtl F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
index 8600571..ea7bb14 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
@@ -1245,3 +1245,11 @@ GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpif64x F
GLIBC_2.41 tanpil F
+GLIBC_2.42 rsqrt F
+GLIBC_2.42 rsqrtf F
+GLIBC_2.42 rsqrtf128 F
+GLIBC_2.42 rsqrtf32 F
+GLIBC_2.42 rsqrtf32x F
+GLIBC_2.42 rsqrtf64 F
+GLIBC_2.42 rsqrtf64x F
+GLIBC_2.42 rsqrtl F
diff --git a/sysdeps/unix/sysv/linux/tst-skeleton-affinity.c b/sysdeps/unix/sysv/linux/tst-skeleton-affinity.c
index c2bb80d..cf97c3f 100644
--- a/sysdeps/unix/sysv/linux/tst-skeleton-affinity.c
+++ b/sysdeps/unix/sysv/linux/tst-skeleton-affinity.c
@@ -38,6 +38,7 @@
#include <sched.h>
#include <stdbool.h>
#include <stdio.h>
+#include <support/test-driver.h>
/* CPU set configuration determined. Can be used from early_test. */
struct conf
@@ -253,12 +254,12 @@ do_test (void)
if (getaffinity (sizeof (set), &set) < 0 && errno == ENOSYS)
{
puts ("warning: getaffinity not supported, test cannot run");
- return 0;
+ return EXIT_UNSUPPORTED;
}
if (sched_getcpu () < 0 && errno == ENOSYS)
{
puts ("warning: sched_getcpu not supported, test cannot run");
- return 0;
+ return EXIT_UNSUPPORTED;
}
}
diff --git a/sysdeps/unix/sysv/linux/tst-skeleton-thread-affinity.c b/sysdeps/unix/sysv/linux/tst-skeleton-thread-affinity.c
index 2519ba4..cf43340 100644
--- a/sysdeps/unix/sysv/linux/tst-skeleton-thread-affinity.c
+++ b/sysdeps/unix/sysv/linux/tst-skeleton-thread-affinity.c
@@ -45,10 +45,14 @@ static int still_running;
/* 0 if no scheduling failures, 1 if failures are encountered. */
static int failed;
+/* Used to synchronize the threads. */
+static pthread_barrier_t barrier;
+
static void *
thread_burn_one_cpu (void *closure)
{
int cpu = (uintptr_t) closure;
+ xpthread_barrier_wait (&barrier);
while (__atomic_load_n (&still_running, __ATOMIC_RELAXED) == 0)
{
int current = sched_getcpu ();
@@ -61,6 +65,11 @@ thread_burn_one_cpu (void *closure)
__atomic_store_n (&still_running, 1, __ATOMIC_RELAXED);
}
}
+ if (sched_yield () != 0)
+ {
+ printf ("error: sched_yield() failed for cpu %d\n", cpu);
+ __atomic_store_n (&failed, 1, __ATOMIC_RELAXED);
+ }
return NULL;
}
@@ -78,6 +87,7 @@ thread_burn_any_cpu (void *closure)
{
struct burn_thread *param = closure;
+ xpthread_barrier_wait (&barrier);
/* Schedule this thread around a bit to see if it lands on another
CPU. Run this for 2 seconds, once with sched_yield, once
without. */
@@ -99,7 +109,11 @@ thread_burn_any_cpu (void *closure)
CPU_SET_S (cpu, CPU_ALLOC_SIZE (param->conf->set_size),
param->seen_set);
if (pass == 1)
- sched_yield ();
+ if (sched_yield () != 0)
+ {
+ printf ("error: sched_yield() failed for cpu %d\n", cpu);
+ __atomic_store_n (&failed, 1, __ATOMIC_RELAXED);
+ }
}
}
return NULL;
@@ -156,6 +170,7 @@ early_test (struct conf *conf)
= calloc (conf->last_cpu + 1, sizeof (*other_threads));
cpu_set_t *initial_set = CPU_ALLOC (conf->set_size);
cpu_set_t *scratch_set = CPU_ALLOC (conf->set_size);
+ int num_available_cpus = 0;
if (pinned_threads == NULL || other_threads == NULL
|| initial_set == NULL || scratch_set == NULL)
@@ -172,6 +187,7 @@ early_test (struct conf *conf)
{
if (!CPU_ISSET_S (cpu, CPU_ALLOC_SIZE (conf->set_size), initial_set))
continue;
+ num_available_cpus ++;
other_threads[cpu].conf = conf;
other_threads[cpu].initial_set = initial_set;
other_threads[cpu].thread = cpu;
@@ -194,6 +210,15 @@ early_test (struct conf *conf)
}
support_set_small_thread_stack_size (&attr);
+ /* This count assumes that all the threads below are created
+ successfully, and call pthread_barrier_wait(). If any threads
+ fail to be created, this function will return FALSE (failure) and
+ the waiting threads will eventually time out the whole test.
+ This is acceptable because we're not testing thread creation and
+ assume all threads will be created, and failure here implies a
+ failure outside the test's scope. */
+ xpthread_barrier_init (&barrier, NULL, num_available_cpus * 2 + 1);
+
/* Spawn a thread pinned to each available CPU. */
for (int cpu = 0; cpu <= conf->last_cpu; ++cpu)
{
@@ -245,6 +270,15 @@ early_test (struct conf *conf)
}
}
+ /* Test that sched_yield() works correctly in the main thread. This
+ also gives the kernel an opportunity to run the other threads,
+ randomizing thread startup a bit. */
+ if (sched_yield () != 0)
+ {
+ printf ("error: sched_yield() failed for main thread\n");
+ __atomic_store_n (&failed, 1, __ATOMIC_RELAXED);
+ }
+
/* Main thread. */
struct burn_thread main_thread;
main_thread.conf = conf;
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
index 8113fb4..dcfbb6e 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
@@ -1278,3 +1278,11 @@ GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpif64x F
GLIBC_2.41 tanpil F
+GLIBC_2.42 rsqrt F
+GLIBC_2.42 rsqrtf F
+GLIBC_2.42 rsqrtf128 F
+GLIBC_2.42 rsqrtf32 F
+GLIBC_2.42 rsqrtf32x F
+GLIBC_2.42 rsqrtf64 F
+GLIBC_2.42 rsqrtf64x F
+GLIBC_2.42 rsqrtl F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
index ac96d62..fdcfd1e 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
@@ -1278,3 +1278,11 @@ GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpif64x F
GLIBC_2.41 tanpil F
+GLIBC_2.42 rsqrt F
+GLIBC_2.42 rsqrtf F
+GLIBC_2.42 rsqrtf128 F
+GLIBC_2.42 rsqrtf32 F
+GLIBC_2.42 rsqrtf32x F
+GLIBC_2.42 rsqrtf64 F
+GLIBC_2.42 rsqrtf64x F
+GLIBC_2.42 rsqrtl F
diff --git a/sysdeps/x86_64/fpu/libm-test-ulps b/sysdeps/x86_64/fpu/libm-test-ulps
index a4bd2ed..a56cb3c 100644
--- a/sysdeps/x86_64/fpu/libm-test-ulps
+++ b/sysdeps/x86_64/fpu/libm-test-ulps
@@ -2068,6 +2068,30 @@ float: 3
Function: "pow_vlen8_avx2":
float: 3
+Function: "rsqrt":
+double: 1
+float: 1
+float128: 1
+ldouble: 1
+
+Function: "rsqrt_downward":
+double: 2
+float: 2
+float128: 2
+ldouble: 2
+
+Function: "rsqrt_towardzero":
+double: 2
+float: 2
+float128: 2
+ldouble: 2
+
+Function: "rsqrt_upward":
+double: 2
+float: 2
+float128: 2
+ldouble: 2
+
Function: "sin":
double: 1
float: 1