jon.recoil.org

Module Flambda2_parser.Fexpr

type location = Lambda.scoped_location
type 'a located = {
  1. txt : 'a;
  2. loc : Flambda2_parser.Fexpr.location;
}
type variable = string Flambda2_parser.Fexpr.located
type continuation_id = string Flambda2_parser.Fexpr.located
type code_id = string Flambda2_parser.Fexpr.located
type function_slot = string Flambda2_parser.Fexpr.located
type value_slot = string Flambda2_parser.Fexpr.located
type compilation_unit = {
  1. ident : string;
  2. linkage_name : string option;
}
type immediate = string
type targetint = int64
type special_continuation =
  1. | Done
  2. | Error
type result_continuation =
  1. | Return of Flambda2_parser.Fexpr.continuation
  2. | Never_returns
type continuation_sort =
  1. | Normal
  2. | Exn
  3. | Define_root_symbol
type region =
  1. | Named of Flambda2_parser.Fexpr.variable
  2. | Toplevel
type const =
  1. | Naked_immediate of Flambda2_parser.Fexpr.immediate
  2. | Tagged_immediate of Flambda2_parser.Fexpr.immediate
  3. | Naked_float32 of float
  4. | Naked_float of float
  5. | Naked_int32 of int32
  6. | Naked_int64 of int64
  7. | Naked_vec128 of Flambda2_numbers.Vector_types.Vec128.Bit_pattern.bits
  8. | Naked_vec256 of Flambda2_numbers.Vector_types.Vec256.Bit_pattern.bits
  9. | Naked_vec512 of Flambda2_numbers.Vector_types.Vec512.Bit_pattern.bits
  10. | Naked_nativeint of Flambda2_parser.Fexpr.targetint
type field_of_block =
  1. | Symbol of Flambda2_parser.Fexpr.symbol
  2. | Tagged_immediate of Flambda2_parser.Fexpr.immediate
  3. | Dynamically_computed of Flambda2_parser.Fexpr.variable
type is_recursive =
  1. | Nonrecursive
  2. | Recursive
type tag_scannable = int
type mutability = Flambda2_terms.Mutability.t =
  1. | Mutable
  2. | Immutable
  3. | Immutable_unique
type 'a or_variable =
  1. | Const of 'a
  2. | Var of Flambda2_parser.Fexpr.variable
type subkind =
  1. | Anything
  2. | Boxed_float32
  3. | Boxed_float
  4. | Boxed_int32
  5. | Boxed_int64
  6. | Boxed_nativeint
  7. | Boxed_vec128
  8. | Boxed_vec256
  9. | Boxed_vec512
  10. | Tagged_immediate
  11. | Variant of {
    1. consts : Flambda2_parser.Fexpr.targetint list;
    2. non_consts : (Flambda2_parser.Fexpr.tag_scannable * Flambda2_parser.Fexpr.kind_with_subkind list) list;
    }
  12. | Float_block of {
    1. num_fields : int;
    }
  13. | Float_array
  14. | Immediate_array
  15. | Value_array
  16. | Generic_array
and kind_with_subkind =
  1. | Value of Flambda2_parser.Fexpr.subkind
  2. | Naked_number of Flambda2_kinds.Flambda_kind.Naked_number_kind.t
  3. | Region
  4. | Rec_info
type static_data_binding = {
  1. symbol : Flambda2_parser.Fexpr.symbol;
  2. defining_expr : Flambda2_parser.Fexpr.static_data;
}
type raise_kind = Flambda2_terms.Trap_action.Raise_kind.t =
  1. | Regular
  2. | Reraise
  3. | No_trace
type trap_action =
  1. | Push of {
    1. exn_handler : Flambda2_parser.Fexpr.continuation;
    }
  2. | Pop of {
    1. exn_handler : Flambda2_parser.Fexpr.continuation;
    2. raise_kind : Flambda2_parser.Fexpr.raise_kind option;
    }
