Skip to content

Commit 3b4ebca

Browse files
authored
[SYCL] Update test for free function kernels extension that checks emitted diagnostics if kernel violates restrictions (#18531)
This PR updates test for free function kernels extension that checks emitted diagnostics if kernel violates restrictions specified in spec for declaration of free function kernel. https://github.com/intel/llvm/blob/sycl/sycl/doc/extensions/proposed/sycl_ext_oneapi_free_function_kernels.asciidoc#defining-a-free-function-kernel Test introduced based on test plan: https://github.com/intel/llvm/blob/sycl/sycl/test-e2e/FreeFunctionKernels/test-plan.md
1 parent cf49e2e commit 3b4ebca

File tree

1 file changed

+31
-4
lines changed

1 file changed

+31
-4
lines changed

sycl/test/extensions/free_function_kernels/free_function_kernels_diagnostics.cpp

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,37 @@ void singleTaskKernelReference(int &Ref) {}
1111
SYCL_EXT_ONEAPI_FUNCTION_PROPERTY(syclexp::nd_range_kernel<2>)
1212
void ndRangeKernelReference(int &Ref) {}
1313

14-
// Diagnostic for these violations of the restrictions haven't been implemented
15-
// yet.
14+
// expected-error@+2 {{a function with a default argument value cannot be used to define SYCL free function kernel}}
1615
SYCL_EXT_ONEAPI_FUNCTION_PROPERTY(syclexp::single_task_kernel)
16+
void singleTaskKernelDefaultParameterValue(int DefVal = 1024) {}
1717

18+
// expected-error@+2 {{a function with a default argument value cannot be used to define SYCL free function kernel}}
1819
SYCL_EXT_ONEAPI_FUNCTION_PROPERTY(syclexp::nd_range_kernel<3>)
19-
void ndRangeKernelVariadic( // expected-error {{free function kernel cannot be a variadic function}}
20-
...) {}
20+
void ndRangeKernelReferenceDefaultParameterValue(int DefVal = 1024) {}
21+
22+
// expected-error@+2 {{free function kernel cannot be a variadic function}}
23+
SYCL_EXT_ONEAPI_FUNCTION_PROPERTY(syclexp::single_task_kernel)
24+
void singleTaskKernelVariadic(...) {}
25+
26+
// expected-error@+2 {{free function kernel cannot be a variadic function}}
27+
SYCL_EXT_ONEAPI_FUNCTION_PROPERTY(syclexp::nd_range_kernel<1>)
28+
void ndRangeKernelVariadic(...) {}
29+
30+
class DummyClass {
31+
public:
32+
// Diagnostic for these violations of the restrictions haven't been
33+
// implemented yet.
34+
SYCL_EXT_ONEAPI_FUNCTION_PROPERTY(syclexp::single_task_kernel)
35+
void singleTaskKernelNonStaticMemberFunc(int *Ptr) {}
36+
37+
SYCL_EXT_ONEAPI_FUNCTION_PROPERTY(syclexp::nd_range_kernel<2>)
38+
void ndRangeKernelNonStaticMemberFunc(float *Ptr) {}
39+
};
40+
41+
// expected-error@+2 {{SYCL free function kernel should have return type 'void'}}
42+
SYCL_EXT_ONEAPI_FUNCTION_PROPERTY(syclexp::single_task_kernel)
43+
float singleTaskKernelNonVoid() { return 0.0F; }
44+
45+
// expected-error@+2 {{SYCL free function kernel should have return type 'void'}}
46+
SYCL_EXT_ONEAPI_FUNCTION_PROPERTY(syclexp::nd_range_kernel<3>)
47+
int ndRangeKernelNonVoid() { return 0; }

0 commit comments

Comments
 (0)