2006-12-03 Carlos O'Donell <carlos@systemhalted.org>
authorCarlos O'Donell <carlos@systemhalted.org>
Sun, 3 Dec 2006 23:03:20 +0000 (23:03 +0000)
committerCarlos O'Donell <carlos@systemhalted.org>
Sun, 3 Dec 2006 23:03:20 +0000 (23:03 +0000)
* sysdeps/unix/sysv/linux/hppa/bits/atomic.h: Remove non-atomic
versions. Adjust jump target to '0b'.

2006-12-03  Carlos O'Donell  <carlos@systemhalted.org>

* sysdeps/hppa/Makefile: Set long-double-fcts to `no'.
* sysdeps/hppa/fpu/libm-test-ulps: Regenerate.
* sysdeps/hppa/fpu/bits/mathdef.h: New file.

ChangeLog.hppa
sysdeps/hppa/Makefile
sysdeps/hppa/fpu/bits/mathdef.h [new file with mode: 0644]
sysdeps/hppa/fpu/libm-test-ulps
sysdeps/unix/sysv/linux/hppa/bits/atomic.h

index 429c6c2..9c05eb1 100644 (file)
@@ -1,3 +1,14 @@
+2006-12-03  Carlos O'Donell  <carlos@systemhalted.org>
+
+       * sysdeps/unix/sysv/linux/hppa/bits/atomic.h: Remove non-atomic
+       versions. Adjust jump target to '0b'.
+
+2006-12-03  Carlos O'Donell  <carlos@systemhalted.org>
+
+       * sysdeps/hppa/Makefile: Set long-double-fcts to `no'.
+       * sysdeps/hppa/fpu/libm-test-ulps: Regenerate.
+       * sysdeps/hppa/fpu/bits/mathdef.h: New file.
+
 2006-11-10  Carlos O'Donell  <carlos@systemhalted.org>
 
        * sysdeps/hppa/nptl/pthread_spin_init.c: New file.
index 7394703..3cdd6c8 100644 (file)
@@ -39,3 +39,8 @@ sysdep_routines += libgcc-compat
 shared-only-routines += libgcc-compat
 endif
 endif
+
+# We implement a 64-bit `long double'. The standard says we can do this.
+# This means our `long double' and `double' are identical.
+long-double-fcts = no 
+
diff --git a/sysdeps/hppa/fpu/bits/mathdef.h b/sysdeps/hppa/fpu/bits/mathdef.h
new file mode 100644 (file)
index 0000000..8734ba1
--- /dev/null
@@ -0,0 +1,40 @@
+/* Copyright (C) 2006 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#if !defined _MATH_H && !defined _COMPLEX_H
+# error "Never use <bits/mathdef.h> directly; include <math.h> instead"
+#endif
+
+#if defined  __USE_ISOC99 && defined _MATH_H && !defined _MATH_H_MATHDEF
+# define _MATH_H_MATHDEF       1
+
+/* GCC does not promote `float' values to `double'.  */
+typedef float float_t;         /* `float' expressions are evaluated as
+                                  `float'.  */
+typedef double double_t;       /* `double' expressions are evaluated as
+                                  `double'.  */
+
+/* The values returned by `ilogb' for 0 and NaN respectively.  */
+# define FP_ILOGB0     (-2147483647)
+# define FP_ILOGBNAN   (2147483647)
+
+#endif /* ISO C99 */
+
+/* On hppa `long double' is 64-bits. */
+#undef __NO_LONG_DOUBLE_MATH
+
index c4ffefa..b8ec3d2 100644 (file)
@@ -1,15 +1,12 @@
 # Begin of automatic generation
 
 # atan2
-Test "atan2 (-0.00756827042671106339, -.001792735857538728036) == -1.80338464113663849327153994380":
-float: 6
-ifloat: 6
 Test "atan2 (-0.75, -1.0) == -2.49809154479650885165983415456218025":
-float: 3
-ifloat: 3
+float: 1
+ifloat: 1
 Test "atan2 (0.75, -1.0) == 2.49809154479650885165983415456218025":
-float: 3
-ifloat: 3
+float: 1
+ifloat: 1
 Test "atan2 (1.390625, 0.9296875) == 0.981498387184244311516296577615519772":
 float: 1
 ifloat: 1
@@ -20,16 +17,9 @@ float: 1
 ifloat: 1
 
 # cacosh
-Test "Real part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i":
-double: 1
-float: 7
-idouble: 1
-ifloat: 7
 Test "Imaginary part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i":
-double: 1
-float: 3
-idouble: 1
-ifloat: 3
+float: 1
+ifloat: 1
 
 # casin
 Test "Real part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i":
@@ -37,6 +27,8 @@ double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 
 # casinh
 Test "Real part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i":
@@ -44,11 +36,15 @@ double: 5
 float: 1
 idouble: 5
 ifloat: 1
+ildouble: 5
+ldouble: 5
 Test "Imaginary part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i":
 double: 3
 float: 6
 idouble: 3
 ifloat: 6
+ildouble: 3
+ldouble: 3
 Test "Real part of: casinh (0.75 + 1.25 i) == 1.03171853444778027336364058631006594 + 0.911738290968487636358489564316731207 i":
 float: 1
 ifloat: 1
@@ -57,44 +53,46 @@ double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 
 # catan
-Test "Real part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i":
-float: 3
-ifloat: 3
 Test "Imaginary part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i":
 double: 1
 float: 1
 idouble: 1
 ifloat: 1
