diff options
author | Sylvain Boulmé <sylvain.boulme@univ-grenoble-alpes.fr> | 2020-10-28 11:34:12 +0100 |
---|---|---|
committer | Sylvain Boulmé <sylvain.boulme@univ-grenoble-alpes.fr> | 2020-10-28 11:34:12 +0100 |
commit | 2488c0eb8471eb07249a8b770c30c5cae2d629cc (patch) | |
tree | 24646ad223b859225cef4bdb4b126c3caf609972 /backend | |
parent | 04881502849e160dff04753bc8fa858b7967512c (diff) | |
download | compcert-kvx-2488c0eb8471eb07249a8b770c30c5cae2d629cc.tar.gz compcert-kvx-2488c0eb8471eb07249a8b770c30c5cae2d629cc.zip |
DuplicateParam -> DuplicateOracle + simpler Duplicatepasses
Diffstat (limited to 'backend')
-rw-r--r-- | backend/Duplicate.v | 6 | ||||
-rw-r--r-- | backend/Duplicatepasses.v | 56 | ||||
-rw-r--r-- | backend/Duplicateproof.v | 2 |
3 files changed, 24 insertions, 40 deletions
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. |