Up

module Selectgen

: sig
#
type environment = (Ident.t, Reg.t array) Tbl.t
#
val size_expr : environment -> Cmm.expression -> int
#
class virtual selector_generic :
#
method virtual is_immediate : int -> bool
#
method virtual select_addressing : Cmm.memory_chunk -> Cmm.expression -> Arch.addressing_mode * Cmm.expression
#
method is_simple_expr : Cmm.expression -> bool
#
method select_operation : Cmm.operation -> Cmm.expression list -> Mach.operation * Cmm.expression list
#
method select_condition : Cmm.expression -> Mach.test * Cmm.expression
#
method select_store : bool -> Arch.addressing_mode -> Cmm.expression -> Mach.operation * Cmm.expression
#
method regs_for : Cmm.machtype -> Reg.t array
#
method insert_op : Mach.operation -> Reg.t array -> Reg.t array -> Reg.t array
#
method insert_op_debug : Mach.operation -> Debuginfo.t -> Reg.t array -> Reg.t array -> Reg.t array
#
method emit_extcall_args : environment -> Cmm.expression list -> Reg.t array * int
#
method emit_stores : environment -> Cmm.expression list -> Reg.t array -> unit
#
method mark_call : unit
#
method mark_tailcall : unit
#
method mark_c_tailcall : unit
#
method mark_instr : Mach.instruction_desc -> unit
#
method emit_fundecl : Cmm.fundecl -> Mach.fundecl
#
method extract : Mach.instruction
#
method insert : Mach.instruction_desc -> Reg.t array -> Reg.t array -> unit
#
method insert_debug : Mach.instruction_desc -> Debuginfo.t -> Reg.t array -> Reg.t array -> unit
#
method insert_move : Reg.t -> Reg.t -> unit
#
method insert_move_args : Reg.t array -> Reg.t array -> int -> unit
#
method insert_move_results : Reg.t array -> Reg.t array -> int -> unit
#
method insert_moves : Reg.t array -> Reg.t array -> unit
#
method emit_expr : (Ident.t, Reg.t array) Tbl.t -> Cmm.expression -> Reg.t array option
#
method emit_tail : (Ident.t, Reg.t array) Tbl.t -> Cmm.expression -> unit
#
val reset : unit -> unit
end