-Test "Real part of: catan (0.75 + 1.25 i) == 1.10714871779409050301706546017853704 + 0.549306144334054845697622618461262852 i":
-float: 4
-ifloat: 4
+ildouble: 1
+ldouble: 1
 
 # catanh
 Test "Real part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i":
 double: 4
 idouble: 4
-Test "Imaginary part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i":
-float: 4
-ifloat: 4
+ildouble: 4
+ldouble: 4
 Test "Real part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i":
 double: 1
 idouble: 1
-Test "Imaginary part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i":
-float: 6
-ifloat: 6
+ildouble: 1
+ldouble: 1
 
 # cbrt
 Test "cbrt (-27.0) == -3.0":
 double: 1
 idouble: 1
+ildouble: 1
+ldouble: 1
 Test "cbrt (0.75) == 0.908560296416069829445605878163630251":
 double: 1
 idouble: 1
+ildouble: 1
+ldouble: 1
 Test "cbrt (0.9921875) == 0.997389022060725270579075195353955217":
 double: 1
 idouble: 1
+ildouble: 1
+ldouble: 1
 
 # ccos
 Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
@@ -105,6 +103,8 @@ double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "Imaginary part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
 float: 1
 ifloat: 1
@@ -121,10 +121,32 @@ double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "Imaginary part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
 float: 1
 ifloat: 1
 
+# ceil
+Test "ceil (-4503599627370496.75) == -4503599627370496.0":
+ildouble: 1
+ldouble: 1
+Test "ceil (-4503599627370497.5) == -4503599627370497.0":
+ildouble: 1
+ldouble: 1
+Test "ceil (-9007199254740991.5) == -9007199254740991.0":
+ildouble: 1
+ldouble: 1
+Test "ceil (-9007199254740993.5) == -9007199254740993.0":
+ildouble: 1
+ldouble: 1
+Test "ceil (4503599627370496.25) == 4503599627370497.0":
+ildouble: 1
+ldouble: 1
+Test "ceil (4503599627370496.5) == 4503599627370497.0":
+ildouble: 1
+ldouble: 1
+
 # cexp
 Test "Imaginary part of: cexp (-2.0 - 3.0 i) == -0.13398091492954261346140525546115575 - 0.019098516261135196432576240858800925 i":
 float: 1
@@ -134,9 +156,6 @@ float: 1
 ifloat: 1
 
 # clog
-Test "Imaginary part of: clog (-2 - 3 i) == 1.2824746787307683680267437207826593 - 2.1587989303424641704769327722648368 i":
-float: 3
-ifloat: 3
 Test "Real part of: clog (0.75 + 1.25 i) == 0.376885901188190075998919126749298416 + 1.03037682652431246378774332703115153 i":
 float: 1
 ifloat: 1
@@ -150,9 +169,9 @@ float: 1
 ifloat: 1
 Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
 double: 1
-float: 5
 idouble: 1
-ifloat: 5
+ildouble: 1
+ldouble: 1
 Test "Imaginary part of: clog10 (-3 + inf i) == inf + pi/2*log10(e) i":
 float: 1
 ifloat: 1
@@ -196,19 +215,16 @@ ifloat: 1
 # cos
 Test "cos (M_PI_6l * 2.0) == 0.5":
 double: 1
-float: 1
 idouble: 1
-ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "cos (M_PI_6l * 4.0) == -0.5":
 double: 2
 float: 1
 idouble: 2
 ifloat: 1
-Test "cos (pi/2) == 0":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
+ildouble: 2
+ldouble: 2
 
 # cpow
 Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i":
@@ -222,16 +238,22 @@ double: 1
 float: 4
 idouble: 1
 ifloat: 4
+ildouble: 1
+ldouble: 1
 Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 1.0 i) == 0.0846958290317209430433805274189191353 + 0.513285749182902449043287190519090481 i":
 double: 2
 float: 3
 idouble: 2
 ifloat: 3
+ildouble: 2
+ldouble: 2
 Test "Real part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i":
 double: 1
 float: 4
 idouble: 1
 ifloat: 4
+ildouble: 1
+ldouble: 1
 Test "Imaginary part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i":
 float: 2
 ifloat: 2
@@ -240,11 +262,15 @@ double: 2
 float: 2
 idouble: 2
 ifloat: 2
+ildouble: 2
+ldouble: 2
 
 # csinh
 Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
 double: 1
 idouble: 1
+ildouble: 1
+ldouble: 1
 Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
 float: 1
 ifloat: 1
@@ -264,6 +290,8 @@ ifloat: 1
 Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
 double: 1
 idouble: 1
+ildouble: 1
+ldouble: 1
 
 # ctanh
 Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
@@ -271,25 +299,35 @@ double: 1
 float: 2
 idouble: 1
 ifloat: 2
+ildouble: 1
+ldouble: 1
 Test "Imaginary part of: ctanh (0 + pi/4 i) == 0.0 + 1.0 i":
 float: 1
 ifloat: 1
 Test "Real part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i":
 double: 1
 idouble: 1
+ildouble: 1
+ldouble: 1
 
 # erf
 Test "erf (1.25) == 0.922900128256458230136523481197281140":
 double: 1
 idouble: 1
+ildouble: 1
+ldouble: 1
 
 # erfc
 Test "erfc (2.0) == 0.00467773498104726583793074363274707139":
 double: 1
 idouble: 1
+ildouble: 1
+ldouble: 1
 Test "erfc (4.125) == 0.542340079956506600531223408575531062e-8":
 double: 1
 idouble: 1
