Skip to content

Commit 181f3b4

Browse files
authored
Switch to FileCheck.jl. (#764)
1 parent 9c4ab66 commit 181f3b4

File tree

10 files changed

+222
-354
lines changed

10 files changed

+222
-354
lines changed

test/Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[deps]
22
Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595"
3+
FileCheck = "4e644321-382b-4b05-b0b6-5d23c3d944fb"
34
GPUCompiler = "61eb1bfa-7361-4325-ad38-22787b887f55"
4-
IOCapture = "b5f81e59-6552-4d32-b1f0-c071b021bf89"
55
InteractiveUtils = "b77e0a4c-d291-57a0-90e8-8db25a27a240"
66
LLVM = "929cbde3-209d-540e-8aea-75f648917ca0"
77
LLVM_jll = "86de99a1-58d6-5da7-8064-bd56ce2e322c"

test/bpf.jl

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
end
55

66
@test @filecheck begin
7-
check"CHECK-LABEL: julia_kernel_{{[0-9_]*}}:"
8-
check"CHECK: r0 = 0"
9-
check"CHECK-NEXT: exit"
7+
@check_label "julia_kernel_{{[0-9_]*}}:"
8+
@check "r0 = 0"
9+
@check_next "exit"
1010
BPF.code_native(mod.kernel, ())
1111
end
1212
end
@@ -16,9 +16,9 @@ end
1616
end
1717

1818
@test @filecheck begin
19-
check"CHECK-LABEL: julia_kernel_{{[0-9_]*}}:"
20-
check"CHECK: r0 = r1"
21-
check"CHECK-NEXT: exit"
19+
@check_label "julia_kernel_{{[0-9_]*}}:"
20+
@check "r0 = r1"
21+
@check_next "exit"
2222
BPF.code_native(mod.kernel, (UInt64,))
2323
end
2424
end
@@ -28,10 +28,10 @@ end
2828
end
2929

3030
@test @filecheck begin
31-
check"CHECK-LABEL: julia_kernel_{{[0-9_]*}}:"
32-
check"CHECK: r0 = r1"
33-
check"CHECK-NEXT: r0 += 1"
34-
check"CHECK-NEXT: exit"
31+
@check_label "julia_kernel_{{[0-9_]*}}:"
32+
@check "r0 = r1"
33+
@check_next "r0 += 1"
34+
@check_next "exit"
3535
BPF.code_native(mod.kernel, (UInt64,))
3636
end
3737
end
@@ -50,9 +50,9 @@ end
5050
end
5151

5252
@test @filecheck begin
53-
check"CHECK-LABEL: julia_kernel_{{[0-9_]*}}:"
54-
check"CHECK: call"
55-
check"CHECK-NEXT: exit"
53+
@check_label "julia_kernel_{{[0-9_]*}}:"
54+
@check "call"
55+
@check_next "exit"
5656
BPF.code_native(mod.kernel, (Int,))
5757
end
5858
end

test/gcn.jl

Lines changed: 44 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -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
2222
end
@@ -30,9 +30,9 @@ end
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
3838
end
@@ -52,14 +52,14 @@ end
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
6565
end
@@ -81,8 +81,8 @@ end
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
@@ -182,8 +182,8 @@ 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
189189
end
@@ -203,7 +203,7 @@ end
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
@@ -223,9 +223,9 @@ 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
231231
end
@@ -243,9 +243,9 @@ end
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
251251
end
@@ -261,9 +261,9 @@ end
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
269269
end
@@ -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
297297
end
@@ -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
328328
end
@@ -342,9 +342,9 @@ end
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
350350
end
@@ -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
422422
end
@@ -435,8 +435,8 @@ end
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

Comments
 (0)