Module Sarek_ppx_lib.Sarek_quote

val evar : loc:Ppxlib__.Location.t -> string -> Ppxlib__.Import.expression

Helper to create an identifier expression

val evar_qualified : loc:Ppxlib__.Location.t -> string list -> string -> Ppxlib__.Import.expression
val quote_int : loc:Ppxlib__.Location.t -> int -> Ppxlib__.Import.expression

Quote an int as OCaml expression

val quote_int32 : loc:Ppxlib__.Location.t -> int32 -> Ppxlib_ast.Ast.expression

Quote an int32 as OCaml expression

val quote_float : loc:Ppxlib__.Location.t -> float -> Ppxlib__.Import.expression

Quote a float as OCaml expression

val quote_string : loc:Ppxlib__.Location.t -> string -> Ppxlib__.Import.expression

Quote a string as OCaml expression

val quote_bool : loc:Ppxlib.location -> bool -> Ppxlib_ast.Ast.expression

Quote a bool as OCaml expression

val quote_elttype : loc:Ppxlib.location -> Kirc_Ast.elttype -> Ppxlib.expression

Quote an elttype

val quote_memspace : loc:Ppxlib.location -> Kirc_Ast.memspace -> Ppxlib.expression

Quote a memspace

val quote_list : loc:Ppxlib.location -> (loc:Ppxlib.location -> 'a -> Ppxlib_ast.Ast.expression) -> 'a list -> Ppxlib_ast.Ast.expression

Quote a list

val quote_array : loc:Ppxlib.location -> (loc:Ppxlib.location -> 'a -> Ppxlib_ast.Ast.expression) -> 'a array -> Ppxlib_ast.Ast.expression

Quote an array

val quote_option : loc:Ppxlib.location -> (loc:Ppxlib.location -> 'a -> Ppxlib_ast.Ast.expression) -> 'a option -> Ppxlib_ast.Ast.expression

Quote an option

val quote_case : loc:Ppxlib.location -> Kirc_Ast.case -> Ppxlib_ast.Ast.expression

Quote a case

val quote_k_ext : loc:Ppxlib.location -> Kirc_Ast.k_ext -> Ppxlib_ast.Ast.expression

Quote a Kirc_Ast.k_ext value to OCaml expression

val core_type_of_typ : loc:Ppxlib.location -> Sarek_types.typ -> Ppxlib.core_type option
val kernel_ctor_name : Sarek_types.typ -> string
val kernel_arg_expr : loc:'a -> 'b -> 'c -> 'c
val kernel_arg_pat : loc:'a -> 'b -> 'c -> 'c
val build_kernel_args : loc:Ppxlib__.Location.t -> Sarek_typed_ast.tparam list -> Ppxlib_ast.Ast.pattern * Ppxlib__.Import.expression * Ppxlib__.Import.pattern * Ppxlib_ast.Ast.expression
module IntrinsicRefSet : sig ... end
val expr_of_intrinsic_ref : loc:Ppxlib__.Location.t -> Sarek_env.intrinsic_ref -> Ppxlib.expression

Generate an OCaml expression for an intrinsic reference.

Intrinsics are now defined in stdlib modules (Float32, Float64, Int32, etc.) via %sarek_intrinsic. We reference the function to ensure it exists at compile time. The module path enables extensibility: user libraries can define their own intrinsics and the PPX will reference them correctly.

Examples:

  • IntrinsicRef ("Float32", "sin") -> Float32.sin
  • IntrinsicRef ("Gpu", "block_barrier") -> Gpu.block_barrier
  • CorePrimitiveRef "thread_idx_x" -> Gpu.thread_idx_x
val collect_intrinsic_refs : Sarek_typed_ast.texpr -> IntrinsicRefSet.t

Collect all intrinsic function refs from a typed expression

val collect_from_module_items : Sarek_typed_ast.tmodule_item list -> IntrinsicRefSet.t

Collect intrinsic refs from module items

val generate_intrinsic_check : loc:Ppxlib__.Location.t -> Sarek_typed_ast.tkernel -> Ppxlib.expression

Generate a dummy expression that references all intrinsic functions. This ensures compile-time checking that all intrinsics exist in their stdlib modules.

val quote_kernel : loc:Ppxlib__.Location.t -> ?native_kernel:Sarek_typed_ast.tkernel -> ir_opt:Sarek_ir_ppx.kernel -> constructors:string list -> Sarek_typed_ast.tkernel -> Ppxlib.expression

Quote a kernel to create a sarek_kernel expression

val quote_sarek_loc : loc:Ppxlib.location -> Sarek_ast.loc -> Ppxlib.expression

Quote a Sarek_ast.loc

val quote_sarek_memspace : loc:Ppxlib.location -> Sarek_ast.memspace -> Ppxlib.expression

Quote a Sarek_ast.memspace

val quote_sarek_type_expr : loc:Ppxlib.location -> Sarek_ast.type_expr -> Ppxlib_ast.Ast.expression

Quote a Sarek_ast.type_expr

val quote_sarek_binop : loc:Ppxlib.location -> Sarek_ast.binop -> Ppxlib.expression

Quote a Sarek_ast.binop

val quote_sarek_unop : loc:Ppxlib.location -> Sarek_ast.unop -> Ppxlib.expression

Quote a Sarek_ast.unop

val quote_sarek_for_dir : loc:Ppxlib.location -> Sarek_ast.for_dir -> Ppxlib.expression

Quote a Sarek_ast.for_dir

val quote_sarek_pattern : loc:Ppxlib.location -> Sarek_ast.pattern -> Ppxlib_ast.Ast.expression

Quote a Sarek_ast.pattern

val quote_sarek_param : loc:Ppxlib.location -> Sarek_ast.param -> Ppxlib.expression

Quote a Sarek_ast.param

val quote_sarek_expr : loc:Ppxlib.location -> Sarek_ast.expr -> Ppxlib_ast.Ast.expression

Quote a Sarek_ast.expr - main recursive function

val quote_sarek_module_item : loc:Ppxlib.location -> Sarek_ast.module_item -> Ppxlib.expression

Quote a Sarek_ast.module_item

val quote_sarek_type_decl : loc:Ppxlib.location -> Sarek_ast.type_decl -> Ppxlib.expression

Quote a Sarek_ast.type_decl