+ildouble: 1
+ldouble: 1
 
 # exp10
 Test "exp10 (-1) == 0.1":
@@ -297,25 +335,53 @@ double: 2
 float: 1
 idouble: 2
 ifloat: 1
+ildouble: 2
+ldouble: 2
 Test "exp10 (0.75) == 5.62341325190349080394951039776481231":
 double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "exp10 (3) == 1000":
 double: 6
 float: 2
 idouble: 6
 ifloat: 2
+ildouble: 6
+ldouble: 6
 
 # expm1
 Test "expm1 (0.75) == 1.11700001661267466854536981983709561":
 double: 1
 idouble: 1
+ildouble: 1
+ldouble: 1
 Test "expm1 (1) == M_El - 1.0":
 float: 1
 ifloat: 1
 
+# floor
+Test "floor (-4503599627370496.25) == -4503599627370497.0":
+ildouble: 1
+ldouble: 1
+Test "floor (-4503599627370496.5) == -4503599627370497.0":
+ildouble: 1
+ldouble: 1
+Test "floor (4503599627370496.75) == 4503599627370496.0":
+ildouble: 1
+ldouble: 1
+Test "floor (4503599627370497.5) == 4503599627370497.0":
+ildouble: 1
+ldouble: 1
+Test "floor (9007199254740991.5) == 9007199254740991.0":
+ildouble: 1
+ldouble: 1
+Test "floor (9007199254740993.5) == 9007199254740993.0":
+ildouble: 1
+ldouble: 1
+
 # hypot
 Test "hypot (-0.7, -12.4) == 12.419742348374220601176836866763271":
 float: 1
@@ -348,6 +414,8 @@ double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "j0 (0.75) == 0.864242275166648623555731103820923211":
 float: 1
 ifloat: 1
@@ -356,6 +424,8 @@ double: 2
 float: 1
 idouble: 2
 ifloat: 1
+ildouble: 2
+ldouble: 2
 Test "j0 (2.0) == 0.223890779141235668051827454649948626":
 float: 2
 ifloat: 2
@@ -364,6 +434,8 @@ double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "j0 (8.0) == 0.171650807137553906090869407851972001":
 float: 1
 ifloat: 1
@@ -375,9 +447,13 @@ ifloat: 2
 Test "j1 (2.0) == 0.576724807756873387202448242269137087":
 double: 1
 idouble: 1
+ildouble: 1
+ldouble: 1
 Test "j1 (8.0) == 0.234636346853914624381276651590454612":
 double: 1
 idouble: 1
+ildouble: 1
+ldouble: 1
 
 # jn
 Test "jn (0, -4.0) == -3.9714980986384737228659076845169804197562E-1":
@@ -385,6 +461,8 @@ double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "jn (0, 0.75) == 0.864242275166648623555731103820923211":
 float: 1
 ifloat: 1
@@ -393,6 +471,8 @@ double: 2
 float: 1
 idouble: 2
 ifloat: 1
+ildouble: 2
+ldouble: 2
 Test "jn (0, 2.0) == 0.223890779141235668051827454649948626":
 float: 2
 ifloat: 2
@@ -401,6 +481,8 @@ double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "jn (0, 8.0) == 0.171650807137553906090869407851972001":
 float: 1
 ifloat: 1
@@ -410,24 +492,34 @@ ifloat: 2
 Test "jn (1, 2.0) == 0.576724807756873387202448242269137087":
 double: 1
 idouble: 1
+ildouble: 1
+ldouble: 1
 Test "jn (1, 8.0) == 0.234636346853914624381276651590454612":
 double: 1
 idouble: 1
+ildouble: 1
+ldouble: 1
 Test "jn (10, 0.125) == 0.250543369809369890173993791865771547e-18":
 double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "jn (10, 0.75) == 0.149621713117596814698712483621682835e-10":
 double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "jn (10, 10.0) == 0.207486106633358857697278723518753428":
 double: 4
 float: 3
 idouble: 4
 ifloat: 3
+ildouble: 4
+ldouble: 4
 Test "jn (10, 2.0) == 0.251538628271673670963516093751820639e-6":
 float: 4
 ifloat: 4
@@ -436,21 +528,29 @@ double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "jn (3, 0.75) == 0.848438342327410884392755236884386804e-2":
 double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "jn (3, 10.0) == 0.0583793793051868123429354784103409563":
 double: 3
 float: 1
 idouble: 3
 ifloat: 1
+ildouble: 3
+ldouble: 3
 Test "jn (3, 2.0) == 0.128943249474402051098793332969239835":
 double: 1
 float: 2
 idouble: 1
 ifloat: 2
+ildouble: 1
+ldouble: 1
 
 # lgamma
 Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
@@ -458,11 +558,291 @@ double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
 double: 1
 float: 2
 idouble: 1
 ifloat: 2
