Module Jasmin.Arm_lowering
val le_issue_sopn :
(Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt)
Arch_extra.arch_toIdent ->
(Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt,
Arm_instr_decl.arm_op,
Arm_extra.arm_extra_op)
Arch_extra.extended_op
Sopn.sopn ->
Expr.pexpr list ->
low_exprval no_pre :
(Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt)
Arch_extra.arch_toIdent ->
low_expr ->
(((Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt,
Arm_instr_decl.arm_op,
Arm_extra.arm_extra_op)
Arch_extra.extended_op
Expr.instr_r
list
* (Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt,
Arm_instr_decl.arm_op,
Arm_extra.arm_extra_op)
Arch_extra.extended_op
Sopn.sopn)
* Expr.pexpr list)
optionval lower_condition_pexpr :
(Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt)
Arch_extra.arch_toIdent ->
Lowering.fresh_vars ->
Expr.var_info ->
Expr.pexpr ->
(((Expr.lval list
* (Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt,
Arm_instr_decl.arm_op,
Arm_extra.arm_extra_op)
Arch_extra.extended_op
Sopn.sopn)
* Expr.pexpr list)
* Expr.pexpr)
optionval lower_condition :
(Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt)
Arch_extra.arch_toIdent ->
Lowering.fresh_vars ->
Expr.var_info ->
Expr.pexpr ->
(Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt,
Arm_instr_decl.arm_op,
Arm_extra.arm_extra_op)
Arch_extra.extended_op
Expr.instr_r
list
* Expr.pexprval mov_imm_op :
(Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt)
Arch_extra.arch_toIdent ->
Expr.pexpr ->
(Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt,
Arm_instr_decl.arm_op,
Arm_extra.arm_extra_op)
Arch_extra.extended_op
Sopn.sopnval sopn_set_is_conditional :
(Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt)
Arch_extra.arch_toIdent ->
(Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt,
Arm_instr_decl.arm_op,
Arm_extra.arm_extra_op)
Arch_extra.extended_op
Sopn.sopn ->
(Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt,
Arm_instr_decl.arm_op,
Arm_extra.arm_extra_op)
Arch_extra.extended_op
Sopn.sopn
optionval lower_pexpr :
(Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt)
Arch_extra.arch_toIdent ->
Lowering.fresh_vars ->
Expr.var_info ->
Wsize.wsize ->
Expr.pexpr ->
(((Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt,
Arm_instr_decl.arm_op,
Arm_extra.arm_extra_op)
Arch_extra.extended_op
Expr.instr_r
list
* (Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt,
Arm_instr_decl.arm_op,
Arm_extra.arm_extra_op)
Arch_extra.extended_op
Sopn.sopn)
* Expr.pexpr list)
optionval lower_cassgn_word :
(Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt)
Arch_extra.arch_toIdent ->
Lowering.fresh_vars ->
Expr.lval ->
Wsize.wsize ->
Expr.pexpr ->
((Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt,
Arm_instr_decl.arm_op,
Arm_extra.arm_extra_op)
Arch_extra.extended_op
Expr.instr_r
list
* ((Expr.lval list
* (Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt,
Arm_instr_decl.arm_op,
Arm_extra.arm_extra_op)
Arch_extra.extended_op
Sopn.sopn)
* Expr.pexpr list))
optionval lower_cassgn_bool :
(Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt)
Arch_extra.arch_toIdent ->
Lowering.fresh_vars ->
Expr.lval ->
Expr.assgn_tag ->
Expr.pexpr ->
(Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt,
Arm_instr_decl.arm_op,
Arm_extra.arm_extra_op)
Arch_extra.extended_op
Expr.instr_r
list
optionval lower_add_carry :
(Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt)
Arch_extra.arch_toIdent ->
Expr.lval list ->
Expr.pexpr list ->
((Expr.lval list
* (Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt,
Arm_instr_decl.arm_op,
Arm_extra.arm_extra_op)
Arch_extra.extended_op
Sopn.sopn)
* Expr.pexpr list)
optionval lower_mulu :
(Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt)
Arch_extra.arch_toIdent ->
Expr.lval list ->
Expr.pexpr list ->
((Expr.lval list
* (Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt,
Arm_instr_decl.arm_op,
Arm_extra.arm_extra_op)
Arch_extra.extended_op
Sopn.sopn)
* Expr.pexpr list)
optionval lower_base_op :
(Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt)
Arch_extra.arch_toIdent ->
Expr.lval list ->
Arm_instr_decl.arm_op ->
Expr.pexpr list ->
((Expr.lval list
* (Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt,
Arm_instr_decl.arm_op,
Arm_extra.arm_extra_op)
Arch_extra.extended_op
Sopn.sopn)
* Expr.pexpr list)
optionval lower_swap :
(Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt)
Arch_extra.arch_toIdent ->
Type.stype ->
Expr.lval list ->
Expr.pexpr list ->
((Expr.lval list
* (Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt,
Arm_instr_decl.arm_op,
Arm_extra.arm_extra_op)
Arch_extra.extended_op
Sopn.sopn)
* Expr.pexpr list)
optionval lower_pseudo_operator :
(Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt)
Arch_extra.arch_toIdent ->
Expr.lval list ->
Pseudo_operator.pseudo_operator ->
Expr.pexpr list ->
((Expr.lval list
* (Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt,
Arm_instr_decl.arm_op,
Arm_extra.arm_extra_op)
Arch_extra.extended_op
Sopn.sopn)
* Expr.pexpr list)
optionval lower_copn :
(Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt)
Arch_extra.arch_toIdent ->
Expr.lval list ->
(Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt,
Arm_instr_decl.arm_op,
Arm_extra.arm_extra_op)
Arch_extra.extended_op
Sopn.sopn ->
Expr.pexpr list ->
((Expr.lval list
* (Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt,
Arm_instr_decl.arm_op,
Arm_extra.arm_extra_op)
Arch_extra.extended_op
Sopn.sopn)
* Expr.pexpr list)
optiontype lowering_options = unitval lower_i :
(Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt)
Arch_extra.arch_toIdent ->
Lowering.fresh_vars ->
(Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt,
Arm_instr_decl.arm_op,
Arm_extra.arm_extra_op)
Arch_extra.extended_op
Expr.instr ->
(Arm_decl.register,
Arch_utils.empty,
Arch_utils.empty,
Arm_decl.rflag,
Arm_decl.condt,
Arm_instr_decl.arm_op,
Arm_extra.arm_extra_op)
Arch_extra.extended_op
Expr.instr
list