Scheduler
After instruction selection, the SelectionDAG
structure has nodes representing physical instructions—those directly supported by the processor. The next stage comprises a pre-register allocation scheduler working on SelectionDAG
nodes (SDNodes
). There are a few different schedulers to choose from and each one of them is a subclass of ScheduleDAGSDNodes
(see the file <llvm_source>/ lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp
). The scheduler type can be selected in the llc
tool by using the -pre-RA-sched=<scheduler>
option. The possible values for <scheduler>
are the following:
list-ilp
,list-hybrid
,source
, andlist-burr
: These options refer to list scheduling algorithms implemented by theScheduleDAGRRList
class (see the file<llvm_source>/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp
)fast
: TheScheduleDAGFast
class (in<llvm_source>/lib/CodeGen/SelectionDAG/ScheduleDAGFast.cpp
) implements a suboptimal but fast schedulervliw-td
: A VLIW-specific...