type rec_info =
  1. | Depth of int
  2. | Infinity
  3. | Do_not_inline
  4. | Var of Flambda2_parser.Fexpr.variable
  5. | Succ of Flambda2_parser.Fexpr.rec_info
  6. | Unroll of int * Flambda2_parser.Fexpr.rec_info
type coercion =
  1. | Id
  2. | Change_depth of {
    1. from : Flambda2_parser.Fexpr.rec_info;
    2. to_ : Flambda2_parser.Fexpr.rec_info;
    }
type kinded_parameter = {
  1. param : Flambda2_parser.Fexpr.variable;
  2. kind : Flambda2_parser.Fexpr.kind_with_subkind option;
}
type array_kind = Flambda2_terms.Flambda_primitive.Array_kind.t =
  1. | Immediates
  2. | Gc_ignorable_values
  3. | Values
  4. | Naked_floats
  5. | Naked_float32s
  6. | Naked_ints
  7. | Naked_int8s
  8. | Naked_int16s
  9. | Naked_int32s
  10. | Naked_int64s
  11. | Naked_nativeints
  12. | Naked_vec128s
  13. | Naked_vec256s
  14. | Naked_vec512s
  15. | Unboxed_product of Flambda2_parser.Fexpr.array_kind list
type box_kind = Flambda2_kinds.Flambda_kind.Boxable_number.t =
  1. | Naked_float32
  2. | Naked_float
  3. | Naked_int32
  4. | Naked_int64
  5. | Naked_nativeint
  6. | Naked_vec128
  7. | Naked_vec256
  8. | Naked_vec512
type generic_array_specialisation =
  1. | No_specialisation
  2. | Full_of_naked_floats
  3. | Full_of_immediates
  4. | Full_of_arbitrary_values_but_not_floats
type block_access_field_kind = Flambda2_terms.Flambda_primitive.Block_access_field_kind.t =
  1. | Any_value
  2. | Immediate
type block_access_kind =
  1. | Values of {
    1. tag : Flambda2_parser.Fexpr.tag_scannable option;
    2. size : Flambda2_parser.Fexpr.targetint option;
    3. field_kind : Flambda2_parser.Fexpr.block_access_field_kind;
    }
  2. | Naked_floats of {
    1. size : Flambda2_parser.Fexpr.targetint option;
    }
type standard_int = Flambda2_kinds.Flambda_kind.Standard_int.t =
  1. | Tagged_immediate
  2. | Naked_immediate
  3. | Naked_int8
  4. | Naked_int16
  5. | Naked_int32
  6. | Naked_int64
  7. | Naked_nativeint
type standard_int_or_float = Flambda2_kinds.Flambda_kind.Standard_int_or_float.t =
  1. | Tagged_immediate
  2. | Naked_immediate
  3. | Naked_float32
  4. | Naked_float
  5. | Naked_int8
  6. | Naked_int16
  7. | Naked_int32
  8. | Naked_int64
  9. | Naked_nativeint
type string_or_bytes = Flambda2_terms.Flambda_primitive.string_or_bytes =
  1. | String
  2. | Bytes
type alloc_mode_for_allocations =
  1. | Heap
  2. | Local of {
    1. region : Flambda2_parser.Fexpr.region;
    }
type alloc_mode_for_applications =
  1. | Heap
  2. | Local of {
    1. region : Flambda2_parser.Fexpr.region;
    2. ghost_region : Flambda2_parser.Fexpr.region;
    }
type alloc_mode_for_assignments =
  1. | Heap
  2. | Local
type init_or_assign =
  1. | Initialization
  2. | Assignment of Flambda2_parser.Fexpr.alloc_mode_for_assignments
type 'signed_or_unsigned comparison = 'signed_or_unsigned Flambda2_terms.Flambda_primitive.comparison =
  1. | Eq
  2. | Neq
  3. | Lt of 'signed_or_unsigned
  4. | Gt of 'signed_or_unsigned
  5. | Le of 'signed_or_unsigned
  6. | Ge of 'signed_or_unsigned
type equality_comparison = Flambda2_terms.Flambda_primitive.equality_comparison =
  1. | Eq
  2. | Neq
