Jasmin.Exprtype __ = Obj.tval uint_of_word : Wsize.wsize -> Operators.sop1val sint_of_word : Wsize.wsize -> Operators.sop1val etype_of_wiop1 :
Wsize.signedness ->
Operators.wiop1 ->
'a1 Type.extended_type * 'a1 Type.extended_typeval type_of_wiop1 : Operators.wiop1 -> Type.atype * Type.atypeval type_of_opk : Operators.op_kind -> Type.atypeval etype_of_opk : Operators.op_kind -> 'a1 Type.extended_typeval etype_of_op1 :
Operators.sop1 ->
'a1 Type.extended_type * 'a1 Type.extended_typeval type_of_op1 : Operators.sop1 -> Type.atype * Type.atypeval etype_of_wiop2 :
Wsize.signedness ->
Wsize.wsize ->
Operators.wiop2 ->
('a1 Type.extended_type * 'a1 Type.extended_type) * 'a1 Type.extended_typeval type_of_wiop2 :
Wsize.wsize ->
Operators.wiop2 ->
(Type.atype * Type.atype) * Type.atypeval opk8 : Operators.op_kind -> Operators.op_kindval opk_of_cmpk : Operators.cmp_kind -> Operators.op_kindval etype_of_op2 :
Operators.sop2 ->
('a1 Type.extended_type * 'a1 Type.extended_type) * 'a1 Type.extended_typeval type_of_op2 : Operators.sop2 -> (Type.atype * Type.atype) * Type.atypeval tin_combine_flags : Type.atype listval type_of_opN : Operators.opN -> Type.atype list * Type.atypemodule type TAG = sig ... endtype var_info = Location.tval dummy_var_info : var_infoval v_var : var_i -> Var0.Var.varval mk_var_i : Var0.Var.var -> var_ival v_scope_tag : v_scope -> BinNums.positiveval is_v_scope_inhab : v_scope -> is_v_scopeval is_v_scope_functor : v_scope -> is_v_scope -> is_v_scopetype v_scope_fields_t = __val v_scope_fields : v_scope -> v_scope_fields_tval v_scope_construct : BinNums.positive -> v_scope_fields_t -> v_scope optionval v_scope_induction : 'a1 -> 'a1 -> v_scope -> is_v_scope -> 'a1val v_scope_eqb_fields :
(v_scope -> v_scope -> bool) ->
BinNums.positive ->
v_scope_fields_t ->
v_scope_fields_t ->
boolval v_scope_eqb_OK : v_scope -> v_scope -> Bool.reflectval coq_HB_unnamed_factory_1 : v_scope Eqtype.Coq_hasDecEq.axioms_val expr_v_scope__canonical__eqtype_Equality : Eqtype.Equality.coq_typeval is_lvar : gvar -> boolval is_glob : gvar -> booltype pexpr = | Pconst of BinNums.coq_Z| Pbool of bool| Parr_init of Wsize.wsize * BinNums.positive| Pvar of gvar| Pget of Memory_model.aligned * Warray_.arr_access * Wsize.wsize * gvar * pexpr| Psub of Warray_.arr_access * Wsize.wsize * BinNums.positive * gvar * pexpr| Pload of Memory_model.aligned * Wsize.wsize * pexpr| Papp1 of Operators.sop1 * pexpr| Papp2 of Operators.sop2 * pexpr * pexpr| PappN of Operators.opN * pexpr list| Pif of Type.atype * pexpr * pexpr * pexprval eaddw : Wsize.wsize -> pexpr -> pexpr -> pexprval cf_of_condition :
Operators.sop2 ->
(Operators.combine_flags * Wsize.wsize) optionval pexpr_of_cf :
Operators.combine_flags ->
var_info ->
Var0.Var.var list ->
pexprtype lval = | Lnone of var_info * Type.atype| Lvar of var_i| Lmem of Memory_model.aligned * Wsize.wsize * var_info * pexpr| Laset of Memory_model.aligned
* Warray_.arr_access
* Wsize.wsize
* var_i
* pexpr| Lasub of Warray_.arr_access * Wsize.wsize * BinNums.positive * var_i * pexprval get_pvar : pexpr -> Var0.Var.var Utils0.execval get_lvar : lval -> Var0.Var.var Utils0.execval dir_tag : dir -> BinNums.positivetype dir_fields_t = __val dir_fields : dir -> dir_fields_tval dir_construct : BinNums.positive -> dir_fields_t -> dir optionval dir_eqb_fields :
(dir -> dir -> bool) ->
BinNums.positive ->
dir_fields_t ->
dir_fields_t ->
boolval dir_eqb_OK : dir -> dir -> Bool.reflectval coq_HB_unnamed_factory_3 : dir Eqtype.Coq_hasDecEq.axioms_val expr_dir__canonical__eqtype_Equality : Eqtype.Equality.coq_typeval wrange : dir -> BinNums.coq_Z -> BinNums.coq_Z -> BinNums.coq_Z listmodule type InstrInfoT = sig ... endmodule InstrInfo : InstrInfoTtype instr_info = IInfo.tval dummy_instr_info : instr_infoval ii_with_location : instr_info -> instr_infoval ii_is_inline : instr_info -> boolval var_info_of_ii : instr_info -> var_infoval assgn_tag_tag : assgn_tag -> BinNums.positiveval is_assgn_tag_inhab : assgn_tag -> is_assgn_tagval is_assgn_tag_functor : assgn_tag -> is_assgn_tag -> is_assgn_tagtype assgn_tag_fields_t = __val assgn_tag_fields : assgn_tag -> assgn_tag_fields_tval assgn_tag_construct :
BinNums.positive ->
assgn_tag_fields_t ->
assgn_tag optionval assgn_tag_induction :
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
assgn_tag ->
is_assgn_tag ->
'a1val assgn_tag_eqb_fields :
(assgn_tag -> assgn_tag -> bool) ->
BinNums.positive ->
assgn_tag_fields_t ->
assgn_tag_fields_t ->
boolval assgn_tag_eqb_OK : assgn_tag -> assgn_tag -> Bool.reflectval coq_HB_unnamed_factory_5 : assgn_tag Eqtype.Coq_hasDecEq.axioms_val expr_assgn_tag__canonical__eqtype_Equality : Eqtype.Equality.coq_typetype assertion = Utils0.assertion_label * pexprtype assertions = assertion listtype 'asm_op instr_r = | Cassgn of lval * assgn_tag * Type.atype * pexpr| Copn of lval list * assgn_tag * 'asm_op Sopn.sopn * pexpr list| Csyscall of lval list
* (Wsize.wsize * BinNums.positive) Syscall_t.syscall_t
* pexpr list| Cassert of assertion| Cif of pexpr * 'asm_op instr list * 'asm_op instr list| Cfor of var_i * range * 'asm_op instr list| Cwhile of align * 'asm_op instr list * pexpr * instr_info * 'asm_op instr list| Ccall of lval list * Var0.funname * pexpr listval cmd_rect_aux :
'a1 Sopn.asmOp ->
'a3 ->
('a1 instr -> 'a1 instr list -> 'a2 -> 'a3 -> 'a3) ->
('a1 instr -> 'a2) ->
'a1 instr list ->
'a3val instr_Rect :
'a1 Sopn.asmOp ->
('a1 instr_r -> instr_info -> 'a2 -> 'a3) ->
'a4 ->
('a1 instr -> 'a1 instr list -> 'a3 -> 'a4 -> 'a4) ->
(lval -> assgn_tag -> Type.atype -> pexpr -> 'a2) ->
(lval list -> assgn_tag -> 'a1 Sopn.sopn -> pexpr list -> 'a2) ->
(lval list ->
(Wsize.wsize * BinNums.positive) Syscall_t.syscall_t ->
pexpr list ->
'a2) ->
(assertion -> 'a2) ->
(pexpr -> 'a1 instr list -> 'a1 instr list -> 'a4 -> 'a4 -> 'a2) ->
(var_i -> dir -> pexpr -> pexpr -> 'a1 instr list -> 'a4 -> 'a2) ->
(align ->
'a1 instr list ->
pexpr ->
instr_info ->
'a1 instr list ->
'a4 ->
'a4 ->
'a2) ->
(lval list -> Var0.funname -> pexpr list -> 'a2) ->
'a1 instr ->
'a3val instr_r_Rect :
'a1 Sopn.asmOp ->
('a1 instr_r -> instr_info -> 'a2 -> 'a3) ->
'a4 ->
('a1 instr -> 'a1 instr list -> 'a3 -> 'a4 -> 'a4) ->
(lval -> assgn_tag -> Type.atype -> pexpr -> 'a2) ->
(lval list -> assgn_tag -> 'a1 Sopn.sopn -> pexpr list -> 'a2) ->
(lval list ->
(Wsize.wsize * BinNums.positive) Syscall_t.syscall_t ->
pexpr list ->
'a2) ->
(assertion -> 'a2) ->
(pexpr -> 'a1 instr list -> 'a1 instr list -> 'a4 -> 'a4 -> 'a2) ->
(var_i -> dir -> pexpr -> pexpr -> 'a1 instr list -> 'a4 -> 'a2) ->
(align ->
'a1 instr list ->
pexpr ->
instr_info ->
'a1 instr list ->
'a4 ->
'a4 ->
'a2) ->
(lval list -> Var0.funname -> pexpr list -> 'a2) ->
'a1 instr_r ->
'a2val cmd_rect :
'a1 Sopn.asmOp ->
('a1 instr_r -> instr_info -> 'a2 -> 'a3) ->
'a4 ->
('a1 instr -> 'a1 instr list -> 'a3 -> 'a4 -> 'a4) ->
(lval -> assgn_tag -> Type.atype -> pexpr -> 'a2) ->
(lval list -> assgn_tag -> 'a1 Sopn.sopn -> pexpr list -> 'a2) ->
(lval list ->
(Wsize.wsize * BinNums.positive) Syscall_t.syscall_t ->
pexpr list ->
'a2) ->
(assertion -> 'a2) ->
(pexpr -> 'a1 instr list -> 'a1 instr list -> 'a4 -> 'a4 -> 'a2) ->
(var_i -> dir -> pexpr -> pexpr -> 'a1 instr list -> 'a4 -> 'a2) ->
(align ->
'a1 instr list ->
pexpr ->
instr_info ->
'a1 instr list ->
'a4 ->
'a4 ->
'a2) ->
(lval list -> Var0.funname -> pexpr list -> 'a2) ->
'a1 instr list ->
'a4module type FunInfoT = sig ... endtype fun_info = FInfo.tval entry_info_of_fun_info : fun_info -> instr_infoval ret_info_of_fun_info : fun_info -> instr_infotype extra_fun_t = __type extra_prog_t = __type extra_val_t = __type ('asm_op, 'extra_fun_t) _fundef = {f_info : fun_info;f_tyin : Type.atype list;f_params : var_i list;f_body : 'asm_op instr list;f_tyout : Type.atype list;f_res : var_i list;f_extra : 'extra_fun_t;}val f_info : 'a1 Sopn.asmOp -> ('a1, 'a2) _fundef -> fun_infoval f_tyin : 'a1 Sopn.asmOp -> ('a1, 'a2) _fundef -> Type.atype listval f_params : 'a1 Sopn.asmOp -> ('a1, 'a2) _fundef -> var_i listval f_body : 'a1 Sopn.asmOp -> ('a1, 'a2) _fundef -> 'a1 instr listval f_tyout : 'a1 Sopn.asmOp -> ('a1, 'a2) _fundef -> Type.atype listval f_res : 'a1 Sopn.asmOp -> ('a1, 'a2) _fundef -> var_i listval f_extra : 'a1 Sopn.asmOp -> ('a1, 'a2) _fundef -> 'a2type ('asm_op, 'extra_fun_t) _fun_decl =
Var0.funname * ('asm_op, 'extra_fun_t) _fundeftype ('asm_op, 'extra_fun_t, 'extra_prog_t) _prog = {p_funcs : ('asm_op, 'extra_fun_t) _fun_decl list;p_globs : Global.glob_decl list;p_extra : 'extra_prog_t;}val p_funcs :
'a1 Sopn.asmOp ->
('a1, 'a2, 'a3) _prog ->
('a1, 'a2) _fun_decl listval p_globs : 'a1 Sopn.asmOp -> ('a1, 'a2, 'a3) _prog -> Global.glob_decl listval p_extra : 'a1 Sopn.asmOp -> ('a1, 'a2, 'a3) _prog -> 'a3type 'asm_op fundef = ('asm_op, extra_fun_t) _fundeftype function_signature = Type.atype list * Type.atype listval signature_of_fundef :
'a1 Sopn.asmOp ->
progT ->
'a1 fundef ->
function_signaturetype 'asm_op fun_decl = Var0.funname * 'asm_op fundeftype 'asm_op prog = ('asm_op, extra_fun_t, extra_prog_t) _progval coq_Build_prog :
'a1 Sopn.asmOp ->
progT ->
('a1, extra_fun_t) _fun_decl list ->
Global.glob_decl list ->
extra_prog_t ->
'a1 progval progUnit : progTtype 'asm_op ufundef = 'asm_op fundeftype 'asm_op ufun_decl = 'asm_op fun_decltype 'asm_op ufun_decls = 'asm_op fun_decl listtype 'asm_op uprog = 'asm_op progtype 'asm_op _ufundef = ('asm_op, unit) _fundeftype 'asm_op _ufun_decl = ('asm_op, unit) _fun_decltype 'asm_op _ufun_decls = ('asm_op, unit) _fun_decl listtype 'asm_op _uprog = ('asm_op, unit, unit) _progval to_uprog : 'a1 Sopn.asmOp -> 'a1 _uprog -> 'a1 uprogval saved_stack_beq : saved_stack -> saved_stack -> boolval saved_stack_eq_axiom : saved_stack Eqtype.eq_axiomval coq_HB_unnamed_factory_7 : saved_stack Eqtype.Coq_hasDecEq.axioms_val expr_saved_stack__canonical__eqtype_Equality : Eqtype.Equality.coq_typetype return_address_location = | RAnone| RAreg of Var0.Var.var * Var0.Var.var option| RAstack of Var0.Var.var option
* Var0.Var.var option
* BinNums.coq_Z
* Var0.Var.var optionval is_RAnone : return_address_location -> boolval is_RAstack : return_address_location -> boolval return_address_location_beq :
return_address_location ->
return_address_location ->
boolval return_address_location_eq_axiom : return_address_location Eqtype.eq_axiomval coq_HB_unnamed_factory_9 :
return_address_location Eqtype.Coq_hasDecEq.axioms_val expr_return_address_location__canonical__eqtype_Equality :
Eqtype.Equality.coq_typetype stk_fun_extra = {sf_align : Wsize.wsize;sf_stk_sz : BinNums.coq_Z;sf_stk_ioff : BinNums.coq_Z;sf_stk_extra_sz : BinNums.coq_Z;sf_stk_max : BinNums.coq_Z;sf_max_call_depth : BinNums.coq_Z;sf_to_save : (Var0.Var.var * BinNums.coq_Z) list;sf_save_stack : saved_stack;sf_return_address : return_address_location;sf_align_args : Wsize.wsize list;}val sf_align : stk_fun_extra -> Wsize.wsizeval sf_stk_sz : stk_fun_extra -> BinNums.coq_Zval sf_stk_ioff : stk_fun_extra -> BinNums.coq_Zval sf_stk_extra_sz : stk_fun_extra -> BinNums.coq_Zval sf_stk_max : stk_fun_extra -> BinNums.coq_Zval sf_max_call_depth : stk_fun_extra -> BinNums.coq_Zval sf_to_save : stk_fun_extra -> (Var0.Var.var * BinNums.coq_Z) listval sf_save_stack : stk_fun_extra -> saved_stackval sf_return_address : stk_fun_extra -> return_address_locationval sf_align_args : stk_fun_extra -> Wsize.wsize listtype sprog_extra = {sp_rsp : Ident.Ident.ident;sp_rip : Ident.Ident.ident;sp_globs : Word0.word list;sp_glob_names : ((Var0.Var.var * Wsize.wsize) * BinNums.coq_Z) list;}val sp_rsp : sprog_extra -> Ident.Ident.identval sp_rip : sprog_extra -> Ident.Ident.identval sp_globs : sprog_extra -> Word0.word listval sp_glob_names :
sprog_extra ->
((Var0.Var.var * Wsize.wsize) * BinNums.coq_Z) listval progStack : Wsize.coq_PointerData -> progTtype 'asm_op sfundef = 'asm_op fundeftype 'asm_op sfun_decl = 'asm_op fun_decltype 'asm_op sfun_decls = 'asm_op fun_decl listtype 'asm_op sprog = 'asm_op progtype 'asm_op _sfundef = ('asm_op, stk_fun_extra) _fundeftype 'asm_op _sfun_decl = ('asm_op, stk_fun_extra) _fun_decltype 'asm_op _sfun_decls = ('asm_op, stk_fun_extra) _fun_decl listtype 'asm_op _sprog = ('asm_op, stk_fun_extra, sprog_extra) _progval to_sprog :
Wsize.coq_PointerData ->
'a1 Sopn.asmOp ->
'a1 _sprog ->
'a1 sprogval with_body :
'a1 Sopn.asmOp ->
('a1, 'a2) _fundef ->
'a1 instr list ->
('a1, 'a2) _fundefval swith_extra :
Wsize.coq_PointerData ->
'a1 Sopn.asmOp ->
Wsize.coq_PointerData ->
'a1 ufundef ->
extra_fun_t ->
'a1 sfundefval is_const : pexpr -> BinNums.coq_Z optionval is_bool : pexpr -> bool optionval is_Papp2 : pexpr -> ((Operators.sop2 * pexpr) * pexpr) optionval is_Pload : pexpr -> boolval is_load : pexpr -> boolval is_array_init : pexpr -> boolval cast_w : Wsize.wsize -> pexpr -> pexprval cast_ptr : Wsize.coq_PointerData -> pexpr -> pexprval cast_const : Wsize.coq_PointerData -> BinNums.coq_Z -> pexprval eword_of_int : Wsize.wsize -> BinNums.coq_Z -> pexprval wconst : Wsize.wsize -> Word0.word -> pexprval is_wconst : Wsize.wsize -> pexpr -> Word0.word optionval is_wconst_of_size : Eqtype.Equality.sort -> pexpr -> BinNums.coq_Z optionval vrv_rec : Var0.SvExtra.Sv.t -> lval -> Var0.SvExtra.Sv.tval vrvs_rec : Var0.SvExtra.Sv.t -> lval list -> Var0.SvExtra.Sv.tval vrv : lval -> Var0.SvExtra.Sv.tval vrvs : lval list -> Var0.SvExtra.Sv.tval lv_write_mem : lval -> boolval write_i_rec :
'a1 Sopn.asmOp ->
Var0.SvExtra.Sv.t ->
'a1 instr_r ->
Var0.SvExtra.Sv.tval write_I_rec :
'a1 Sopn.asmOp ->
Var0.SvExtra.Sv.t ->
'a1 instr ->
Var0.SvExtra.Sv.tval write_i : 'a1 Sopn.asmOp -> 'a1 instr_r -> Var0.SvExtra.Sv.tval write_I : 'a1 Sopn.asmOp -> 'a1 instr -> Var0.SvExtra.Sv.tval write_c_rec :
'a1 Sopn.asmOp ->
Var0.SvExtra.Sv.t ->
'a1 instr list ->
Var0.SvExtra.Sv.tval write_c : 'a1 Sopn.asmOp -> 'a1 instr list -> Var0.SvExtra.Sv.tval use_mem : pexpr -> boolval read_gvar : gvar -> Var0.SvExtra.Sv.tval read_e_rec : Var0.SvExtra.Sv.t -> pexpr -> Var0.SvExtra.Sv.tval read_e : pexpr -> Var0.SvExtra.Sv.tval read_es_rec : Var0.SvExtra.Sv.t -> pexpr list -> Var0.SvExtra.Sv.tval read_es : pexpr list -> Var0.SvExtra.Sv.tval read_rv_rec : Var0.SvExtra.Sv.t -> lval -> Var0.SvExtra.Sv.tval read_rv : lval -> Var0.SvExtra.Sv.tval read_rvs_rec : Var0.SvExtra.Sv.t -> lval list -> Var0.SvExtra.Sv.tval read_rvs : lval list -> Var0.SvExtra.Sv.tval read_i_rec :
'a1 Sopn.asmOp ->
Var0.SvExtra.Sv.t ->
'a1 instr_r ->
Var0.SvExtra.Sv.tval read_I_rec :
'a1 Sopn.asmOp ->
Var0.SvExtra.Sv.t ->
'a1 instr ->
Var0.SvExtra.Sv.tval read_c_rec :
'a1 Sopn.asmOp ->
Var0.SvExtra.Sv.t ->
'a1 instr list ->
Var0.SvExtra.Sv.tval read_i : 'a1 Sopn.asmOp -> 'a1 instr_r -> Var0.SvExtra.Sv.tval read_I : 'a1 Sopn.asmOp -> 'a1 instr -> Var0.SvExtra.Sv.tval read_c : 'a1 Sopn.asmOp -> 'a1 instr list -> Var0.SvExtra.Sv.tval vars_I : 'a1 Sopn.asmOp -> 'a1 instr -> Var0.SvExtra.Sv.tval vars_c : 'a1 Sopn.asmOp -> 'a1 instr list -> Var0.SvExtra.Sv.tval vars_lval : lval -> Var0.SvExtra.Sv.tval vars_lvals : lval list -> Var0.SvExtra.Sv.tval vars_l : var_i list -> Var0.SvExtra.Sv.tval vars_fd : 'a1 Sopn.asmOp -> progT -> 'a1 fundef -> Var0.SvExtra.Sv.tval vars_p : 'a1 Sopn.asmOp -> progT -> 'a1 fun_decl list -> Var0.SvExtra.Sv.tval to_lvals : Var0.Var.var list -> lval listval is_false : pexpr -> boolval is_zero : Eqtype.Equality.sort -> pexpr -> bool