diff options
Diffstat (limited to 'sysdeps/ieee754/ldbl-96')
-rw-r--r-- | sysdeps/ieee754/ldbl-96/s_totalorderl.c | 33 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-96/s_totalordermagl.c | 33 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-96/test-totalorderl-ldbl-96.c | 16 |
3 files changed, 68 insertions, 14 deletions
diff --git a/sysdeps/ieee754/ldbl-96/s_totalorderl.c b/sysdeps/ieee754/ldbl-96/s_totalorderl.c index 5334401c0e..d80a592093 100644 --- a/sysdeps/ieee754/ldbl-96/s_totalorderl.c +++ b/sysdeps/ieee754/ldbl-96/s_totalorderl.c @@ -22,15 +22,17 @@ #include <libm-alias-ldouble.h> #include <nan-high-order-bit.h> #include <stdint.h> +#include <shlib-compat.h> +#include <first-versions.h> int -__totalorderl (long double x, long double y) +__totalorderl (const long double *x, const long double *y) { int16_t expx, expy; uint32_t hx, hy; uint32_t lx, ly; - GET_LDOUBLE_WORDS (expx, hx, lx, x); - GET_LDOUBLE_WORDS (expy, hy, ly, y); + GET_LDOUBLE_WORDS (expx, hx, lx, *x); + GET_LDOUBLE_WORDS (expy, hy, ly, *y); if (LDBL_MIN_EXP == -16382) { /* M68K variant: for the greatest exponent, the high mantissa @@ -56,4 +58,29 @@ __totalorderl (long double x, long double y) ly ^= y_sign; return expx < expy || (expx == expy && (hx < hy || (hx == hy && lx <= ly))); } +#ifdef SHARED +# define CONCATX(x, y) x ## y +# define CONCAT(x, y) CONCATX (x, y) +# define UNIQUE_ALIAS(name) CONCAT (name, __COUNTER__) +# define do_symbol(orig_name, name, aliasname) \ + strong_alias (orig_name, name) \ + versioned_symbol (libm, name, aliasname, GLIBC_2_31) +# undef weak_alias +# define weak_alias(name, aliasname) \ + do_symbol (name, UNIQUE_ALIAS (name), aliasname); +#endif libm_alias_ldouble (__totalorder, totalorder) +#if SHLIB_COMPAT (libm, GLIBC_2_25, GLIBC_2_31) +int +attribute_compat_text_section +__totalorder_compatl (long double x, long double y) +{ + return __totalorderl (&x, &y); +} +#undef do_symbol +#define do_symbol(orig_name, name, aliasname) \ + strong_alias (orig_name, name) \ + compat_symbol (libm, name, aliasname, \ + CONCAT (FIRST_VERSION_libm_, aliasname)) +libm_alias_ldouble (__totalorder_compat, totalorder) +#endif diff --git a/sysdeps/ieee754/ldbl-96/s_totalordermagl.c b/sysdeps/ieee754/ldbl-96/s_totalordermagl.c index db27ffa755..c26f21511d 100644 --- a/sysdeps/ieee754/ldbl-96/s_totalordermagl.c +++ b/sysdeps/ieee754/ldbl-96/s_totalordermagl.c @@ -22,15 +22,17 @@ #include <libm-alias-ldouble.h> #include <nan-high-order-bit.h> #include <stdint.h> +#include <shlib-compat.h> +#include <first-versions.h> int -__totalordermagl (long double x, long double y) +__totalordermagl (const long double *x, const long double *y) { uint16_t expx, expy; uint32_t hx, hy; uint32_t lx, ly; - GET_LDOUBLE_WORDS (expx, hx, lx, x); - GET_LDOUBLE_WORDS (expy, hy, ly, y); + GET_LDOUBLE_WORDS (expx, hx, lx, *x); + GET_LDOUBLE_WORDS (expy, hy, ly, *y); expx &= 0x7fff; expy &= 0x7fff; if (LDBL_MIN_EXP == -16382) @@ -50,4 +52,29 @@ __totalordermagl (long double x, long double y) #endif return expx < expy || (expx == expy && (hx < hy || (hx == hy && lx <= ly))); } +#ifdef SHARED +# define CONCATX(x, y) x ## y +# define CONCAT(x, y) CONCATX (x, y) +# define UNIQUE_ALIAS(name) CONCAT (name, __COUNTER__) +# define do_symbol(orig_name, name, aliasname) \ + strong_alias (orig_name, name) \ + versioned_symbol (libm, name, aliasname, GLIBC_2_31) +# undef weak_alias +# define weak_alias(name, aliasname) \ + do_symbol (name, UNIQUE_ALIAS (name), aliasname); +#endif libm_alias_ldouble (__totalordermag, totalordermag) +#if SHLIB_COMPAT (libm, GLIBC_2_25, GLIBC_2_31) +int +attribute_compat_text_section +__totalordermag_compatl (long double x, long double y) +{ + return __totalordermagl (&x, &y); +} +#undef do_symbol +#define do_symbol(orig_name, name, aliasname) \ + strong_alias (orig_name, name) \ + compat_symbol (libm, name, aliasname, \ + CONCAT (FIRST_VERSION_libm_, aliasname)) +libm_alias_ldouble (__totalordermag_compat, totalordermag) +#endif diff --git a/sysdeps/ieee754/ldbl-96/test-totalorderl-ldbl-96.c b/sysdeps/ieee754/ldbl-96/test-totalorderl-ldbl-96.c index ec35ad5b61..7aad238eef 100644 --- a/sysdeps/ieee754/ldbl-96/test-totalorderl-ldbl-96.c +++ b/sysdeps/ieee754/ldbl-96/test-totalorderl-ldbl-96.c @@ -51,10 +51,10 @@ do_test (void) SET_LDOUBLE_WORDS (ldny, 0xffff, (tests[i] >> 32) | 0x80000000, tests[i] & 0xffffffffULL); - bool to1 = totalorderl (ldx, ldy); - bool to2 = totalorderl (ldy, ldx); - bool to3 = totalorderl (ldnx, ldny); - bool to4 = totalorderl (ldny, ldnx); + bool to1 = totalorderl (&ldx, &ldy); + bool to2 = totalorderl (&ldy, &ldx); + bool to3 = totalorderl (&ldnx, &ldny); + bool to4 = totalorderl (&ldny, &ldnx); if (to1 && to2 && to3 && to4) printf ("PASS: test %zu\n", i); else @@ -62,10 +62,10 @@ do_test (void) printf ("FAIL: test %zu\n", i); result = 1; } - to1 = totalordermagl (ldx, ldy); - to2 = totalordermagl (ldy, ldx); - to3 = totalordermagl (ldnx, ldny); - to4 = totalordermagl (ldny, ldnx); + to1 = totalordermagl (&ldx, &ldy); + to2 = totalordermagl (&ldy, &ldx); + to3 = totalordermagl (&ldnx, &ldny); + to4 = totalordermagl (&ldny, &ldnx); if (to1 && to2 && to3 && to4) printf ("PASS: test %zu (totalordermagl)\n", i); else |