1
1
// RUN: %clang -cc1 -triple spir64-unknown-linux-sycldevice -std=c++11 -fsycl-is-device -emit-llvm -x c++ %s -o - | FileCheck %s
2
2
void bar (int & Data) {}
3
- // CHECK: define spir_func void [[RAW_REF:@ [a-zA-Z0-9_]+]](i32* dereferenceable(4) %
3
+ // CHECK: define spir_func void @ [[RAW_REF:[a-zA-Z0-9_]+]](i32* dereferenceable(4) %
4
4
void bar2 (int & Data) {}
5
- // CHECK: define spir_func void [[RAW_REF2:@ [a-zA-Z0-9_]+]](i32* dereferenceable(4) %
5
+ // CHECK: define spir_func void @ [[RAW_REF2:[a-zA-Z0-9_]+]](i32* dereferenceable(4) %
6
6
void bar (__local int &Data) {}
7
7
// CHECK: define spir_func void [[LOC_REF:@[a-zA-Z0-9_]+]](i32 addrspace(3)* dereferenceable(4) %
8
8
void foo (int * Data) {}
9
- // CHECK: define spir_func void [[RAW_PTR:@ [a-zA-Z0-9_]+]](i32* %
9
+ // CHECK: define spir_func void @ [[RAW_PTR:[a-zA-Z0-9_]+]](i32* %
10
10
void foo2 (int * Data) {}
11
- // CHECK: define spir_func void [[RAW_PTR2:@ [a-zA-Z0-9_]+]](i32* %
11
+ // CHECK: define spir_func void @ [[RAW_PTR2:[a-zA-Z0-9_]+]](i32* %
12
12
void foo (__attribute__((address_space(3 ))) int * Data) {}
13
13
// CHECK: define spir_func void [[LOC_PTR:@[a-zA-Z0-9_]+]](i32 addrspace(3)* %
14
14
@@ -26,49 +26,49 @@ void usages() {
26
26
27
27
bar (*GLOB);
28
28
// CHECK: [[GLOB_LOAD:%[a-zA-Z0-9]+]] = load i32 addrspace(1)*, i32 addrspace(1)** [[GLOB]]
29
- // CHECK: [[GLOB_CAST:%[a-zA-Z0-9]+]] = addrspacecast i32 addrspace(1)* [[GLOB_LOAD]] to i32*
30
- // CHECK: call spir_func void [[RAW_REF]](i32* dereferenceable (4) [[GLOB_CAST]])
29
+ // CHECK: [[GLOB_CAST:%[a-zA-Z0-9]+]] = addrspacecast i32 addrspace(1)* [[GLOB_LOAD]] to i32 addrspace(4) *
30
+ // CHECK: call spir_func void @new. [[RAW_REF]](i32 addrspace (4)* [[GLOB_CAST]])
31
31
bar2 (*GLOB);
32
32
// CHECK: [[GLOB_LOAD2:%[a-zA-Z0-9]+]] = load i32 addrspace(1)*, i32 addrspace(1)** [[GLOB]]
33
- // CHECK: [[GLOB_CAST2:%[a-zA-Z0-9]+]] = addrspacecast i32 addrspace(1)* [[GLOB_LOAD2]] to i32*
34
- // CHECK: call spir_func void [[RAW_REF2]](i32* dereferenceable (4) [[GLOB_CAST2]])
33
+ // CHECK: [[GLOB_CAST2:%[a-zA-Z0-9]+]] = addrspacecast i32 addrspace(1)* [[GLOB_LOAD2]] to i32 addrspace(4) *
34
+ // CHECK: call spir_func void @new. [[RAW_REF2]](i32 addrspace (4)* [[GLOB_CAST2]])
35
35
36
36
bar (*LOC);
37
37
// CHECK: [[LOC_LOAD:%[a-zA-Z0-9]+]] = load i32 addrspace(3)*, i32 addrspace(3)** [[LOC]]
38
38
// CHECK: call spir_func void [[LOC_REF]](i32 addrspace(3)* dereferenceable(4) [[LOC_LOAD]])
39
39
bar2 (*LOC);
40
40
// CHECK: [[LOC_LOAD2:%[a-zA-Z0-9]+]] = load i32 addrspace(3)*, i32 addrspace(3)** [[LOC]]
41
- // CHECK: [[LOC_CAST2:%[a-zA-Z0-9]+]] = addrspacecast i32 addrspace(3)* [[LOC_LOAD2]] to i32*
42
- // CHECK: call spir_func void [[RAW_REF2]](i32* dereferenceable (4) [[LOC_CAST2]])
41
+ // CHECK: [[LOC_CAST2:%[a-zA-Z0-9]+]] = addrspacecast i32 addrspace(3)* [[LOC_LOAD2]] to i32 addrspace(4) *
42
+ // CHECK: call spir_func void @new. [[RAW_REF2]](i32 addrspace (4)* [[LOC_CAST2]])
43
43
44
44
bar (*NoAS);
45
45
// CHECK: [[NoAS_LOAD:%[a-zA-Z0-9]+]] = load i32*, i32** [[NoAS]]
46
- // CHECK: call spir_func void [[RAW_REF]](i32* dereferenceable(4) [[NoAS_LOAD]])
46
+ // CHECK: call spir_func void @ [[RAW_REF]](i32* dereferenceable(4) [[NoAS_LOAD]])
47
47
bar2 (*NoAS);
48
48
// CHECK: [[NoAS_LOAD2:%[a-zA-Z0-9]+]] = load i32*, i32** [[NoAS]]
49
- // CHECK: call spir_func void [[RAW_REF2]](i32* dereferenceable(4) [[NoAS_LOAD2]])
49
+ // CHECK: call spir_func void @ [[RAW_REF2]](i32* dereferenceable(4) [[NoAS_LOAD2]])
50
50
51
51
foo (GLOB);
52
52
// CHECK: [[GLOB_LOAD3:%[a-zA-Z0-9]+]] = load i32 addrspace(1)*, i32 addrspace(1)** [[GLOB]]
53
- // CHECK: [[GLOB_CAST3:%[a-zA-Z0-9]+]] = addrspacecast i32 addrspace(1)* [[GLOB_LOAD3]] to i32*
54
- // CHECK: call spir_func void [[RAW_PTR]](i32* [[GLOB_CAST3]])
53
+ // CHECK: [[GLOB_CAST3:%[a-zA-Z0-9]+]] = addrspacecast i32 addrspace(1)* [[GLOB_LOAD3]] to i32 addrspace(4) *
54
+ // CHECK: call spir_func void @new. [[RAW_PTR]](i32 addrspace(4) * [[GLOB_CAST3]])
55
55
foo2 (GLOB);
56
56
// CHECK: [[GLOB_LOAD4:%[a-zA-Z0-9]+]] = load i32 addrspace(1)*, i32 addrspace(1)** [[GLOB]]
57
- // CHECK: [[GLOB_CAST4:%[a-zA-Z0-9]+]] = addrspacecast i32 addrspace(1)* [[GLOB_LOAD4]] to i32*
58
- // CHECK: call spir_func void [[RAW_PTR2]](i32* [[GLOB_CAST4]])
57
+ // CHECK: [[GLOB_CAST4:%[a-zA-Z0-9]+]] = addrspacecast i32 addrspace(1)* [[GLOB_LOAD4]] to i32 addrspace(4) *
58
+ // CHECK: call spir_func void @new. [[RAW_PTR2]](i32 addrspace(4) * [[GLOB_CAST4]])
59
59
foo (LOC);
60
60
// CHECK: [[LOC_LOAD3:%[a-zA-Z0-9]+]] = load i32 addrspace(3)*, i32 addrspace(3)** [[LOC]]
61
61
// CHECK: call spir_func void [[LOC_PTR]](i32 addrspace(3)* [[LOC_LOAD3]])
62
62
foo2 (LOC);
63
63
// CHECK: [[LOC_LOAD4:%[a-zA-Z0-9]+]] = load i32 addrspace(3)*, i32 addrspace(3)** [[LOC]]
64
- // CHECK: [[LOC_CAST4:%[a-zA-Z0-9]+]] = addrspacecast i32 addrspace(3)* [[LOC_LOAD4]] to i32*
65
- // CHECK: call spir_func void [[RAW_PTR2]](i32* [[LOC_CAST4]])
64
+ // CHECK: [[LOC_CAST4:%[a-zA-Z0-9]+]] = addrspacecast i32 addrspace(3)* [[LOC_LOAD4]] to i32 addrspace(4) *
65
+ // CHECK: call spir_func void @new. [[RAW_PTR2]](i32 addrspace(4) * [[LOC_CAST4]])
66
66
foo (NoAS);
67
67
// CHECK: [[NoAS_LOAD3:%[a-zA-Z0-9]+]] = load i32*, i32** [[NoAS]]
68
- // CHECK: call spir_func void [[RAW_PTR]](i32* [[NoAS_LOAD3]])
68
+ // CHECK: call spir_func void @ [[RAW_PTR]](i32* [[NoAS_LOAD3]])
69
69
foo2 (NoAS);
70
70
// CHECK: [[NoAS_LOAD4:%[a-zA-Z0-9]+]] = load i32*, i32** [[NoAS]]
71
- // CHECK: call spir_func void [[RAW_PTR2]](i32* [[NoAS_LOAD4]])
71
+ // CHECK: call spir_func void @ [[RAW_PTR2]](i32* [[NoAS_LOAD4]])
72
72
73
73
// Ensure that we still get 3 different template instantiations.
74
74
tmpl (GLOB);
@@ -108,41 +108,50 @@ void usages2() {
108
108
109
109
bar (*PRIV_NUM);
110
110
// CHECK: [[PRIV_NUM_LOAD:%[a-zA-Z0-9]+]] = load i32 addrspace(5)*, i32 addrspace(5)** [[PRIV_NUM]]
111
- // CHECK: [[PRIV_NUM_CAST:%[a-zA-Z0-9]+]] = addrspacecast i32 addrspace(5)* [[PRIV_NUM_LOAD]] to i32*
112
- // CHECK: call spir_func void [[RAW_REF]](i32* dereferenceable (4) [[PRIV_NUM_CAST]])
111
+ // CHECK: [[PRIV_NUM_CAST:%[a-zA-Z0-9]+]] = addrspacecast i32 addrspace(5)* [[PRIV_NUM_LOAD]] to i32 addrspace(4) *
112
+ // CHECK: call spir_func void @new. [[RAW_REF]](i32 addrspace (4)* [[PRIV_NUM_CAST]])
113
113
bar (*PRIV_NUM2);
114
114
// CHECK: [[PRIV_NUM2_LOAD:%[a-zA-Z0-9]+]] = load i32 addrspace(5)*, i32 addrspace(5)** [[PRIV_NUM2]]
115
- // CHECK: [[PRIV_NUM2_CAST:%[a-zA-Z0-9]+]] = addrspacecast i32 addrspace(5)* [[PRIV_NUM2_LOAD]] to i32*
116
- // CHECK: call spir_func void [[RAW_REF]](i32* dereferenceable (4) [[PRIV_NUM2_CAST]])
115
+ // CHECK: [[PRIV_NUM2_CAST:%[a-zA-Z0-9]+]] = addrspacecast i32 addrspace(5)* [[PRIV_NUM2_LOAD]] to i32 addrspace(4) *
116
+ // CHECK: call spir_func void @new. [[RAW_REF]](i32 addrspace (4)* [[PRIV_NUM2_CAST]])
117
117
bar (*PRIV);
118
118
// CHECK: [[PRIV_LOAD:%[a-zA-Z0-9]+]] = load i32 addrspace(5)*, i32 addrspace(5)** [[PRIV]]
119
- // CHECK: [[PRIV_CAST:%[a-zA-Z0-9]+]] = addrspacecast i32 addrspace(5)* [[PRIV_LOAD]] to i32*
120
- // CHECK: call spir_func void [[RAW_REF]](i32* dereferenceable (4) [[PRIV_CAST]])
119
+ // CHECK: [[PRIV_CAST:%[a-zA-Z0-9]+]] = addrspacecast i32 addrspace(5)* [[PRIV_LOAD]] to i32 addrspace(4) *
120
+ // CHECK: call spir_func void @new. [[RAW_REF]](i32 addrspace (4)* [[PRIV_CAST]])
121
121
bar (*GLOB_NUM);
122
122
// CHECK: [[GLOB_NUM_LOAD:%[a-zA-Z0-9]+]] = load i32 addrspace(1)*, i32 addrspace(1)** [[GLOB_NUM]]
123
- // CHECK: [[GLOB_NUM_CAST:%[a-zA-Z0-9]+]] = addrspacecast i32 addrspace(1)* [[GLOB_NUM_LOAD]] to i32*
124
- // CHECK: call spir_func void [[RAW_REF]](i32* dereferenceable (4) [[GLOB_NUM_CAST]])
123
+ // CHECK: [[GLOB_NUM_CAST:%[a-zA-Z0-9]+]] = addrspacecast i32 addrspace(1)* [[GLOB_NUM_LOAD]] to i32 addrspace(4) *
124
+ // CHECK: call spir_func void @new. [[RAW_REF]](i32 addrspace (4)* [[GLOB_NUM_CAST]])
125
125
bar (*GLOB);
126
126
// CHECK: [[GLOB_LOAD:%[a-zA-Z0-9]+]] = load i32 addrspace(1)*, i32 addrspace(1)** [[GLOB]]
127
- // CHECK: [[GLOB_CAST:%[a-zA-Z0-9]+]] = addrspacecast i32 addrspace(1)* [[GLOB_LOAD]] to i32*
128
- // CHECK: call spir_func void [[RAW_REF]](i32* dereferenceable (4) [[GLOB_CAST]])
127
+ // CHECK: [[GLOB_CAST:%[a-zA-Z0-9]+]] = addrspacecast i32 addrspace(1)* [[GLOB_LOAD]] to i32 addrspace(4) *
128
+ // CHECK: call spir_func void @new. [[RAW_REF]](i32 addrspace (4)* [[GLOB_CAST]])
129
129
bar (*CONST_NUM);
130
130
// CHECK: [[CONST_NUM_LOAD:%[a-zA-Z0-9]+]] = load i32 addrspace(2)*, i32 addrspace(2)** [[CONST_NUM]]
131
- // CHECK: [[CONST_NUM_CAST:%[a-zA-Z0-9]+]] = addrspacecast i32 addrspace(2)* [[CONST_NUM_LOAD]] to i32*
132
- // CHECK: call spir_func void [[RAW_REF]](i32* dereferenceable (4) [[CONST_NUM_CAST]])
131
+ // CHECK: [[CONST_NUM_CAST:%[a-zA-Z0-9]+]] = addrspacecast i32 addrspace(2)* [[CONST_NUM_LOAD]] to i32 addrspace(4) *
132
+ // CHECK: call spir_func void @new. [[RAW_REF]](i32 addrspace (4)* [[CONST_NUM_CAST]])
133
133
bar (*CONST);
134
134
// CHECK: [[CONST_LOAD:%[a-zA-Z0-9]+]] = load i32 addrspace(2)*, i32 addrspace(2)** [[CONST]]
135
- // CHECK: [[CONST_CAST:%[a-zA-Z0-9]+]] = addrspacecast i32 addrspace(2)* [[CONST_LOAD]] to i32*
136
- // CHECK: call spir_func void [[RAW_REF]](i32* dereferenceable (4) [[CONST_CAST]])
135
+ // CHECK: [[CONST_CAST:%[a-zA-Z0-9]+]] = addrspacecast i32 addrspace(2)* [[CONST_LOAD]] to i32 addrspace(4) *
136
+ // CHECK: call spir_func void @new. [[RAW_REF]](i32 addrspace (4)* [[CONST_CAST]])
137
137
bar2 (*LOCAL_NUM);
138
138
// CHECK: [[LOCAL_NUM_LOAD:%[a-zA-Z0-9]+]] = load i32 addrspace(3)*, i32 addrspace(3)** [[LOCAL_NUM]]
139
- // CHECK: [[LOCAL_NUM_CAST:%[a-zA-Z0-9]+]] = addrspacecast i32 addrspace(3)* [[LOCAL_NUM_LOAD]] to i32*
140
- // CHECK: call spir_func void [[RAW_REF2]](i32* dereferenceable (4) [[LOCAL_NUM_CAST]])
139
+ // CHECK: [[LOCAL_NUM_CAST:%[a-zA-Z0-9]+]] = addrspacecast i32 addrspace(3)* [[LOCAL_NUM_LOAD]] to i32 addrspace(4) *
140
+ // CHECK: call spir_func void @new. [[RAW_REF2]](i32 addrspace (4)* [[LOCAL_NUM_CAST]])
141
141
bar2 (*LOCAL);
142
142
// CHECK: [[LOCAL_LOAD:%[a-zA-Z0-9]+]] = load i32 addrspace(3)*, i32 addrspace(3)** [[LOCAL]]
143
- // CHECK: [[LOCAL_CAST:%[a-zA-Z0-9]+]] = addrspacecast i32 addrspace(3)* [[LOCAL_LOAD]] to i32*
144
- // CHECK: call spir_func void [[RAW_REF2]](i32* dereferenceable (4) [[LOCAL_CAST]])
143
+ // CHECK: [[LOCAL_CAST:%[a-zA-Z0-9]+]] = addrspacecast i32 addrspace(3)* [[LOCAL_LOAD]] to i32 addrspace(4) *
144
+ // CHECK: call spir_func void @new. [[RAW_REF2]](i32 addrspace (4)* [[LOCAL_CAST]])
145
145
}
146
+
147
+ // CHECK: define spir_func void @new.[[RAW_REF]](i32 addrspace(4)* dereferenceable(4)
148
+
149
+ // CHECK: define spir_func void @new.[[RAW_REF2]](i32 addrspace(4)* dereferenceable(4)
150
+
151
+ // CHECK: define spir_func void @new.[[RAW_PTR2]](i32 addrspace(4)*
152
+
153
+ // CHECK: define spir_func void @new.[[RAW_PTR]](i32 addrspace(4)*
154
+
146
155
template <typename name, typename Func>
147
156
__attribute__ ((sycl_kernel)) void kernel_single_task(Func kernelFunc) {
148
157
kernelFunc ();
0 commit comments