https://github.com/wenju-he created 
https://github.com/llvm/llvm-project/pull/200747

Per OpenCL spec, sub_group_non_uniform_reduce_* functions requires support for 
the cl_khr_subgroup_non_uniform_arithmetic extension.

>From c1e53ff5ce76351534599ac571444fc0559622a9 Mon Sep 17 00:00:00 2001
From: Wenju He <[email protected]>
Date: Mon, 1 Jun 2026 09:50:53 +0200
Subject: [PATCH] [AMDGPU][libclc] Enable
 cl_khr_subgroup_non_uniform_arithmetic and use in libclc

Per OpenCL spec, sub_group_non_uniform_reduce_* functions requires
support for the cl_khr_subgroup_non_uniform_arithmetic extension.
---
 clang/lib/Basic/Targets/AMDGPU.h                              | 1 +
 clang/test/Misc/amdgcn.languageOptsOpenCL.cl                  | 4 ++++
 .../lib/generic/subgroup/sub_group_non_uniform_reduce.cl      | 4 ++++
 3 files changed, 9 insertions(+)

diff --git a/clang/lib/Basic/Targets/AMDGPU.h b/clang/lib/Basic/Targets/AMDGPU.h
index f1bfca4c42417..29327067dbbff 100644
--- a/clang/lib/Basic/Targets/AMDGPU.h
+++ b/clang/lib/Basic/Targets/AMDGPU.h
@@ -324,6 +324,7 @@ class LLVM_LIBRARY_VISIBILITY AMDGPUTargetInfo final : 
public TargetInfo {
       Opts["cl_khr_mipmap_image"] = true;
       Opts["cl_khr_mipmap_image_writes"] = true;
       Opts["cl_khr_subgroups"] = true;
+      Opts["cl_khr_subgroup_non_uniform_arithmetic"] = true;
       Opts["cl_amd_media_ops"] = true;
       Opts["cl_amd_media_ops2"] = true;
 
diff --git a/clang/test/Misc/amdgcn.languageOptsOpenCL.cl 
b/clang/test/Misc/amdgcn.languageOptsOpenCL.cl
index 5e611329b518d..3971bb99b113d 100644
--- a/clang/test/Misc/amdgcn.languageOptsOpenCL.cl
+++ b/clang/test/Misc/amdgcn.languageOptsOpenCL.cl
@@ -158,6 +158,10 @@
 #endif
 #pragma OPENCL EXTENSION cl_khr_subgroups: enable
 
+#ifndef cl_khr_subgroup_non_uniform_arithmetic
+#error "Missing cl_khr_subgroup_non_uniform_arithmetic define"
+#endif
+
 #ifndef cl_amd_media_ops
 #error "Missing cl_amd_media_ops define"
 #endif
diff --git a/libclc/opencl/lib/generic/subgroup/sub_group_non_uniform_reduce.cl 
b/libclc/opencl/lib/generic/subgroup/sub_group_non_uniform_reduce.cl
index e00717b979ea1..d46afb88afa59 100644
--- a/libclc/opencl/lib/generic/subgroup/sub_group_non_uniform_reduce.cl
+++ b/libclc/opencl/lib/generic/subgroup/sub_group_non_uniform_reduce.cl
@@ -8,6 +8,8 @@
 
 #include "clc/subgroup/clc_sub_group_non_uniform_reduce.h"
 
+#ifdef cl_khr_subgroup_non_uniform_arithmetic
+
 #define __CLC_BODY "sub_group_non_uniform_reduce.inc"
 #include "clc/integer/gentype.inc"
 
@@ -28,3 +30,5 @@ _CLC_DEF _CLC_OVERLOAD int
 sub_group_non_uniform_reduce_logical_xor(int predicate) {
   return __clc_sub_group_non_uniform_reduce_logical_xor(predicate);
 }
+
+#endif // cl_khr_subgroup_non_uniform_arithmetic

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to