aboutsummaryrefslogtreecommitdiffstats
path: root/driver/Driver.ml
diff options
context:
space:
mode:
authorDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2020-10-18 22:49:10 +0200
committerDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2020-10-18 22:49:10 +0200
commit996a2e5bbc4826d95144b62f5218b6e3e1e7d881 (patch)
tree55a5136c68e7d0f7a304913f28d0a761d9facd9a /driver/Driver.ml
parent8c3a2bdb56eba8d8bc5e359b01a320916eac85f0 (diff)
parenta2f31f2b886ccb9656a019db1780aabc1789368a (diff)
downloadcompcert-kvx-996a2e5bbc4826d95144b62f5218b6e3e1e7d881.tar.gz
compcert-kvx-996a2e5bbc4826d95144b62f5218b6e3e1e7d881.zip
Merge remote-tracking branch 'origin/kvx-work' into kvx-test-prepass
Diffstat (limited to 'driver/Driver.ml')
-rw-r--r--driver/Driver.ml22
1 files changed, 11 insertions, 11 deletions
diff --git a/driver/Driver.ml b/driver/Driver.ml
index fef9c166..e5fc78f8 100644
--- a/driver/Driver.ml
+++ b/driver/Driver.ml
@@ -210,15 +210,12 @@ Processing options:
-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)
- -fduplicate <nb_nodes> Perform tail duplication to form superblocks on predicted traces
- nb_nodes control the heuristic deciding to duplicate or not
- A value of -1 desactivates the entire pass (including branch prediction)
- A value of 0 desactivates the duplication (but activates the branch prediction)
- FIXME : this is desactivated by default for now
- -finvertcond Invert conditions based on predicted paths (to prefer fallthrough).
- Requires -fduplicate to be also activated [on]
- -ftracelinearize Linearizes based on the traces identified by duplicate phase
- It is heavily recommended to activate -finvertcond with this pass [off]
+ -fpredict Insert static branch prediction information [on]
+ Also swaps ifso/ifnot branches accordingly at RTL level
+ -ftailduplicate n Perform tail duplication for RTL code blocks of size n (not counting Inops) [0]
+ -ftracelinearize Uses branch prediction information to improve the Linearize [on]
+ -funrollsingle n Unrolls a single iteration of innermost loops of size n (not counting Inops) [0]
+ -funrollbody n Unrolls once the body of innermost loops of size n (not counting Inops) [0]
-fforward-moves Forward moves after CSE
-finline Perform inlining of functions [on]
-finline-functions-called-once Integrate functions only required by their
@@ -283,6 +280,7 @@ let dump_mnemonics destfile =
let optimization_options = [
option_ftailcalls; option_fifconversion; option_fconstprop;
option_fcse; option_fcse2; option_fcse3;
+ option_fpredict; option_ftracelinearize;
option_fpostpass;
option_fredundancy; option_finline; option_finline_functions_called_once;
]
@@ -424,8 +422,10 @@ let cmdline_actions =
@ f_opt "redundancy" option_fredundancy
@ f_opt "prepass" option_fprepass
@ f_opt "postpass" option_fpostpass
- @ [ Exact "-fduplicate", Integer (fun n -> option_fduplicate := n) ]
- @ f_opt "invertcond" option_finvertcond
+ @ [ 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