88 valid_kernel () = return
99 invalid_kernel () = 1
1010
11- ir = sprint (io-> CUDAnative. code_llvm (io, valid_kernel, Tuple{}; optimize= false , dump_module= true ))
11+ ir = sprint (io-> CUDAnative. code_llvm (io, valid_kernel, Tuple{}; dump_module= true ,
12+ contextualize= false , optimize= false ))
1213
1314 # module should contain our function + a generic call wrapper
1415 @test occursin (" define void @julia_valid_kernel" , ir)
5253 @noinline child (i) = sink (i)
5354 parent (i) = child (i)
5455
55- ir = sprint (io-> CUDAnative. code_llvm (io, parent, Tuple{Int}))
56+ ir = sprint (io-> CUDAnative. code_llvm (io, parent, Tuple{Int}; contextualize = false ))
5657 @test occursin (r" call .+ @julia_child_" , ir)
5758end
5859
7677 x:: Int
7778 end
7879
79- ir = sprint (io-> CUDAnative. code_llvm (io, kernel, Tuple{Aggregate}))
80+ ir = sprint (io-> CUDAnative. code_llvm (io, kernel, Tuple{Aggregate}; contextualize = false ))
8081 @test occursin (r" @julia_kernel_\d +\( ({ i64 }|\[ 1 x i64\] ) addrspace\(\d +\) ?\* " , ir)
8182
82- ir = sprint (io-> CUDAnative. code_llvm (io, kernel, Tuple{Aggregate}; kernel= true ))
83+ ir = sprint (io-> CUDAnative. code_llvm (io, kernel, Tuple{Aggregate}; contextualize = false , kernel= true ))
8384 @test occursin (r" @ptxcall_kernel_\d +\( ({ i64 }|\[ 1 x i64\] )\) " , ir)
8485end
8586
135136 closure = ()-> return
136137
137138 function test_name (f, name; kwargs... )
138- code = sprint (io-> CUDAnative. code_llvm (io, f, Tuple{}; kwargs... ))
139+ code = sprint (io-> CUDAnative. code_llvm (io, f, Tuple{}; contextualize = false , kwargs... ))
139140 @test occursin (name, code)
140141 end
141142
221222 return
222223 end
223224
224- asm = sprint (io-> CUDAnative. code_ptx (io, parent, Tuple{Int64}))
225+ asm = sprint (io-> CUDAnative. code_ptx (io, parent, Tuple{Int64}; contextualize = false ))
225226 @test occursin (r" call.uni\s +julia_child_" m , asm)
226227end
227228
232233 return
233234 end
234235
235- asm = sprint (io-> CUDAnative. code_ptx (io, entry, Tuple{Int64}; kernel= true ))
236+ asm = sprint (io-> CUDAnative. code_ptx (io, entry, Tuple{Int64}; contextualize = false , kernel= true ))
236237 @test occursin (r" \. visible \. entry ptxcall_entry_" , asm)
237238 @test ! occursin (r" \. visible \. func julia_nonentry_" , asm)
238239 @test occursin (r" \. func julia_nonentry_" , asm)
@@ -279,15 +280,15 @@ end
279280 return
280281 end
281282
282- asm = sprint (io-> CUDAnative. code_ptx (io, parent1, Tuple{Int}))
283+ asm = sprint (io-> CUDAnative. code_ptx (io, parent1, Tuple{Int}; contextualize = false ))
283284 @test occursin (r" .func julia_child_" , asm)
284285
285286 function parent2 (i)
286287 child (i+ 1 )
287288 return
288289 end
289290
290- asm = sprint (io-> CUDAnative. code_ptx (io, parent2, Tuple{Int}))
291+ asm = sprint (io-> CUDAnative. code_ptx (io, parent2, Tuple{Int}; contextualize = false ))
291292 @test occursin (r" .func julia_child_" , asm)
292293end
293294
357358 closure = ()-> nothing
358359
359360 function test_name (f, name; kwargs... )
360- code = sprint (io-> CUDAnative. code_ptx (io, f, Tuple{}; kwargs... ))
361+ code = sprint (io-> CUDAnative. code_ptx (io, f, Tuple{}; contextualize = false , kwargs... ))
361362 @test occursin (name, code)
362363 end
363364
429430 return
430431 end
431432
432- ir = sprint (io-> CUDAnative. code_llvm (io, kernel, Tuple{Float32,Ptr{Float32}}))
433+ ir = sprint (io-> CUDAnative. code_llvm (io, kernel, Tuple{Float32,Ptr{Float32}}; contextualize = false ))
433434 @test occursin (" jl_box_float32" , ir)
434435 CUDAnative. code_ptx (devnull , kernel, Tuple{Float32,Ptr{Float32}})
435436end
@@ -444,18 +445,20 @@ end
444445
445446# some validation happens in the emit_function hook, which is called by code_llvm
446447
448+ # NOTE: contextualization changes order of frames
447449@testset " recursion" begin
448450 @eval recurse_outer (i) = i > 0 ? i : recurse_inner (i)
449451 @eval @noinline recurse_inner (i) = i < 0 ? i : recurse_outer (i)
450452
451- @test_throws_message (CUDAnative. KernelError, CUDAnative. code_llvm (devnull , recurse_outer, Tuple{Int})) do msg
453+ @test_throws_message (CUDAnative. KernelError, CUDAnative. code_llvm (devnull , recurse_outer, Tuple{Int}; contextualize = false )) do msg
452454 occursin (" recursion is currently not supported" , msg) &&
453455 occursin (" [1] recurse_outer" , msg) &&
454456 occursin (" [2] recurse_inner" , msg) &&
455457 occursin (" [3] recurse_outer" , msg)
456458 end
457459end
458460
461+ # FIXME : contextualization removes all frames here -- changed inlining behavior?
459462@testset " base intrinsics" begin
460463 foobar (i) = sin (i)
461464
0 commit comments