Enable support for precise scheduling of the instruction selection
authorAndrew Trick <atrick@apple.com>
Fri, 21 Jan 2011 06:19:05 +0000 (06:19 +0000)
committerAndrew Trick <atrick@apple.com>
Fri, 21 Jan 2011 06:19:05 +0000 (06:19 +0000)
commitd1dace8aea073716daf0055ad07fde1164b2a472
tree26aca8516b1c54ddb1d426f6a12ece400aad4dbb
parentc8bfd1d78ff9a307d1d4cb57cce4549b538e60f4
Enable support for precise scheduling of the instruction selection
DAG. Disable using "-disable-sched-cycles".

For ARM, this enables a framework for modeling the cpu pipeline and
counting stalls. It also activates several heuristics to drive
scheduling based on the model. Scheduling is inherently imprecise at
this stage, and until spilling is improved it may defeat attempts to
schedule. However, this framework provides greater control over
tuning codegen.

Although the flag is not target-specific, it should have very little
affect on the default scheduler used by x86. The only two changes that
affect x86 are:
- scheduling a high-latency operation bumps the current cycle so independent
  operations can have their latency covered. i.e. two independent 4
  cycle operations can produce results in 4 cycles, not 8 cycles.
- Two operations with equal register pressure impact and no
  latency-based stalls on their uses will be prioritized by depth before height
  (height is irrelevant if no stalls occur in the schedule below this point).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123971 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp
test/CodeGen/ARM/vcgt.ll
test/CodeGen/Thumb2/2010-03-15-AsmCCClobber.ll