aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md5
-rw-r--r--backend/Duplicate.v6
-rw-r--r--backend/Duplicatepasses.v56
-rw-r--r--backend/Duplicateproof.v2
4 files changed, 27 insertions, 42 deletions
diff --git a/README.md b/README.md
index 377776ca..77219cc1 100644
--- a/README.md
+++ b/README.md
@@ -21,7 +21,7 @@ This is a special version with additions from Verimag and Kalray :
* A backend for the KVX processor: see [`README_Kalray.md`](README_Kalray.md) for details.
* Some general-purpose optimization phases (e.g. profiling).
- - see [`PROFILING.md`](PROFILING.md) for details on the profiling system
+ * see [`PROFILING.md`](PROFILING.md) for details on the profiling system
The people responsible for this version are
@@ -29,10 +29,11 @@ The people responsible for this version are
* David Monniaux (CNRS, Verimag)
* Cyril Six (Kalray)
-## Papers on this CompCert version
+## Papers, docs, etc on this CompCert version
* [a 5-minutes video](http://www-verimag.imag.fr/~boulme/videos/poster-oopsla20.mp4) by C. Six, presenting the postpass scheduling and the KVX backend.
* [Certified and Efficient Instruction Scheduling](https://hal.archives-ouvertes.fr/hal-02185883), an OOPSLA'20 paper, by Six, Boulmé and Monniaux.
+* [the documentation of the KVX backend Coq sources](https://certicompil.gricad-pages.univ-grenoble-alpes.fr/compcert-kvx)
## License
CompCert is not free software. This non-commercial release can only
diff --git a/backend/Duplicate.v b/backend/Duplicate.v
index 6ae5475d..7dea752b 100644
--- a/backend/Duplicate.v
+++ b/backend/Duplicate.v
@@ -20,17 +20,17 @@ Require Import Coqlib Errors Op.
-Module Type DuplicateParam.
+Module Type DuplicateOracle.
(** External oracle returning the new RTL code (entry point unchanged),
along with the new entrypoint, and a mapping of new nodes to old nodes *)
Parameter duplicate_aux: function -> code * node * (PTree.t node).
-End DuplicateParam.
+End DuplicateOracle.
-Module Duplicate (D: DuplicateParam).
+Module Duplicate (D: DuplicateOracle).
Export D.
diff --git a/backend/Duplicatepasses.v b/backend/Duplicatepasses.v
index f1770494..dc96f966 100644
--- a/backend/Duplicatepasses.v
+++ b/backend/Duplicatepasses.v
@@ -5,60 +5,44 @@ Require Import Duplicateproof.
(** Static Prediction *)
-Axiom static_predict_aux : function -> code * node * (PTree.t node).
-Extract Constant static_predict_aux => "Duplicateaux.static_predict".
+Module StaticPredictOracle <: DuplicateOracle.
+ Axiom duplicate_aux : function -> code * node * (PTree.t node).
+ Extract Constant duplicate_aux => "Duplicateaux.static_predict".
+End StaticPredictOracle.
-Module StaticPredictParam <: DuplicateParam.
- Definition duplicate_aux := static_predict_aux.
-End StaticPredictParam.
-
-Module StaticPredictDef := Duplicate StaticPredictParam.
-
-Module Staticpredictproof := DuplicateProof StaticPredictDef.
+Module Staticpredictproof := DuplicateProof StaticPredictOracle.
Module Staticpredict := Staticpredictproof.
(** Unrolling one iteration out of the body *)
-Axiom unroll_single_aux : function -> code * node * (PTree.t node).
-Extract Constant unroll_single_aux => "Duplicateaux.unroll_single".
-
-Module UnrollSingleParam <: DuplicateParam.
- Definition duplicate_aux := unroll_single_aux.
-End UnrollSingleParam.
-
-Module UnrollSingleDef := Duplicate UnrollSingleParam.
+Module UnrollSingleOracle <: DuplicateOracle.
+ Axiom duplicate_aux : function -> code * node * (PTree.t node).
+ Extract Constant duplicate_aux => "Duplicateaux.unroll_single".
+End UnrollSingleOracle.
-Module Unrollsingleproof := DuplicateProof UnrollSingleDef.
+Module Unrollsingleproof := DuplicateProof UnrollSingleOracle.
Module Unrollsingle := Unrollsingleproof.
(** Unrolling the body of innermost loops *)
-Axiom unroll_body_aux : function -> code * node * (PTree.t node).
-Extract Constant unroll_body_aux => "Duplicateaux.unroll_body".
+Module UnrollBodyOracle <: DuplicateOracle.
+ Axiom duplicate_aux : function -> code * node * (PTree.t node).
+ Extract Constant duplicate_aux => "Duplicateaux.unroll_body".
+End UnrollBodyOracle.
-Module UnrollBodyParam <: DuplicateParam.
- Definition duplicate_aux := unroll_body_aux.
-End UnrollBodyParam.
-
-Module UnrollBodyDef := Duplicate UnrollBodyParam.
-
-Module Unrollbodyproof := DuplicateProof UnrollBodyDef.
+Module Unrollbodyproof := DuplicateProof UnrollBodyOracle.
Module Unrollbody := Unrollbodyproof.
(** Tail Duplication *)
-Axiom tail_duplicate_aux : function -> code * node * (PTree.t node).
-Extract Constant tail_duplicate_aux => "Duplicateaux.tail_duplicate".
-
-Module TailDuplicateParam <: DuplicateParam.
- Definition duplicate_aux := tail_duplicate_aux.
-End TailDuplicateParam.
-
-Module TailDuplicateDef := Duplicate TailDuplicateParam.
+Module TailDuplicateOracle <: DuplicateOracle.
+ Axiom duplicate_aux : function -> code * node * (PTree.t node).
+ Extract Constant duplicate_aux => "Duplicateaux.tail_duplicate".
+End TailDuplicateOracle.
-Module Tailduplicateproof := DuplicateProof TailDuplicateDef.
+Module Tailduplicateproof := DuplicateProof TailDuplicateOracle.
Module Tailduplicate := Tailduplicateproof. \ No newline at end of file
diff --git a/backend/Duplicateproof.v b/backend/Duplicateproof.v
index 719ff8e9..2480ccf0 100644
--- a/backend/Duplicateproof.v
+++ b/backend/Duplicateproof.v
@@ -17,7 +17,7 @@ Require Import AST Linking Errors Globalenvs Smallstep.
Require Import Coqlib Maps Events Values.
Require Import Op RTL Duplicate.
-Module DuplicateProof (D: DuplicateParam).
+Module DuplicateProof (D: DuplicateOracle).
Include Duplicate D.
Local Open Scope positive_scope.