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

Reply via email to