+ildouble: 1
+ldouble: 1
+
+# llrint
+Test "llrint (-72057594037927936.75) == -72057594037927937LL":
+ildouble: 1
+ldouble: 1
+Test "llrint (-72057594037927937.5) == -72057594037927938LL":
+ildouble: 2
+ldouble: 2
+Test "llrint (-9007199254740992.75) == -9007199254740993LL":
+ildouble: 1
+ldouble: 1
+Test "llrint (72057594037927936.75) == 72057594037927937LL":
+ildouble: -1
+ldouble: -1
+Test "llrint (72057594037927937.5) == 72057594037927938LL":
+ildouble: -2
+ldouble: -2
+Test "llrint (9007199254740992.75) == 9007199254740993LL":
+ildouble: -1
+ldouble: -1
+
+# llrint_downward
+Test "llrint_downward (-4503599627370496.25) == -4503599627370497LL":
+ildouble: 1
+ldouble: 1
+Test "llrint_downward (-4503599627370496.4999999999999) == -4503599627370497LL":
+ildouble: 1
+ldouble: 1
+Test "llrint_downward (-4503599627370496.5) == -4503599627370497LL":
+ildouble: 1
+ldouble: 1
+Test "llrint_downward (-4503599627370497.4999999999999) == -4503599627370498LL":
+ildouble: 1
+ldouble: 1
+Test "llrint_downward (-72057594037927936.25) == -72057594037927937LL":
+ildouble: 1
+ldouble: 1
+Test "llrint_downward (-72057594037927936.5) == -72057594037927937LL":
+ildouble: 1
+ldouble: 1
+Test "llrint_downward (-72057594037927936.75) == -72057594037927937LL":
+ildouble: 1
+ldouble: 1
+Test "llrint_downward (-72057594037927937.5) == -72057594037927938LL":
+ildouble: 2
+ldouble: 2
+Test "llrint_downward (-9007199254740991.4999999999999) == -9007199254740992LL":
+ildouble: 1
+ldouble: 1
+Test "llrint_downward (-9007199254740992.25) == -9007199254740993LL":
+ildouble: 1
+ldouble: 1
+Test "llrint_downward (-9007199254740992.4999999999999) == -9007199254740993LL":
+ildouble: 1
+ldouble: 1
+Test "llrint_downward (-9007199254740992.5) == -9007199254740993LL":
+ildouble: 1
+ldouble: 1
+Test "llrint_downward (-9007199254740992.5000000000001) == -9007199254740993LL":
+ildouble: 1
+ldouble: 1
+Test "llrint_downward (-9007199254740992.75) == -9007199254740993LL":
+ildouble: 1
+ldouble: 1
+Test "llrint_downward (4503599627370496.5000000000001) == 4503599627370496LL":
+ildouble: 1
+ldouble: 1
+Test "llrint_downward (4503599627370496.75) == 4503599627370496LL":
+ildouble: 1
+ldouble: 1
+Test "llrint_downward (4503599627370497.5) == 4503599627370497LL":
+ildouble: 1
+ldouble: 1
+Test "llrint_downward (72057594037927935.5) == 72057594037927935LL":
+ildouble: 1
+ldouble: 1
+Test "llrint_downward (72057594037927937.5) == 72057594037927937LL":
+ildouble: -1
+ldouble: -1
+Test "llrint_downward (9007199254740991.5) == 9007199254740991LL":
+ildouble: 1
+ldouble: 1
+Test "llrint_downward (9007199254740991.5000000000001) == 9007199254740991LL":
+ildouble: 1
+ldouble: 1
+Test "llrint_downward (9007199254740993.4999999999999) == 9007199254740993LL":
+ildouble: 1
+ldouble: 1
+Test "llrint_downward (9007199254740993.5) == 9007199254740993LL":
+ildouble: 1
+ldouble: 1
+Test "llrint_downward (9007199254740993.5000000000001) == 9007199254740993LL":
+ildouble: 1
+ldouble: 1
+
+# llrint_tonearest
+Test "llrint_tonearest (-72057594037927936.75) == -72057594037927937LL":
+ildouble: 1
+ldouble: 1
+Test "llrint_tonearest (-72057594037927937.5) == -72057594037927938LL":
+ildouble: 2
+ldouble: 2
+Test "llrint_tonearest (-9007199254740992.75) == -9007199254740993LL":
+ildouble: 1
+ldouble: 1
+Test "llrint_tonearest (72057594037927936.75) == 72057594037927937LL":
+ildouble: -1
+ldouble: -1
+Test "llrint_tonearest (72057594037927937.5) == 72057594037927938LL":
+ildouble: -2
+ldouble: -2
+Test "llrint_tonearest (9007199254740992.75) == 9007199254740993LL":
+ildouble: -1
+ldouble: -1
+
+# llrint_towardzero
+Test "llrint_towardzero (-4503599627370496.75) == -4503599627370496LL":
+ildouble: -1
+ldouble: -1
+Test "llrint_towardzero (-4503599627370497.5) == -4503599627370497LL":
+ildouble: -1
+ldouble: -1
+Test "llrint_towardzero (-72057594037927935.5) == -72057594037927935LL":
+ildouble: -1
+ldouble: -1
+Test "llrint_towardzero (-72057594037927937.5) == -72057594037927937LL":
+ildouble: 1
+ldouble: 1
+Test "llrint_towardzero (-9007199254740991.5) == -9007199254740991LL":
+ildouble: -1
+ldouble: -1
+Test "llrint_towardzero (-9007199254740993.5) == -9007199254740993LL":
+ildouble: -1
+ldouble: -1
+Test "llrint_towardzero (4503599627370496.75) == 4503599627370496LL":
+ildouble: 1
+ldouble: 1
+Test "llrint_towardzero (4503599627370497.5) == 4503599627370497LL":
+ildouble: 1
+ldouble: 1
+Test "llrint_towardzero (72057594037927935.5) == 72057594037927935LL":
+ildouble: 1
+ldouble: 1
+Test "llrint_towardzero (72057594037927937.5) == 72057594037927937LL":
+ildouble: -1
+ldouble: -1
+Test "llrint_towardzero (9007199254740991.5) == 9007199254740991LL":
+ildouble: 1
+ldouble: 1
+Test "llrint_towardzero (9007199254740993.5) == 9007199254740993LL":
+ildouble: 1
+ldouble: 1
+
+# llrint_upward
+Test "llrint_upward (-4503599627370496.5000000000001) == -4503599627370496LL":
+ildouble: -1
+ldouble: -1
+Test "llrint_upward (-4503599627370496.75) == -4503599627370496LL":
+ildouble: -1
+ldouble: -1
+Test "llrint_upward (-4503599627370497.5) == -4503599627370497LL":
+ildouble: -1
+ldouble: -1
+Test "llrint_upward (-72057594037927935.5) == -72057594037927935LL":
+ildouble: -1
+ldouble: -1
+Test "llrint_upward (-72057594037927937.5) == -72057594037927937LL":
+ildouble: 1
+ldouble: 1
+Test "llrint_upward (-9007199254740991.5) == -9007199254740991LL":
+ildouble: -1
+ldouble: -1
+Test "llrint_upward (-9007199254740991.5000000000001) == -9007199254740991LL":
+ildouble: -1
+ldouble: -1
+Test "llrint_upward (-9007199254740993.4999999999999) == -9007199254740993LL":
+ildouble: -1
+ldouble: -1
+Test "llrint_upward (-9007199254740993.5) == -9007199254740993LL":
+ildouble: -1
+ldouble: -1
+Test "llrint_upward (-9007199254740993.5000000000001) == -9007199254740993LL":
+ildouble: -1
+ldouble: -1
+Test "llrint_upward (4503599627370496.25) == 4503599627370497LL":
+ildouble: -1
+ldouble: -1
+Test "llrint_upward (4503599627370496.4999999999999) == 4503599627370497LL":
+ildouble: -1
+ldouble: -1
+Test "llrint_upward (4503599627370496.5) == 4503599627370497LL":
+ildouble: -1
+ldouble: -1
+Test "llrint_upward (4503599627370497.4999999999999) == 4503599627370498LL":
+ildouble: -1
+ldouble: -1
+Test "llrint_upward (72057594037927936.25) == 72057594037927937LL":
+ildouble: -1
+ldouble: -1
+Test "llrint_upward (72057594037927936.5) == 72057594037927937LL":
+ildouble: -1
+ldouble: -1
+Test "llrint_upward (72057594037927936.75) == 72057594037927937LL":
+ildouble: -1
+ldouble: -1
+Test "llrint_upward (72057594037927937.5) == 72057594037927938LL":
+ildouble: -2
+ldouble: -2
+Test "llrint_upward (9007199254740991.4999999999999) == 9007199254740992LL":
+ildouble: -1
+ldouble: -1
+Test "llrint_upward (9007199254740992.25) == 9007199254740993LL":
+ildouble: -1
+ldouble: -1
+Test "llrint_upward (9007199254740992.4999999999999) == 9007199254740993LL":
+ildouble: -1
+ldouble: -1
+Test "llrint_upward (9007199254740992.5) == 9007199254740993LL":
+ildouble: -1
+ldouble: -1
+Test "llrint_upward (9007199254740992.5000000000001) == 9007199254740993LL":
+ildouble: -1
+ldouble: -1
+Test "llrint_upward (9007199254740992.75) == 9007199254740993LL":
+ildouble: -1
+ldouble: -1
+
+# llround
+Test "llround (-4503599627370496.5) == -4503599627370497LL":
+ildouble: 1
+ldouble: 1
+Test "llround (-72057594037927936.5) == -72057594037927937LL":
+ildouble: 1
+ldouble: 1
+Test "llround (-72057594037927936.75) == -72057594037927937LL":
+ildouble: 1
+ldouble: 1
+Test "llround (-72057594037927937.5) == -72057594037927938LL":
+ildouble: 2
+ldouble: 2
+Test "llround (-9007199254740992.5) == -9007199254740993LL":
+ildouble: 1
+ldouble: 1
+Test "llround (-9007199254740992.75) == -9007199254740993LL":
+ildouble: 1
+ldouble: 1
+Test "llround (-9223372036854775806.25) == -9223372036854775806LL":
+ildouble: -2
+ldouble: -2
+Test "llround (-9223372036854775806.5) == -9223372036854775807LL":
+ildouble: -1
+ldouble: -1
+Test "llround (-9223372036854775807.0) == -9223372036854775807LL":
+ildouble: -1
+ldouble: -1
+Test "llround (4503599627370496.5) == 4503599627370497LL":
+ildouble: -1
+ldouble: -1
+Test "llround (72057594037927936.5) == 72057594037927937LL":
+ildouble: -1
+ldouble: -1
+Test "llround (72057594037927936.75) == 72057594037927937LL":
+ildouble: -1
+ldouble: -1
+Test "llround (72057594037927937.5) == 72057594037927938LL":
+ildouble: -2
+ldouble: -2
+Test "llround (9007199254740992.5) == 9007199254740993LL":
+ildouble: -1
+ldouble: -1
+Test "llround (9007199254740992.75) == 9007199254740993LL":
+ildouble: -1
+ldouble: -1
+Test "llround (9223372036854775806.25) == 9223372036854775806LL":
+ildouble: 1
+ldouble: 1
 
 # log10
 Test "log10 (0.75) == -0.124938736608299953132449886193870744":
