package jasmin
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.t
val pp_s : string -> Compiler_util.pp_error
val 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.cexec
val 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.result
type 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 ->
'a1
val 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 ->
'a1
type 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 ->
'a1
val 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 ->
'a1
val compiler_step_tag : compiler_step -> BinNums.positive
val is_compiler_step_inhab : compiler_step -> is_compiler_step
val is_compiler_step_functor :
compiler_step ->
is_compiler_step ->
is_compiler_step
type compiler_step_fields_t = __
val compiler_step_fields : compiler_step -> compiler_step_fields_t
val compiler_step_construct :
BinNums.positive ->
compiler_step_fields_t ->
compiler_step option
val 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 ->
'a1
val compiler_step_eqb_fields :
(compiler_step -> compiler_step -> bool) ->
BinNums.positive ->
compiler_step_fields_t ->
compiler_step_fields_t ->
bool
val compiler_step_eqb : compiler_step -> compiler_step -> bool
val compiler_step_eqb_OK : compiler_step -> compiler_step -> Bool.reflect
val compiler_step_eqb_OK_sumbool : compiler_step -> compiler_step -> bool
val compiler_step_list : compiler_step list
val coq_HB_unnamed_factory_1 : compiler_step Eqtype.Coq_hasDecEq.axioms_
val compiler_compiler_step__canonical__eqtype_Equality :
Eqtype.Equality.coq_type
type 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 list
val ao_global_alloc :
stack_alloc_oracles ->
((Var0.Var.var * Wsize.wsize) * BinNums.coq_Z) list
val ao_stack_alloc :
stack_alloc_oracles ->
Var0.funname ->
Stack_alloc.stk_alloc_oracle_t
type ('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._ufundef
val expand_fd :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
Var0.funname ->
'a1 Expr._ufundef ->
Array_expansion.expand_info
val split_live_ranges_fd :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
Var0.funname ->
'a1 Expr._ufundef ->
'a1 Expr._ufundef
val renaming_fd :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
Var0.funname ->
'a1 Expr._ufundef ->
'a1 Expr._ufundef
val remove_phi_nodes_fd :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
Var0.funname ->
'a1 Expr._ufundef ->
'a1 Expr._ufundef
val stack_register_symbol :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
Ident.Ident.ident
val global_static_data_symbol :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
Ident.Ident.ident
val stackalloc :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
'a1 Expr._uprog ->
stack_alloc_oracles
val removereturn :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
'a1 Expr._sprog ->
Var0.funname ->
bool list option
val regalloc :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
'a1 Expr._sfun_decl list ->
'a1 Expr._sfun_decl list
val remove_wint_annot :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
Var0.funname ->
'a1 Expr._ufundef ->
'a1 Expr._ufundef
val print_uprog :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
compiler_step ->
'a1 Expr._uprog ->
'a1 Expr._uprog
val print_sprog :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
compiler_step ->
'a1 Expr._sprog ->
'a1 Expr._sprog
val print_linear :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
compiler_step ->
'a1 Linear.lprog ->
'a1 Linear.lprog
val refresh_instr_info :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
Var0.funname ->
'a1 Expr._ufundef ->
'a1 Expr._ufundef
val warning :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
Expr.instr_info ->
Compiler_util.warning_msg ->
Expr.instr_info
val lowering_opt : 'a1 Sopn.asmOp -> ('a1, 'a2) compiler_params -> 'a2
val fresh_id :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
Global.glob_decl list ->
Var0.Var.var ->
Ident.Ident.ident
val fresh_var_ident :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
Wsize.v_kind ->
Expr.instr_info ->
Uint63.t ->
string ->
Type.stype ->
Ident.Ident.ident
val slh_info :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
'a1 Expr._uprog ->
Var0.funname ->
Slh_lowering.slh_t list * Slh_lowering.slh_t list
val stack_zero_info :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
Var0.funname ->
(Stack_zero_strategy.stack_zero_strategy * Wsize.wsize option) option
val dead_vars_ufd :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
'a1 Expr._ufun_decl ->
Expr.instr_info ->
Var0.SvExtra.Sv.t
val dead_vars_sfd :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
'a1 Expr._sfun_decl ->
Expr.instr_info ->
Var0.SvExtra.Sv.t
val pp_sr :
'a1 Sopn.asmOp ->
('a1, 'a2) compiler_params ->
Stack_alloc.sub_region ->
Compiler_util.pp_error
val 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._uprog
val 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._uprog
val 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._uprog
val 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.var
val 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.var
val 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.t
val 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.cexec
val 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.cexec
val 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.cexec
val 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.cexec
val wptr_status : Expr.var_i -> bool option
val 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.cexec
val 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.cexec
val 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.cexec
val 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.result
val 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.result
val 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)"
>