Sarek_native_gen_exprval field_access_of :
loc:Ppxlib.location ->
ctx:Sarek_native_gen_base.gen_context ->
Sarek_types.typ ->
string ->
field_accessval gen_field_read :
loc:Ppxlib.location ->
ctx:Sarek_native_gen_base.gen_context ->
Ppxlib__.Import.expression ->
Sarek_types.typ ->
string ->
Ppxlib__.Import.expressionval fast_vec_of :
loc:Ppxlib__.Location.t ->
Sarek_native_gen_base.gen_context ->
Sarek_typed_ast.texpr ->
(Sarek_native_gen_base.fast_kind * Ppxlib__.Import.expression) optionThe direct-access kind and fast-record variable of vec when it is a float32/int32 vector parameter bound for the fast path.
val gen_fast_get :
loc:Ppxlib.location ->
Sarek_native_gen_base.fast_kind ->
Ppxlib_ast.Ast.expression ->
Ppxlib_ast.Ast.expression ->
Ppxlib_ast.Ast.expression ->
Ppxlib_ast.Ast.expressionv.(i) on a fast vector: in range (the vector's length, as Vector.get tests it) it reads the Bigarray, otherwise it calls the accessor object, which raises Vector.get's error. The index is evaluated once.
val gen_fast_set :
loc:Ppxlib.location ->
Sarek_native_gen_base.fast_kind ->
Ppxlib_ast.Ast.expression ->
Ppxlib_ast.Ast.expression ->
Ppxlib_ast.Ast.expression ->
Ppxlib_ast.Ast.expression ->
Ppxlib_ast.Ast.expressionv.(i) <- x on a fast vector. The value is evaluated before the index, the order of the arguments of v#set i x; a store marks the device copy stale as Vector.set does.
val gen_memory_access :
loc:Ppxlib__.Location.t ->
ctx:Sarek_native_gen_base.gen_context ->
gen_expr:
(loc:Ppxlib__.Location.t ->
Sarek_typed_ast.texpr ->
Ppxlib_ast.Ast.expression) ->
Sarek_typed_ast.texpr ->
Ppxlib.expressionGenerate memory access operations (vectors, arrays, record fields)
val gen_let_binding :
loc:Ppxlib__.Location.t ->
ctx:Sarek_native_gen_base.gen_context ->
gen_expr:
(loc:Ppxlib__.Location.t ->
Sarek_typed_ast.texpr ->
Ppxlib_ast.Ast.expression) ->
gen_expr_impl:
(loc:Ppxlib__.Location.t ->
ctx:Sarek_native_gen_base.gen_context ->
Sarek_typed_ast.texpr ->
Ppxlib_ast.Ast.expression) ->
Sarek_typed_ast.texpr ->
Ppxlib.expressionGenerate let bindings (let, let mut, assignment)
val gen_control_flow :
loc:Ppxlib.location ->
gen_expr:
(loc:Ppxlib.location -> Sarek_typed_ast.texpr -> Ppxlib_ast.Ast.expression) ->
Sarek_typed_ast.texpr ->
Ppxlib.expressionGenerate control flow (if, for, while)
val gen_data_structure :
loc:Ppxlib.location ->
ctx:Sarek_native_gen_base.gen_context ->
gen_expr:
(loc:Ppxlib.location ->
Sarek_typed_ast.texpr ->
Ppxlib__.Import.expression) ->
Sarek_typed_ast.texpr ->
Ppxlib.expressionGenerate data structures (records, variants, tuples, arrays)
val gen_special_expr :
loc:Ppxlib__.Location.t ->
gen_expr:
(loc:Ppxlib__.Location.t -> Sarek_typed_ast.texpr -> Ppxlib.expression) ->
Sarek_typed_ast.texpr ->
Ppxlib.expressionGenerate special expressions (return, global ref, native, pragma, open)
val gen_parallel_construct :
?current_module:Stdlib.String.t ->
?inline_types:Sarek_native_gen_base.StringSet.t ->
loc:Ppxlib.location ->
gen_expr:
(loc:Ppxlib.location -> Sarek_typed_ast.texpr -> Ppxlib_ast.Ast.expression) ->
Sarek_typed_ast.texpr ->
Ppxlib.expressionGenerate BSP parallel constructs (let%shared, let%superstep, let rec)