aboutsummaryrefslogtreecommitdiffstats
path: root/driver
diff options
context:
space:
mode:
Diffstat (limited to 'driver')
-rw-r--r--driver/Clflags.ml9
-rw-r--r--driver/Compiler.vexpand8
-rw-r--r--driver/Driver.ml9
3 files changed, 24 insertions, 2 deletions
diff --git a/driver/Clflags.ml b/driver/Clflags.ml
index 6c82ac62..206bbb00 100644
--- a/driver/Clflags.ml
+++ b/driver/Clflags.ml
@@ -43,8 +43,15 @@ let option_ftracelinearize = ref true (* uses branch prediction information to i
let option_funrollsingle = ref 0 (* unroll a single iteration of innermost loops of size n *)
let option_funrollbody = ref 0 (* unroll the body of innermost loops of size n *)
+(* 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)
@@ -95,7 +102,7 @@ let option_div_i32 = ref "stsud"
let option_div_i64 = ref "stsud"
let option_fcoalesce_mem = ref true
let option_fforward_moves = ref false
-let option_fmove_loop_invariants = ref true
+let option_fmove_loop_invariants = ref false
let option_fnontrap_loads = ref true
let option_all_loads_nontrap = ref false
let option_inline_auto_threshold = ref 0
diff --git a/driver/Compiler.vexpand b/driver/Compiler.vexpand
index 00db9b36..80db9097 100644
--- a/driver/Compiler.vexpand
+++ b/driver/Compiler.vexpand
@@ -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 5d2c839f..b93bf688 100644
--- a/driver/Driver.ml
+++ b/driver/Driver.ml
@@ -205,7 +205,11 @@ Processing options:
-fcse3-trivial-ops Replace trivial operations as well using CSE3 [off]
-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]
@@ -419,12 +423,15 @@ let cmdline_actions =
@ f_opt "cse3-trivial-ops" option_fcse3_trivial_ops
@ 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
@ [ Exact "-funrollsingle", Integer (fun n -> option_funrollsingle := n) ]
@ [ Exact "-funrollbody", Integer (fun n -> option_funrollbody := 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