Skip to content

Commit ef81032

Browse files
committed
Add test for RTC mode
Signed-off-by: Lukas Sommer <[email protected]>
1 parent 44ad31f commit ef81032

File tree

1 file changed

+80
-0
lines changed

1 file changed

+80
-0
lines changed
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
// RUN: %clang_cc1 -fsycl-is-device -internal-isystem %S/Inputs -triple spir64-unknown-unknown -sycl-std=2020 -fsycl-rtc-mode -fsycl-int-header=%t.rtc.h %s
2+
// RUN: FileCheck -input-file=%t.rtc.h --check-prefixes=CHECK,CHECK-RTC %s
3+
4+
// RUN: %clang_cc1 -fsycl-is-device -internal-isystem %S/Inputs -triple spir64-unknown-unknown -sycl-std=2020 -fno-sycl-rtc-mode -fsycl-int-header=%t.nortc.h %s
5+
// RUN: FileCheck -input-file=%t.nortc.h --check-prefixes=CHECK,CHECK-NORTC %s
6+
7+
// This test checks that free-function kernel information is included or
8+
// excluded from the integration header, depending on the '-fsycl-rtc-mode'
9+
// flag.
10+
11+
#include "sycl.hpp"
12+
13+
[[__sycl_detail__::add_ir_attributes_function("sycl-single-task-kernel", 2)]]
14+
void free_function_single(int* ptr, int start, int end){
15+
for(int i = start; i < end; ++i){
16+
ptr[i] = start + 66;
17+
}
18+
}
19+
20+
[[__sycl_detail__::add_ir_attributes_function("sycl-nd-range-kernel", 2)]]
21+
void free_function_nd_range(int* ptr, int start, int end){
22+
for(int i = start; i < end; ++i){
23+
ptr[i] = start + 66;
24+
}
25+
}
26+
27+
template<typename KernelName, typename KernelFunc>
28+
__attribute__((sycl_kernel)) void kernel(const KernelFunc &kernelFunc){
29+
kernelFunc();
30+
}
31+
32+
int main(){
33+
sycl::accessor<int, 1, sycl::access::mode::read_write> accessorA;
34+
kernel<class Kernel_Function>(
35+
[=]() {
36+
accessorA.use();
37+
});
38+
return 0;
39+
}
40+
41+
42+
// CHECK: const char* const kernel_names[] = {
43+
// CHECK-NEXT: "{{.*}}__sycl_kernel_free_function_singlePiii",
44+
// CHECK-NEXT: "{{.*}}__sycl_kernel_free_function_nd_rangePiii",
45+
// CHECK-NEXT: "{{.*}}Kernel_Function",
46+
47+
48+
// CHECK: static constexpr const char* getName() { return "{{.*}}__sycl_kernel_free_function_singlePiii"; }
49+
// CHECK: static constexpr const char* getName() { return "{{.*}}__sycl_kernel_free_function_nd_rangePiii"; }
50+
// CHECK: static constexpr const char* getName() { return "{{.*}}Kernel_Function"; }
51+
52+
// CHECK-RTC-NOT: free_function_single_kernel
53+
// CHECK-RTC-NOT: free_function_nd_range
54+
55+
// CHECK-NORTC: void free_function_single(int *ptr, int start, int end);
56+
// CHECK-NORTC: static constexpr auto __sycl_shim[[#FIRST:]]()
57+
// CHECK-NORTC-NEXT: return (void (*)(int *, int, int))free_function_single;
58+
59+
// CHECK-NORTC: struct ext::oneapi::experimental::is_kernel<__sycl_shim[[#FIRST]]()> {
60+
// CHECK-NORTC-NEXT: static constexpr bool value = true;
61+
62+
// CHECK-NORTC: struct ext::oneapi::experimental::is_single_task_kernel<__sycl_shim[[#FIRST]]()> {
63+
// CHECK-NORTC-NEXT: static constexpr bool value = true;
64+
65+
66+
// CHECK-NORTC: void free_function_nd_range(int *ptr, int start, int end);
67+
// CHECK-NORTC: static constexpr auto __sycl_shim[[#SECOND:]]() {
68+
// CHECK-NORTC-NEXT: return (void (*)(int *, int, int))free_function_nd_range;
69+
70+
// CHECK-NORTC: struct ext::oneapi::experimental::is_kernel<__sycl_shim[[#SECOND]]()> {
71+
// CHECK-NORTC-NEXT: static constexpr bool value = true;
72+
73+
// CHECK-NORTC: struct ext::oneapi::experimental::is_nd_range_kernel<__sycl_shim2(), 2> {
74+
// CHECK-NORTC-NEXT: static constexpr bool value = true;
75+
76+
// CHECK-NORTC: kernel_id ext::oneapi::experimental::get_kernel_id<__sycl_shim[[#FIRST]]()>() {
77+
// CHECK-NORTC-NEXT: return sycl::detail::get_kernel_id_impl(std::string_view{"{{.*}}__sycl_kernel_free_function_singlePiii"});
78+
79+
// CHECK-NORTC: kernel_id ext::oneapi::experimental::get_kernel_id<__sycl_shim[[#SECOND]]()>() {
80+
// CHECK-NORTC-NEXT: return sycl::detail::get_kernel_id_impl(std::string_view{"{{.*}}__sycl_kernel_free_function_nd_rangePiii"});

0 commit comments

Comments
 (0)