@@ -50,7 +50,7 @@ synchronize(backend)
5050```
5151"""
5252macro kernel (expr)
53- return __kernel (expr, #= generate_cpu=# true , #= force_inbounds=# false , #= unsafe_indices=# false )
53+ return __kernel (expr, #= generate_cpu=# true , #= force_inbounds=# false , #= unsafe_indices=# false , #= generated =# false )
5454end
5555
5656"""
@@ -69,11 +69,12 @@ This allows for two different configurations:
6969"""
7070macro kernel (ex... )
7171 if length (ex) == 1
72- return __kernel (ex[1 ], true , false , false )
72+ return __kernel (ex[1 ], true , false , false , false )
7373 else
7474 generate_cpu = true
7575 unsafe_indices = false
7676 force_inbounds = false
77+ generated = false
7778 for i in 1 : (length (ex) - 1 )
7879 if ex[i] isa Expr && ex[i]. head == :(= ) &&
7980 ex[i]. args[1 ] == :cpu && ex[i]. args[2 ] isa Bool
@@ -84,17 +85,21 @@ macro kernel(ex...)
8485 elseif ex[i] isa Expr && ex[i]. head == :(= ) &&
8586 ex[i]. args[1 ] == :unsafe_indices && ex[i]. args[2 ] isa Bool
8687 unsafe_indices = ex[i]. args[2 ]
88+ elseif ex[i] isa Expr && ex[i]. head == :(= ) &&
89+ ex[i]. args[1 ] == :generated && ex[i]. args[2 ] isa Bool
90+ generated = ex[i]. args[2 ]
8791 else
8892 error (
8993 " Configuration should be of form:\n " *
9094 " * `cpu=false`\n " *
9195 " * `inbounds=true`\n " *
9296 " * `unsafe_indices=true`\n " *
97+ " * `generated=true`\n " *
9398 " got `" , ex[i], " `" ,
9499 )
95100 end
96101 end
97- return __kernel (ex[end ], generate_cpu, force_inbounds, unsafe_indices)
102+ return __kernel (ex[end ], generate_cpu, force_inbounds, unsafe_indices, generated )
98103 end
99104end
100105
0 commit comments