Sarek_cuda.Sarek_ir_cudaval 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 cuda_type_of_elttype : Sarek_ir_types.elttype -> stringMap Sarek IR element type to CUDA C type string
val cuda_param_type : Sarek_ir_types.elttype -> stringMap Sarek IR element type to CUDA 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_record_assign :
Stdlib.Buffer.t ->
string ->
Sarek_ir_types.lvalue ->
(string * Sarek_ir_types.expr) list ->
unitHelper: Generate record field assignment
val gen_match_case :
Stdlib.Buffer.t ->
string ->
string ->
Sarek_ir_types.pattern ->
Sarek_ir_types.stmt ->
unitHelper: Generate switch case for pattern match
val gen_array_decl :
Stdlib.Buffer.t ->
Sarek_ir_types.var ->
Sarek_ir_types.elttype ->
Sarek_ir_types.expr ->
Sarek_ir_types.memspace ->
unitHelper: Generate array declaration for SLet with EArrayCreate
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 device helper function
val generate : Sarek_ir_types.kernel -> stringGenerate complete CUDA source for a kernel
val generate_for_device :
device:Spoc_core.Device.t ->
Sarek_ir_types.kernel ->
stringGenerate complete CUDA source with device context for SNative
val gen_variant_def :
Stdlib.Buffer.t ->
(string * (string * Sarek_ir_types.elttype list) list) ->
unitGenerate CUDA variant type definition
val generate_with_types :
types:(string * (string * Sarek_ir_types.elttype) list) list ->
Sarek_ir_types.kernel ->
stringGenerate CUDA source with custom type definitions