Beaver. MLIR. TypeConverter
(beaver v0.4.8)
Copy Markdown
An owning MLIR type converter whose Elixir callbacks are safe across native worker threads, process termination, and NIF upgrades.
Conversion callbacks may return one type (1:1), multiple types (1:N), an
empty list (type erasure), :declined, or {:error, reason}.
Summary
Types
@type conversion_result() :: Beaver.MLIR.Type.t() | {:ok, Beaver.MLIR.Type.t()} | :declined | {:error, term()}
@type materialization_result() :: Beaver.MLIR.Value.t() | {:ok, Beaver.MLIR.Value.t()} | :declined | {:error, term()}
@type one_to_n_materialization_result() :: [Beaver.MLIR.Value.t()] | {:ok, [Beaver.MLIR.Value.t()]} | :declined | {:error, term()}
@type one_to_n_result() :: [Beaver.MLIR.Type.t()] | {:ok, [Beaver.MLIR.Type.t()]} | :declined | {:error, term()}
Functions
@spec add_1_to_n_conversion(t(), (Beaver.MLIR.Type.t() -> one_to_n_result())) :: t()
@spec add_1_to_n_target_materialization( t(), (Beaver.MLIR.RewriterBase.t(), [Beaver.MLIR.Type.t()], [Beaver.MLIR.Value.t()], Beaver.MLIR.Location.t(), Beaver.MLIR.Type.t() | nil -> one_to_n_materialization_result()) ) :: t()
@spec add_conversion(t(), (Beaver.MLIR.Type.t() -> conversion_result())) :: t()
@spec add_source_materialization( t(), (Beaver.MLIR.RewriterBase.t(), Beaver.MLIR.Type.t(), [Beaver.MLIR.Value.t()], Beaver.MLIR.Location.t() -> materialization_result()) ) :: t()
@spec add_target_materialization( t(), (Beaver.MLIR.RewriterBase.t(), Beaver.MLIR.Type.t(), [Beaver.MLIR.Value.t()], Beaver.MLIR.Location.t(), Beaver.MLIR.Type.t() -> materialization_result()) ) :: t()
@spec convert(t(), Beaver.MLIR.Type.t()) :: {:ok, Beaver.MLIR.Type.t()} | {:error, term()}
@spec destroy(t()) :: :ok