Module Sarek_ppx_lib.Sarek_lower

val mangle_type_name : string -> string
val c_type_of_typ : Sarek_types.typ -> string
val record_constructor_strings : string -> (string * Sarek_types.typ * bool) list -> string list
val variant_constructor_strings : string -> (string * Sarek_types.typ option) list -> string list
val c_type_of_core_type : loc:Ppxlib.Location.t -> Ppxlib.core_type -> string
val typ_of_core_type : loc:Ppxlib.Location.t -> Ppxlib.core_type -> Sarek_types.typ
val constructor_strings_of_core_type_decl : loc:Ppxlib.Location.t -> Ppxlib.type_declaration -> Ppxlib__.Import.expression
type state = {
  1. mutable next_var_id : int;
  2. mutable declarations : Kirc_Ast.k_ext list;
  3. fun_map : (string, Sarek_typed_ast.tparam list * Sarek_typed_ast.texpr) Stdlib.Hashtbl.t;
  4. lowering_stack : (string, unit) Stdlib.Hashtbl.t;
  5. lowered_funs : (string, Kirc_Ast.k_ext * string) Stdlib.Hashtbl.t;
}

Lowering state

val create_state : (string, Sarek_typed_ast.tparam list * Sarek_typed_ast.texpr) Stdlib.Hashtbl.t -> state
val fresh_id : state -> int

Generate a fresh variable ID

val lower_memspace : Sarek_types.memspace -> Kirc_Ast.memspace

Convert memspace to Kirc_Ast memspace

val lower_prim_elttype : Sarek_types.prim_type -> Kirc_Ast.elttype

Convert prim_type to Kirc_Ast elttype

Convert registered type to Kirc_Ast elttype

val elttype_of_typ : Sarek_types.typ -> Kirc_Ast.elttype

Get element type from a typ

Lower a typed expression to Kirc_Ast

val lower_decl : mutable_:bool -> int -> string -> Sarek_types.typ -> Kirc_Ast.k_ext

Lower a declaration for a local/kernel variable.

val lower_ref : int -> string -> Sarek_types.typ -> Kirc_Ast.k_ext

Lower a reference to a previously-declared variable.

Lower binary operation based on operand types

Lower unary operation

val lower_seq : state -> Sarek_typed_ast.texpr list -> Kirc_Ast.k_ext

Lower a sequence of expressions

Lower a match expression

Lower a kernel parameter to IR

val lower_params : Sarek_typed_ast.tparam list -> Kirc_Ast.k_ext

Lower kernel parameters to IR params

val lower_kernel : Sarek_typed_ast.tkernel -> Kirc_Ast.k_ext * string list

Lower a complete kernel

val lower_return_value : Sarek_typed_ast.tkernel -> Kirc_Ast.k_ext

Get the return value IR from a kernel