aboutsummaryrefslogtreecommitdiff
path: root/kernel/cinstr.mli
diff options
context:
space:
mode:
authorMaxime Dénès2018-02-24 09:33:03 +0100
committerMaxime Dénès2018-02-24 09:33:03 +0100
commitbd41af496fd09d6ecd965190cad2873f1cd6b029 (patch)
tree029c44d509cdaba200db07dfed61adb55b237f9e /kernel/cinstr.mli
parentc4aeaa7aedb04bf156a4946b05bad8f66d5eec69 (diff)
parent557c5a2938f16c0601f5a0323c66b78d2da01ee9 (diff)
Merge PR #6784: New IR in VM: Clambda
Diffstat (limited to 'kernel/cinstr.mli')
-rw-r--r--kernel/cinstr.mli43
1 files changed, 43 insertions, 0 deletions
diff --git a/kernel/cinstr.mli b/kernel/cinstr.mli
new file mode 100644
index 0000000000..2d9ec6050e
--- /dev/null
+++ b/kernel/cinstr.mli
@@ -0,0 +1,43 @@
+(************************************************************************)
+(* v * The Coq Proof Assistant / The Coq Development Team *)
+(* <O___,, * INRIA - CNRS - LIX - LRI - PPS - Copyright 1999-2017 *)
+(* \VV/ **************************************************************)
+(* // * This file is distributed under the terms of the *)
+(* * GNU Lesser General Public License Version 2.1 *)
+(************************************************************************)
+open Names
+open Constr
+open Cbytecodes
+
+(** This file defines the lambda code for the bytecode compiler. It has been
+extracted from Clambda.ml because of the retroknowledge architecture. *)
+
+type uint =
+ | UintVal of Uint31.t
+ | UintDigits of lambda array
+ | UintDecomp of lambda
+
+and lambda =
+ | Lrel of Name.t * int
+ | Lvar of Id.t
+ | Lprod of lambda * lambda
+ | Llam of Name.t array * lambda
+ | Llet of Name.t * lambda * lambda
+ | Lapp of lambda * lambda array
+ | Lconst of pconstant
+ | Lprim of pconstant * int (* arity *) * instruction * lambda array
+ | Lcase of case_info * reloc_table * lambda * lambda * lam_branches
+ | Lfix of (int array * int) * fix_decl
+ | Lcofix of int * fix_decl
+ | Lmakeblock of int * lambda array
+ | Lval of structured_constant
+ | Lsort of Sorts.t
+ | Lind of pinductive
+ | Lproj of int * Constant.t * lambda
+ | Luint of uint
+
+and lam_branches =
+ { constant_branches : lambda array;
+ nonconstant_branches : (Name.t array * lambda) array }
+
+and fix_decl = Name.t array * lambda array * lambda array