6
6
using namespace sycl ;
7
7
queue q;
8
8
9
- // CHECK: define dso_local spir_kernel void @{{.*}}kernel_name_1{{.*}} !sycl_declared_aspects ![[ASPECTS1:[0-9]+]] !srcloc ![[SRCLOC1:[0-9]+]]
9
+ // CHECK-DAG : define dso_local spir_kernel void @{{.*}}kernel_name_1{{.*}} !sycl_declared_aspects ![[ASPECTS1:[0-9]+]] !srcloc ![[SRCLOC1:[0-9]+]]
10
10
11
- // CHECK: define dso_local spir_func void @{{.*}}func1{{.*}} !sycl_declared_aspects ![[ASPECTS1]] !srcloc ![[SRCLOC2:[0-9]+]] {
11
+ // CHECK-DAG : define dso_local spir_func void @{{.*}}func1{{.*}} !sycl_declared_aspects ![[ASPECTS1]] !srcloc ![[SRCLOC2:[0-9]+]] {
12
12
[[sycl::device_has(sycl::aspect::cpu)]] void func1 () {}
13
13
14
- // CHECK: define dso_local spir_func void @{{.*}}func2{{.*}} !sycl_declared_aspects ![[ASPECTS2:[0-9]+]] !srcloc ![[SRCLOC3:[0-9]+]] {
14
+ // CHECK-DAG : define dso_local spir_func void @{{.*}}func2{{.*}} !sycl_declared_aspects ![[ASPECTS2:[0-9]+]] !srcloc ![[SRCLOC3:[0-9]+]] {
15
15
[[sycl::device_has(sycl::aspect::fp16, sycl::aspect::gpu)]] void func2 () {}
16
16
17
- // CHECK: define dso_local spir_func void @{{.*}}func3{{.*}} !sycl_declared_aspects ![[EMPTYASPECTS:[0-9]+]] !srcloc ![[SRCLOC4:[0-9]+]] {
17
+ // CHECK-DAG : define dso_local spir_func void @{{.*}}func3{{.*}} !sycl_declared_aspects ![[EMPTYASPECTS:[0-9]+]] !srcloc ![[SRCLOC4:[0-9]+]] {
18
18
[[sycl::device_has()]] void func3 () {}
19
19
20
- // CHECK: define linkonce_odr spir_func void @{{.*}}func4{{.*}} !sycl_declared_aspects ![[ASPECTS3:[0-9]+]] !srcloc ![[SRCLOC5:[0-9]+]] {
20
+ // CHECK-DAG : define linkonce_odr spir_func void @{{.*}}func4{{.*}} !sycl_declared_aspects ![[ASPECTS3:[0-9]+]] !srcloc ![[SRCLOC5:[0-9]+]] {
21
21
template <sycl::aspect Aspect>
22
22
[[sycl::device_has(Aspect)]] void func4 () {}
23
23
24
- // CHECK: define dso_local spir_func void @{{.*}}func5{{.*}} !sycl_declared_aspects ![[ASPECTS1]] !srcloc ![[SRCLOC6:[0-9]+]] {
24
+ // CHECK-DAG : define dso_local spir_func void @{{.*}}func5{{.*}} !sycl_declared_aspects ![[ASPECTS1]] !srcloc ![[SRCLOC6:[0-9]+]] {
25
25
[[sycl::device_has(sycl::aspect::cpu)]] void func5 ();
26
26
void func5 () {}
27
27
28
28
constexpr sycl::aspect getAspect () { return sycl::aspect::cpu; }
29
- // CHECK: define dso_local spir_func void @{{.*}}func6{{.*}} !sycl_declared_aspects ![[ASPECTS1]] !srcloc ![[SRCLOC7:[0-9]+]] {
29
+ // CHECK-DAG : define dso_local spir_func void @{{.*}}func6{{.*}} !sycl_declared_aspects ![[ASPECTS1]] !srcloc ![[SRCLOC7:[0-9]+]] {
30
30
[[sycl::device_has(getAspect())]] void func6 () {}
31
31
32
- // CHECK: define linkonce_odr spir_func void @{{.*}}func7{{.*}} !sycl_declared_aspects ![[ASPECTS1]]
33
- // CHECK: define linkonce_odr spir_func void @{{.*}}func7{{.*}} !sycl_declared_aspects ![[ASPECTS5:[0-9]+]]
32
+ // CHECK-DAG : define linkonce_odr spir_func void @{{.*}}func7{{.*}} !sycl_declared_aspects ![[ASPECTS1]]
33
+ // CHECK-DAG : define linkonce_odr spir_func void @{{.*}}func7{{.*}} !sycl_declared_aspects ![[ASPECTS5:[0-9]+]]
34
34
template <sycl::aspect... Asp>
35
35
[[sycl::device_has(Asp...)]] void func7 () {}
36
36
37
- // CHECK: define linkonce_odr spir_func void @{{.*}}func8{{.*}} !sycl_declared_aspects ![[ASPECTS5]]
37
+ // CHECK-DAG : define linkonce_odr spir_func void @{{.*}}func8{{.*}} !sycl_declared_aspects ![[ASPECTS5]]
38
38
template <sycl::aspect Asp, sycl::aspect... AspPack>
39
39
[[sycl::device_has(Asp, AspPack...)]] void func8 () {}
40
40
41
+ // CHECK-DAG: declare !sycl_declared_aspects ![[ASPECTS6:[0-9]+]] spir_func void @{{.*}}func9{{.*}}
42
+ [[sycl::device_has(sycl::aspect::fp16)]]
43
+ SYCL_EXTERNAL void func9 ();
44
+
45
+ // CHECK-DAG: define dso_local spir_func void @{{.*}}func10{{.*}} !sycl_declared_aspects ![[ASPECTS6]]
46
+ [[sycl::device_has(sycl::aspect::fp16)]]
47
+ SYCL_EXTERNAL void func10 () {}
48
+
41
49
class KernelFunctor {
42
50
public:
43
51
[[sycl::device_has(sycl::aspect::cpu)]] void operator ()() const {
@@ -50,29 +58,32 @@ class KernelFunctor {
50
58
func7<sycl::aspect::cpu>();
51
59
func7<sycl::aspect::cpu, sycl::aspect::host>();
52
60
func8<sycl::aspect::cpu, sycl::aspect::host>();
61
+ func9 ();
62
+ func10 ();
53
63
}
54
64
};
55
65
56
66
void foo () {
57
67
q.submit ([&](handler &h) {
58
68
KernelFunctor f1;
59
69
h.single_task <class kernel_name_1 >(f1);
60
- // CHECK: define dso_local spir_kernel void @{{.*}}kernel_name_2{{.*}} !sycl_declared_aspects ![[ASPECTS4:[0-9]+]] !srcloc ![[SRCLOC8:[0-9]+]]
70
+ // CHECK-DAG : define dso_local spir_kernel void @{{.*}}kernel_name_2{{.*}} !sycl_declared_aspects ![[ASPECTS4:[0-9]+]] !srcloc ![[SRCLOC8:[0-9]+]]
61
71
h.single_task <class kernel_name_2 >([]() [[sycl::device_has (sycl::aspect::gpu)]] {});
62
72
});
63
73
}
64
74
65
- // CHECK: [[ASPECTS1]] = !{i32 1}
66
- // CHECK: [[SRCLOC1]] = !{i32 {{[0-9]+}}}
67
- // CHECK: [[EMPTYASPECTS]] = !{}
68
- // CHECK: [[SRCLOC2]] = !{i32 {{[0-9]+}}}
69
- // CHECK: [[ASPECTS2]] = !{i32 5, i32 2}
70
- // CHECK: [[SRCLOC3]] = !{i32 {{[0-9]+}}}
71
- // CHECK: [[SRCLOC4]] = !{i32 {{[0-9]+}}}
72
- // CHECK: [[ASPECTS3]] = !{i32 0}
73
- // CHECK: [[SRCLOC5]] = !{i32 {{[0-9]+}}}
74
- // CHECK: [[SRCLOC6]] = !{i32 {{[0-9]+}}}
75
- // CHECK: [[SRCLOC7]] = !{i32 {{[0-9]+}}}
76
- // CHECK: [[ASPECTS5]] = !{i32 1, i32 0}
77
- // CHECK: [[ASPECTS4]] = !{i32 2}
78
- // CHECK: [[SRCLOC8]] = !{i32 {{[0-9]+}}}
75
+ // CHECK-DAG: [[ASPECTS1]] = !{i32 1}
76
+ // CHECK-DAG: [[SRCLOC1]] = !{i32 {{[0-9]+}}}
77
+ // CHECK-DAG: [[EMPTYASPECTS]] = !{}
78
+ // CHECK-DAG: [[SRCLOC2]] = !{i32 {{[0-9]+}}}
79
+ // CHECK-DAG: [[ASPECTS2]] = !{i32 5, i32 2}
80
+ // CHECK-DAG: [[SRCLOC3]] = !{i32 {{[0-9]+}}}
81
+ // CHECK-DAG: [[SRCLOC4]] = !{i32 {{[0-9]+}}}
82
+ // CHECK-DAG: [[ASPECTS3]] = !{i32 0}
83
+ // CHECK-DAG: [[SRCLOC5]] = !{i32 {{[0-9]+}}}
84
+ // CHECK-DAG: [[SRCLOC6]] = !{i32 {{[0-9]+}}}
85
+ // CHECK-DAG: [[SRCLOC7]] = !{i32 {{[0-9]+}}}
86
+ // CHECK-DAG: [[ASPECTS5]] = !{i32 1, i32 0}
87
+ // CHECK-DAG: [[ASPECTS6]] = !{i32 5}
88
+ // CHECK-DAG: [[ASPECTS4]] = !{i32 2}
89
+ // CHECK-DAG: [[SRCLOC8]] = !{i32 {{[0-9]+}}}
0 commit comments