https://github.com/arsenm updated https://github.com/llvm/llvm-project/pull/181782
>From d3036a1828c92f5fc3519ad7100ca1af78efe404 Mon Sep 17 00:00:00 2001 From: Matt Arsenault <[email protected]> Date: Mon, 16 Feb 2026 22:51:37 +0100 Subject: [PATCH 1/3] libclc: Add __clc_issubnormal This is the missing of the FP class queries. --- .../include/clc/relational/clc_issubnormal.h | 42 +++++++++++++++++++ .../clc/include/clc/relational/relational.h | 1 + libclc/clc/lib/generic/SOURCES | 1 + .../lib/generic/relational/clc_issubnormal.cl | 32 ++++++++++++++ 4 files changed, 76 insertions(+) create mode 100644 libclc/clc/include/clc/relational/clc_issubnormal.h create mode 100644 libclc/clc/lib/generic/relational/clc_issubnormal.cl diff --git a/libclc/clc/include/clc/relational/clc_issubnormal.h b/libclc/clc/include/clc/relational/clc_issubnormal.h new file mode 100644 index 0000000000000..548d50a08a6e3 --- /dev/null +++ b/libclc/clc/include/clc/relational/clc_issubnormal.h @@ -0,0 +1,42 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef __CLC_RELATIONAL_CLC_ISSUBNORMAL_H__ +#define __CLC_RELATIONAL_CLC_ISSUBNORMAL_H__ + +#include <clc/clcfunc.h> + +#define _CLC_ISSUBNORMAL_DECL(RET_TYPE, ARG_TYPE) \ + _CLC_OVERLOAD _CLC_CONST _CLC_DECL RET_TYPE __clc_issubnormal(ARG_TYPE); + +#define _CLC_VECTOR_ISSUBNORMAL_DECL(RET_TYPE, ARG_TYPE) \ + _CLC_ISSUBNORMAL_DECL(RET_TYPE##2, ARG_TYPE##2) \ + _CLC_ISSUBNORMAL_DECL(RET_TYPE##3, ARG_TYPE##3) \ + _CLC_ISSUBNORMAL_DECL(RET_TYPE##4, ARG_TYPE##4) \ + _CLC_ISSUBNORMAL_DECL(RET_TYPE##8, ARG_TYPE##8) \ + _CLC_ISSUBNORMAL_DECL(RET_TYPE##16, ARG_TYPE##16) + +_CLC_ISSUBNORMAL_DECL(int, float) +_CLC_VECTOR_ISSUBNORMAL_DECL(int, float) + +#ifdef cl_khr_fp64 +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +_CLC_ISSUBNORMAL_DECL(int, double) +_CLC_VECTOR_ISSUBNORMAL_DECL(long, double) +#endif + +#ifdef cl_khr_fp16 +#pragma OPENCL EXTENSION cl_khr_fp16 : enable +_CLC_ISSUBNORMAL_DECL(int, half) +_CLC_VECTOR_ISSUBNORMAL_DECL(short, half) +#endif + +#undef _CLC_ISSUBNORMAL_DECL +#undef _CLC_VECTOR_ISSUBNORMAL_DECL + +#endif // __CLC_RELATIONAL_CLC_ISSUBNORMAL_H__ diff --git a/libclc/clc/include/clc/relational/relational.h b/libclc/clc/include/clc/relational/relational.h index fa22232349944..32ed9f431ddbd 100644 --- a/libclc/clc/include/clc/relational/relational.h +++ b/libclc/clc/include/clc/relational/relational.h @@ -43,6 +43,7 @@ #define fcNan (__FPCLASS_SNAN | __FPCLASS_QNAN) #define fcInf (__FPCLASS_POSINF | __FPCLASS_NEGINF) #define fcNormal (__FPCLASS_POSNORMAL | __FPCLASS_NEGNORMAL) +#define fcSubnormal (__FPCLASS_POSSUBNORMAL | __FPCLASS_NEGSUBNORMAL) #define fcPosFinite \ (__FPCLASS_POSNORMAL | __FPCLASS_POSSUBNORMAL | __FPCLASS_POSZERO) #define fcNegFinite \ diff --git a/libclc/clc/lib/generic/SOURCES b/libclc/clc/lib/generic/SOURCES index ee080cd356629..ac820239baa17 100644 --- a/libclc/clc/lib/generic/SOURCES +++ b/libclc/clc/lib/generic/SOURCES @@ -166,6 +166,7 @@ relational/clc_isnan.cl relational/clc_isnormal.cl relational/clc_isnotequal.cl relational/clc_isordered.cl +relational/clc_issubnormal.cl relational/clc_isunordered.cl relational/clc_select.cl relational/clc_signbit.cl diff --git a/libclc/clc/lib/generic/relational/clc_issubnormal.cl b/libclc/clc/lib/generic/relational/clc_issubnormal.cl new file mode 100644 index 0000000000000..808afe4d9dfc5 --- /dev/null +++ b/libclc/clc/lib/generic/relational/clc_issubnormal.cl @@ -0,0 +1,32 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include <clc/internal/clc.h> +#include <clc/relational/relational.h> + +_CLC_DEFINE_ISFPCLASS(int, int, __clc_issubnormal, fcSubnormal, float) + +#ifdef cl_khr_fp64 + +#pragma OPENCL EXTENSION cl_khr_fp64 : enable + +// The scalar version of __clc_issubnormal(double) returns an int, but the +// vector versions return a long. +_CLC_DEFINE_ISFPCLASS(int, long, __clc_issubnormal, fcSubnormal, double) + +#endif + +#ifdef cl_khr_fp16 + +#pragma OPENCL EXTENSION cl_khr_fp16 : enable + +// The scalar version of __clc_issubnormal(half) returns an int, but the vector +// versions return a short. +_CLC_DEFINE_ISFPCLASS(int, short, __clc_issubnormal, fcSubnormal, half) + +#endif >From 7b3e96753a3ae4a85248bcdba92b1468cf148f14 Mon Sep 17 00:00:00 2001 From: Matt Arsenault <[email protected]> Date: Wed, 18 Feb 2026 09:57:00 +0100 Subject: [PATCH 2/3] Add include --- libclc/clc/lib/generic/relational/clc_issubnormal.cl | 1 + 1 file changed, 1 insertion(+) diff --git a/libclc/clc/lib/generic/relational/clc_issubnormal.cl b/libclc/clc/lib/generic/relational/clc_issubnormal.cl index 808afe4d9dfc5..d9138057844d7 100644 --- a/libclc/clc/lib/generic/relational/clc_issubnormal.cl +++ b/libclc/clc/lib/generic/relational/clc_issubnormal.cl @@ -8,6 +8,7 @@ #include <clc/internal/clc.h> #include <clc/relational/relational.h> +#include <clc/relational/clc_issubnormal.h> _CLC_DEFINE_ISFPCLASS(int, int, __clc_issubnormal, fcSubnormal, float) >From 8ef0a67e9400b77a9c1d1f4e795d1dd4dccb095d Mon Sep 17 00:00:00 2001 From: Matt Arsenault <[email protected]> Date: Wed, 18 Feb 2026 10:15:14 +0100 Subject: [PATCH 3/3] clang-format --- libclc/clc/lib/generic/relational/clc_issubnormal.cl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libclc/clc/lib/generic/relational/clc_issubnormal.cl b/libclc/clc/lib/generic/relational/clc_issubnormal.cl index d9138057844d7..cdbae69ee0c92 100644 --- a/libclc/clc/lib/generic/relational/clc_issubnormal.cl +++ b/libclc/clc/lib/generic/relational/clc_issubnormal.cl @@ -7,8 +7,8 @@ //===----------------------------------------------------------------------===// #include <clc/internal/clc.h> -#include <clc/relational/relational.h> #include <clc/relational/clc_issubnormal.h> +#include <clc/relational/relational.h> _CLC_DEFINE_ISFPCLASS(int, int, __clc_issubnormal, fcSubnormal, float) _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
