Module Sarek_metal.Metal_plugin

module Metal_base : sig ... end

Reuse the existing Metal implementation

Extend Framework_sig.kargs with Metal-specific variant

type metal_intrinsic = {
  1. intr_name : string;
  2. intr_codegen : string;
  3. intr_convergence : Spoc_framework.Framework_sig.convergence;
}

Metal-specific intrinsic implementation

Intrinsic registry for Metal-specific intrinsics

Metal Backend - implements BACKEND

val is_disabled : unit -> bool

Check if backend is disabled via environment variable

val registered_backend : unit lazy_t

Backend registration - happens once when first needed

val init : unit -> unit

Force module initialization

Additional Metal-specific Functions

val register_intrinsic : string -> Metal_intrinsics.intrinsic_impl -> unit

Register a custom Metal intrinsic

val find_intrinsic : string -> Metal_intrinsics.intrinsic_impl option

Look up a Metal intrinsic

val generate_with_types : types:(string * (string * Sarek_ir_types.elttype) list) list -> Sarek_ir_types.kernel -> string

Generate Metal source with custom types

val generate_source : Sarek_ir_types.kernel -> string

Generate Metal source for a kernel