aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCyril SIX <cyril.six@kalray.eu>2019-09-18 14:05:09 +0200
committerCyril SIX <cyril.six@kalray.eu>2019-09-18 14:05:09 +0200
commita42baf15372e64f398685aaef079a82ea0db834e (patch)
treebf430c795591d63fc85e6b53cd0110a1d9fd818b
parenta1b4ed93ca2b7a244fb5d6d54c0bd0737f618837 (diff)
downloadcompcert-kvx-a42baf15372e64f398685aaef079a82ea0db834e.tar.gz
compcert-kvx-a42baf15372e64f398685aaef079a82ea0db834e.zip
Timings for Machblockgen, Asmblockgen and postpass scheduling
-rw-r--r--driver/Compiler.v2
-rw-r--r--extraction/extraction.v1
-rw-r--r--mppa_k1c/Asmgen.v12
-rw-r--r--mppa_k1c/Asmgenproof.v2
4 files changed, 10 insertions, 7 deletions
diff --git a/driver/Compiler.v b/driver/Compiler.v
index 6d398327..c683c136 100644
--- a/driver/Compiler.v
+++ b/driver/Compiler.v
@@ -144,7 +144,7 @@ Definition transf_rtl_program (f: RTL.program) : res Asm.program :=
@@@ partial_if Compopts.debug (time "Debugging info for local variables" Debugvar.transf_program)
@@@ time "Mach generation" Stacking.transf_program
@@ print print_Mach
- @@@ time "Asm generation" Asmgen.transf_program.
+ @@@ time "Total Mach->Asm generation" Asmgen.transf_program.
Definition transf_cminor_program (p: Cminor.program) : res Asm.program :=
OK p
diff --git a/extraction/extraction.v b/extraction/extraction.v
index e4c1cb25..ee45b756 100644
--- a/extraction/extraction.v
+++ b/extraction/extraction.v
@@ -136,6 +136,7 @@ Extract Constant Compiler.print_LTL => "PrintLTL.print_if".
Extract Constant Compiler.print_Mach => "PrintMach.print_if".
Extract Constant Compiler.print => "fun (f: 'a -> unit) (x: 'a) -> f x; x".
Extract Constant Compiler.time => "Timing.time_coq".
+Extract Constant Asmgen.time => "Timing.time_coq".
(*Extraction Inline Compiler.apply_total Compiler.apply_partial.*)
diff --git a/mppa_k1c/Asmgen.v b/mppa_k1c/Asmgen.v
index 58e80be1..704a0ac5 100644
--- a/mppa_k1c/Asmgen.v
+++ b/mppa_k1c/Asmgen.v
@@ -18,15 +18,17 @@
Require Import Integers.
Require Import Mach Asm Asmblock Asmblockgen Machblockgen.
Require Import PostpassScheduling.
-Require Import Errors.
+Require Import Errors String.
Local Open Scope error_monad_scope.
+Definition time {A B: Type} (name: string) (f: A -> B) : A -> B := f.
+
Definition transf_program (p: Mach.program) : res Asm.program :=
- let mbp := Machblockgen.transf_program p in
- do abp <- Asmblockgen.transf_program mbp;
- do abp' <- PostpassScheduling.transf_program abp;
- OK (Asm.transf_program abp').
+ let mbp := (time "Machblock generation" Machblockgen.transf_program) p in
+ do abp <- (time "Asmblock generation" Asmblockgen.transf_program) mbp;
+ do abp' <- (time "PostpassScheduling optimization" PostpassScheduling.transf_program) abp;
+ OK ((time "Asm generation" Asm.transf_program) abp').
Definition transf_function (f: Mach.function) : res Asm.function :=
let mbf := Machblockgen.transf_function f in
diff --git a/mppa_k1c/Asmgenproof.v b/mppa_k1c/Asmgenproof.v
index e0878c7d..5d7bb81f 100644
--- a/mppa_k1c/Asmgenproof.v
+++ b/mppa_k1c/Asmgenproof.v
@@ -35,7 +35,7 @@ Proof.
intros p tp H.
unfold Asmgen.transf_program in H. apply bind_inversion in H. destruct H.
inversion_clear H. apply bind_inversion in H1. destruct H1.
- inversion_clear H. inversion H2. remember (Machblockgen.transf_program p) as mbp.
+ inversion_clear H. inversion H2. unfold time in *. remember (Machblockgen.transf_program p) as mbp.
unfold match_prog; simpl.
exists mbp; split. apply Machblockgenproof.transf_program_match; auto.
exists x; split. apply Asmblockgenproof.transf_program_match; auto.