1
+ ; This test checks that the post-link tool properly generates "assert used"
2
+ ; property - it should include only kernels that call assertions in their call
3
+ ; graph.
1
4
2
5
; RUN: sycl-post-link -split=auto -symbols -S %s -o %t.table
3
6
; RUN: FileCheck %s -input-file=%t_0.prop
@@ -46,13 +49,8 @@ target triple = "spir64_x86_64-unknown-unknown-sycldevice"
46
49
@_ZL10assert_fmt = internal addrspace (2 ) constant [85 x i8 ] c "%s:%d: %s: global id: [%lu,%lu,%lu], local id: [%lu,%lu,%lu] Assertion `%s` failed.\0A\00 " , align 1
47
50
48
51
; CHECK: [SYCL/assert used]
49
- ; CHECK-DAG: _ZTSN2cl4sycl6detail19__pf_kernel_wrapperIZZ4mainENK3$_0clERNS0_7handlerEE9TeKernelEE
50
- ; CHECK-DAG: _ZTSZZ4mainENK3$_0clERN2cl4sycl7handlerEE9TheKernel
51
- ; CHECK-DAG: _ZTSN2cl4sycl6detail19__pf_kernel_wrapperIZZ4mainENK3$_0clERNS0_7handlerEE10TheKernel3EE
52
- ; CHECK-DAG: _ZTSZZ4mainENK3$_0clERN2cl4sycl7handlerEE10TheKernel3
53
- ; CHECK-NOT: _ZTSN2cl4sycl6detail19__pf_kernel_wrapperIZZ4mainENK3$_0clERNS0_7handlerEE10TheKernel2EE
54
- ; CHECK-NOT: _ZTSZZ4mainENK3$_0clERN2cl4sycl7handlerEE10TheKernel2
55
52
53
+ ; CHECK: _ZTSN2cl4sycl6detail19__pf_kernel_wrapperIZZ4mainENK3$_0clERNS0_7handlerEE9TeKernelEE
56
54
; Function Attrs: convergent norecurse
57
55
define weak_odr dso_local spir_kernel void @"_ZTSN2cl4sycl6detail19__pf_kernel_wrapperIZZ4mainENK3$_0clERNS0_7handlerEE9TeKernelEE" (%"class._ZTSN2cl4sycl5rangeILi2EEE.cl::sycl::range" * byval (%"class._ZTSN2cl4sycl5rangeILi2EEE.cl::sycl::range" ) align 8 %_arg_ , %"class._ZTSZZ4mainENK3$_0clERN2cl4sycl7handlerEEUlNS1_4itemILi2ELb1EEEE_.anon" * byval (%"class._ZTSZZ4mainENK3$_0clERN2cl4sycl7handlerEEUlNS1_4itemILi2ELb1EEEE_.anon" ) align 1 %_arg_1 ) #0 {
58
56
entry:
@@ -84,13 +82,15 @@ entry:
84
82
ret void
85
83
}
86
84
85
+ ; CHECK: _ZTSZZ4mainENK3$_0clERN2cl4sycl7handlerEE9TheKernel
87
86
; Function Attrs: convergent norecurse
88
87
define weak_odr dso_local spir_kernel void @"_ZTSZZ4mainENK3$_0clERN2cl4sycl7handlerEE9TheKernel" () #0 {
89
88
entry:
90
89
tail call spir_func void @__assert_fail (i8 addrspace (4 )* getelementptr inbounds ([2 x i8 ], [2 x i8 ] addrspace (4 )* addrspacecast ([2 x i8 ] addrspace (1 )* @.str to [2 x i8 ] addrspace (4 )*), i64 0 , i64 0 ), i8 addrspace (4 )* getelementptr inbounds ([11 x i8 ], [11 x i8 ] addrspace (4 )* addrspacecast ([11 x i8 ] addrspace (1 )* @.str.1 to [11 x i8 ] addrspace (4 )*), i64 0 , i64 0 ), i32 8 , i8 addrspace (4 )* getelementptr inbounds ([11 x i8 ], [11 x i8 ] addrspace (4 )* addrspacecast ([11 x i8 ] addrspace (1 )* @__PRETTY_FUNCTION__._Z3foov to [11 x i8 ] addrspace (4 )*), i64 0 , i64 0 ))
91
90
ret void
92
91
}
93
92
93
+ ; CHECK-NOT: _ZTSN2cl4sycl6detail19__pf_kernel_wrapperIZZ4mainENK3$_0clERNS0_7handlerEE10TheKernel2EE
94
94
; Function Attrs: norecurse
95
95
define weak_odr dso_local spir_kernel void @"_ZTSN2cl4sycl6detail19__pf_kernel_wrapperIZZ4mainENK3$_0clERNS0_7handlerEE10TheKernel2EE" (%"class._ZTSN2cl4sycl5rangeILi2EEE.cl::sycl::range" * byval (%"class._ZTSN2cl4sycl5rangeILi2EEE.cl::sycl::range" ) align 8 %_arg_ , %"class._ZTSZZ4mainENK3$_0clERN2cl4sycl7handlerEEUlNS1_4itemILi2ELb1EEEE_.anon" * byval (%"class._ZTSZZ4mainENK3$_0clERN2cl4sycl7handlerEEUlNS1_4itemILi2ELb1EEEE_.anon" ) align 1 %_arg_1 ) #1 {
96
96
entry:
@@ -107,12 +107,14 @@ entry:
107
107
ret void
108
108
}
109
109
110
+ ; CHECK-NOT: _ZTSZZ4mainENK3$_0clERN2cl4sycl7handlerEE10TheKernel2
110
111
; Function Attrs: norecurse
111
112
define weak_odr dso_local spir_kernel void @"_ZTSZZ4mainENK3$_0clERN2cl4sycl7handlerEE10TheKernel2" () #1 {
112
113
entry:
113
114
ret void
114
115
}
115
116
117
+ ; CHECK: _ZTSN2cl4sycl6detail19__pf_kernel_wrapperIZZ4mainENK3$_0clERNS0_7handlerEE10TheKernel3EE
116
118
; Function Attrs: convergent norecurse
117
119
define weak_odr dso_local spir_kernel void @"_ZTSN2cl4sycl6detail19__pf_kernel_wrapperIZZ4mainENK3$_0clERNS0_7handlerEE10TheKernel3EE" (%"class._ZTSN2cl4sycl5rangeILi2EEE.cl::sycl::range" * byval (%"class._ZTSN2cl4sycl5rangeILi2EEE.cl::sycl::range" ) align 8 %_arg_ , %"class._ZTSZZ4mainENK3$_0clERN2cl4sycl7handlerEEUlNS1_4itemILi2ELb1EEEE_.anon" * byval (%"class._ZTSZZ4mainENK3$_0clERN2cl4sycl7handlerEEUlNS1_4itemILi2ELb1EEEE_.anon" ) align 1 %_arg_1 ) #0 {
118
120
entry:
@@ -141,6 +143,7 @@ entry:
141
143
ret void
142
144
}
143
145
146
+ ; CHECK: _ZTSZZ4mainENK3$_0clERN2cl4sycl7handlerEE10TheKernel3
144
147
; Function Attrs: convergent norecurse
145
148
define weak_odr dso_local spir_kernel void @"_ZTSZZ4mainENK3$_0clERN2cl4sycl7handlerEE10TheKernel3" () #0 {
146
149
entry:
@@ -162,52 +165,22 @@ entry:
162
165
}
163
166
164
167
; Function Attrs: inlinehint norecurse mustprogress
165
- define weak dso_local spir_func i64 @_Z28__spirv_GlobalInvocationId_xv () {
166
- entry:
167
- %0 = load <3 x i64 >, <3 x i64 > addrspace (4 )* addrspacecast (<3 x i64 > addrspace (1 )* @__spirv_BuiltInGlobalInvocationId to <3 x i64 > addrspace (4 )*), align 32
168
- %1 = extractelement <3 x i64 > %0 , i64 0
169
- ret i64 %1
170
- }
168
+ declare dso_local spir_func i64 @_Z28__spirv_GlobalInvocationId_xv () local_unnamed_addr
171
169
172
170
; Function Attrs: inlinehint norecurse mustprogress
173
- define weak dso_local spir_func i64 @_Z28__spirv_GlobalInvocationId_yv () {
174
- entry:
175
- %0 = load <3 x i64 >, <3 x i64 > addrspace (4 )* addrspacecast (<3 x i64 > addrspace (1 )* @__spirv_BuiltInGlobalInvocationId to <3 x i64 > addrspace (4 )*), align 32
176
- %1 = extractelement <3 x i64 > %0 , i64 1
177
- ret i64 %1
178
- }
171
+ declare dso_local spir_func i64 @_Z28__spirv_GlobalInvocationId_yv () local_unnamed_addr
179
172
180
173
; Function Attrs: inlinehint norecurse mustprogress
181
- define weak dso_local spir_func i64 @_Z28__spirv_GlobalInvocationId_zv () {
182
- entry:
183
- %0 = load <3 x i64 >, <3 x i64 > addrspace (4 )* addrspacecast (<3 x i64 > addrspace (1 )* @__spirv_BuiltInGlobalInvocationId to <3 x i64 > addrspace (4 )*), align 32
184
- %1 = extractelement <3 x i64 > %0 , i64 2
185
- ret i64 %1
186
- }
174
+ declare dso_local spir_func i64 @_Z28__spirv_GlobalInvocationId_zv () local_unnamed_addr
187
175
188
176
; Function Attrs: inlinehint norecurse mustprogress
189
- define weak dso_local spir_func i64 @_Z27__spirv_LocalInvocationId_xv () {
190
- entry:
191
- %0 = load <3 x i64 >, <3 x i64 > addrspace (4 )* addrspacecast (<3 x i64 > addrspace (1 )* @__spirv_BuiltInLocalInvocationId to <3 x i64 > addrspace (4 )*), align 32
192
- %1 = extractelement <3 x i64 > %0 , i64 0
193
- ret i64 %1
194
- }
177
+ declare dso_local spir_func i64 @_Z27__spirv_LocalInvocationId_xv () local_unnamed_addr
195
178
196
179
; Function Attrs: inlinehint norecurse mustprogress
197
- define weak dso_local spir_func i64 @_Z27__spirv_LocalInvocationId_yv () {
198
- entry:
199
- %0 = load <3 x i64 >, <3 x i64 > addrspace (4 )* addrspacecast (<3 x i64 > addrspace (1 )* @__spirv_BuiltInLocalInvocationId to <3 x i64 > addrspace (4 )*), align 32
200
- %1 = extractelement <3 x i64 > %0 , i64 1
201
- ret i64 %1
202
- }
180
+ declare dso_local spir_func i64 @_Z27__spirv_LocalInvocationId_yv () local_unnamed_addr
203
181
204
182
; Function Attrs: inlinehint norecurse mustprogress
205
- define weak dso_local spir_func i64 @_Z27__spirv_LocalInvocationId_zv () {
206
- entry:
207
- %0 = load <3 x i64 >, <3 x i64 > addrspace (4 )* addrspacecast (<3 x i64 > addrspace (1 )* @__spirv_BuiltInLocalInvocationId to <3 x i64 > addrspace (4 )*), align 32
208
- %1 = extractelement <3 x i64 > %0 , i64 2
209
- ret i64 %1
210
- }
183
+ declare dso_local spir_func i64 @_Z27__spirv_LocalInvocationId_zv () local_unnamed_addr
211
184
212
185
; Function Attrs: convergent norecurse mustprogress
213
186
define weak dso_local spir_func void @__devicelib_assert_fail (i8 addrspace (4 )* %expr , i8 addrspace (4 )* %file , i32 %line , i8 addrspace (4 )* %func , i64 %gid0 , i64 %gid1 , i64 %gid2 , i64 %lid0 , i64 %lid1 , i64 %lid2 ) {
0 commit comments