diff options
author | David Monniaux <david.monniaux@univ-grenoble-alpes.fr> | 2019-05-02 20:23:56 +0200 |
---|---|---|
committer | David Monniaux <david.monniaux@univ-grenoble-alpes.fr> | 2019-05-02 20:23:56 +0200 |
commit | df9f42773b48270e77d1760719b1d8399062c2ea (patch) | |
tree | ab455803abd768f3b2de7d8e4c7a1f37e8528e38 | |
parent | c56f9a47fe1837b7afb73c2c24aed9228bc0db08 (diff) | |
download | compcert-kvx-df9f42773b48270e77d1760719b1d8399062c2ea.tar.gz compcert-kvx-df9f42773b48270e77d1760719b1d8399062c2ea.zip |
seems to work
-rw-r--r-- | mppa_k1c/Peephole.v | 15 | ||||
-rw-r--r-- | mppa_k1c/PostpassScheduling.v | 6 |
2 files changed, 19 insertions, 2 deletions
diff --git a/mppa_k1c/Peephole.v b/mppa_k1c/Peephole.v new file mode 100644 index 00000000..56e547e5 --- /dev/null +++ b/mppa_k1c/Peephole.v @@ -0,0 +1,15 @@ +Require Import Asmvliw. + +Definition optimize_body (insns : list basic) := insns. + +Program Definition optimize_bblock (bb : bblock) := + let optimized := optimize_body (body bb) in + let wf_ok := wf_bblockb optimized (exit bb) in + {| header := header bb; + body := if wf_ok then optimized else (body bb); + exit := exit bb |}. +Next Obligation. + destruct (wf_bblockb (optimize_body (body bb))) eqn:Rwf. + - rewrite Rwf. simpl. trivial. + - exact (correct bb). +Qed. diff --git a/mppa_k1c/PostpassScheduling.v b/mppa_k1c/PostpassScheduling.v index ab4bc9c9..ecd40f5c 100644 --- a/mppa_k1c/PostpassScheduling.v +++ b/mppa_k1c/PostpassScheduling.v @@ -13,6 +13,7 @@ Require Import Coqlib Errors AST Integers. Require Import Asmblock Axioms Memory Globalenvs. Require Import Asmblockdeps Asmblockgenproof0. +Require Peephole. Local Open Scope error_monad_scope. @@ -347,8 +348,9 @@ Fixpoint verify_par (lbb: list bblock) := end. Definition verified_schedule_nob (bb : bblock) : res (list bblock) := - let bb' := no_header bb in - let lbb := do_schedule bb' in + let bb' := no_header bb in + let bb'' := Peephole.optimize_bblock bb' in + let lbb := do_schedule bb'' in do tbb <- concat_all lbb; do sizecheck <- verify_size bb lbb; do schedcheck <- verify_schedule bb' tbb; |