]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Work around mtfsb0 syntax limitation with clang
authorStan Shebs <stanshebs@google.com>
Wed, 26 Sep 2018 21:44:39 +0000 (14:44 -0700)
committerFangrui Song <i@maskray.me>
Sat, 28 Aug 2021 00:23:14 +0000 (17:23 -0700)
sysdeps/powerpc/powerpc64/fpu/s_nearbyint.S
sysdeps/powerpc/powerpc64/fpu/s_nearbyintf.S

index 7d89e78f880f6224b80ed12c4a839313a4faa36b..27020c92ed902b51aaba28a6db9df73c9502a006 100644 (file)
@@ -42,7 +42,11 @@ ENTRY (__nearbyint, 4)
        fcmpu   cr7,fp1,fp12    /* if (x > 0.0) */
        ble     cr7, L(lessthanzero)
        mffs    fp11
+#if defined __clang__
+       mtfsb0  31      /* Disable FE_INEXACT exception */
+#else
        mtfsb0  4*cr7+lt        /* Disable FE_INEXACT exception */
+#endif
        fadd    fp1,fp1,fp13    /* x+= TWO52 */
        fsub    fp1,fp1,fp13    /* x-= TWO52 */
        fabs    fp1,fp1         /* if (x == 0.0) */
@@ -51,7 +55,11 @@ ENTRY (__nearbyint, 4)
 L(lessthanzero):
        bgelr   cr7             /* if (x < 0.0) */
        mffs    fp11
+#if defined __clang__
+       mtfsb0  31
+#else
        mtfsb0  4*cr7+lt
+#endif
        fsub    fp1,fp1,fp13    /* x -= TWO52 */
        fadd    fp1,fp1,fp13    /* x += TWO52 */
        fnabs   fp1,fp1         /* if (x == 0.0) */
index 4b62ba1e8d56d3712671689bf415abd8f9066192..0522b1058b2ad9f4c2a7b8815955686b7b0cfe78 100644 (file)
@@ -43,7 +43,11 @@ ENTRY (__nearbyintf, 4)
        fcmpu   cr7,fp1,fp12    /* if (x > 0.0)  */
        ble     cr7, L(lessthanzero)
        mffs    fp11
+#if defined __clang__
+       mtfsb0  31      /* Disable FE_INEXACT exception */
+#else
        mtfsb0  4*cr7+lt        /* Disable FE_INEXACT exception */
+#endif
        fadds   fp1,fp1,fp13    /* x += TWO23 */
        fsubs   fp1,fp1,fp13    /* x -= TWO23 */
        fabs    fp1,fp1         /* if (x == 0.0) */
@@ -52,7 +56,11 @@ ENTRY (__nearbyintf, 4)
 L(lessthanzero):
        bgelr   cr7             /* if (x < 0.0) */
        mffs    fp11
+#if defined __clang__
+       mtfsb0  31      /* Disable FE_INEXACT exception */
+#else
        mtfsb0  4*cr7+lt        /* Disable FE_INEXACT exception */
+#endif
        fsubs   fp1,fp1,fp13    /* x -= TWO23 */
        fadds   fp1,fp1,fp13    /* x += TWO23 */
        fnabs   fp1,fp1         /* if (x == 0.0) */