@@ -470,6 +850,8 @@ double: 1
 float: 2
 idouble: 1
 ifloat: 2
+ildouble: 1
+ldouble: 1
 Test "log10 (e) == log10(e)":
 float: 1
 ifloat: 1
@@ -479,42 +861,81 @@ Test "log1p (-0.25) == -0.287682072451780927439219005993827432":
 float: 1
 ifloat: 1
 
-# lround
-Test "lround (1071930.0008) == 1071930":
-double: -214511494
-idouble: -214511494
+# rint_downward
+Test "rint_downward (-4503599627370496.25) == -4503599627370497.0":
+ildouble: 1
+ldouble: 1
+Test "rint_downward (-4503599627370496.5) == -4503599627370497.0":
+ildouble: 1
+ldouble: 1
+Test "rint_downward (4503599627370496.75) == 4503599627370496.0":
+ildouble: 1
+ldouble: 1
+Test "rint_downward (4503599627370497.5) == 4503599627370497.0":
+ildouble: 1
+ldouble: 1
+
+# rint_towardzero
+Test "rint_towardzero (-4503599627370496.75) == -4503599627370496.0":
+ildouble: 1
+ldouble: 1
+Test "rint_towardzero (-4503599627370497.5) == -4503599627370497.0":
+ildouble: 1
+ldouble: 1
+Test "rint_towardzero (4503599627370496.75) == 4503599627370496.0":
+ildouble: 1
+ldouble: 1
+Test "rint_towardzero (4503599627370497.5) == 4503599627370497.0":
+ildouble: 1
+ldouble: 1
+
+# rint_upward
+Test "rint_upward (-4503599627370496.75) == -4503599627370496.0":
+ildouble: 1
+ldouble: 1
+Test "rint_upward (-4503599627370497.5) == -4503599627370497.0":
+ildouble: 1
+ldouble: 1
+Test "rint_upward (4503599627370496.25) == 4503599627370497.0":
+ildouble: 1
+ldouble: 1
+Test "rint_upward (4503599627370496.5) == 4503599627370497.0":
+ildouble: 1
+ldouble: 1
+
+# round
+Test "round (-4503599627370496.5) == -4503599627370497.0":
+ildouble: 1
+ldouble: 1
+Test "round (4503599627370496.5) == 4503599627370497.0":
+ildouble: 1
+ldouble: 1
 
 # sincos
 Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res":
 double: 1
