[libclc] 54eaf22 - [NFC][libclc] Simplify degrees, radians and smoothstep macros (#164203)

via cfe-commits cfe-commits at lists.llvm.org
Sun Oct 19 22:51:22 PDT 2025


Author: Wenju He
Date: 2025-10-20T13:51:18+08:00
New Revision: 54eaf22269ebd9433196602acc152152928f9a0d

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

LOG: [NFC][libclc] Simplify degrees, radians and smoothstep macros (#164203)

Implementation doesn't change.

Added: 
    libclc/clc/lib/generic/common/clc_degrees.inc
    libclc/clc/lib/generic/common/clc_radians.inc
    libclc/clc/lib/generic/common/clc_smoothstep.inc
    libclc/opencl/lib/generic/common/smoothstep.inc

Modified: 
    libclc/clc/lib/generic/common/clc_degrees.cl
    libclc/clc/lib/generic/common/clc_radians.cl
    libclc/clc/lib/generic/common/clc_smoothstep.cl
    libclc/clc/lib/generic/common/clc_step.cl
    libclc/opencl/lib/generic/common/smoothstep.cl

Removed: 
    


################################################################################
diff  --git a/libclc/clc/lib/generic/common/clc_degrees.cl b/libclc/clc/lib/generic/common/clc_degrees.cl
index 79b97f0ca75b0..9c48f50f3518d 100644
--- a/libclc/clc/lib/generic/common/clc_degrees.cl
+++ b/libclc/clc/lib/generic/common/clc_degrees.cl
@@ -6,36 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include <clc/common/clc_degrees.h>
 #include <clc/internal/clc.h>
 
-#define DEGREES_SINGLE_DEF(TYPE, LITERAL)                                      \
-  _CLC_OVERLOAD _CLC_DEF TYPE __clc_degrees(TYPE radians) {                    \
-    return (TYPE)LITERAL * radians;                                            \
-  }
-
-#define DEGREES_DEF(TYPE, LITERAL)                                             \
-  DEGREES_SINGLE_DEF(TYPE, LITERAL)                                            \
-  DEGREES_SINGLE_DEF(TYPE##2, LITERAL)                                         \
-  DEGREES_SINGLE_DEF(TYPE##3, LITERAL)                                         \
-  DEGREES_SINGLE_DEF(TYPE##4, LITERAL)                                         \
-  DEGREES_SINGLE_DEF(TYPE##8, LITERAL)                                         \
-  DEGREES_SINGLE_DEF(TYPE##16, LITERAL)
-
-// 180/pi = ~57.29577951308232087685 or 0x1.ca5dc1a63c1f8p+5 or 0x1.ca5dc2p+5F
-DEGREES_DEF(float, 0x1.ca5dc2p+5F)
-
-#ifdef cl_khr_fp64
-#pragma OPENCL EXTENSION cl_khr_fp64 : enable
-
-// 180/pi = ~57.29577951308232087685 or 0x1.ca5dc1a63c1f8p+5 or 0x1.ca5dc2p+5F
-DEGREES_DEF(double, 0x1.ca5dc1a63c1f8p+5)
-
-#endif
-
-#ifdef cl_khr_fp16
-#pragma OPENCL EXTENSION cl_khr_fp16 : enable
-
-// 180/pi = ~57.29577951308232087685 or 0x1.ca5dc1a63c1f8p+5 or 0x1.ca5dc2p+5F
-DEGREES_DEF(half, (half)0x1.ca5dc1a63c1f8p+5)
-
-#endif
+#define __CLC_BODY <clc_degrees.inc>
+#include <clc/math/gentype.inc>

diff  --git a/libclc/clc/lib/generic/common/clc_degrees.inc b/libclc/clc/lib/generic/common/clc_degrees.inc
new file mode 100644
index 0000000000000..ae6fb33b6d7ac
--- /dev/null
+++ b/libclc/clc/lib/generic/common/clc_degrees.inc
@@ -0,0 +1,22 @@
+//===----------------------------------------------------------------------===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+// 180/pi = ~57.29577951308232087685 or 0x1.ca5dc1a63c1f8p+5 or 0x1.ca5dc2p+5F
+#if __CLC_FPSIZE == 32
+#define DEGREE_LITERAL 0x1.ca5dc2p+5F
+#elif __CLC_FPSIZE == 64
+#define DEGREE_LITERAL 0x1.ca5dc1a63c1f8p+5
+#elif __CLC_FPSIZE == 16
+#define DEGREE_LITERAL (half)0x1.ca5dc1a63c1f8p+5
+#endif
+
+_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE __clc_degrees(__CLC_GENTYPE radians) {
+  return DEGREE_LITERAL * radians;
+}
+
+#undef DEGREE_LITERAL

diff  --git a/libclc/clc/lib/generic/common/clc_radians.cl b/libclc/clc/lib/generic/common/clc_radians.cl
index 3f013019ad974..6e8d6f3638101 100644
--- a/libclc/clc/lib/generic/common/clc_radians.cl
+++ b/libclc/clc/lib/generic/common/clc_radians.cl
@@ -6,36 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include <clc/common/clc_radians.h>
 #include <clc/internal/clc.h>
 
-#define __CLC_RADIANS_SINGLE_DEF(TYPE, LITERAL)                                \
-  _CLC_OVERLOAD _CLC_DEF TYPE __clc_radians(TYPE radians) {                    \
-    return (TYPE)LITERAL * radians;                                            \
-  }
-
-#define __CLC_RADIANS_DEF(TYPE, LITERAL)                                       \
-  __CLC_RADIANS_SINGLE_DEF(TYPE, LITERAL)                                      \
-  __CLC_RADIANS_SINGLE_DEF(TYPE##2, LITERAL)                                   \
-  __CLC_RADIANS_SINGLE_DEF(TYPE##3, LITERAL)                                   \
-  __CLC_RADIANS_SINGLE_DEF(TYPE##4, LITERAL)                                   \
-  __CLC_RADIANS_SINGLE_DEF(TYPE##8, LITERAL)                                   \
-  __CLC_RADIANS_SINGLE_DEF(TYPE##16, LITERAL)
-
-// pi/180 = ~0.01745329251994329577 or 0x1.1df46a2529d39p-6 or 0x1.1df46ap-6F
-__CLC_RADIANS_DEF(float, 0x1.1df46ap-6F)
-
-#ifdef cl_khr_fp64
-#pragma OPENCL EXTENSION cl_khr_fp64 : enable
-
-// pi/180 = ~0.01745329251994329577 or 0x1.1df46a2529d39p-6 or 0x1.1df46ap-6F
-__CLC_RADIANS_DEF(double, 0x1.1df46a2529d39p-6)
-
-#endif
-
-#ifdef cl_khr_fp16
-#pragma OPENCL EXTENSION cl_khr_fp16 : enable
-
-// pi/180 = ~0.01745329251994329577 or 0x1.1df46a2529d39p-6 or 0x1.1df46ap-6F
-__CLC_RADIANS_DEF(half, (half)0x1.1df46a2529d39p-6)
-
-#endif
+#define __CLC_BODY <clc_radians.inc>
+#include <clc/math/gentype.inc>

diff  --git a/libclc/clc/lib/generic/common/clc_radians.inc b/libclc/clc/lib/generic/common/clc_radians.inc
new file mode 100644
index 0000000000000..2f859775e5725
--- /dev/null
+++ b/libclc/clc/lib/generic/common/clc_radians.inc
@@ -0,0 +1,22 @@
+//===----------------------------------------------------------------------===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+// pi/180 = ~0.01745329251994329577 or 0x1.1df46a2529d39p-6 or 0x1.1df46ap-6F
+#if __CLC_FPSIZE == 32
+#define RADIAN_LITERAL 0x1.1df46ap-6F
+#elif __CLC_FPSIZE == 64
+#define RADIAN_LITERAL 0x1.1df46a2529d39p-6
+#elif __CLC_FPSIZE == 16
+#define RADIAN_LITERAL (half)0x1.1df46a2529d39p-6
+#endif
+
+_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE __clc_radians(__CLC_GENTYPE degrees) {
+  return RADIAN_LITERAL * degrees;
+}
+
+#undef RADIAN_LITERAL

diff  --git a/libclc/clc/lib/generic/common/clc_smoothstep.cl b/libclc/clc/lib/generic/common/clc_smoothstep.cl
index b409c7d7b6440..1c4d4a5a9b0bf 100644
--- a/libclc/clc/lib/generic/common/clc_smoothstep.cl
+++ b/libclc/clc/lib/generic/common/clc_smoothstep.cl
@@ -5,33 +5,10 @@
 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 //
 //===----------------------------------------------------------------------===//
+
+#include <clc/common/clc_smoothstep.h>
 #include <clc/internal/clc.h>
 #include <clc/shared/clc_clamp.h>
 
-#define SMOOTHSTEP_SINGLE_DEF(edge_type, x_type, lit_suff)                     \
-  _CLC_OVERLOAD _CLC_DEF x_type __clc_smoothstep(edge_type edge0,              \
-                                                 edge_type edge1, x_type x) {  \
-    x_type t = __clc_clamp((x - edge0) / (edge1 - edge0), 0.0##lit_suff,       \
-                           1.0##lit_suff);                                     \
-    return t * t * (3.0##lit_suff - 2.0##lit_suff * t);                        \
-  }
-
-#define SMOOTHSTEP_DEF(type, lit_suffix)                                       \
-  SMOOTHSTEP_SINGLE_DEF(type, type, lit_suffix)                                \
-  SMOOTHSTEP_SINGLE_DEF(type##2, type##2, lit_suffix)                          \
-  SMOOTHSTEP_SINGLE_DEF(type##3, type##3, lit_suffix)                          \
-  SMOOTHSTEP_SINGLE_DEF(type##4, type##4, lit_suffix)                          \
-  SMOOTHSTEP_SINGLE_DEF(type##8, type##8, lit_suffix)                          \
-  SMOOTHSTEP_SINGLE_DEF(type##16, type##16, lit_suffix)
-
-SMOOTHSTEP_DEF(float, F)
-
-#ifdef cl_khr_fp64
-#pragma OPENCL EXTENSION cl_khr_fp64 : enable
-SMOOTHSTEP_DEF(double, );
-#endif
-
-#ifdef cl_khr_fp16
-#pragma OPENCL EXTENSION cl_khr_fp16 : enable
-SMOOTHSTEP_DEF(half, H);
-#endif
+#define __CLC_BODY <clc_smoothstep.inc>
+#include <clc/math/gentype.inc>

diff  --git a/libclc/clc/lib/generic/common/clc_smoothstep.inc b/libclc/clc/lib/generic/common/clc_smoothstep.inc
new file mode 100644
index 0000000000000..f7d853c27b558
--- /dev/null
+++ b/libclc/clc/lib/generic/common/clc_smoothstep.inc
@@ -0,0 +1,15 @@
+//===----------------------------------------------------------------------===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE __clc_smoothstep(__CLC_GENTYPE edge0,
+                                                      __CLC_GENTYPE edge1,
+                                                      __CLC_GENTYPE x) {
+  __CLC_GENTYPE t = __clc_clamp((x - edge0) / (edge1 - edge0),
+                                __CLC_FP_LIT(0.0), __CLC_FP_LIT(1.0));
+  return t * t * (__CLC_FP_LIT(3.0) - __CLC_FP_LIT(2.0) * t);
+}

diff  --git a/libclc/clc/lib/generic/common/clc_step.cl b/libclc/clc/lib/generic/common/clc_step.cl
index 721489948233c..6bb9a66760e27 100644
--- a/libclc/clc/lib/generic/common/clc_step.cl
+++ b/libclc/clc/lib/generic/common/clc_step.cl
@@ -6,5 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include <clc/common/clc_step.h>
+#include <clc/internal/clc.h>
+
 #define __CLC_BODY <clc_step.inc>
 #include <clc/math/gentype.inc>

diff  --git a/libclc/opencl/lib/generic/common/smoothstep.cl b/libclc/opencl/lib/generic/common/smoothstep.cl
index 84ed7417de3cf..ee37718231929 100644
--- a/libclc/opencl/lib/generic/common/smoothstep.cl
+++ b/libclc/opencl/lib/generic/common/smoothstep.cl
@@ -9,59 +9,5 @@
 #include <clc/common/clc_smoothstep.h>
 #include <clc/opencl/common/smoothstep.h>
 
-#define SMOOTHSTEP_SINGLE_DEF(X_TYPE)                                          \
-  _CLC_OVERLOAD _CLC_DEF X_TYPE smoothstep(X_TYPE edge0, X_TYPE edge1,         \
-                                           X_TYPE x) {                         \
-    return __clc_smoothstep(edge0, edge1, x);                                  \
-  }
-
-#define SMOOTHSTEP_S_S_V_DEFS(X_TYPE)                                          \
-  _CLC_OVERLOAD _CLC_DEF X_TYPE##2 smoothstep(X_TYPE x, X_TYPE y,              \
-                                              X_TYPE##2 z) {                   \
-    return __clc_smoothstep((X_TYPE##2)x, (X_TYPE##2)y, z);                    \
-  }                                                                            \
-                                                                               \
-  _CLC_OVERLOAD _CLC_DEF X_TYPE##3 smoothstep(X_TYPE x, X_TYPE y,              \
-                                              X_TYPE##3 z) {                   \
-    return __clc_smoothstep((X_TYPE##3)x, (X_TYPE##3)y, z);                    \
-  }                                                                            \
-                                                                               \
-  _CLC_OVERLOAD _CLC_DEF X_TYPE##4 smoothstep(X_TYPE x, X_TYPE y,              \
-                                              X_TYPE##4 z) {                   \
-    return __clc_smoothstep((X_TYPE##4)x, (X_TYPE##4)y, z);                    \
-  }                                                                            \
-                                                                               \
-  _CLC_OVERLOAD _CLC_DEF X_TYPE##8 smoothstep(X_TYPE x, X_TYPE y,              \
-                                              X_TYPE##8 z) {                   \
-    return __clc_smoothstep((X_TYPE##8)x, (X_TYPE##8)y, z);                    \
-  }                                                                            \
-                                                                               \
-  _CLC_OVERLOAD _CLC_DEF X_TYPE##16 smoothstep(X_TYPE x, X_TYPE y,             \
-                                               X_TYPE##16 z) {                 \
-    return __clc_smoothstep((X_TYPE##16)x, (X_TYPE##16)y, z);                  \
-  }
-
-#define SMOOTHSTEP_DEF(type)                                                   \
-  SMOOTHSTEP_SINGLE_DEF(type)                                                  \
-  SMOOTHSTEP_SINGLE_DEF(type##2)                                               \
-  SMOOTHSTEP_SINGLE_DEF(type##3)                                               \
-  SMOOTHSTEP_SINGLE_DEF(type##4)                                               \
-  SMOOTHSTEP_SINGLE_DEF(type##8)                                               \
-  SMOOTHSTEP_SINGLE_DEF(type##16)                                              \
-  SMOOTHSTEP_S_S_V_DEFS(type)
-
-SMOOTHSTEP_DEF(float)
-
-#ifdef cl_khr_fp64
-#pragma OPENCL EXTENSION cl_khr_fp64 : enable
-
-SMOOTHSTEP_DEF(double);
-
-#endif
-
-#ifdef cl_khr_fp16
-#pragma OPENCL EXTENSION cl_khr_fp16 : enable
-
-SMOOTHSTEP_DEF(half);
-
-#endif
+#define __CLC_BODY <smoothstep.inc>
+#include <clc/math/gentype.inc>

diff  --git a/libclc/opencl/lib/generic/common/smoothstep.inc b/libclc/opencl/lib/generic/common/smoothstep.inc
new file mode 100644
index 0000000000000..ece87aa2e0c35
--- /dev/null
+++ b/libclc/opencl/lib/generic/common/smoothstep.inc
@@ -0,0 +1,23 @@
+//===----------------------------------------------------------------------===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE smoothstep(__CLC_GENTYPE edge0,
+                                                __CLC_GENTYPE edge1,
+                                                __CLC_GENTYPE x) {
+  return __clc_smoothstep(edge0, edge1, x);
+}
+
+#if !defined(__CLC_SCALAR)
+
+_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE smoothstep(__CLC_SCALAR_GENTYPE edge0,
+                                                __CLC_SCALAR_GENTYPE edge1,
+                                                __CLC_GENTYPE x) {
+  return __clc_smoothstep((__CLC_GENTYPE)edge0, (__CLC_GENTYPE)edge1, x);
+}
+
+#endif


        


More information about the cfe-commits mailing list