jon.recoil.org

Source file lambda.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
(* The lambda representation is of no interest for Merlin, but some types are
   used by [value_rec_check]. *)

type immediate_or_pointer =
  | Immediate
  | Pointer

type boxed_float = Primitive.boxed_float =
  | Boxed_float64
  | Boxed_float32

type boxed_integer = Primitive.boxed_integer =
  | Boxed_int64
  | Boxed_nativeint
  | Boxed_int32

type boxed_vector = Primitive.boxed_vector =
  | Boxed_vec128
  | Boxed_vec256
  | Boxed_vec512

type unboxed_float = Primitive.unboxed_float =
  | Unboxed_float64
  | Unboxed_float32

type unboxed_or_untagged_integer = Primitive.unboxed_or_untagged_integer =
  | Unboxed_int64
  | Unboxed_nativeint
  | Unboxed_int32
  | Untagged_int16
  | Untagged_int8
  | Untagged_int

type unboxed_vector = Primitive.unboxed_vector =
  | Unboxed_vec128
  | Unboxed_vec256
  | Unboxed_vec512

type array_kind =
    Pgenarray | Paddrarray | Pgcignorableaddrarray | Pintarray | Pfloatarray
  | Punboxedfloatarray of unboxed_float
  | Punboxedoruntaggedintarray of unboxed_or_untagged_integer
  | Punboxedvectorarray of unboxed_vector
  | Pgcscannableproductarray of unit
  | Pgcignorableproductarray of unit

type nullable =
  | Nullable
  | Non_nullable

type 'a mixed_block_element =
  | Value of unit
  | Float_boxed of 'a
  | Float64
  | Float32
  | Bits8
  | Bits16
  | Bits32
  | Bits64
  | Vec128
  | Vec256
  | Vec512
  | Word
  | Untagged_immediate
  | Product of 'a mixed_block_element array
  | Splice_variable of Ident.t

type mixed_block_shape = unit mixed_block_element array

let split_vectors =
  (* The compiler toggles this value based on the target architecture. Since we don't have
     a target architecture, we arbitrarily choose the x86 case. *)
  false