-float: 1
 idouble: 1
-ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res":
 double: 1
 float: 1
 idouble: 1
 ifloat: 1
-Test "sincos (pi/2, &sin_res, &cos_res) puts 0 in cos_res":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res":
 float: 1
 ifloat: 1
 
-# tan
-Test "tan (pi/4) == 1":
-double: 1
-idouble: 1
-
 # tgamma
 Test "tgamma (-0.5) == -2 sqrt (pi)":
 double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "tgamma (0.5) == sqrt (pi)":
 float: 1
 ifloat: 1
@@ -523,6 +944,34 @@ double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
+
+# trunc
+Test "trunc (-4503599627370496.75) == -4503599627370496.0":
+ildouble: 1
+ldouble: 1
+Test "trunc (-4503599627370497.5) == -4503599627370497.0":
+ildouble: 1
+ldouble: 1
+Test "trunc (-9007199254740991.5) == -9007199254740991.0":
+ildouble: 1
+ldouble: 1
+Test "trunc (-9007199254740993.5) == -9007199254740993.0":
+ildouble: 1
+ldouble: 1
+Test "trunc (4503599627370496.75) == 4503599627370496.0":
+ildouble: 1
+ldouble: 1
+Test "trunc (4503599627370497.5) == 4503599627370497.0":
+ildouble: 1
+ldouble: 1
+Test "trunc (9007199254740991.5) == 9007199254740991.0":
+ildouble: 1
+ldouble: 1
+Test "trunc (9007199254740993.5) == 9007199254740993.0":
+ildouble: 1
+ldouble: 1
 
 # y0
 Test "y0 (1.0) == 0.0882569642156769579829267660235151628":
@@ -530,11 +979,15 @@ double: 2
 float: 1
 idouble: 2
 ifloat: 1
+ildouble: 2
+ldouble: 2
 Test "y0 (1.5) == 0.382448923797758843955068554978089862":
 double: 2
 float: 1
 idouble: 2
 ifloat: 1
+ildouble: 2
+ldouble: 2
 Test "y0 (10.0) == 0.0556711672835993914244598774101900481":
 float: 1
 ifloat: 1
@@ -543,11 +996,15 @@ double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 
 # y1
 Test "y1 (0.125) == -5.19993611253477499595928744876579921":
 double: 1
 idouble: 1
+ildouble: 1
+ldouble: 1
 Test "y1 (1.5) == -0.412308626973911295952829820633445323":
 float: 1
 ifloat: 1
@@ -556,16 +1013,22 @@ double: 3
 float: 1
 idouble: 3
 ifloat: 1
+ildouble: 3
+ldouble: 3
 Test "y1 (2.0) == -0.107032431540937546888370772277476637":
 double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "y1 (8.0) == -0.158060461731247494255555266187483550":
 double: 1
 float: 2
 idouble: 1
 ifloat: 2
+ildouble: 1
+ldouble: 1
 
 # yn
 Test "yn (0, 1.0) == 0.0882569642156769579829267660235151628":
@@ -573,11 +1036,15 @@ double: 2
 float: 1
 idouble: 2
 ifloat: 1
