[libclc] d96ec48 - [libclc] Route select through __clc_select (#123647)

via cfe-commits cfe-commits at lists.llvm.org
Tue Jan 21 02:05:42 PST 2025


Author: Fraser Cormack
Date: 2025-01-21T10:05:39Z
New Revision: d96ec48068e03d1058b1c31581f7bc8738e12ee0

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

LOG: [libclc] Route select through __clc_select (#123647)

This was missed during the introduction of select. This also unifies the
various .inc files used for each, as they were essentially identical.

The __clc_select function is now also built for SPIR-V targets.

Added: 
    libclc/clc/include/clc/relational/clc_select_decl.inc
    libclc/clc/include/clc/relational/clc_select_impl.inc

Modified: 
    libclc/clc/include/clc/relational/clc_select.h
    libclc/clc/lib/clspv/SOURCES
    libclc/clc/lib/generic/relational/clc_select.cl
    libclc/clc/lib/spirv/SOURCES
    libclc/clc/lib/spirv64/SOURCES
    libclc/generic/include/clc/relational/select.h
    libclc/generic/lib/relational/select.cl

Removed: 
    libclc/clc/include/clc/relational/clc_select.inc
    libclc/clc/lib/generic/relational/clc_select.inc
    libclc/generic/include/clc/relational/select.inc
    libclc/generic/lib/relational/select.inc


################################################################################
diff  --git a/libclc/clc/include/clc/relational/clc_select.h b/libclc/clc/include/clc/relational/clc_select.h
index ddea7c528ec74a..a92f2051b577d5 100644
--- a/libclc/clc/include/clc/relational/clc_select.h
+++ b/libclc/clc/include/clc/relational/clc_select.h
@@ -1,23 +1,19 @@
 #ifndef __CLC_RELATIONAL_CLC_SELECT_H__
 #define __CLC_RELATIONAL_CLC_SELECT_H__
 
-#if defined(CLC_CLSPV) || defined(CLC_SPIRV)
-// clspv and spir-v targets provide their own OpenCL-compatible select
-#define __clc_select select
-#else
-
 /* Duplciate these so we don't have to distribute utils.h */
 #define __CLC_CONCAT(x, y) x##y
 #define __CLC_XCONCAT(x, y) __CLC_CONCAT(x, y)
 
-#define __CLC_BODY <clc/relational/clc_select.inc>
+#define __CLC_SELECT_FN __clc_select
+
+#define __CLC_BODY <clc/relational/clc_select_decl.inc>
 #include <clc/math/gentype.inc>
-#define __CLC_BODY <clc/relational/clc_select.inc>
+#define __CLC_BODY <clc/relational/clc_select_decl.inc>
 #include <clc/integer/gentype.inc>
 
+#undef __CLC_SELECT_FN
 #undef __CLC_CONCAT
 #undef __CLC_XCONCAT
 
-#endif
-
 #endif // __CLC_RELATIONAL_CLC_SELECT_H__

diff  --git a/libclc/clc/include/clc/relational/clc_select.inc b/libclc/clc/include/clc/relational/clc_select_decl.inc
similarity index 58%
rename from libclc/clc/include/clc/relational/clc_select.inc
rename to libclc/clc/include/clc/relational/clc_select_decl.inc
index abf0e0fa436003..3a4f2dcb75170c 100644
--- a/libclc/clc/include/clc/relational/clc_select.inc
+++ b/libclc/clc/include/clc/relational/clc_select_decl.inc
@@ -13,12 +13,12 @@
 #define __CLC_U_GENTYPE __CLC_XCONCAT(ushort, __CLC_VECSIZE)
 #endif
 
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE __clc_select(__CLC_GENTYPE x,
-                                                   __CLC_GENTYPE y,
-                                                   __CLC_S_GENTYPE z);
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE __clc_select(__CLC_GENTYPE x,
-                                                   __CLC_GENTYPE y,
-                                                   __CLC_U_GENTYPE z);
+_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE __CLC_SELECT_FN(__CLC_GENTYPE x,
+                                                      __CLC_GENTYPE y,
+                                                      __CLC_S_GENTYPE z);
+_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE __CLC_SELECT_FN(__CLC_GENTYPE x,
+                                                      __CLC_GENTYPE y,
+                                                      __CLC_U_GENTYPE z);
 
 #ifdef __CLC_FPSIZE
 #undef __CLC_S_GENTYPE

diff  --git a/libclc/clc/lib/generic/relational/clc_select.inc b/libclc/clc/include/clc/relational/clc_select_impl.inc
similarity index 55%
rename from libclc/clc/lib/generic/relational/clc_select.inc
rename to libclc/clc/include/clc/relational/clc_select_impl.inc
index 47db80672a02c2..ad53e822179fbd 100644
--- a/libclc/clc/lib/generic/relational/clc_select.inc
+++ b/libclc/clc/include/clc/relational/clc_select_impl.inc
@@ -13,16 +13,16 @@
 #define __CLC_U_GENTYPE __CLC_XCONCAT(ushort, __CLC_VECSIZE)
 #endif
 
-_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE __clc_select(__CLC_GENTYPE x,
-                                                  __CLC_GENTYPE y,
-                                                  __CLC_S_GENTYPE z) {
-  return z ? y : x;
+_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE __CLC_SELECT_FN(__CLC_GENTYPE x,
+                                                     __CLC_GENTYPE y,
+                                                     __CLC_S_GENTYPE z) {
+  __CLC_SELECT_DEF(x, y, z);
 }
 
-_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE __clc_select(__CLC_GENTYPE x,
-                                                  __CLC_GENTYPE y,
-                                                  __CLC_U_GENTYPE z) {
-  return z ? y : x;
+_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE __CLC_SELECT_FN(__CLC_GENTYPE x,
+                                                     __CLC_GENTYPE y,
+                                                     __CLC_U_GENTYPE z) {
+  __CLC_SELECT_DEF(x, y, z);
 }
 
 #ifdef __CLC_FPSIZE

diff  --git a/libclc/clc/lib/clspv/SOURCES b/libclc/clc/lib/clspv/SOURCES
index 209dc0ca61e2b8..c3fc03c0b3dd5e 100644
--- a/libclc/clc/lib/clspv/SOURCES
+++ b/libclc/clc/lib/clspv/SOURCES
@@ -4,4 +4,5 @@
 ../generic/math/clc_mad.cl
 ../generic/math/clc_rint.cl
 ../generic/math/clc_trunc.cl
+../generic/relational/clc_select.cl
 ../generic/shared/clc_clamp.cl

diff  --git a/libclc/clc/lib/generic/relational/clc_select.cl b/libclc/clc/lib/generic/relational/clc_select.cl
index bb016ed2993e7e..210db7867eefb3 100644
--- a/libclc/clc/lib/generic/relational/clc_select.cl
+++ b/libclc/clc/lib/generic/relational/clc_select.cl
@@ -1,7 +1,10 @@
 #include <clc/internal/clc.h>
 #include <clc/utils.h>
 
-#define __CLC_BODY <clc_select.inc>
+#define __CLC_SELECT_FN __clc_select
+#define __CLC_SELECT_DEF(x, y, z) return z ? y : x
+
+#define __CLC_BODY <clc/relational/clc_select_impl.inc>
 #include <clc/math/gentype.inc>
-#define __CLC_BODY <clc_select.inc>
+#define __CLC_BODY <clc/relational/clc_select_impl.inc>
 #include <clc/integer/gentype.inc>

diff  --git a/libclc/clc/lib/spirv/SOURCES b/libclc/clc/lib/spirv/SOURCES
index 905afa03d8a56c..55d109478faac5 100644
--- a/libclc/clc/lib/spirv/SOURCES
+++ b/libclc/clc/lib/spirv/SOURCES
@@ -8,4 +8,5 @@
 ../generic/math/clc_mad.cl
 ../generic/math/clc_rint.cl
 ../generic/math/clc_trunc.cl
+../generic/relational/clc_select.cl
 ../generic/shared/clc_clamp.cl

diff  --git a/libclc/clc/lib/spirv64/SOURCES b/libclc/clc/lib/spirv64/SOURCES
index 905afa03d8a56c..55d109478faac5 100644
--- a/libclc/clc/lib/spirv64/SOURCES
+++ b/libclc/clc/lib/spirv64/SOURCES
@@ -8,4 +8,5 @@
 ../generic/math/clc_mad.cl
 ../generic/math/clc_rint.cl
 ../generic/math/clc_trunc.cl
+../generic/relational/clc_select.cl
 ../generic/shared/clc_clamp.cl

diff  --git a/libclc/generic/include/clc/relational/select.h b/libclc/generic/include/clc/relational/select.h
index d20deae0d2cf9e..847884a07b7f22 100644
--- a/libclc/generic/include/clc/relational/select.h
+++ b/libclc/generic/include/clc/relational/select.h
@@ -2,10 +2,13 @@
 #define __CLC_CONCAT(x, y) x ## y
 #define __CLC_XCONCAT(x, y) __CLC_CONCAT(x, y)
 
-#define __CLC_BODY <clc/relational/select.inc>
+#define __CLC_SELECT_FN select
+
+#define __CLC_BODY <clc/relational/clc_select_decl.inc>
 #include <clc/math/gentype.inc>
-#define __CLC_BODY <clc/relational/select.inc>
+#define __CLC_BODY <clc/relational/clc_select_decl.inc>
 #include <clc/integer/gentype.inc>
 
+#undef __CLC_SELECT_FN
 #undef __CLC_CONCAT
 #undef __CLC_XCONCAT

diff  --git a/libclc/generic/include/clc/relational/select.inc b/libclc/generic/include/clc/relational/select.inc
deleted file mode 100644
index 11a957a56e4b70..00000000000000
--- a/libclc/generic/include/clc/relational/select.inc
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifdef __CLC_SCALAR
-#define __CLC_VECSIZE
-#endif
-
-#if __CLC_FPSIZE == 64
-#define __CLC_S_GENTYPE __CLC_XCONCAT(long, __CLC_VECSIZE)
-#define __CLC_U_GENTYPE __CLC_XCONCAT(ulong, __CLC_VECSIZE)
-#elif __CLC_FPSIZE == 32
-#define __CLC_S_GENTYPE __CLC_XCONCAT(int, __CLC_VECSIZE)
-#define __CLC_U_GENTYPE __CLC_XCONCAT(uint, __CLC_VECSIZE)
-#elif __CLC_FPSIZE == 16
-#define __CLC_S_GENTYPE __CLC_XCONCAT(short, __CLC_VECSIZE)
-#define __CLC_U_GENTYPE __CLC_XCONCAT(ushort, __CLC_VECSIZE)
-#endif
-
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE select(__CLC_GENTYPE x, __CLC_GENTYPE y, __CLC_S_GENTYPE z);
-_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE select(__CLC_GENTYPE x, __CLC_GENTYPE y, __CLC_U_GENTYPE z);
-
-#ifdef __CLC_FPSIZE
-#undef __CLC_S_GENTYPE
-#undef __CLC_U_GENTYPE
-#endif
-#ifdef __CLC_SCALAR
-#undef __CLC_VECSIZE
-#endif

diff  --git a/libclc/generic/lib/relational/select.cl b/libclc/generic/lib/relational/select.cl
index 094f4f9f29fa91..663f9d7ccf9908 100644
--- a/libclc/generic/lib/relational/select.cl
+++ b/libclc/generic/lib/relational/select.cl
@@ -1,7 +1,11 @@
 #include <clc/clc.h>
+#include <clc/relational/clc_select.h>
 #include <clc/utils.h>
 
-#define __CLC_BODY <select.inc>
+#define __CLC_SELECT_FN select
+#define __CLC_SELECT_DEF(x, y, z) return __clc_select(x, y, z)
+
+#define __CLC_BODY <clc/relational/clc_select_impl.inc>
 #include <clc/math/gentype.inc>
-#define __CLC_BODY <select.inc>
+#define __CLC_BODY <clc/relational/clc_select_impl.inc>
 #include <clc/integer/gentype.inc>

diff  --git a/libclc/generic/lib/relational/select.inc b/libclc/generic/lib/relational/select.inc
deleted file mode 100644
index 7691af26691865..00000000000000
--- a/libclc/generic/lib/relational/select.inc
+++ /dev/null
@@ -1,33 +0,0 @@
-#ifdef __CLC_SCALAR
-#define __CLC_VECSIZE
-#endif
-
-#if __CLC_FPSIZE == 64
-#define __CLC_S_GENTYPE __CLC_XCONCAT(long, __CLC_VECSIZE)
-#define __CLC_U_GENTYPE __CLC_XCONCAT(ulong, __CLC_VECSIZE)
-#elif __CLC_FPSIZE == 32
-#define __CLC_S_GENTYPE __CLC_XCONCAT(int, __CLC_VECSIZE)
-#define __CLC_U_GENTYPE __CLC_XCONCAT(uint, __CLC_VECSIZE)
-#elif __CLC_FPSIZE == 16
-#define __CLC_S_GENTYPE __CLC_XCONCAT(short, __CLC_VECSIZE)
-#define __CLC_U_GENTYPE __CLC_XCONCAT(ushort, __CLC_VECSIZE)
-#endif
-
-_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE select(__CLC_GENTYPE x, __CLC_GENTYPE y, __CLC_S_GENTYPE z)
-{
-	return z ? y : x;
-}
-
-_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE select(__CLC_GENTYPE x, __CLC_GENTYPE y, __CLC_U_GENTYPE z)
-{
-	return z ? y : x;
-}
-
-#ifdef __CLC_FPSIZE
-#undef __CLC_S_GENTYPE
-#undef __CLC_U_GENTYPE
-#endif
-
-#ifdef __CLC_SCALAR
-#undef __CLC_VECSIZE
-#endif


        


More information about the cfe-commits mailing list