Module Flambda2_parser.Fexpr
type location = Lambda.scoped_locationtype variable = string Flambda2_parser.Fexpr.locatedtype continuation_id = string Flambda2_parser.Fexpr.locatedtype code_id = string Flambda2_parser.Fexpr.locatedtype function_slot = string Flambda2_parser.Fexpr.locatedtype value_slot = string Flambda2_parser.Fexpr.locatedtype symbol =
(Flambda2_parser.Fexpr.compilation_unit option * string)
Flambda2_parser.Fexpr.locatedtype continuation = | Named of Flambda2_parser.Fexpr.continuation_id| Special of Flambda2_parser.Fexpr.special_continuation
type const = | Naked_immediate of Flambda2_parser.Fexpr.immediate| Tagged_immediate of Flambda2_parser.Fexpr.immediate| Naked_float32 of float| Naked_float of float| Naked_int32 of int32| Naked_int64 of int64| Naked_vec128 of Flambda2_numbers.Vector_types.Vec128.Bit_pattern.bits| Naked_vec256 of Flambda2_numbers.Vector_types.Vec256.Bit_pattern.bits| Naked_vec512 of Flambda2_numbers.Vector_types.Vec512.Bit_pattern.bits| Naked_nativeint of Flambda2_parser.Fexpr.targetint
type field_of_block = | Symbol of Flambda2_parser.Fexpr.symbol| Tagged_immediate of Flambda2_parser.Fexpr.immediate| Dynamically_computed of Flambda2_parser.Fexpr.variable
type empty_array_kind = Flambda2_term_basics.Empty_array_kind.ttype static_data = | Block of {tag : Flambda2_parser.Fexpr.tag_scannable;mutability : Flambda2_parser.Fexpr.mutability;elements : Flambda2_parser.Fexpr.field_of_block list;
}| Boxed_float32 of float Flambda2_parser.Fexpr.or_variable| Boxed_float of float Flambda2_parser.Fexpr.or_variable| Boxed_int32 of int32 Flambda2_parser.Fexpr.or_variable| Boxed_int64 of int64 Flambda2_parser.Fexpr.or_variable| Boxed_nativeint of Flambda2_parser.Fexpr.targetint Flambda2_parser.Fexpr.or_variable| Boxed_vec128 of Flambda2_numbers.Vector_types.Vec128.Bit_pattern.bits Flambda2_parser.Fexpr.or_variable| Boxed_vec256 of Flambda2_numbers.Vector_types.Vec256.Bit_pattern.bits Flambda2_parser.Fexpr.or_variable| Boxed_vec512 of Flambda2_numbers.Vector_types.Vec512.Bit_pattern.bits Flambda2_parser.Fexpr.or_variable| Immutable_float_block of float Flambda2_parser.Fexpr.or_variable list| Immutable_float_array of float Flambda2_parser.Fexpr.or_variable list| Immutable_value_array of Flambda2_parser.Fexpr.field_of_block list| Empty_array of Flambda2_parser.Fexpr.empty_array_kind| Mutable_string of {}| Immutable_string of string
type kind = Flambda2_kinds.Flambda_kind.ttype subkind = | Anything| Boxed_float32| Boxed_float| Boxed_int32| Boxed_int64| Boxed_nativeint| Boxed_vec128| Boxed_vec256| Boxed_vec512| Tagged_immediate| Variant of {consts : Flambda2_parser.Fexpr.targetint list;non_consts : (Flambda2_parser.Fexpr.tag_scannable * Flambda2_parser.Fexpr.kind_with_subkind list) list;
}| Float_block of {}| Float_array| Immediate_array| Value_array| Generic_array
and kind_with_subkind = | Value of Flambda2_parser.Fexpr.subkind| Naked_number of Flambda2_kinds.Flambda_kind.Naked_number_kind.t| Region| Rec_info
type static_data_binding = {symbol : Flambda2_parser.Fexpr.symbol;defining_expr : Flambda2_parser.Fexpr.static_data;
}type trap_action = | Push of {exn_handler : Flambda2_parser.Fexpr.continuation;
}| Pop of {exn_handler : Flambda2_parser.Fexpr.continuation;raise_kind : Flambda2_parser.Fexpr.raise_kind option;
}
type rec_info = | Depth of int| Infinity| Do_not_inline| Var of Flambda2_parser.Fexpr.variable| Succ of Flambda2_parser.Fexpr.rec_info| Unroll of int * Flambda2_parser.Fexpr.rec_info
type coercion = | Id| Change_depth of {from : Flambda2_parser.Fexpr.rec_info;to_ : Flambda2_parser.Fexpr.rec_info;
}
type kinded_parameter = {param : Flambda2_parser.Fexpr.variable;kind : Flambda2_parser.Fexpr.kind_with_subkind option;
}type simple = | Var of Flambda2_parser.Fexpr.variable| Symbol of Flambda2_parser.Fexpr.symbol| Const of Flambda2_parser.Fexpr.const| Coerce of Flambda2_parser.Fexpr.simple * Flambda2_parser.Fexpr.coercion
type array_kind = Flambda2_terms.Flambda_primitive.Array_kind.t = | Immediates| Gc_ignorable_values| Values| Naked_floats| Naked_float32s| Naked_ints| Naked_int8s| Naked_int16s| Naked_int32s| Naked_int64s| Naked_nativeints| Naked_vec128s| Naked_vec256s| Naked_vec512s| Unboxed_product of Flambda2_parser.Fexpr.array_kind list
type box_kind = Flambda2_kinds.Flambda_kind.Boxable_number.t = type block_access_field_kind =
Flambda2_terms.Flambda_primitive.Block_access_field_kind.t =
type block_access_kind = | Values of {tag : Flambda2_parser.Fexpr.tag_scannable option;size : Flambda2_parser.Fexpr.targetint option;field_kind : Flambda2_parser.Fexpr.block_access_field_kind;
}| Naked_floats of {size : Flambda2_parser.Fexpr.targetint option;
}
type standard_int = Flambda2_kinds.Flambda_kind.Standard_int.t = type standard_int_or_float =
Flambda2_kinds.Flambda_kind.Standard_int_or_float.t =
type alloc_mode_for_applications = | Heap| Local of {region : Flambda2_parser.Fexpr.region;ghost_region : Flambda2_parser.Fexpr.region;
}
type init_or_assign = | Initialization| Assignment of Flambda2_parser.Fexpr.alloc_mode_for_assignments
type 'signed_or_unsigned comparison =
'signed_or_unsigned Flambda2_terms.Flambda_primitive.comparison =
type unary_int_arith_op = Flambda2_terms.Flambda_primitive.unary_int_arith_op = type array_kind_for_length =
Flambda2_terms.Flambda_primitive.Array_kind_for_length.t =
| Array_kind of Flambda2_parser.Fexpr.array_kind| Float_array_opt_dynamic
type unop = | Block_load of {kind : Flambda2_parser.Fexpr.block_access_kind;mut : Flambda2_parser.Fexpr.mutability;field : Flambda2_numbers.Target_ocaml_int.t;
}| Array_length of Flambda2_parser.Fexpr.array_kind_for_length| Boolean_not| Box_number of Flambda2_parser.Fexpr.box_kind * Flambda2_parser.Fexpr.alloc_mode_for_allocations| End_region of {}| End_try_region of {}| Get_tag| Int_arith of Flambda2_parser.Fexpr.standard_int * Flambda2_parser.Fexpr.unary_int_arith_op| Is_flat_float_array| Is_int| Num_conv of {src : Flambda2_parser.Fexpr.standard_int_or_float;dst : Flambda2_parser.Fexpr.standard_int_or_float;
}| Opaque_identity| Project_value_slot of {project_from : Flambda2_parser.Fexpr.function_slot;value_slot : Flambda2_parser.Fexpr.value_slot;
}| Project_function_slot of {move_from : Flambda2_parser.Fexpr.function_slot;move_to : Flambda2_parser.Fexpr.function_slot;
}| String_length of Flambda2_parser.Fexpr.string_or_bytes| Unbox_number of Flambda2_parser.Fexpr.box_kind| Untag_immediate| Tag_immediate
type 'signed_or_unsigned comparison_behaviour =
'signed_or_unsigned Flambda2_terms.Flambda_primitive.comparison_behaviour =
| Yielding_bool of 'signed_or_unsigned Flambda2_parser.Fexpr.comparison| Yielding_int_like_compare_functions of 'signed_or_unsigned
type binary_int_arith_op = Flambda2_terms.Flambda_primitive.binary_int_arith_op =
type binary_float_arith_op =
Flambda2_terms.Flambda_primitive.binary_float_arith_op =
type string_accessor_width =
Flambda2_terms.Flambda_primitive.string_accessor_width =
type array_load_kind = Flambda2_terms.Flambda_primitive.Array_load_kind.t = type array_set_kind = | Immediates| Gc_ignorable_values| Values of Flambda2_parser.Fexpr.init_or_assign| Naked_floats| Naked_float32s| Naked_ints| Naked_int8s| Naked_int16s| Naked_int32s| Naked_int64s| Naked_nativeints| Naked_vec128s| Naked_vec256s| Naked_vec512s
type string_like_value = Flambda2_terms.Flambda_primitive.string_like_value = type float_bitwidth = Flambda2_terms.Flambda_primitive.float_bitwidthtype infix_binop = | Int_arith of Flambda2_parser.Fexpr.binary_int_arith_op| Int_shift of Flambda2_parser.Fexpr.int_shift_op| Int_comp of Flambda2_parser.Fexpr.signed_or_unsigned Flambda2_parser.Fexpr.comparison_behaviour| Float_arith of Flambda2_parser.Fexpr.float_bitwidth * Flambda2_parser.Fexpr.binary_float_arith_op| Float_comp of Flambda2_parser.Fexpr.float_bitwidth * unit Flambda2_parser.Fexpr.comparison_behaviour
type binop = | Block_set of {kind : Flambda2_parser.Fexpr.block_access_kind;init : Flambda2_parser.Fexpr.init_or_assign;field : Flambda2_numbers.Target_ocaml_int.t;
}| Array_load of Flambda2_parser.Fexpr.array_kind * Flambda2_parser.Fexpr.array_load_kind * Flambda2_parser.Fexpr.mutability| Phys_equal of Flambda2_parser.Fexpr.equality_comparison| Int_arith of Flambda2_parser.Fexpr.standard_int * Flambda2_parser.Fexpr.binary_int_arith_op| Int_comp of Flambda2_parser.Fexpr.standard_int * Flambda2_parser.Fexpr.signed_or_unsigned Flambda2_parser.Fexpr.comparison_behaviour| Int_shift of Flambda2_parser.Fexpr.standard_int * Flambda2_parser.Fexpr.int_shift_op| Infix of Flambda2_parser.Fexpr.infix_binop| String_or_bigstring_load of Flambda2_parser.Fexpr.string_like_value * Flambda2_parser.Fexpr.string_accessor_width| Bigarray_get_alignment of int
type ternop = | Array_set of Flambda2_parser.Fexpr.array_kind * Flambda2_parser.Fexpr.array_set_kind| Bytes_or_bigstring_set of Flambda2_parser.Fexpr.bytes_like_value * Flambda2_parser.Fexpr.string_accessor_width
type varop = | Begin_region of {}| Begin_try_region of {}| Make_block of Flambda2_parser.Fexpr.tag_scannable * Flambda2_parser.Fexpr.mutability * Flambda2_parser.Fexpr.alloc_mode_for_allocations
type prim = | Unary of Flambda2_parser.Fexpr.unop * Flambda2_parser.Fexpr.simple| Binary of Flambda2_parser.Fexpr.binop * Flambda2_parser.Fexpr.simple * Flambda2_parser.Fexpr.simple| Ternary of Flambda2_parser.Fexpr.ternop * Flambda2_parser.Fexpr.simple * Flambda2_parser.Fexpr.simple * Flambda2_parser.Fexpr.simple| Variadic of Flambda2_parser.Fexpr.varop * Flambda2_parser.Fexpr.simple list
type arity = Flambda2_parser.Fexpr.kind_with_subkind listtype function_call = | Direct of {code_id : Flambda2_parser.Fexpr.code_id;function_slot : Flambda2_parser.Fexpr.function_slot option;alloc : Flambda2_parser.Fexpr.alloc_mode_for_applications;
}| Indirect of Flambda2_parser.Fexpr.alloc_mode_for_applications
type function_arities = {params_arity : Flambda2_parser.Fexpr.arity option;ret_arity : Flambda2_parser.Fexpr.arity;
}type inline_attribute = Flambda2_terms.Inline_attribute.t = type loopify_attribute = Flambda2_terms.Loopify_attribute.t = type apply = {func : Flambda2_parser.Fexpr.simple;continuation : Flambda2_parser.Fexpr.result_continuation;exn_continuation : Flambda2_parser.Fexpr.continuation;args : Flambda2_parser.Fexpr.simple list;call_kind : Flambda2_parser.Fexpr.call_kind;arities : Flambda2_parser.Fexpr.function_arities option;inlined : Flambda2_parser.Fexpr.inlined_attribute option;inlining_state : Flambda2_parser.Fexpr.inlining_state option;
}type apply_cont = {cont : Flambda2_parser.Fexpr.continuation;trap_action : Flambda2_parser.Fexpr.trap_action option;args : Flambda2_parser.Fexpr.simple list;
}type expr = | Let of Flambda2_parser.Fexpr.let_| Let_cont of Flambda2_parser.Fexpr.let_cont| Let_symbol of Flambda2_parser.Fexpr.let_symbol| Apply of Flambda2_parser.Fexpr.apply| Apply_cont of Flambda2_parser.Fexpr.apply_cont| Switch of {scrutinee : Flambda2_parser.Fexpr.simple;cases : (int * Flambda2_parser.Fexpr.apply_cont) list;
}| Invalid of {}
and value_slots = Flambda2_parser.Fexpr.one_value_slot listand let_ = {bindings : Flambda2_parser.Fexpr.let_binding list;value_slots : Flambda2_parser.Fexpr.value_slots option;body : Flambda2_parser.Fexpr.expr;
}and let_binding = {var : Flambda2_parser.Fexpr.variable;defining_expr : Flambda2_parser.Fexpr.named;
}and named = | Simple of Flambda2_parser.Fexpr.simple| Prim of Flambda2_parser.Fexpr.prim| Closure of Flambda2_parser.Fexpr.fun_decl| Rec_info of Flambda2_parser.Fexpr.rec_info
and fun_decl = {code_id : Flambda2_parser.Fexpr.code_id;function_slot : Flambda2_parser.Fexpr.function_slot option;alloc : Flambda2_parser.Fexpr.alloc_mode_for_allocations;
}and let_cont = {recursive : Flambda2_parser.Fexpr.is_cont_recursive;body : Flambda2_parser.Fexpr.expr;bindings : Flambda2_parser.Fexpr.continuation_binding list;
}and continuation_binding = {name : Flambda2_parser.Fexpr.continuation_id;params : Flambda2_parser.Fexpr.kinded_parameter list;sort : Flambda2_parser.Fexpr.continuation_sort option;handler : Flambda2_parser.Fexpr.expr;
}and let_symbol = {bindings : Flambda2_parser.Fexpr.symbol_binding list;value_slots : Flambda2_parser.Fexpr.value_slots option;body : Flambda2_parser.Fexpr.expr;
}and symbol_binding = | Data of Flambda2_parser.Fexpr.static_data_binding| Code of Flambda2_parser.Fexpr.code| Deleted_code of Flambda2_parser.Fexpr.code_id| Closure of Flambda2_parser.Fexpr.static_closure_binding| Set_of_closures of Flambda2_parser.Fexpr.static_set_of_closures
and static_set_of_closures = {bindings : Flambda2_parser.Fexpr.static_closure_binding list;elements : Flambda2_parser.Fexpr.value_slots option;
}and code = {id : Flambda2_parser.Fexpr.code_id;newer_version_of : Flambda2_parser.Fexpr.code_id option;param_arity : Flambda2_parser.Fexpr.arity option;ret_arity : Flambda2_parser.Fexpr.arity option;recursive : Flambda2_parser.Fexpr.is_recursive;inline : Flambda2_parser.Fexpr.inline_attribute option;params_and_body : Flambda2_parser.Fexpr.params_and_body;code_size : Flambda2_parser.Fexpr.code_size;is_tupled : bool;loopify : Flambda2_parser.Fexpr.loopify_attribute option;result_mode : Flambda2_parser.Fexpr.alloc_mode_for_assignments;
}and params_and_body = {params : Flambda2_parser.Fexpr.kinded_parameter list;closure_var : Flambda2_parser.Fexpr.variable;region_var : Flambda2_parser.Fexpr.variable;ghost_region_var : Flambda2_parser.Fexpr.variable;depth_var : Flambda2_parser.Fexpr.variable;ret_cont : Flambda2_parser.Fexpr.continuation_id;exn_cont : Flambda2_parser.Fexpr.continuation_id;body : Flambda2_parser.Fexpr.expr;
}and static_closure_binding = {symbol : Flambda2_parser.Fexpr.symbol;fun_decl : Flambda2_parser.Fexpr.fun_decl;
}type expect_test_spec = {before : Flambda2_parser.Fexpr.flambda_unit;after : Flambda2_parser.Fexpr.flambda_unit;
}type markdown_doc = Flambda2_parser.Fexpr.markdown_node list