Skip to content

Commit 9195d94

Browse files
committed
with proper interpolation
1 parent 7fbbe55 commit 9195d94

2 files changed

Lines changed: 10 additions & 6 deletions

File tree

src/KernelAbstractions.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ synchronize(backend)
5050
```
5151
"""
5252
macro kernel(expr)
53-
return __kernel(expr, #=generate_cpu=# true, #=force_inbounds=# false, #=unsafe_indices=# false, #=generated=# false)
53+
return __kernel(__module__, expr, #=generate_cpu=# true, #=force_inbounds=# false, #=unsafe_indices=# false, #=generated=# false)
5454
end
5555

5656
"""
@@ -69,7 +69,7 @@ This allows for two different configurations:
6969
"""
7070
macro kernel(ex...)
7171
if length(ex) == 1
72-
return __kernel(ex[1], true, false, false, false)
72+
return __kernel(__module__, ex[1], true, false, false, false)
7373
else
7474
generate_cpu = true
7575
unsafe_indices = false
@@ -99,7 +99,7 @@ macro kernel(ex...)
9999
)
100100
end
101101
end
102-
return __kernel(ex[end], generate_cpu, force_inbounds, unsafe_indices, generated)
102+
return __kernel(__module__, ex[end], generate_cpu, force_inbounds, unsafe_indices, generated)
103103
end
104104
end
105105

src/macros.jl

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ function find_return(stmt)
1010
end
1111

1212
# XXX: Proper errors
13-
function __kernel(expr, generate_cpu = true, force_inbounds = false, unsafe_indices = false, generated = false)
13+
function __kernel(__module__, expr, generate_cpu = true, force_inbounds = false, unsafe_indices = false, generated = false)
1414
def = splitdef(expr)
1515
name = def[:name]
1616
args = def[:args]
@@ -42,7 +42,9 @@ function __kernel(expr, generate_cpu = true, force_inbounds = false, unsafe_indi
4242
def_cpu[:name] = cpu_name
4343
transform_cpu!(def_cpu, constargs, force_inbounds)
4444
if generated
45-
def_cpu[:body] = Expr(:if, Expr(:generated), Expr(:copyast, QuoteNode(def_cpu[:body])), Expr(:meta, :generated_only))
45+
# Use macroexpand to perform the annoying work of interpolating `$` exprs
46+
body = macroexpand(__module__, Expr(:quote, def_cpu[:body]), recursive = false)
47+
def_cpu[:body] = Expr(:if, Expr(:generated), body, Expr(:meta, :generated_only))
4648
end
4749
cpu_function = combinedef(def_cpu)
4850
end
@@ -51,7 +53,9 @@ function __kernel(expr, generate_cpu = true, force_inbounds = false, unsafe_indi
5153
def_gpu[:name] = gpu_name = Symbol(:gpu_, name)
5254
transform_gpu!(def_gpu, constargs, force_inbounds, unsafe_indices)
5355
if generated
54-
def_gpu[:body] = Expr(:if, Expr(:generated), Expr(:copyast, QuoteNode(def_gpu[:body])), Expr(:meta, :generated_only))
56+
# Use macroexpand to perform the annoying work of interpolating `$` exprs
57+
body = macroexpand(__module__, Expr(:quote, def_gpu[:body]), recursive = false)
58+
def_gpu[:body] = Expr(:if, Expr(:generated), body, Expr(:meta, :generated_only))
5559
end
5660
gpu_function = combinedef(def_gpu)
5761

0 commit comments

Comments
 (0)