type signed_or_unsigned = Flambda2_terms.Flambda_primitive.signed_or_unsigned =
  1. | Signed
  2. | Unsigned
type unary_int_arith_op = Flambda2_terms.Flambda_primitive.unary_int_arith_op =
  1. | Swap_byte_endianness
type array_kind_for_length = Flambda2_terms.Flambda_primitive.Array_kind_for_length.t =
  1. | Array_kind of Flambda2_parser.Fexpr.array_kind
  2. | Float_array_opt_dynamic
type unop =
  1. | Block_load of {
    1. kind : Flambda2_parser.Fexpr.block_access_kind;
    2. mut : Flambda2_parser.Fexpr.mutability;
    3. field : Flambda2_numbers.Target_ocaml_int.t;
    }
  2. | Array_length of Flambda2_parser.Fexpr.array_kind_for_length
  3. | Boolean_not
  4. | Box_number of Flambda2_parser.Fexpr.box_kind * Flambda2_parser.Fexpr.alloc_mode_for_allocations
  5. | End_region of {
    1. ghost : bool;
    }
  6. | End_try_region of {
    1. ghost : bool;
    }
  7. | Get_tag
  8. | Int_arith of Flambda2_parser.Fexpr.standard_int * Flambda2_parser.Fexpr.unary_int_arith_op
  9. | Is_flat_float_array
  10. | Is_int
  11. | Num_conv of {
    1. src : Flambda2_parser.Fexpr.standard_int_or_float;
    2. dst : Flambda2_parser.Fexpr.standard_int_or_float;
    }
  12. | Opaque_identity
  13. | Project_value_slot of {
    1. project_from : Flambda2_parser.Fexpr.function_slot;
    2. value_slot : Flambda2_parser.Fexpr.value_slot;
    }
  14. | Project_function_slot of {
    1. move_from : Flambda2_parser.Fexpr.function_slot;
    2. move_to : Flambda2_parser.Fexpr.function_slot;
    }
  15. | String_length of Flambda2_parser.Fexpr.string_or_bytes
  16. | Unbox_number of Flambda2_parser.Fexpr.box_kind
  17. | Untag_immediate
  18. | Tag_immediate
type 'signed_or_unsigned comparison_behaviour = 'signed_or_unsigned Flambda2_terms.Flambda_primitive.comparison_behaviour =
  1. | Yielding_bool of 'signed_or_unsigned Flambda2_parser.Fexpr.comparison
  2. | Yielding_int_like_compare_functions of 'signed_or_unsigned
type binary_int_arith_op = Flambda2_terms.Flambda_primitive.binary_int_arith_op =
  1. | Add
  2. | Sub
  3. | Mul
  4. | Div
  5. | Mod
  6. | And
  7. | Or
  8. | Xor
type int_shift_op = Flambda2_terms.Flambda_primitive.int_shift_op =
  1. | Lsl
  2. | Lsr
  3. | Asr
type binary_float_arith_op = Flambda2_terms.Flambda_primitive.binary_float_arith_op =
  1. | Add
  2. | Sub
  3. | Mul
  4. | Div
type string_accessor_width = Flambda2_terms.Flambda_primitive.string_accessor_width =
  1. | Eight
  2. | Sixteen
  3. | Thirty_two
  4. | Single
  5. | Sixty_four
  6. | One_twenty_eight of {
    1. aligned : bool;
    }
  7. | Two_fifty_six of {
    1. aligned : bool;
    }
  8. | Five_twelve of {
    1. aligned : bool;
    }
type array_load_kind = Flambda2_terms.Flambda_primitive.Array_load_kind.t =
  1. | Immediates
  2. | Gc_ignorable_values
  3. | Values
  4. | Naked_floats
  5. | Naked_float32s
  6. | Naked_ints
  7. | Naked_int8s
  8. | Naked_int16s
  9. | Naked_int32s
  10. | Naked_int64s
  11. | Naked_nativeints
  12. | Naked_vec128s
  13. | Naked_vec256s
  14. | Naked_vec512s
