@@ -11,12 +11,12 @@ sink_gcn(i) = sink(i, Val(5))
1111 end
1212
1313 @test @filecheck begin
14- check " CHECK-NOT: amdgpu_kernel"
14+ @check_not " amdgpu_kernel"
1515 GCN. code_llvm (mod. kernel, Tuple{}; dump_module= true )
1616 end
1717
1818 @test @filecheck begin
19- check " CHECK: amdgpu_kernel"
19+ @ check " amdgpu_kernel"
2020 GCN. code_llvm (mod. kernel, Tuple{}; dump_module= true , kernel= true )
2121 end
2222end
3030 end
3131
3232 @test @filecheck begin
33- check " CHECK-NOT: {{julia_throw_boundserror_[0-9]+}}"
34- check " CHECK: @gpu_report_exception"
35- check " CHECK: @gpu_signal_exception"
33+ @check_not " {{julia_throw_boundserror_[0-9]+}}"
34+ @ check " @gpu_report_exception"
35+ @ check " @gpu_signal_exception"
3636 GCN. code_llvm (mod. kernel, Tuple{})
3737 end
3838end
5252
5353 # byref struct params should be ptr addrspace(4) in kernel IR
5454 @test @filecheck begin
55- check " TYPED: define amdgpu_kernel void @_Z6kernel8MyStruct({{.*}} addrspace(4)*"
56- check " OPAQUE: define amdgpu_kernel void @_Z6kernel8MyStruct(ptr addrspace(4)"
55+ @ check cond = typed_ptrs " define amdgpu_kernel void @_Z6kernel8MyStruct({{.*}} addrspace(4)*"
56+ @ check cond = opaque_ptrs " define amdgpu_kernel void @_Z6kernel8MyStruct(ptr addrspace(4)"
5757 GCN. code_llvm (mod. kernel, Tuple{mod. MyStruct}; dump_module= true , kernel= true )
5858 end
5959
6060 # non-kernel should NOT have addrspace(4)
6161 @test @filecheck begin
62- check " CHECK-NOT: addrspace(4)"
62+ @check_not " addrspace(4)"
6363 GCN. code_llvm (mod. kernel, Tuple{mod. MyStruct}; dump_module= true , kernel= false )
6464 end
6565end
8181
8282 # the byref attribute must survive the addrspace rewrite (clone_into! can drop it)
8383 @test @filecheck begin
84- check " CHECK: byref"
85- check " CHECK: addrspace(4)"
84+ @ check " byref"
85+ @ check " addrspace(4)"
8686 GCN. code_llvm (mod. kernel, Tuple{mod. LargeStruct, Ptr{Float64}};
8787 dump_module= true , kernel= true )
8888 end
@@ -105,11 +105,11 @@ end
105105 # only the struct byref param should be.
106106 # NOTE: Ptr{Float64} is lowered to i64 on Julia ≤1.11 and ptr on Julia 1.12+.
107107 @test @filecheck begin
108- check " CHECK: define amdgpu_kernel void"
109- check " CHECK-SAME: double"
110- check " TYPED-SAME: {{.*}} addrspace(4)*"
111- check " OPAQUE-SAME: ptr addrspace(4)"
112- check " CHECK-SAME: {{(i64|ptr)}}"
108+ @ check " define amdgpu_kernel void"
109+ @check_same " double"
110+ @check_same cond = typed_ptrs " {{.*}} addrspace(4)*"
111+ @check_same cond = opaque_ptrs " ptr addrspace(4)"
112+ @check_same " {{(i64|ptr)}}"
113113 GCN. code_llvm (mod. kernel, Tuple{Float64, mod. Params, Ptr{Float64}};
114114 dump_module= true , kernel= true )
115115 end
182182
183183 # struct field loads from kernarg should use s_load, not flat_load
184184 @test @filecheck begin
185- check " CHECK: s_load_dwordx"
186- check " CHECK-NOT: flat_load"
185+ @ check " s_load_dwordx"
186+ @check_not " flat_load"
187187 GCN. code_native (mod. kernel, Tuple{mod. MyStruct, Ptr{Float64}}; kernel= true )
188188 end
189189end
203203
204204 # a small struct kernel should not need scratch memory
205205 @test @filecheck begin
206- check " CHECK: .private_segment_fixed_size: 0"
206+ @ check " .private_segment_fixed_size: 0"
207207 GCN. code_native (mod. kernel, Tuple{mod. SmallStruct, Ptr{Float64}};
208208 dump_module= true , kernel= true )
209209 end
223223 end
224224
225225 @test @filecheck begin
226- check " CHECK-LABEL: {{(julia|j)_kernel_[0-9]+}}:"
227- check " CHECK: s_cbranch_exec"
228- check " CHECK: s_trap 2"
226+ @check_label " {{(julia|j)_kernel_[0-9]+}}:"
227+ @ check " s_cbranch_exec"
228+ @ check " s_trap 2"
229229 GCN. code_native (mod. kernel, Tuple{})
230230 end
231231end
243243 end
244244
245245 @test @filecheck begin
246- check " CHECK-LABEL: {{(julia|j)_parent_[0-9]+}}:"
247- check " CHECK: s_add_u32 {{.+}} {{(julia|j)_child_[0-9]+}}@rel32@"
248- check " CHECK: s_addc_u32 {{.+}} {{(julia|j)_child_[0-9]+}}@rel32@"
246+ @check_label " {{(julia|j)_parent_[0-9]+}}:"
247+ @ check " s_add_u32 {{.+}} {{(julia|j)_child_[0-9]+}}@rel32@"
248+ @ check " s_addc_u32 {{.+}} {{(julia|j)_child_[0-9]+}}@rel32@"
249249 GCN. code_native (mod. parent, Tuple{Int64}; dump_module= true )
250250 end
251251end
261261 end
262262
263263 @test @filecheck begin
264- check " CHECK: .type {{(julia|j)_nonentry_[0-9]+}},@function"
265- check " CHECK: .symbol:{{.*}}_Z5entry5Int64.kd"
266- check " CHECK-NOT: .symbol:{{.*}}nonentry"
264+ @ check " .type {{(julia|j)_nonentry_[0-9]+}},@function"
265+ @ check " .symbol:{{.*}}_Z5entry5Int64.kd"
266+ @check_not " .symbol:{{.*}}nonentry"
267267 GCN. code_native (mod. entry, Tuple{Int64}; dump_module= true , kernel= true )
268268 end
269269end
@@ -286,12 +286,12 @@ end
286286 end
287287
288288 @test @filecheck begin
289- check " CHECK: .type {{(julia|j)_child_[0-9]+}},@function"
289+ @ check " .type {{(julia|j)_child_[0-9]+}},@function"
290290 GCN. code_native (mod. parent1, Tuple{Int}; dump_module= true )
291291 end
292292
293293 @test @filecheck begin
294- check " CHECK: .type {{(julia|j)_child_[0-9]+}},@function"
294+ @ check " .type {{(julia|j)_child_[0-9]+}},@function"
295295 GCN. code_native (mod. parent2, Tuple{Int}; dump_module= true )
296296 end
297297end
@@ -315,14 +315,14 @@ end
315315 end
316316
317317 @test @filecheck begin
318- check " CHECK-DAG: .type {{(julia|j)_child1_[0-9]+}},@function"
319- check " CHECK-DAG: .type {{(julia|j)_child2_[0-9]+}},@function"
318+ @check_dag " .type {{(julia|j)_child1_[0-9]+}},@function"
319+ @check_dag " .type {{(julia|j)_child2_[0-9]+}},@function"
320320 GCN. code_native (mod. parent1, Tuple{Int}; dump_module= true )
321321 end
322322
323323 @test @filecheck begin
324- check " CHECK-DAG: .type {{(julia|j)_child1_[0-9]+}},@function"
325- check " CHECK-DAG: .type {{(julia|j)_child2_[0-9]+}},@function"
324+ @check_dag " .type {{(julia|j)_child1_[0-9]+}},@function"
325+ @check_dag " .type {{(julia|j)_child2_[0-9]+}},@function"
326326 GCN. code_native (mod. parent2, Tuple{Int}; dump_module= true )
327327 end
328328end
342342 end
343343
344344 @test @filecheck begin
345- check " CHECK-LABEL: {{(julia|j)_kernel_[0-9]+}}:"
346- check " CHECK-NOT: jl_throw"
347- check " CHECK-NOT: jl_invoke"
345+ @check_label " {{(julia|j)_kernel_[0-9]+}}:"
346+ @check_not " jl_throw"
347+ @check_not " jl_invoke"
348348 GCN. code_native (mod. kernel, Tuple{Ptr{Int32}})
349349 end
350350end
@@ -394,11 +394,11 @@ false && @testset "GC and TLS lowering" begin
394394 end
395395
396396 @test @filecheck begin
397- check " CHECK-NOT: jl_push_gc_frame"
398- check " CHECK-NOT: jl_pop_gc_frame"
399- check " CHECK-NOT: jl_get_gc_frame_slot"
400- check " CHECK-NOT: jl_new_gc_frame"
401- check " CHECK: gpu_gc_pool_alloc"
397+ @check_not " jl_push_gc_frame"
398+ @check_not " jl_pop_gc_frame"
399+ @check_not " jl_get_gc_frame_slot"
400+ @check_not " jl_new_gc_frame"
401+ @ check " gpu_gc_pool_alloc"
402402 GCN. code_native (mod. kernel, Tuple{Int})
403403 end
404404
@@ -416,7 +416,7 @@ false && @testset "GC and TLS lowering" begin
416416 end
417417
418418 @test @filecheck begin
419- check " CHECK-NOT: gpu_gc_pool_alloc"
419+ @check_not " gpu_gc_pool_alloc"
420420 GCN. code_native (ref_kernel, Tuple{Ptr{Int64}, Int})
421421 end
422422end
435435 end
436436
437437 @test @filecheck begin
438- check " CHECK-LABEL: define void @{{(julia|j)_kernel_[0-9]+}}"
439- check " CHECK: jl_box_float32"
438+ @check_label " define void @{{(julia|j)_kernel_[0-9]+}}"
439+ @ check " jl_box_float32"
440440 GCN. code_llvm (mod. kernel, Tuple{Float32,Ptr{Float32}})
441441 end
442442 GCN. code_native (devnull , mod. kernel, Tuple{Float32,Ptr{Float32}})
0 commit comments