aboutsummaryrefslogtreecommitdiffhomepage
path: root/kernel/primitives.ml
blob: 27732c00cbc5ecf0e6e14887ad597a9260d0b1b6 (plain)
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
(************************************************************************)
(*  v      *   The Coq Proof Assistant  /  The Coq Development Team     *)
(* <O___,, *   INRIA - CNRS - LIX - LRI - PPS - Copyright 1999-2016     *)
(*   \VV/  **************************************************************)
(*    //   *      This file is distributed under the terms of the       *)
(*         *       GNU Lesser General Public License Version 2.1        *)
(************************************************************************)

type t =
  | Int31head0
  | Int31tail0
  | Int31add
  | Int31sub
  | Int31mul
  | Int31div
  | Int31mod
(*
  | Int31lsr
  | Int31lsl
 *)
  | Int31land
  | Int31lor
  | Int31lxor
  | Int31addc
  | Int31subc
  | Int31addcarryc
  | Int31subcarryc
  | Int31mulc
  | Int31diveucl
  | Int31div21
  | Int31addmuldiv
  | Int31eq
  | Int31lt
  | Int31le
  | Int31compare

let hash = function
  | Int31head0 -> 1
  | Int31tail0 -> 2
  | Int31add -> 3
  | Int31sub -> 4
  | Int31mul -> 5
  | Int31div -> 6
  | Int31mod -> 7
(*
  | Int31lsr -> 8
  | Int31lsl -> 9
 *)
  | Int31land -> 10
  | Int31lor -> 11
  | Int31lxor -> 12
  | Int31addc -> 13
  | Int31subc -> 14
  | Int31addcarryc -> 15
  | Int31subcarryc -> 16
  | Int31mulc -> 17
  | Int31diveucl -> 18
  | Int31div21 -> 19
  | Int31addmuldiv -> 20
  | Int31eq -> 21
  | Int31lt -> 22
  | Int31le -> 23
  | Int31compare -> 24

let to_string = function
  | Int31head0 -> "head0"
  | Int31tail0 -> "tail0"
  | Int31add -> "add"
  | Int31sub -> "sub"
  | Int31mul -> "mul"
  | Int31div -> "div"
  | Int31mod -> "mod"
(*
  | Int31lsr -> "l_sr"
  | Int31lsl -> "l_sl"
 *)
  | Int31land -> "l_and"
  | Int31lor -> "l_or"
  | Int31lxor -> "l_xor"
  | Int31addc -> "addc"
  | Int31subc -> "subc"
  | Int31addcarryc -> "addcarryc"
  | Int31subcarryc -> "subcarryc"
  | Int31mulc -> "mulc"
  | Int31diveucl -> "diveucl"
  | Int31div21 -> "div21"
  | Int31addmuldiv -> "addmuldiv"
  | Int31eq -> "eq"
  | Int31lt -> "lt"
  | Int31le -> "le"
  | Int31compare -> "compare"