diff options
author | Cyril SIX <cyril.six@kalray.eu> | 2020-12-04 17:41:14 +0100 |
---|---|---|
committer | Cyril SIX <cyril.six@kalray.eu> | 2020-12-04 17:41:14 +0100 |
commit | 60ff1e39bac5ab35c46698cbc1ed7a76fc936cab (patch) | |
tree | 87ff5f3b209e5659e967f862dab1517bb2b32baa /driver | |
parent | f2fb8540c94ceb9892510f83bd7d6734fe9d422f (diff) | |
parent | d2197102d6b81e225865cfac5f1d319d168e1e23 (diff) | |
download | compcert-kvx-60ff1e39bac5ab35c46698cbc1ed7a76fc936cab.tar.gz compcert-kvx-60ff1e39bac5ab35c46698cbc1ed7a76fc936cab.zip |
Merge branch 'kvx-work' into kvx-work-merge3.8
Conflicts:
Makefile
configure
Diffstat (limited to 'driver')
-rw-r--r-- | driver/Clflags.ml | 7 | ||||
-rw-r--r-- | driver/Compiler.vexpand | 10 | ||||
-rw-r--r-- | driver/Driver.ml | 9 |
3 files changed, 24 insertions, 2 deletions
diff --git a/driver/Clflags.ml b/driver/Clflags.ml index 989a7096..a5b47264 100644 --- a/driver/Clflags.ml +++ b/driver/Clflags.ml @@ -45,8 +45,15 @@ let option_funrollsingle = ref 0 (* unroll a single iteration of innermost loops let option_funrollbody = ref 0 (* unroll the body of innermost loops of size n *) let option_flooprotate = ref 0 (* rotate the innermost loops to have the condition inside the loop body *) +(* Scheduling *) +let option_mtune = ref "" + +let option_fprepass = ref false +let option_fprepass_sched = ref "list" + let option_fpostpass = ref true let option_fpostpass_sched = ref "list" + let option_fifconversion = ref true let option_Obranchless = ref false let option_falignfunctions = ref (None: int option) diff --git a/driver/Compiler.vexpand b/driver/Compiler.vexpand index 00db9b36..a751b232 100644 --- a/driver/Compiler.vexpand +++ b/driver/Compiler.vexpand @@ -54,7 +54,7 @@ Require Import Compopts. Parameter print_Clight: Clight.program -> unit. Parameter print_Cminor: Cminor.program -> unit. Parameter print_RTL: Z -> RTL.program -> unit. -Parameter print_LTL: LTL.program -> unit. +Parameter print_LTL: Z -> LTL.program -> unit. Parameter print_Mach: Mach.program -> unit. Local Open Scope string_scope. @@ -298,6 +298,14 @@ EXPAND_ASM_SEMANTICS eapply RTLgenproof.transf_program_correct; eassumption. EXPAND_RTL_FORWARD_SIMULATIONS eapply compose_forward_simulations. + eapply RTLpathLivegenproof.transf_program_correct; eassumption. + pose proof RTLpathLivegenproof.all_fundef_liveness_ok as X. + refine (modusponens _ _ (X _ _ _) _); eauto. intro. + eapply compose_forward_simulations. + eapply RTLpathSchedulerproof.transf_program_correct; eassumption. + eapply compose_forward_simulations. + eapply RTLpathproof.transf_program_correct; eassumption. + eapply compose_forward_simulations. eapply Allocationproof.transf_program_correct; eassumption. eapply compose_forward_simulations. eapply Tunnelingproof.transf_program_correct; eassumption. diff --git a/driver/Driver.ml b/driver/Driver.ml index 07edf2d1..7d23c695 100644 --- a/driver/Driver.ml +++ b/driver/Driver.ml @@ -206,7 +206,11 @@ Processing options: -fcse3-refine Refine CSE3 invariants by descending iteration [on] -fmove-loop-invariants Perform loop-invariant code motion [off] -fredundancy Perform redundancy elimination [on] - -fpostpass Perform postpass scheduling (only for K1 architecture) [on] + -mtune= Type of CPU (for scheduling on some architectures) + -fprepass Perform prepass scheduling (only on some architectures) [off] + -fprepass= <optim> Perform postpass scheduling with the specified optimization [list] + (<optim>=list: list scheduling, <optim>=ilp: ILP, <optim>=greedy: just packing bundles) + -fpostpass Perform postpass scheduling (only for K1 architecture) [on] -fpostpass= <optim> Perform postpass scheduling with the specified optimization [list] (<optim>=list: list scheduling, <optim>=ilp: ILP, <optim>=greedy: just packing bundles) -fpredict Insert static branch prediction information [on] @@ -416,6 +420,8 @@ let cmdline_actions = @ f_opt "cse3-refine" option_fcse3_refine @ f_opt "move-loop-invariants" option_fmove_loop_invariants @ f_opt "redundancy" option_fredundancy + @ [ Exact "-mtune", String (fun s -> option_mtune := s) ] + @ f_opt "prepass" option_fprepass @ f_opt "postpass" option_fpostpass @ [ Exact "-ftailduplicate", Integer (fun n -> option_ftailduplicate := n) ] @ f_opt "predict" option_fpredict @@ -423,6 +429,7 @@ let cmdline_actions = @ [ Exact "-funrollbody", Integer (fun n -> option_funrollbody := n) ] @ [ Exact "-flooprotate", Integer (fun n -> option_flooprotate := n) ] @ f_opt "tracelinearize" option_ftracelinearize + @ f_opt_str "prepass" option_fprepass option_fprepass_sched @ f_opt_str "postpass" option_fpostpass option_fpostpass_sched @ f_opt "inline" option_finline @ f_opt "inline-functions-called-once" option_finline_functions_called_once |