type array_set_kind =
  1. | Immediates
  2. | Gc_ignorable_values
  3. | Values of Flambda2_parser.Fexpr.init_or_assign
  4. | Naked_floats
  5. | Naked_float32s
  6. | Naked_ints
  7. | Naked_int8s
  8. | Naked_int16s
  9. | Naked_int32s
  10. | Naked_int64s
  11. | Naked_nativeints
  12. | Naked_vec128s
  13. | Naked_vec256s
  14. | Naked_vec512s
type string_like_value = Flambda2_terms.Flambda_primitive.string_like_value =
  1. | String
  2. | Bytes
  3. | Bigstring
type bytes_like_value = Flambda2_terms.Flambda_primitive.bytes_like_value =
  1. | Bytes
  2. | Bigstring
type varop =
  1. | Begin_region of {
    1. ghost : bool;
    }
  2. | Begin_try_region of {
    1. ghost : bool;
    }
  3. | Make_block of Flambda2_parser.Fexpr.tag_scannable * Flambda2_parser.Fexpr.mutability * Flambda2_parser.Fexpr.alloc_mode_for_allocations
type method_kind =
  1. | Self
  2. | Public
  3. | Cached
type call_kind =
  1. | Function of Flambda2_parser.Fexpr.function_call
  2. | C_call of {
    1. alloc : bool;
    }
type function_arities = {
  1. params_arity : Flambda2_parser.Fexpr.arity option;
  2. ret_arity : Flambda2_parser.Fexpr.arity;
}
type inline_attribute = Flambda2_terms.Inline_attribute.t =
  1. | Always_inline
  2. | Available_inline
  3. | Never_inline
  4. | Unroll of int
  5. | Default_inline
type inlined_attribute =
  1. | Always_inlined
  2. | Hint_inlined
  3. | Never_inlined
  4. | Unroll of int
  5. | Default_inlined
type inlining_state = {
  1. depth : int;
}
type loopify_attribute = Flambda2_terms.Loopify_attribute.t =
  1. | Always_loopify
  2. | Never_loopify
  3. | Already_loopified
  4. | Default_loopify_and_tailrec
  5. | Default_loopify_and_not_tailrec
type size = int
type is_cont_recursive =
  1. | Nonrecursive
  2. | Recursive of Flambda2_parser.Fexpr.kinded_parameter list
type expr =
  1. | Let of Flambda2_parser.Fexpr.let_
  2. | Let_cont of Flambda2_parser.Fexpr.let_cont
  3. | Let_symbol of Flambda2_parser.Fexpr.let_symbol
  4. | Apply of Flambda2_parser.Fexpr.apply
  5. | Apply_cont of Flambda2_parser.Fexpr.apply_cont
  6. | Switch of {
    1. scrutinee : Flambda2_parser.Fexpr.simple;
    2. cases : (int * Flambda2_parser.Fexpr.apply_cont) list;
    }
  7. | Invalid of {
    1. message : string;
    }
and let_binding = {
  1. var : Flambda2_parser.Fexpr.variable;
  2. defining_expr : Flambda2_parser.Fexpr.named;
}
and let_symbol = {
  1. bindings : Flambda2_parser.Fexpr.symbol_binding list;
  2. value_slots : Flambda2_parser.Fexpr.value_slots option;
  3. body : Flambda2_parser.Fexpr.expr;
}
and static_set_of_closures = {
  1. bindings : Flambda2_parser.Fexpr.static_closure_binding list;
  2. elements : Flambda2_parser.Fexpr.value_slots option;
}
and code_size = int
and static_closure_binding = {
  1. symbol : Flambda2_parser.Fexpr.symbol;
  2. fun_decl : Flambda2_parser.Fexpr.fun_decl;
}
type flambda_unit = {
  1. body : Flambda2_parser.Fexpr.expr;
}
type markdown_node =
  1. | Text of string
  2. | Expect of Flambda2_parser.Fexpr.expect_test_spec
type markdown_doc = Flambda2_parser.Fexpr.markdown_node list