[libc-commits] [libc] f506192 - [libc][NFC] Small `abs` related simplifications (#79858)

via libc-commits libc-commits at lists.llvm.org
Tue Feb 13 02:17:33 PST 2024


Author: Guillaume Chatelet
Date: 2024-02-13T11:17:28+01:00
New Revision: f506192c016fb6909eb2c17e183f6223db012f8c

URL: https://github.com/llvm/llvm-project/commit/f506192c016fb6909eb2c17e183f6223db012f8c
DIFF: https://github.com/llvm/llvm-project/commit/f506192c016fb6909eb2c17e183f6223db012f8c.diff

LOG: [libc][NFC] Small `abs` related simplifications (#79858)

Added: 
    

Modified: 
    libc/src/__support/FPUtil/BasicOperations.h
    libc/src/math/generic/acoshf.cpp
    libc/src/math/generic/asinhf.cpp

Removed: 
    


################################################################################
diff  --git a/libc/src/__support/FPUtil/BasicOperations.h b/libc/src/__support/FPUtil/BasicOperations.h
index ccc61a89c5f831..a19d6d0bef08ff 100644
--- a/libc/src/__support/FPUtil/BasicOperations.h
+++ b/libc/src/__support/FPUtil/BasicOperations.h
@@ -19,9 +19,7 @@ namespace fputil {
 
 template <typename T, cpp::enable_if_t<cpp::is_floating_point_v<T>, int> = 0>
 LIBC_INLINE T abs(T x) {
-  FPBits<T> bits(x);
-  bits.set_sign(Sign::POS);
-  return bits.get_val();
+  return FPBits<T>(x).abs().get_val();
 }
 
 template <typename T, cpp::enable_if_t<cpp::is_floating_point_v<T>, int> = 0>

diff  --git a/libc/src/math/generic/acoshf.cpp b/libc/src/math/generic/acoshf.cpp
index 54b66bf42fc691..a4a75a7b04385c 100644
--- a/libc/src/math/generic/acoshf.cpp
+++ b/libc/src/math/generic/acoshf.cpp
@@ -33,12 +33,8 @@ LLVM_LIBC_FUNCTION(float, acoshf, (float x)) {
   }
 
   if (LIBC_UNLIKELY(x_u >= 0x4f8ffb03)) {
-    // Check for exceptional values.
-    uint32_t x_abs = xbits.abs().uintval();
-    if (LIBC_UNLIKELY(x_abs >= 0x7f80'0000U)) {
-      // x is +inf or NaN.
+    if (LIBC_UNLIKELY(xbits.is_inf_or_nan()))
       return x;
-    }
 
     // Helper functions to set results for exceptional cases.
     auto round_result_slightly_down = [](float r) -> float {

diff  --git a/libc/src/math/generic/asinhf.cpp b/libc/src/math/generic/asinhf.cpp
index ac059910b4ef2a..6e351786e3eca1 100644
--- a/libc/src/math/generic/asinhf.cpp
+++ b/libc/src/math/generic/asinhf.cpp
@@ -59,10 +59,8 @@ LLVM_LIBC_FUNCTION(float, asinhf, (float x)) {
   };
 
   if (LIBC_UNLIKELY(x_abs >= 0x4bdd'65a5U)) {
-    if (LIBC_UNLIKELY(x_abs >= 0x7f80'0000U)) {
-      // x is +-inf or nan
+    if (LIBC_UNLIKELY(xbits.is_inf_or_nan()))
       return x;
-    }
 
     // Exceptional cases when x > 2^24.
     switch (x_abs) {


        


More information about the libc-commits mailing list