[libclc] [libclc] Improve nextafter behaviour around zero (PR #127469)

Matt Arsenault via cfe-commits cfe-commits at lists.llvm.org
Tue Feb 18 09:55:25 PST 2025


================
@@ -13,19 +13,25 @@
     const UINT_TYPE sign_bit = (UINT_TYPE)1                                    \
                                << (sizeof(INT_TYPE_SCALAR) * 8 - 1);           \
     const UINT_TYPE sign_bit_mask = sign_bit - (UINT_TYPE)1;                   \
-    INT_TYPE ix = CLC_AS_TYPE(INT_TYPE)(x);                                    \
-    UINT_TYPE ax = CLC_AS_TYPE(UINT_TYPE)(ix) & sign_bit_mask;                 \
-    INT_TYPE mx = CLC_AS_TYPE(INT_TYPE)(sign_bit) - ix;                        \
-    mx = CLC_AS_TYPE(INT_TYPE)(ix) < (INT_TYPE)0 ? mx : ix;                    \
-    INT_TYPE iy = CLC_AS_TYPE(INT_TYPE)(y);                                    \
-    UINT_TYPE ay = CLC_AS_TYPE(UINT_TYPE)(iy) & sign_bit_mask;                 \
-    INT_TYPE my = CLC_AS_TYPE(INT_TYPE)(sign_bit) - iy;                        \
-    my = iy < (INT_TYPE)0 ? my : iy;                                           \
+    UINT_TYPE ix = CLC_AS_TYPE(UINT_TYPE)(x);                                  \
+    UINT_TYPE ax = ix & sign_bit_mask;                                         \
----------------
arsenm wrote:

I'd suggest using __builtin_fabs* and prefer keeping values as FP types as much as possible, rather than going straight to bithacking on the integer 

https://github.com/llvm/llvm-project/pull/127469


More information about the cfe-commits mailing list