Combinatorial instruction scheduling research project at CSU Sacramento.
This plugin for the LLVM compiler is an optional machine scheduler. We implement a branch and bound instruction scheduling algorithm.
See BUILD.md for build instructions.
The OptSched plugin can be found in “llvm/lib” after building.
OptSched reads from configuration files at runtime to initialize the scheduler. There are templates in the example directory. The default search location for these files is ~/.optsched-cfg
. You can optionally specify the path to this directory or any of the configuration files individually with command-line options.
clang++ -O3 -fplugin=<path/to/OptSched.so> -mllvm -misched=optsched -mllvm -optsched-cfg=<path/to/optsched-cfg> <example.cpp>
llc -load <path/to/OptSched.so> -misched=optsched -optsched-cfg=<path/to/optsched-cfg> <example.ll>
When using Clang, pass options to LLVM with -mllvm
.
CL Opt | Description |
---|---|
-enable-misched | Enable the machine scheduling pass in LLVM (Targets can override this option). |
-misched=optsched | Select the optimizing scheduler. |
-debug-only=optsched | Print debug information from the scheduler. |
-optsched-cfg=\<string> | Path to the directory containing configuration files for opt-sched. |
-optsched-cfg-hotfuncs=\<string> | Path to the list of hot functions to schedule using opt-sched. |
-optsched-cfg-machine-model=\<string> | Path to the machine model specification file for opt-sched. |
-optsched-cfg-sched=\<string> | Path to the scheduler options configuration file for opt-sched. |