Move GenericScheduler and PostGenericScheduler into a header.
authorAndrew Trick <atrick@apple.com>
Wed, 4 Jun 2014 07:06:18 +0000 (07:06 +0000)
committerAndrew Trick <atrick@apple.com>
Wed, 4 Jun 2014 07:06:18 +0000 (07:06 +0000)
commit3ccf71d4d6bd91a225a6abb0c6df12e672491769
treeb15c0e4915b53a67f22e94023d6b1cd8c482b54a
parent6f8e6b108b3899bdf9a92c2ddd9ef792e4253d40
Move GenericScheduler and PostGenericScheduler into a header.

These were not exposed previously because I didn't want out-of-tree
targets to be too dependent on their internals. They can be reused for
a very wide variety of processors with casual scheduling needs without
exposing the classes by instead using hooks defined in
MachineSchedPolicy (we can add more if needed). When targets are more
aggressively tuned or want to provide custom heuristics, they can
define their own MachineSchedStrategy. I tend to think this is better
once you start customizing heuristics because you can copy over only
what you need. I don't think that layering heuristics generally works
well.

However, Arch64 targets now want to reuse the Generic scheduling logic
but also provide extensions. I don't see much harm in exposing the
Generic scheduling classes with a major caveat: these scheduling
strategies may change in the future without validating performance on
less mainstream processors. If you want to be immune from changes,
just define your own MachineSchedStrategy.

llvm-svn: 210166
llvm/include/llvm/CodeGen/MachineScheduler.h
llvm/lib/CodeGen/MachineScheduler.cpp