+ildouble: 2
+ldouble: 2
 Test "yn (0, 1.5) == 0.382448923797758843955068554978089862":
 double: 2
 float: 1
 idouble: 2
 ifloat: 1
+ildouble: 2
+ldouble: 2
 Test "yn (0, 10.0) == 0.0556711672835993914244598774101900481":
 float: 1
 ifloat: 1
@@ -586,9 +1053,13 @@ double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "yn (1, 0.125) == -5.19993611253477499595928744876579921":
 double: 1
 idouble: 1
+ildouble: 1
+ldouble: 1
 Test "yn (1, 1.5) == -0.412308626973911295952829820633445323":
 float: 1
 ifloat: 1
@@ -597,118 +1068,140 @@ double: 3
 float: 1
 idouble: 3
 ifloat: 1
+ildouble: 3
+ldouble: 3
 Test "yn (1, 2.0) == -0.107032431540937546888370772277476637":
 double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "yn (1, 8.0) == -0.158060461731247494255555266187483550":
 double: 1
 float: 2
 idouble: 1
 ifloat: 2
+ildouble: 1
+ldouble: 1
 Test "yn (10, 0.125) == -127057845771019398.252538486899753195":
 double: 1
 idouble: 1
+ildouble: 1
+ldouble: 1
 Test "yn (10, 0.75) == -2133501638.90573424452445412893839236":
 double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "yn (10, 1.0) == -121618014.278689189288130426667971145":
 double: 1
 idouble: 1
+ildouble: 1
+ldouble: 1
 Test "yn (10, 10.0) == -0.359814152183402722051986577343560609":
 double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "yn (10, 2.0) == -129184.542208039282635913145923304214":
 double: 2
 idouble: 2
+ildouble: 2
+ldouble: 2
 Test "yn (3, 0.125) == -2612.69757350066712600220955744091741":
 double: 1
 idouble: 1
+ildouble: 1
+ldouble: 1
 Test "yn (3, 0.75) == -12.9877176234475433186319774484809207":
 double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "yn (3, 10.0) == -0.251362657183837329779204747654240998":
 double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "yn (3, 2.0) == -1.12778377684042778608158395773179238":
 double: 1
 idouble: 1
+ildouble: 1
+ldouble: 1
 
 # Maximal error of functions:
 Function: "atan2":
-float: 6
-ifloat: 6
+float: 1
+ifloat: 1
 
 Function: "atanh":
 float: 1
 ifloat: 1
 
-Function: Real part of "cacosh":
-double: 1
-float: 7
-idouble: 1
-ifloat: 7
-
 Function: Imaginary part of "cacosh":
-double: 1
-float: 3
-idouble: 1
-ifloat: 3
+float: 1
+ifloat: 1
 
 Function: Real part of "casin":
 double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 
 Function: Real part of "casinh":
 double: 5
 float: 1
 idouble: 5
 ifloat: 1
+ildouble: 5
+ldouble: 5
 
 Function: Imaginary part of "casinh":
 double: 3
 float: 6
 idouble: 3
 ifloat: 6
-
-Function: Real part of "catan":
-float: 4
-ifloat: 4
+ildouble: 3
+ldouble: 3
 
 Function: Imaginary part of "catan":
 double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 
 Function: Real part of "catanh":
 double: 4
 idouble: 4
-
-Function: Imaginary part of "catanh":
-float: 6
-ifloat: 6
+ildouble: 4
+ldouble: 4
 
 Function: "cbrt":
 double: 1
 idouble: 1
+ildouble: 1
+ldouble: 1
 
 Function: Real part of "ccos":
 double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 
 Function: Imaginary part of "ccos":
 float: 1
@@ -719,11 +1212,17 @@ double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 
 Function: Imaginary part of "ccosh":
 float: 1
 ifloat: 1
 
+Function: "ceil":
+ildouble: 1
+ldouble: 1
+
 Function: Real part of "cexp":
 float: 1
 ifloat: 1
@@ -736,37 +1235,41 @@ Function: Real part of "clog":
 float: 1
 ifloat: 1
 
-Function: Imaginary part of "clog":
-float: 3
-ifloat: 3
-
 Function: Real part of "clog10":
 float: 1
 ifloat: 1
 
 Function: Imaginary part of "clog10":
 double: 1
-float: 5
+float: 1
 idouble: 1
-ifloat: 5
+ifloat: 1
+ildouble: 1
+ldouble: 1
 
 Function: "cos":
 double: 2
 float: 1
 idouble: 2
 ifloat: 1
+ildouble: 2
+ldouble: 2
 
 Function: Real part of "cpow":
 double: 2
 float: 4
 idouble: 2
 ifloat: 4
+ildouble: 2
+ldouble: 2
 
 Function: Imaginary part of "cpow":
 double: 2
 float: 2
 idouble: 2
 ifloat: 2
+ildouble: 2
+ldouble: 2
 
 Function: Real part of "csinh":
 float: 1
@@ -777,6 +1280,8 @@ double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 
 Function: Real part of "csqrt":
 float: 1
@@ -785,12 +1290,16 @@ ifloat: 1
 Function: Imaginary part of "ctan":
 double: 1
 idouble: 1
+ildouble: 1
+ldouble: 1
 
 Function: Real part of "ctanh":
 double: 1
 float: 2
 idouble: 1
 ifloat: 2
+ildouble: 1
+ldouble: 1
 
 Function: Imaginary part of "ctanh":
 float: 1
