[libclc] [libclc] Move sign to the CLC builtins library (PR #115699)
Fraser Cormack via cfe-commits
cfe-commits at lists.llvm.org
Tue Nov 12 02:43:09 PST 2024
================
@@ -0,0 +1,38 @@
+#include <clc/clcmacro.h>
+#include <clc/internal/clc.h>
+#include <clc/relational/clc_isnan.h>
+
+#define CLC_SIGN(TYPE, F) \
+ _CLC_DEF _CLC_OVERLOAD TYPE __clc_sign(TYPE x) { \
+ if (__clc_isnan(x)) { \
+ return 0.0F; \
+ } \
+ if (x > 0.0F) { \
+ return 1.0F; \
+ } \
+ if (x < 0.0F) { \
+ return -1.0F; \
+ } \
+ return x; /* -0.0 or +0.0 */ \
----------------
frasercrmck wrote:
I don't see how `copysign` could be used here, sorry. Could you elaborate? In another project we had an implementation of `sign` which bitcast to integer types and used bit twiddling which may be a better implementation.
https://github.com/llvm/llvm-project/pull/115699
More information about the cfe-commits
mailing list