[libclc] 079115e - [libclc] Move modf to the CLC library (#127828)
via cfe-commits
cfe-commits at lists.llvm.org
Thu Feb 20 00:36:49 PST 2025
Author: Fraser Cormack
Date: 2025-02-20T08:36:46Z
New Revision: 079115e6eac0412214104b593849ee805d8921ce
URL: https://github.com/llvm/llvm-project/commit/079115e6eac0412214104b593849ee805d8921ce
DIFF: https://github.com/llvm/llvm-project/commit/079115e6eac0412214104b593849ee805d8921ce.diff
LOG: [libclc] Move modf to the CLC library (#127828)
The "generic" unary_(def|decl)_with_ptr files are intended to be re-used
by the sincos and fract builtins in the future as they share an
identical type signature.
Added:
libclc/clc/include/clc/math/clc_modf.h
libclc/clc/include/clc/math/unary_decl_with_ptr.inc
libclc/clc/include/clc/math/unary_def_with_ptr.inc
libclc/clc/lib/generic/math/clc_modf.cl
libclc/clc/lib/generic/math/clc_modf.inc
Modified:
libclc/clc/lib/generic/SOURCES
libclc/generic/include/clc/math/modf.h
libclc/generic/lib/math/modf.cl
Removed:
libclc/generic/include/clc/math/modf.inc
libclc/generic/lib/math/modf.inc
################################################################################
diff --git a/libclc/clc/include/clc/math/clc_modf.h b/libclc/clc/include/clc/math/clc_modf.h
new file mode 100644
index 0000000000000..45484b09628a4
--- /dev/null
+++ b/libclc/clc/include/clc/math/clc_modf.h
@@ -0,0 +1,11 @@
+#ifndef __CLC_MATH_CLC_MODF_H__
+#define __CLC_MATH_CLC_MODF_H__
+
+#define __CLC_FUNCTION __clc_modf
+#define __CLC_BODY <clc/math/unary_decl_with_ptr.inc>
+#include <clc/math/gentype.inc>
+
+#undef __CLC_BODY
+#undef __CLC_FUNCTION
+
+#endif // __CLC_MATH_CLC_MODF_H__
diff --git a/libclc/clc/include/clc/math/unary_decl_with_ptr.inc b/libclc/clc/include/clc/math/unary_decl_with_ptr.inc
new file mode 100644
index 0000000000000..04122108bc1f7
--- /dev/null
+++ b/libclc/clc/include/clc/math/unary_decl_with_ptr.inc
@@ -0,0 +1,6 @@
+_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE __CLC_FUNCTION(__CLC_GENTYPE x,
+ global __CLC_GENTYPE *ptr);
+_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE __CLC_FUNCTION(__CLC_GENTYPE x,
+ local __CLC_GENTYPE *ptr);
+_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE
+__CLC_FUNCTION(__CLC_GENTYPE x, private __CLC_GENTYPE *ptr);
diff --git a/libclc/clc/include/clc/math/unary_def_with_ptr.inc b/libclc/clc/include/clc/math/unary_def_with_ptr.inc
new file mode 100644
index 0000000000000..de7c9af756980
--- /dev/null
+++ b/libclc/clc/include/clc/math/unary_def_with_ptr.inc
@@ -0,0 +1,20 @@
+#include <clc/utils.h>
+
+#ifndef __CLC_FUNCTION
+#define __CLC_FUNCTION(x) __CLC_CONCAT(__clc_, x)
+#endif
+
+_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE FUNCTION(__CLC_GENTYPE x,
+ private __CLC_GENTYPE *ptr) {
+ return __CLC_FUNCTION(FUNCTION)(x, ptr);
+}
+
+_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE FUNCTION(__CLC_GENTYPE x,
+ global __CLC_GENTYPE *ptr) {
+ return __CLC_FUNCTION(FUNCTION)(x, ptr);
+}
+
+_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE FUNCTION(__CLC_GENTYPE x,
+ local __CLC_GENTYPE *ptr) {
+ return __CLC_FUNCTION(FUNCTION)(x, ptr);
+}
diff --git a/libclc/clc/lib/generic/SOURCES b/libclc/clc/lib/generic/SOURCES
index b0eaf84c41438..ef0ad006307d7 100644
--- a/libclc/clc/lib/generic/SOURCES
+++ b/libclc/clc/lib/generic/SOURCES
@@ -22,6 +22,7 @@ math/clc_copysign.cl
math/clc_fabs.cl
math/clc_floor.cl
math/clc_mad.cl
+math/clc_modf.cl
math/clc_nextafter.cl
math/clc_rint.cl
math/clc_trunc.cl
diff --git a/libclc/generic/include/clc/math/modf.inc b/libclc/clc/lib/generic/math/clc_modf.cl
similarity index 76%
rename from libclc/generic/include/clc/math/modf.inc
rename to libclc/clc/lib/generic/math/clc_modf.cl
index 42bcf625686d2..27d2a08515257 100644
--- a/libclc/generic/include/clc/math/modf.inc
+++ b/libclc/clc/lib/generic/math/clc_modf.cl
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014, 2015 Advanced Micro Devices, Inc.
+ * Copyright (c) 2015 Advanced Micro Devices, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -20,6 +20,11 @@
* THE SOFTWARE.
*/
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE modf(__CLC_GENTYPE x, global __CLC_GENTYPE *iptr);
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE modf(__CLC_GENTYPE x, local __CLC_GENTYPE *iptr);
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE modf(__CLC_GENTYPE x, private __CLC_GENTYPE *iptr);
+#include <clc/internal/clc.h>
+#include <clc/math/clc_copysign.h>
+#include <clc/math/clc_trunc.h>
+#include <clc/math/math.h>
+#include <clc/relational/clc_isinf.h>
+
+#define __CLC_BODY <clc_modf.inc>
+#include <clc/math/gentype.inc>
diff --git a/libclc/generic/lib/math/modf.inc b/libclc/clc/lib/generic/math/clc_modf.inc
similarity index 68%
rename from libclc/generic/lib/math/modf.inc
rename to libclc/clc/lib/generic/math/clc_modf.inc
index ff7ef30dd42f8..8242291c98d4e 100644
--- a/libclc/generic/lib/math/modf.inc
+++ b/libclc/clc/lib/generic/math/clc_modf.inc
@@ -19,31 +19,22 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
-
-#if __CLC_FPSIZE == 64
-#define ZERO 0.0
-#elif __CLC_FPSIZE == 32
-#define ZERO 0.0f
-#elif __CLC_FPSIZE == 16
-#define ZERO 0.0h
-#endif
-
-_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE modf(__CLC_GENTYPE x,
- private __CLC_GENTYPE *iptr) {
- *iptr = trunc(x);
- return copysign(isinf(x) ? ZERO : x - *iptr, x);
+_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE __clc_modf(__CLC_GENTYPE x,
+ private __CLC_GENTYPE *iptr) {
+ *iptr = __clc_trunc(x);
+ return __clc_copysign(__clc_isinf(x) ? __CLC_FP_LIT(0.0) : x - *iptr, x);
}
-#define MODF_DEF(addrspace) \
- _CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE modf(__CLC_GENTYPE x, \
- addrspace __CLC_GENTYPE *iptr) { \
+#define CLC_MODF_DEF(addrspace) \
+ _CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE __clc_modf( \
+ __CLC_GENTYPE x, addrspace __CLC_GENTYPE *iptr) { \
__CLC_GENTYPE private_iptr; \
- __CLC_GENTYPE ret = modf(x, &private_iptr); \
+ __CLC_GENTYPE ret = __clc_modf(x, &private_iptr); \
*iptr = private_iptr; \
return ret; \
}
-MODF_DEF(local);
-MODF_DEF(global);
+CLC_MODF_DEF(local);
+CLC_MODF_DEF(global);
-#undef ZERO
+#undef CLC_MODF_DEF
diff --git a/libclc/generic/include/clc/math/modf.h b/libclc/generic/include/clc/math/modf.h
index f0fb6ca81920a..76eb1284432e4 100644
--- a/libclc/generic/include/clc/math/modf.h
+++ b/libclc/generic/include/clc/math/modf.h
@@ -20,5 +20,8 @@
* THE SOFTWARE.
*/
-#define __CLC_BODY <clc/math/modf.inc>
+#define __CLC_FUNCTION modf
+#define __CLC_BODY <clc/math/unary_decl_with_ptr.inc>
#include <clc/math/gentype.inc>
+
+#undef __CLC_FUNCTION
diff --git a/libclc/generic/lib/math/modf.cl b/libclc/generic/lib/math/modf.cl
index 5098a41d079c5..5a01a316132e2 100644
--- a/libclc/generic/lib/math/modf.cl
+++ b/libclc/generic/lib/math/modf.cl
@@ -21,7 +21,8 @@
*/
#include <clc/clc.h>
-#include <clc/math/math.h>
+#include <clc/math/clc_modf.h>
-#define __CLC_BODY <modf.inc>
+#define FUNCTION modf
+#define __CLC_BODY <clc/math/unary_def_with_ptr.inc>
#include <clc/math/gentype.inc>
More information about the cfe-commits
mailing list