@@ -799,22 +1308,34 @@ ifloat: 1
 Function: "erf":
 double: 1
 idouble: 1
+ildouble: 1
+ldouble: 1
 
 Function: "erfc":
 double: 1
 idouble: 1
+ildouble: 1
+ldouble: 1
 
 Function: "exp10":
 double: 6
 float: 2
 idouble: 6
 ifloat: 2
+ildouble: 6
+ldouble: 6
 
 Function: "expm1":
 double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
+
+Function: "floor":
+ildouble: 1
+ldouble: 1
 
 Function: "hypot":
 float: 1
@@ -825,67 +1346,109 @@ double: 2
 float: 2
 idouble: 2
 ifloat: 2
+ildouble: 2
+ldouble: 2
 
 Function: "j1":
 double: 1
 float: 2
 idouble: 1
 ifloat: 2
+ildouble: 1
+ldouble: 1
 
 Function: "jn":
 double: 4
 float: 4
 idouble: 4
 ifloat: 4
+ildouble: 4
+ldouble: 4
 
 Function: "lgamma":
 double: 1
 float: 2
 idouble: 1
 ifloat: 2
+ildouble: 1
+ldouble: 1
 
 Function: "log10":
 double: 1
 float: 2
 idouble: 1
 ifloat: 2
+ildouble: 1
+ldouble: 1
 
 Function: "log1p":
 float: 1
 ifloat: 1
 
+Function: "rint_downward":
+ildouble: 1
+ldouble: 1
+
+Function: "rint_towardzero":
+ildouble: 1
+ldouble: 1
+
+Function: "rint_upward":
+ildouble: 1
+ldouble: 1
+
+Function: "round":
+ildouble: 1
+ldouble: 1
+
 Function: "sincos":
 double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 
 Function: "tan":
 double: 1
 idouble: 1
+ildouble: 1
+ldouble: 1
 
 Function: "tgamma":
 double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
+
+Function: "trunc":
+ildouble: 1
+ldouble: 1
 
 Function: "y0":
 double: 2
 float: 1
 idouble: 2
 ifloat: 1
+ildouble: 2
+ldouble: 2
 
 Function: "y1":
 double: 3
 float: 2
 idouble: 3
 ifloat: 2
+ildouble: 3
+ldouble: 3
 
 Function: "yn":
 double: 3
 float: 2
 idouble: 3
 ifloat: 2
+ildouble: 3
+ldouble: 3
 
 # end of automatic generation
index ee381dc..92a309d 100644 (file)
 #include <abort-instr.h>
 #include <kernel-features.h>
 
-/* We need EFAULT, ENONSYS, and EAGAIN */
-#if !defined EFAULT && !defined ENOSYS && !defined EAGAIN
-#undef EFAULT
-#undef ENOSYS
-#undef EAGAIN
+/* We need EFAULT, ENONSYS */
+#if !defined EFAULT && !defined ENOSYS
 #define EFAULT 14
 #define ENOSYS 251
-#define EAGAIN 11
 #endif
 
 #ifndef _BITS_ATOMIC_H
@@ -57,10 +53,10 @@ typedef uintmax_t uatomic_max_t;
 
 /* Use the kernel atomic light weight syscalls on hppa */ 
 #define LWS "0xb0"
-#define LWS_CAS 0x0
+#define LWS_CAS "0"
 /* Note r31 is the link register */
 #define LWS_CLOBBER "r1", "r26", "r25", "r24", "r23", "r22", "r21", "r20", "r28", "r31", "memory"
-#define ASM_EAGAIN -EAGAIN
+#define ASM_EAGAIN "11" 
 
 #if __ASSUME_LWS_CAS
 /* The only basic operation needed is compare and exchange.  */
@@ -74,8 +70,8 @@ typedef uintmax_t uatomic_max_t;
        "copy   %4, %%r25                       \n\t"                   \
        "copy   %5, %%r24                       \n\t"                   \
        "ble    " LWS "(%%sr2, %%r0)            \n\t"                   \
-       "ldi    0, %%r20                        \n\t"                   \
-       "cmpib,=,n " ASM_EAGAIN ",%%r21,0       \n\t"                   \
+       "ldi    " LWS_CAS ", %%r20              \n\t"                   \
+       "cmpib,=,n " ASM_EAGAIN ",%%r21,0b      \n\t"                   \
        "nop                                    \n\t"                   \
        "stw    %%r28, %0                       \n\t"                   \
         "sub   %%r0, %%r21, %%r21              \n\t"                   \
@@ -99,22 +95,9 @@ typedef uintmax_t uatomic_max_t;
      (ret != oldval);                                                  \
    })
 #else
-/* Non-atomic primitives. */
-# define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \
-  ({ __typeof (mem) __gmemp = (mem);                                 \
-     __typeof (*mem) __gret = *__gmemp;                                      \
-     __typeof (*mem) __gnewval = (newval);                           \
-                                                                     \
-     if (__gret == (oldval))                                         \
-       *__gmemp = __gnewval;                                         \
-     __gret; })
+# error __ASSUME_LWS_CAS is required to build glibc.
+#endif 
+/* __ASSUME_LWS_CAS */
 
-# define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \
-  ({ __typeof (mem) __gmemp = (mem);                                 \
-     __typeof (*mem) __gnewval = (newval);                           \
-                                                                     \
-     *__gmemp == (oldval) ? (*__gmemp = __gnewval, 0) : 1; })
 #endif
-
-#endif /* bits/atomic.h */
-
+/* _BITS_ATOMIC_H */