OSDN Git Service

[SystemZ, MachineScheduler] Improve post-RA scheduling.
authorJonas Paulsson <paulsson@linux.vnet.ibm.com>
Thu, 17 Aug 2017 08:33:44 +0000 (08:33 +0000)
committerJonas Paulsson <paulsson@linux.vnet.ibm.com>
Thu, 17 Aug 2017 08:33:44 +0000 (08:33 +0000)
commit59bdb88371ec3d53427a52e86b3901c7ab1127ad
treec2efabd1f87d340c737035b66c49a35b475ca6e0
parent605e60b1d2d91f1ec8699eb7347c4ca5c15eee7c
[SystemZ, MachineScheduler]  Improve post-RA scheduling.

The idea of this patch is to continue the scheduler state over an MBB boundary
in the case where the successor block has only one predecessor. This means
that the scheduler will continue in the successor block (after emitting any
branch instructions) with e.g. maintained processor resource counters.
Benchmarks have been confirmed to benefit from this.

The algorithm in MachineScheduler.cpp that extracts scheduling regions of an
MBB has been extended so that the strategy may optionally reverse the order
of processing the regions themselves. This is controlled by a new method
doMBBSchedRegionsTopDown(), which defaults to false.

Handling the top-most region of an MBB first also means that a top-down
scheduler can continue the scheduler state across any scheduling boundary
between to regions inside MBB.

Review: Ulrich Weigand, Matthias Braun, Andy Trick.
https://reviews.llvm.org/D35053

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@311072 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/CodeGen/MachineScheduler.h
include/llvm/CodeGen/ScheduleDAGInstrs.h
lib/CodeGen/MachineScheduler.cpp
lib/Target/SystemZ/SystemZHazardRecognizer.cpp
lib/Target/SystemZ/SystemZHazardRecognizer.h
lib/Target/SystemZ/SystemZMachineScheduler.cpp
lib/Target/SystemZ/SystemZMachineScheduler.h
test/CodeGen/SystemZ/int-cmp-48.ll