code: def _noinline_mlir(ctx, *dynamic, treedef, static, flatten, **kwargs):
      assert len(kwargs) == 0
      assert flatten.called()
      dynamic = [_MlirWrapper(x) for x in dynamic]
      abstract_dynamic = [_MlirWrapper(x) for x in ctx.avals_in]
      # This is really an internal implementation detail of another component that we're
      # messing with here.
      # Fortunately `noinline` and `primitive` are both inside Equinox, so this isn't too
      # bad.
      flat = _primitive._combine(dynamic, static)
      abstract_flat = _primitive._combine(abstract_dynamic, static)
      index, _, transforms, args = jtu.tree_unflatten(treedef, flat)
      (
          abstract_index,
          _,
          abstract_transforms,
          abstract_args,
      ) = jtu.tree_unflatten(treedef, abstract_flat)
      flat, treedef = jtu.tree_flatten((transforms, args))
      abstract_flat, abstract_treedef = jtu.tree_flatten(
          (abstract_transforms, abstract_args)
      )
      assert treedef == abstract_treedef
      dynamic = [x.val for x in flat if type(x) is _MlirWrapper]
      abstract_dynamic = [
          x.val for x in abstract_flat if type(x) is _MlirWrapper
      ]
      static = tuple(
          None if type(x) is _MlirWrapper else x for x in flat
      )
      is_float0 = tuple(
          x.dtype == jax.dtypes.float0 for x in abstract_dynamic
      )
      callback = _get_callback(treedef, static, is_float0)
  
      vals_in = [index.val] + dynamic
      avals_in = [abstract_index.val] + abstract_dynamic
      result, _, keepalive = mlir.emit_python_callback(
          ctx,
          callback,
          None,
          vals_in,
          avals_in,
          ctx.avals_out,
          False,
          sharding=None,
      )
      ctx.module_context.add_keepalive(keepalive)
      return result
  
imports: import functools
  from collections.abc import Callable
  from typing import Any, Optional, Union
  import jax
  import jax._src.pretty_printer
  import jax._src.source_info_util
  import jax.core
  import jax.interpreters.ad
  import jax.interpreters.batching
  import jax.interpreters.mlir
  import jax.numpy
  import jax.tree_util
  import numpy
  from jaxtyping import Array, Int, PyTree
  from .._ad import filter_jvp
  from .._caches import internal_lru_caches
  from .._compile_utils import hashable_combine, hashable_partition
  from .._eval_shape import filter_eval_shape
  from .._filters import combine, is_array, partition
  from .._module import field, Module, module_update_wrapper
  from .._vmap_pmap import filter_vmap
  from .None import _primitive
  from ._primitive import filter_primitive_batching, filter_primitive_bind, filter_primitive_def, filter_primitive_jvp, filter_primitive_transpose, materialise_zeros
label_desc: Use image node_id 21 for calling a global function with example usage: _noinline_mlir(ctx) and returns: result