Author: Anastasia Stulova Date: 2021-05-06T13:59:38+01:00 New Revision: c28a602329a78db5c02cc85679b5035aaf6753b4
URL: https://github.com/llvm/llvm-project/commit/c28a602329a78db5c02cc85679b5035aaf6753b4 DIFF: https://github.com/llvm/llvm-project/commit/c28a602329a78db5c02cc85679b5035aaf6753b4.diff LOG: [OpenCL] Remove subgroups pragma in enqueue kernel and pipe builtins. This patch simplifies the parser and makes the language semantics consistent. There is no extension pragma requirement in the spec for the subgroup functions in enqueue kernel or pipes and all other builtin functions are available without the pragama. Differential Revision: https://reviews.llvm.org/D100984 Added: Modified: clang/lib/Sema/SemaChecking.cpp clang/test/SemaOpenCL/cl20-device-side-enqueue.cl Removed: ################################################################################ diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp index 38cda657bac8b..415773e62ad52 100644 --- a/clang/lib/Sema/SemaChecking.cpp +++ b/clang/lib/Sema/SemaChecking.cpp @@ -838,8 +838,7 @@ static bool checkOpenCLBlockArgs(Sema &S, Expr *BlockArg) { } static bool checkOpenCLSubgroupExt(Sema &S, CallExpr *Call) { - if (!S.getOpenCLOptions().isAvailableOption("cl_khr_subgroups", - S.getLangOpts())) { + if (!S.getOpenCLOptions().isSupported("cl_khr_subgroups", S.getLangOpts())) { S.Diag(Call->getBeginLoc(), diag::err_opencl_requires_extension) << 1 << Call->getDirectCallee() << "cl_khr_subgroups"; return true; diff --git a/clang/test/SemaOpenCL/cl20-device-side-enqueue.cl b/clang/test/SemaOpenCL/cl20-device-side-enqueue.cl index d25a03504c03a..5cfdfb3cdc5ca 100644 --- a/clang/test/SemaOpenCL/cl20-device-side-enqueue.cl +++ b/clang/test/SemaOpenCL/cl20-device-side-enqueue.cl @@ -1,4 +1,5 @@ // RUN: %clang_cc1 %s -cl-std=CL2.0 -triple "spir-unknown-unknown" -verify -pedantic -fsyntax-only -DB32 -DQUALS= +// RUN: %clang_cc1 %s -cl-std=CL2.0 -triple "spir-unknown-unknown" -verify -pedantic -fsyntax-only -DB32 -DQUALS= -cl-ext=-cl_khr_subgroups // RUN: %clang_cc1 %s -cl-std=CL2.0 -triple "spir-unknown-unknown" -verify -pedantic -fsyntax-only -DB32 -DQUALS="const volatile" // RUN: %clang_cc1 %s -cl-std=CL2.0 -triple "spir64-unknown-unknown" -verify -pedantic -fsyntax-only -Wconversion -DWCONV -DQUALS= // RUN: %clang_cc1 %s -cl-std=CL2.0 -triple "spir64-unknown-unknown" -verify -pedantic -fsyntax-only -Wconversion -DWCONV -DQUALS="const volatile" @@ -212,8 +213,8 @@ kernel void work_group_size_tests() { size = get_kernel_preferred_work_group_size_multiple(block_A, 1); // expected-error{{too many arguments to function call, expected 1, have 2}} } +#ifdef cl_khr_subgroups #pragma OPENCL EXTENSION cl_khr_subgroups : enable - kernel void foo(global unsigned int *buf) { ndrange_t n; @@ -231,7 +232,7 @@ kernel void bar(global unsigned int *buf) } #pragma OPENCL EXTENSION cl_khr_subgroups : disable - +#else kernel void foo1(global unsigned int *buf) { ndrange_t n; @@ -243,3 +244,4 @@ kernel void bar1(global unsigned int *buf) ndrange_t n; buf[0] = get_kernel_sub_group_count_for_ndrange(n, ^(){}); // expected-error {{use of declaration 'get_kernel_sub_group_count_for_ndrange' requires cl_khr_subgroups support}} } +#endif // ifdef cl_khr_subgroups _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits