Add a PostMachineScheduler pass with generic implementation.
authorAndrew Trick <atrick@apple.com>
Sat, 28 Dec 2013 21:56:57 +0000 (21:56 +0000)
committerAndrew Trick <atrick@apple.com>
Sat, 28 Dec 2013 21:56:57 +0000 (21:56 +0000)
commit9e76e1d78504e6ef7782b87e87d99fb77de6bb86
treeb57cc713fb6c9f97eb5ddb2b336d2e9e7cbf8ee1
parent8e62b298e1db137b839da627103e2536b1695742
Add a PostMachineScheduler pass with generic implementation.

PostGenericScheduler uses either the new machine model or the hazard
checker for top-down scheduling. Most of the infrastructure for PreRA
machine scheduling is reused.

With a some tuning, this should allow MachineScheduler to be default
for all ARM targets, including cortex-A9, using the new machine
model. Likewise, with additional tuning, it should be able to replace
PostRAScheduler for all targets.

The PostMachineScheduler pass does not currently run the
AntiDepBreaker. There is less need for it on targets that are already
running preRA MachineScheduler. I want to prove it's necessary before
committing to the maintenance burden.

The PostMachineScheduler also currently removes kill flags and adds
them all back later. This is a bit ridiculous. I'd prefer passes to
directly use a liveness utility than rely on flags.

A test case that enables this scheduler will be included in a
subsequent checkin that updates the A9 model.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198122 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/MachineScheduler.cpp