https://github.com/frasercrmck created https://github.com/llvm/llvm-project/pull/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. >From 26902128e1bfe4760791fa833e4a2940e5f28d62 Mon Sep 17 00:00:00 2001 From: Fraser Cormack <fra...@codeplay.com> Date: Mon, 20 Jan 2025 17:12:15 +0000 Subject: [PATCH] [libclc] Route select through __clc_select 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. --- .../clc/include/clc/relational/clc_select.h | 14 +++----- .../{clc_select.inc => clc_select_decl.inc} | 12 +++---- .../clc/relational/clc_select_impl.inc} | 16 ++++----- libclc/clc/lib/clspv/SOURCES | 1 + .../clc/lib/generic/relational/clc_select.cl | 7 ++-- libclc/clc/lib/spirv/SOURCES | 1 + libclc/clc/lib/spirv64/SOURCES | 1 + .../generic/include/clc/relational/select.h | 7 ++-- .../generic/include/clc/relational/select.inc | 25 -------------- libclc/generic/lib/relational/select.cl | 8 +++-- libclc/generic/lib/relational/select.inc | 33 ------------------- 11 files changed, 38 insertions(+), 87 deletions(-) rename libclc/clc/include/clc/relational/{clc_select.inc => clc_select_decl.inc} (58%) rename libclc/clc/{lib/generic/relational/clc_select.inc => include/clc/relational/clc_select_impl.inc} (55%) delete mode 100644 libclc/generic/include/clc/relational/select.inc delete mode 100644 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 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits