type 't coq_ToString = {category : string;_finC : 't Utils0.finTypeC;to_string : 't -> string;
}type box_caimm_checker_s_CAimmC_none = | Box_caimm_checker_s_CAimmC_none
type caimm_checker_s_fields_t = __val ad_rsp : ('a1, 'a2, 'a3, 'a4, 'a5) arch_decl -> 'a1type ('reg, 'regx, 'xreg, 'rflag, 'cond) reg_t = 'regtype ('reg, 'regx, 'xreg, 'rflag, 'cond) regx_t = 'regxtype ('reg, 'regx, 'xreg, 'rflag, 'cond) xreg_t = 'xregtype ('reg, 'regx, 'xreg, 'rflag, 'cond) rflag_t = 'rflagtype ('reg, 'regx, 'xreg, 'rflag, 'cond) cond_t = 'condtype ('reg, 'regx, 'xreg, 'rflag, 'cond) reg_address = {ad_disp : Ssralg.GRing.ComRing.sort;ad_base : ('reg, 'regx, 'xreg, 'rflag, 'cond) reg_t option;ad_scale : Datatypes.nat;ad_offset : ('reg, 'regx, 'xreg, 'rflag, 'cond) reg_t option;
}val ad_base :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) reg_address ->
('a1, 'a2, 'a3, 'a4, 'a5) reg_t optionval ad_offset :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) reg_address ->
('a1, 'a2, 'a3, 'a4, 'a5) reg_t optionval oeq_reg :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) reg_t option ->
('a1, 'a2, 'a3, 'a4, 'a5) reg_t option ->
boolval reg_address_beq :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) reg_address ->
('a1, 'a2, 'a3, 'a4, 'a5) reg_address ->
boolval address_beq :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) address ->
('a1, 'a2, 'a3, 'a4, 'a5) address ->
booltype ('reg, 'regx, 'xreg, 'rflag, 'cond) asm_arg = | Condt of ('reg, 'regx, 'xreg, 'rflag, 'cond) cond_t| Imm of Wsize.wsize * Ssralg.GRing.ComRing.sort| Reg of ('reg, 'regx, 'xreg, 'rflag, 'cond) reg_t| Regx of ('reg, 'regx, 'xreg, 'rflag, 'cond) regx_t| Addr of ('reg, 'regx, 'xreg, 'rflag, 'cond) address| XReg of ('reg, 'regx, 'xreg, 'rflag, 'cond) xreg_t
type ('reg, 'regx, 'xreg, 'rflag, 'cond) asm_args =
('reg, 'regx, 'xreg, 'rflag, 'cond) asm_arg listval is_Condt :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) asm_arg ->
('a1, 'a2, 'a3, 'a4, 'a5) cond_t optionval asm_arg_beq :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) asm_arg ->
('a1, 'a2, 'a3, 'a4, 'a5) asm_arg ->
booltype msb_flag = | MSB_CLEAR| MSB_MERGE
val msb_flag_rect : 'a1 -> 'a1 -> msb_flag -> 'a1val msb_flag_rec : 'a1 -> 'a1 -> msb_flag -> 'a1type is_msb_flag = | Coq_is_MSB_CLEAR| Coq_is_MSB_MERGE
type box_msb_flag_MSB_CLEAR = | Box_msb_flag_MSB_CLEAR
type msb_flag_fields_t = __type ('reg, 'regx, 'xreg, 'rflag, 'cond) implicit_arg = | IArflag of ('reg, 'regx, 'xreg, 'rflag, 'cond) rflag_t| IAreg of ('reg, 'regx, 'xreg, 'rflag, 'cond) reg_t
val implicit_arg_beq :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) implicit_arg ->
('a1, 'a2, 'a3, 'a4, 'a5) implicit_arg ->
booltype ('reg, 'regx, 'xreg, 'rflag, 'cond) arg_constrained_register = | ACR_any| ACR_exact of ('reg, 'regx, 'xreg, 'rflag, 'cond) reg_t| ACR_vector of ('reg, 'regx, 'xreg, 'rflag, 'cond) xreg_t| ACR_subset of ('reg, 'regx, 'xreg, 'rflag, 'cond) reg_t list
type ('reg, 'regx, 'xreg, 'rflag, 'cond) arg_desc = | ADImplicit of ('reg, 'regx, 'xreg, 'rflag, 'cond) implicit_arg| ADExplicit of addr_kind
* Datatypes.nat
* ('reg, 'regx, 'xreg, 'rflag, 'cond) arg_constrained_register
val coq_F :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) rflag_t ->
('a1, 'a2, 'a3, 'a4, 'a5) arg_descval coq_R :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) reg_t ->
('a1, 'a2, 'a3, 'a4, 'a5) arg_descval coq_Ef :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
Datatypes.nat ->
('a1, 'a2, 'a3, 'a4, 'a5) reg_t ->
('a1, 'a2, 'a3, 'a4, 'a5) arg_descval check_oreg :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) arg_constrained_register ->
('a1, 'a2, 'a3, 'a4, 'a5) asm_arg ->
booltype box_arg_kind_CAcond = | Box_arg_kind_CAcond
type box_arg_kind_CAmem = booltype arg_kind_fields_t = __type ('reg, 'regx, 'xreg, 'rflag, 'cond) pp_asm_op = {pp_aop_name : string;pp_aop_ext : ('reg, 'regx, 'xreg, 'rflag, 'cond) pp_asm_op_ext;pp_aop_args : (Wsize.wsize * ('reg, 'regx, 'xreg, 'rflag, 'cond) asm_arg) list;
}val pp_aop_name :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) pp_asm_op ->
stringval pp_aop_ext :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) pp_asm_op ->
('a1, 'a2, 'a3, 'a4, 'a5) pp_asm_op_extval pp_aop_args :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) pp_asm_op ->
(Wsize.wsize * ('a1, 'a2, 'a3, 'a4, 'a5) asm_arg) listtype ('reg, 'regx, 'xreg, 'rflag, 'cond) instr_desc_t = {id_valid : bool;id_msb_flag : msb_flag;id_tin : Type.stype list;id_in : ('reg, 'regx, 'xreg, 'rflag, 'cond) arg_desc list;id_tout : Type.stype list;id_out : ('reg, 'regx, 'xreg, 'rflag, 'cond) arg_desc list;id_semi : Sem_type.sem_tuple Utils0.exec Sem_type.sem_prod;id_args_kinds : i_args_kinds;id_nargs : Datatypes.nat;id_str_jas : unit -> string;id_safe : Wsize.safe_cond list;id_pp_asm : ('reg, 'regx, 'xreg, 'rflag, 'cond) asm_args ->
('reg, 'regx, 'xreg, 'rflag, 'cond) pp_asm_op;
}val id_in :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) instr_desc_t ->
('a1, 'a2, 'a3, 'a4, 'a5) arg_desc listval id_out :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) instr_desc_t ->
('a1, 'a2, 'a3, 'a4, 'a5) arg_desc listval id_str_jas :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) instr_desc_t ->
unit ->
stringval id_pp_asm :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) instr_desc_t ->
('a1, 'a2, 'a3, 'a4, 'a5) asm_args ->
('a1, 'a2, 'a3, 'a4, 'a5) pp_asm_opval instr_desc_op :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) asm_op_decl ->
'a6 ->
('a1, 'a2, 'a3, 'a4, 'a5) instr_desc_ttype ('reg, 'regx, 'xreg, 'rflag, 'cond, 'asm_op) asm_op_t' = 'asm_optype ('reg, 'regx, 'xreg, 'rflag, 'cond, 'asm_op) asm_op_msb_t =
Wsize.wsize option * 'asm_opval is_nil : 'a1 list -> boolval instr_desc :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) asm_op_decl ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) asm_op_msb_t ->
('a1, 'a2, 'a3, 'a4, 'a5) instr_desc_ttype ('reg, 'regx, 'xreg, 'rflag, 'cond, 'asm_op) asm_i_r = | ALIGN| LABEL of Label.label_kind * Label.label| STORELABEL of ('reg, 'regx, 'xreg, 'rflag, 'cond) reg_t * Label.label| JMP of Label.remote_label| JMPI of ('reg, 'regx, 'xreg, 'rflag, 'cond) asm_arg| Jcc of Label.label * ('reg, 'regx, 'xreg, 'rflag, 'cond) cond_t| JAL of ('reg, 'regx, 'xreg, 'rflag, 'cond) reg_t * Label.remote_label| CALL of Label.remote_label| POPPC| AsmOp of ('reg, 'regx, 'xreg, 'rflag, 'cond, 'asm_op) asm_op_t'
* ('reg, 'regx, 'xreg, 'rflag, 'cond) asm_args| SysCall of BinNums.positive Syscall_t.syscall_t
type ('reg, 'regx, 'xreg, 'rflag, 'cond, 'asm_op) asm_i = {asmi_ii : Expr.instr_info;asmi_i : ('reg, 'regx, 'xreg, 'rflag, 'cond, 'asm_op) asm_i_r;
}val asmi_ii :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) asm_op_decl ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) asm_i ->
Expr.instr_infoval asmi_i :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) asm_op_decl ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) asm_i ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) asm_i_rtype ('reg, 'regx, 'xreg, 'rflag, 'cond, 'asm_op) asm_code =
('reg, 'regx, 'xreg, 'rflag, 'cond, 'asm_op) asm_i listtype ('reg, 'regx, 'xreg, 'rflag, 'cond) asm_typed_reg = | ARReg of ('reg, 'regx, 'xreg, 'rflag, 'cond) reg_t| ARegX of ('reg, 'regx, 'xreg, 'rflag, 'cond) regx_t| AXReg of ('reg, 'regx, 'xreg, 'rflag, 'cond) xreg_t| ABReg of ('reg, 'regx, 'xreg, 'rflag, 'cond) rflag_t
val asm_typed_reg_beq :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) asm_typed_reg ->
('a1, 'a2, 'a3, 'a4, 'a5) asm_typed_reg ->
booltype ('reg, 'regx, 'xreg, 'rflag, 'cond, 'asm_op) asm_fundef = {asm_fd_align : Wsize.wsize;asm_fd_arg : ('reg, 'regx, 'xreg, 'rflag, 'cond) asm_typed_reg list;asm_fd_body : ('reg, 'regx, 'xreg, 'rflag, 'cond, 'asm_op) asm_code;asm_fd_res : ('reg, 'regx, 'xreg, 'rflag, 'cond) asm_typed_reg list;asm_fd_export : bool;asm_fd_total_stack : BinNums.coq_Z;asm_fd_align_args : Wsize.wsize list;
}val asm_fd_align :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) asm_op_decl ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) asm_fundef ->
Wsize.wsizeval asm_fd_arg :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) asm_op_decl ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) asm_fundef ->
('a1, 'a2, 'a3, 'a4, 'a5) asm_typed_reg listval asm_fd_body :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) asm_op_decl ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) asm_fundef ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) asm_codeval asm_fd_res :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) asm_op_decl ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) asm_fundef ->
('a1, 'a2, 'a3, 'a4, 'a5) asm_typed_reg listval asm_fd_export :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) asm_op_decl ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) asm_fundef ->
boolval asm_fd_total_stack :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) asm_op_decl ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) asm_fundef ->
BinNums.coq_Zval asm_fd_align_args :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) asm_op_decl ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) asm_fundef ->
Wsize.wsize listtype ('reg, 'regx, 'xreg, 'rflag, 'cond, 'asm_op) asm_prog = {asm_globs : Ssralg.GRing.ComRing.sort list;asm_glob_names : ((Var0.Var.var * Wsize.wsize) * BinNums.coq_Z) list;asm_funcs : (Var0.funname
* ('reg, 'regx, 'xreg, 'rflag, 'cond, 'asm_op) asm_fundef)
list;
}val asm_globs :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) asm_op_decl ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) asm_prog ->
Ssralg.GRing.ComRing.sort listval asm_glob_names :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) asm_op_decl ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) asm_prog ->
((Var0.Var.var * Wsize.wsize) * BinNums.coq_Z) listval asm_funcs :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) asm_op_decl ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) asm_prog ->
(Var0.funname * ('a1, 'a2, 'a3, 'a4, 'a5, 'a6) asm_fundef) listtype ('reg, 'regx, 'xreg, 'rflag, 'cond) calling_convention = {callee_saved : ('reg, 'regx, 'xreg, 'rflag, 'cond) asm_typed_reg list;call_reg_args : ('reg, 'regx, 'xreg, 'rflag, 'cond) reg_t list;call_xreg_args : ('reg, 'regx, 'xreg, 'rflag, 'cond) xreg_t list;call_reg_ret : ('reg, 'regx, 'xreg, 'rflag, 'cond) reg_t list;call_xreg_ret : ('reg, 'regx, 'xreg, 'rflag, 'cond) xreg_t list;
}val callee_saved :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) calling_convention ->
('a1, 'a2, 'a3, 'a4, 'a5) asm_typed_reg listval call_reg_args :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) calling_convention ->
('a1, 'a2, 'a3, 'a4, 'a5) reg_t listval call_xreg_args :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) calling_convention ->
('a1, 'a2, 'a3, 'a4, 'a5) xreg_t listval call_reg_ret :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) calling_convention ->
('a1, 'a2, 'a3, 'a4, 'a5) reg_t listval call_xreg_ret :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) calling_convention ->
('a1, 'a2, 'a3, 'a4, 'a5) xreg_t listval get_ARReg :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) asm_typed_reg ->
('a1, 'a2, 'a3, 'a4, 'a5) reg_t optionval get_ARegX :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) asm_typed_reg ->
('a1, 'a2, 'a3, 'a4, 'a5) regx_t optionval get_AXReg :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) asm_typed_reg ->
('a1, 'a2, 'a3, 'a4, 'a5) xreg_t optionval check_list :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
'a6 Utils0.eqTypeC ->
(('a1, 'a2, 'a3, 'a4, 'a5) asm_typed_reg -> 'a6 option) ->
('a1, 'a2, 'a3, 'a4, 'a5) asm_typed_reg list ->
'a6 list ->
boolval check_call_conv :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) asm_op_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) calling_convention ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) asm_fundef ->
boolval registers :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) reg_t listval registerxs :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) regx_t listval xregisters :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) xreg_t listval rflags :
('a1, 'a2, 'a3, 'a4, 'a5) arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) rflag_t listtype rflagv = | Def of bool| Undef
val rflagv_rect : (bool -> 'a1) -> 'a1 -> rflagv -> 'a1val rflagv_rec : (bool -> 'a1) -> 'a1 -> rflagv -> 'a1type box_rflagv_Def = booltype box_rflagv_Undef = | Box_rflagv_Undef
type rflagv_fields_t = __type ('reg, 'regx, 'xreg, 'rflag, 'cond, 'asm_op) asm = {_arch_decl : ('reg, 'regx, 'xreg, 'rflag, 'cond) arch_decl;_asm_op_decl : ('reg, 'regx, 'xreg, 'rflag, 'cond, 'asm_op) asm_op_decl;eval_cond : (('reg, 'regx, 'xreg, 'rflag, 'cond) reg_t ->
Ssralg.GRing.ComRing.sort) ->
(('reg, 'regx, 'xreg, 'rflag, 'cond) rflag_t -> bool Utils0.exec) ->
('reg, 'regx, 'xreg, 'rflag, 'cond) cond_t ->
bool Utils0.exec;
}val _arch_decl :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) asm ->
('a1, 'a2, 'a3, 'a4, 'a5) arch_declval _asm_op_decl :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) asm ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) asm_op_declval eval_cond :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) asm ->
(('a1, 'a2, 'a3, 'a4, 'a5) reg_t -> Ssralg.GRing.ComRing.sort) ->
(('a1, 'a2, 'a3, 'a4, 'a5) rflag_t -> bool Utils0.exec) ->
('a1, 'a2, 'a3, 'a4, 'a5) cond_t ->
bool Utils0.exec