Sarek_opencl.Sarek_ir_openclval current_device : Spoc_core.Device.t option Stdlib.refCurrent device for SNative code generation (set during generate_for_device)
val current_variants :
(string * (string * Sarek_ir_types.elttype list) list) list Stdlib.refCurrent kernel's variant definitions (set during generate)
Mangle OCaml type name to valid C identifier (e.g., "Module.point" -> "Module_point")
val opencl_type_of_elttype : Sarek_ir_types.elttype -> stringMap Sarek IR element type to OpenCL C type string
val opencl_memspace : Sarek_ir_types.memspace -> stringMap memory space to OpenCL qualifier
val opencl_param_type : Sarek_ir_types.elttype -> stringMap Sarek IR element type to OpenCL C type for kernel parameters
val gen_expr : Stdlib.Buffer.t -> Sarek_ir_types.expr -> unitval gen_binop : Sarek_ir_types.binop -> stringval gen_unop : Sarek_ir_types.unop -> stringval gen_intrinsic :
Stdlib.Buffer.t ->
string list ->
string ->
Sarek_ir_types.expr list ->
unitval gen_lvalue : Stdlib.Buffer.t -> Sarek_ir_types.lvalue -> unitval gen_stmt : Stdlib.Buffer.t -> string -> Sarek_ir_types.stmt -> unitval gen_match_case :
Stdlib.Buffer.t ->
string ->
string ->
Sarek_ir_types.pattern ->
Sarek_ir_types.stmt ->
unitGenerate a pattern match case (extracted helper)
val gen_array_decl :
Stdlib.Buffer.t ->
string ->
Sarek_ir_types.var ->
Sarek_ir_types.elttype ->
Sarek_ir_types.expr ->
Sarek_ir_types.memspace ->
Sarek_ir_types.stmt ->
unitGenerate array declaration with optional __local qualifier (extracted helper)
val is_vec_type : Sarek_ir_types.elttype -> boolCheck if a type is a vector (requires length parameter)
val gen_param : Stdlib.Buffer.t -> Sarek_ir_types.decl -> unitval gen_local : Stdlib.Buffer.t -> string -> Sarek_ir_types.decl -> unitval gen_helper_func : Stdlib.Buffer.t -> Sarek_ir_types.helper_func -> unitGenerate a helper function (OpenCL device function)
val generate : Sarek_ir_types.kernel -> stringGenerate complete OpenCL source for a kernel
val generate_for_device :
device:Spoc_core.Device.t ->
Sarek_ir_types.kernel ->
stringGenerate complete OpenCL source with device context for SNative
val gen_variant_def :
Stdlib.Buffer.t ->
(string * (string * Sarek_ir_types.elttype list) list) ->
unitGenerate variant type definition for OpenCL
val generate_with_types :
types:(string * (string * Sarek_ir_types.elttype) list) list ->
Sarek_ir_types.kernel ->
stringGenerate OpenCL source with custom type definitions
val generate_with_fp64 : Sarek_ir_types.kernel -> stringGenerate OpenCL source with double precision extension if needed