misched: implemented a framework for top-down or bottom-up scheduling.
authorAndrew Trick <atrick@apple.com>
Wed, 14 Mar 2012 04:00:41 +0000 (04:00 +0000)
committerAndrew Trick <atrick@apple.com>
Wed, 14 Mar 2012 04:00:41 +0000 (04:00 +0000)
commit17d35e57a585e869dc3084666abd17f173723735
treed616f719f60e1bff75ab3c168bf8152b7d3ec422
parentcb058d51db44d47b57fc4705fea00209174d6577
misched: implemented a framework for top-down or bottom-up scheduling.

New flags: -misched-topdown, -misched-bottomup. They can be used with
the default scheduler or with -misched=shuffle. Without either
topdown/bottomup flag -misched=shuffle now alternates scheduling
direction.

LiveIntervals update is unimplemented with bottom-up scheduling, so
only -misched-topdown currently works.

Capped the ScheduleDAG hierarchy with a concrete ScheduleDAGMI class.
ScheduleDAGMI is aware of the top and bottom of the unscheduled zone
within the current region. Scheduling policy can be plugged into
the ScheduleDAGMI driver by implementing MachineSchedStrategy.
ConvergingScheduler is now the default scheduling algorithm.
It exercises the new driver but still does no reordering.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152700 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/CodeGen/ScheduleDAG.h
lib/CodeGen/MachineScheduler.cpp
lib/CodeGen/Passes.cpp
lib/CodeGen/ScheduleDAGInstrs.cpp