[libc-commits] [libc] [libc] Added type-generic macros for fixed-point functions (PR #129371)

Ishaan Verma via libc-commits libc-commits at lists.llvm.org
Wed Mar 5 12:55:11 PST 2025


================
@@ -323,6 +323,46 @@
 #define ULACCUM_EPSILON 0x1.0p-32ULK
 #endif // ULACCUM_EPSILON
 
+#define absfx(x) _Generic((x),                \
+    fract: LIBC_NAMESPACE::absr,              \
+    short fract: LIBC_NAMESPACE::abshr,       \
+    long fract: LIBC_NAMESPACE::abslr,        \
+    _Accum: LIBC_NAMESPACE::absk,             \
+    short _Accum: LIBC_NAMESPACE::abshk,      \
+    long _Accum: LIBC_NAMESPACE::abslk        \
+)(x)
+
+#define countlsfx(x) _Generic((x),                      \
+    fract: LIBC_NAMESPACE::countlsr,                    \
+    short fract: LIBC_NAMESPACE::countlshr,             \
+    long fract: LIBC_NAMESPACE::countlslr,              \
+    _Accum: LIBC_NAMESPACE::countlsk,                   \
+    short _Accum: LIBC_NAMESPACE::countlshk,            \
+    long _Accum: LIBC_NAMESPACE::countlslk,             \
+    unsigned fract: LIBC_NAMESPACE::countlsur,          \
+    unsigned short fract: LIBC_NAMESPACE::countlsuhr,   \
+    unsigned long fract: LIBC_NAMESPACE::countlsulr,    \
+    unsigned _Accum: LIBC_NAMESPACE::countlsuk,         \
+    unsigned short _Accum: LIBC_NAMESPACE::countlsuhk,  \
+    unsigned long _Accum: LIBC_NAMESPACE::countlsulk    \
+)(x)
+
+#define roundfx(x, y) _Generic((x),                    \
+    fract: LIBC_NAMESPACE::roundr,                     \
+    short fract: LIBC_NAMESPACE::roundhr,              \
+    long fract: LIBC_NAMESPACE::roundlr,               \
+    _Accum: LIBC_NAMESPACE::roundk,                    \
+    short _Accum: LIBC_NAMESPACE::roundhk,             \
+    long _Accum: LIBC_NAMESPACE::roundlk,              \
+    unsigned fract: LIBC_NAMESPACE::roundur,           \
+    unsigned short fract: LIBC_NAMESPACE::rounduhr,    \
+    unsigned long fract: LIBC_NAMESPACE::roundulr,     \
+    unsigned _Accum: LIBC_NAMESPACE::rounduk,          \
+    unsigned short _Accum: LIBC_NAMESPACE::rounduhk,   \
+    unsigned long _Accum: LIBC_NAMESPACE::roundulk     \
+)(x, y)
----------------
lazyprop wrote:

i've added `using LIBC_NAMESPACE::*`. apologies for the delay.

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


More information about the libc-commits mailing list