jon.recoil.org

Module Select_utils

module DLL = Oxcaml_utils.Doubly_linked_list
module Int = Numbers.Int
module V = Backend_var
type trap_stack_info =
  1. | Unreachable
  2. | Reachable of Operation.trap_stack
type static_handler = {
  1. regs : Reg.t array list;
  2. traps_ref : Select_utils.trap_stack_info Stdlib.ref;
  3. label : Label.t;
}
type environment = {
  1. vars : (Reg.t array * V.Provenance.t option * Asttypes.mutable_flag) V.Map.t;
  2. static_exceptions : Select_utils.static_handler Static_label.Map.t;
  3. trap_stack : Operation.trap_stack;
  4. tailrec_label : Label.t;
}
val env_create : tailrec_label:Label.t -> Select_utils.environment
val env_find : V.Map.key -> Select_utils.environment -> Reg.t array
val env_find_mut : V.Map.key -> Select_utils.environment -> Reg.t array * Backend_var.Provenance.t option
val env_find_regs_for_exception_extra_args : Cmm.trywith_shared_label -> Select_utils.environment -> Reg.t array list
val print_traps : Stdlib.Format.formatter -> Operation.trap_stack -> unit
val set_traps_for_raise : Select_utils.environment -> unit
val trap_stack_is_empty : Select_utils.environment -> bool
val pop_all_traps : Select_utils.environment -> Cmm.trap_action list
val select_mutable_flag : Asttypes.mutable_flag -> Operation.mutable_flag
val oper_result_type : Cmm.operation -> Cmm.machtype
val size_component : Cmx_format.machtype_component -> int
val size_machtype : Cmx_format.machtype_component array -> int
val size_expr : Select_utils.environment -> Cmm.expression -> int
val current_function_name : string Stdlib.ref
val current_function_is_check_enabled : bool Stdlib.ref
module Effect : sig ... end
module Coeffect : sig ... end
module Effect_and_coeffect : sig ... end
val select_effects : Cmm.effects -> Select_utils.Effect.t
val select_coeffects : Cmm.coeffects -> Select_utils.Coeffect.t
module Or_never_returns : sig ... end
val float_test_of_float_comparison : Cmm.float_width -> Scalar.Float_comparison.t -> label_false:Label.t -> label_true:Label.t -> Cfg.float_test
val int_test_of_integer_comparison : Scalar.Integer_comparison.t -> immediate:int option -> label_false:Label.t -> label_true:Label.t -> Cfg.int_test
val terminator_of_test : Operation.test -> label_false:Label.t -> label_true:Label.t -> Cfg.terminator
module Stack_offset_and_exn : sig ... end
val make_stack_offset : int -> Cfg.basic
val make_name_for_debugger : ident:Ident.t -> which_parameter:int option -> provenance:Backend_var.Provenance.t option -> regs:Reg.t array -> Cfg.basic
val make_const_int : nativeint -> Operation.t
val make_const_float32 : int32 -> Operation.t
val make_const_float : int64 -> Operation.t
val make_const_vec128 : Cmm.vec128_bits -> Operation.t
val make_const_vec256 : Cmm.vec256_bits -> Operation.t
val make_const_vec512 : Cmm.vec512_bits -> Operation.t
val make_const_symbol : Cmm.symbol -> Operation.t
val make_opaque : unit -> Operation.t
val insert_debug : Select_utils.environment -> Sub_cfg.t -> Cfg.basic -> Debuginfo.t -> Reg.t array -> Reg.t array -> unit
val insert_op_debug_returning_id : Select_utils.environment -> Sub_cfg.t -> Operation.t -> Debuginfo.t -> Reg.t array -> Reg.t array -> InstructionId.t
val insert : Select_utils.environment -> Sub_cfg.t -> Cfg.basic -> Reg.t array -> Reg.t array -> unit
val insert' : Select_utils.environment -> Sub_cfg.t -> Cfg.terminator -> Reg.t array -> Reg.t array -> unit
val insert_debug' : Select_utils.environment -> Sub_cfg.t -> Cfg.terminator -> Debuginfo.t -> Reg.t array -> Reg.t array -> unit
val insert_op_debug' : Select_utils.environment -> Sub_cfg.t -> Cfg.terminator -> Debuginfo.t -> Reg.t array -> Reg.t array -> Reg.t array
val insert_move : Select_utils.environment -> Sub_cfg.t -> Reg.t -> Reg.t -> unit
val insert_moves : Select_utils.environment -> Sub_cfg.t -> Reg.t array -> Reg.t array -> unit
val insert_move_args : Select_utils.environment -> Sub_cfg.t -> Reg.t array -> Reg.t array -> int -> unit
val insert_move_results : Select_utils.environment -> Sub_cfg.t -> Reg.t array -> Reg.t array -> int -> unit
val maybe_emit_naming_op : Select_utils.environment -> Sub_cfg.t -> bound_name:Backend_var.With_provenance.t option -> Reg.t array -> unit