package jasmin
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
Compiler for High-Assurance and High-Speed Cryptography
Install
dune-project
Dependency
Authors
Maintainers
Sources
jasmin-compiler-v2025.06.1.tar.bz2
sha256=e92b42fa69da7c730b0c26dacf842a72b4febcaf4f2157a1dc18b3cce1f859fa
doc/jasmin.jasmin/Jasmin/Compiler/index.html
Module Jasmin.Compiler
type __ = Obj.tval pp_s : string -> Compiler_util.pp_errorval unroll :
Wsize.coq_MSFsize ->
'a1 Sopn.asmOp ->
Flag_combination.coq_FlagCombinationParams ->
('a1 Sopn.asm_op_t -> bool) ->
Datatypes.nat ->
'a1 Expr.uprog ->
'a1 Expr.uprog Compiler_util.cexecval unroll_loop :
Wsize.coq_MSFsize ->
'a1 Sopn.asmOp ->
Flag_combination.coq_FlagCombinationParams ->
('a1 Sopn.asm_op_t -> bool) ->
'a1 Expr.uprog ->
(Compiler_util.pp_error_loc, 'a1 Expr.uprog) Utils0.resulttype compiler_step = | Typing| ParamsExpansion| WintWord| ArrayCopy| AddArrInit| LowerSpill| Inlining| RemoveUnusedFunction| Unrolling| Splitting| Renaming| RemovePhiNodes| DeadCode_Renaming| RemoveArrInit| MakeRefArguments| RegArrayExpansion| RemoveGlobal| LoadConstantsInCond| LowerInstruction| PropagateInline| SLHLowering| LowerAddressing| StackAllocation| RemoveReturn| RegAllocation| DeadCode_RegAllocation| Linearization| StackZeroization| Tunneling| Assembly
val compiler_step_rect :
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
compiler_step ->
'a1val compiler_step_rec :
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
compiler_step ->
'a1type is_compiler_step = | Coq_is_Typing| Coq_is_ParamsExpansion| Coq_is_WintWord| Coq_is_ArrayCopy| Coq_is_AddArrInit| Coq_is_LowerSpill| Coq_is_Inlining| Coq_is_RemoveUnusedFunction| Coq_is_Unrolling| Coq_is_Splitting| Coq_is_Renaming| Coq_is_RemovePhiNodes| Coq_is_DeadCode_Renaming| Coq_is_RemoveArrInit| Coq_is_MakeRefArguments| Coq_is_RegArrayExpansion| Coq_is_RemoveGlobal| Coq_is_LoadConstantsInCond| Coq_is_LowerInstruction| Coq_is_PropagateInline| Coq_is_SLHLowering| Coq_is_LowerAddressing| Coq_is_StackAllocation| Coq_is_RemoveReturn| Coq_is_RegAllocation| Coq_is_DeadCode_RegAllocation| Coq_is_Linearization| Coq_is_StackZeroization| Coq_is_Tunneling| Coq_is_Assembly
val is_compiler_step_rect :
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
compiler_step ->
is_compiler_step ->
'a1val is_compiler_step_rec :
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
compiler_step ->
is_compiler_step ->
'a1val compiler_step_tag : compiler_step -> BinNums.positiveval is_compiler_step_inhab : compiler_step -> is_compiler_stepval is_compiler_step_functor :
compiler_step ->
is_compiler_step ->
is_compiler_steptype compiler_step_fields_t = __val compiler_step_fields : compiler_step -> compiler_step_fields_tval compiler_step_construct :
BinNums.positive ->
compiler_step_fields_t ->
compiler_step optionval compiler_step_induction :
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
'a1 ->
compiler_step ->
is_compiler_step ->
'a1val compiler_step_eqb_fields :
(compiler_step -> compiler_step -> bool) ->
BinNums.positive ->
compiler_step_fields_t ->
compiler_step_fields_t ->
boolval compiler_step_eqb : compiler_step -> compiler_step -> boolval compiler_step_eqb_OK : compiler_step -> compiler_step -> Bool.reflectval compiler_step_eqb_OK_sumbool : compiler_step -> compiler_step -> boolval compiler_step_list : compiler_step listval coq_HB_unnamed_factory_1 : compiler_step Eqtype.Coq_hasDecEq.axioms_val compiler_compiler_step__canonical__eqtype_Equality :
Eqtype.Equality.coq_typetype stack_alloc_oracles = {ao_globals : Ssralg.GRing.ComRing.sort list;ao_global_alloc : ((Var0.Var.var * Wsize.wsize) * BinNums.coq_Z) list;ao_stack_alloc : Var0.funname -> Stack_alloc.stk_alloc_oracle_t;
}val ao_globals : stack_alloc_oracles -> Ssralg.GRing.ComRing.sort listval ao_global_alloc :
stack_alloc_oracles ->
((Var0.Var.var * Wsize.wsize) * BinNums.coq_Z) listval ao_stack_alloc :
stack_alloc_oracles ->
Var0.funname ->
Stack_alloc.stk_alloc_oracle_ttype ('asm_op, 'lowering_options) compiler_params = {rename_fd : Expr.instr_info -> Var0.funname -> 'asm_op Expr._ufundef -> 'asm_op Expr._ufundef;expand_fd : Var0.funname -> 'asm_op Expr._ufundef -> Array_expansion.expand_info;split_live_ranges_fd : Var0.funname -> 'asm_op Expr._ufundef -> 'asm_op Expr._ufundef;renaming_fd : Var0.funname -> 'asm_op Expr._ufundef -> 'asm_op Expr._ufundef;remove_phi_nodes_fd : Var0.funname -> 'asm_op Expr._ufundef -> 'asm_op Expr._ufundef;stack_register_symbol : Ident.Ident.ident;global_static_data_symbol : Ident.Ident.ident;stackalloc : 'asm_op Expr._uprog -> stack_alloc_oracles;removereturn : 'asm_op Expr._sprog -> Var0.funname -> bool list option;regalloc : 'asm_op Expr._sfun_decl list -> 'asm_op Expr._sfun_decl list;remove_wint_annot : Var0.funname -> 'asm_op Expr._ufundef -> 'asm_op Expr._ufundef;print_uprog : compiler_step -> 'asm_op Expr._uprog -> 'asm_op Expr._uprog;print_sprog : compiler_step -> 'asm_op Expr._sprog -> 'asm_op Expr._sprog;print_linear : compiler_step -> 'asm_op Linear.lprog -> 'asm_op Linear.lprog;refresh_instr_info : Var0.funname -> 'asm_op Expr._ufundef -> 'asm_op Expr._ufundef;warning : Expr.instr_info -> Compiler_util.warning_msg -> Expr.instr_info;lowering_opt : 'lowering_options;fresh_id : Global.glob_decl list -> Var0.Var.var -> Ident.Ident.ident;fresh_var_ident : Wsize.v_kind -> Expr.instr_info -> Uint63.t -> string -> Type.stype -> Ident.Ident.ident;slh_info : 'asm_op Expr._uprog -> Var0.funname -> Slh_lowering.slh_t list * Slh_lowering.slh_t list;stack_zero_info : Var0.funname -> (Stack_zero_strategy.stack_zero_strategy * Wsize.wsize option) option;dead_vars_ufd : 'asm_op Expr._ufun_decl -> Expr.instr_info -> Var0.SvExtra.Sv.t;dead_vars_sfd : 'asm_op Expr._sfun_decl -> Expr.instr_info -> Var0.SvExtra.Sv.t;pp_sr : Stack_alloc.sub_region -> Compiler_util.pp_error;
}val rename_fd :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
Expr.instr_info ->
Var0.funname ->
'a1 Expr._ufundef ->
'a1 Expr._ufundefval expand_fd :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
Var0.funname ->
'a1 Expr._ufundef ->
Array_expansion.expand_infoval split_live_ranges_fd :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
Var0.funname ->
'a1 Expr._ufundef ->
'a1 Expr._ufundefval renaming_fd :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
Var0.funname ->
'a1 Expr._ufundef ->
'a1 Expr._ufundefval remove_phi_nodes_fd :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
Var0.funname ->
'a1 Expr._ufundef ->
'a1 Expr._ufundefval stack_register_symbol :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
Ident.Ident.identval global_static_data_symbol :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
Ident.Ident.identval stackalloc :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
'a1 Expr._uprog ->
stack_alloc_oraclesval removereturn :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
'a1 Expr._sprog ->
Var0.funname ->
bool list optionval regalloc :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
'a1 Expr._sfun_decl list ->
'a1 Expr._sfun_decl listval remove_wint_annot :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
Var0.funname ->
'a1 Expr._ufundef ->
'a1 Expr._ufundefval print_uprog :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
compiler_step ->
'a1 Expr._uprog ->
'a1 Expr._uprogval print_sprog :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
compiler_step ->
'a1 Expr._sprog ->
'a1 Expr._sprogval print_linear :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
compiler_step ->
'a1 Linear.lprog ->
'a1 Linear.lprogval refresh_instr_info :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
Var0.funname ->
'a1 Expr._ufundef ->
'a1 Expr._ufundefval warning :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
Expr.instr_info ->
Compiler_util.warning_msg ->
Expr.instr_infoval lowering_opt : 'a1 Sopn.asmOp -> ('a1, 'a2) compiler_params -> 'a2val fresh_id :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
Global.glob_decl list ->
Var0.Var.var ->
Ident.Ident.identval fresh_var_ident :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
Wsize.v_kind ->
Expr.instr_info ->
Uint63.t ->
string ->
Type.stype ->
Ident.Ident.identval slh_info :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
'a1 Expr._uprog ->
Var0.funname ->
Slh_lowering.slh_t list * Slh_lowering.slh_t listval stack_zero_info :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
Var0.funname ->
(Stack_zero_strategy.stack_zero_strategy * Wsize.wsize option) optionval dead_vars_ufd :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
'a1 Expr._ufun_decl ->
Expr.instr_info ->
Var0.SvExtra.Sv.tval dead_vars_sfd :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
'a1 Expr._sfun_decl ->
Expr.instr_info ->
Var0.SvExtra.Sv.tval pp_sr :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
Stack_alloc.sub_region ->
Compiler_util.pp_errorval split_live_ranges_prog :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
(('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op, 'a8)
compiler_params ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op Expr._uprog ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op Expr._uprogval renaming_prog :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
(('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op, 'a8)
compiler_params ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op Expr._uprog ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op Expr._uprogval remove_phi_nodes_prog :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
(('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op, 'a8)
compiler_params ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op Expr._uprog ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op Expr._uprogval var_tmp :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7, 'a8) Arch_params.architecture_params ->
Var0.Var.varval var_tmp2 :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7, 'a8) Arch_params.architecture_params ->
Var0.Var.varval var_tmps :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7, 'a8) Arch_params.architecture_params ->
Var0.SvExtra.Sv.tval live_range_splitting :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7, 'a8) Arch_params.architecture_params ->
(('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op, 'a8)
compiler_params ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op Expr.uprog ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op Expr.uprog
Compiler_util.cexecval inlining :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
(('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op, 'a8)
compiler_params ->
Var0.funname list ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op Expr.uprog ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op Expr.uprog
Compiler_util.cexecval compiler_first_part :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7, 'a8) Arch_params.architecture_params ->
(('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op, 'a8)
compiler_params ->
Var0.funname list ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op Expr.uprog ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op Expr.uprog
Compiler_util.cexecval compiler_third_part :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7, 'a8) Arch_params.architecture_params ->
(('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op, 'a8)
compiler_params ->
(Var0.funname -> Datatypes.nat option list option) ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op Expr.sprog ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op Expr.sprog
Compiler_util.cexecval wptr_status : Expr.var_i -> bool optionval check_wf_ptr :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
Var0.funname list ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op Expr.uprog ->
(Var0.funname -> Stack_alloc.stk_alloc_oracle_t) ->
unit Compiler_util.cexecval compiler_front_end :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7, 'a8) Arch_params.architecture_params ->
(('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op, 'a8)
compiler_params ->
Var0.funname list ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op Expr.uprog ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op Expr.sprog
Compiler_util.cexecval check_export :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
Var0.funname list ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op Expr.sprog ->
unit Compiler_util.cexecval compiler_back_end :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.calling_convention ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7, 'a8) Arch_params.architecture_params ->
(('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op, 'a8)
compiler_params ->
Var0.funname list ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op Expr.sprog ->
(Compiler_util.pp_error_loc,
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op Linear.lprog)
Utils0.resultval compiler_back_end_to_asm :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.calling_convention ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7, 'a8) Arch_params.architecture_params ->
(('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op, 'a8)
compiler_params ->
Var0.funname list ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op Expr.sprog ->
(Compiler_util.pp_error_loc,
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) Arch_decl.asm_prog)
Utils0.resultval compile_prog_to_asm :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.calling_convention ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7, 'a8) Arch_params.architecture_params ->
(('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op, 'a8)
compiler_params ->
Var0.funname list ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op Expr.uprog ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) Arch_decl.asm_prog Compiler_util.cexec sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>