[PATCH] D17260: SystemZ scheduling implementation
Andrew Trick via llvm-commits
llvm-commits at lists.llvm.org
Thu Feb 18 08:27:36 PST 2016
atrick added inline comments.
================
Comment at: lib/Target/SystemZ/SystemZISelLowering.cpp:123-138
@@ -118,8 +122,18 @@
- // TODO: It may be better to default to latency-oriented scheduling, however
- // LLVM's current latency-oriented scheduler can't handle physreg definitions
- // such as SystemZ has with CC, so set this to the register-pressure
- // scheduler, because it can.
- setSchedulingPreference(Sched::RegPressure);
+ // XXJ Experimental.
+ if (Subtarget.isZ10orGeneric())
+ setSchedulingPreference(Sched::RegPressure);
+ else {
+ if (SchedPref=="source")
+ setSchedulingPreference(Sched::Source);
+ else if (SchedPref=="hybrid")
+ setSchedulingPreference(Sched::Hybrid);
+ else if (SchedPref=="ilp")
+ setSchedulingPreference(Sched::ILP);
+ else if (SchedPref=="regpress")
+ setSchedulingPreference(Sched::RegPressure);
+ else
+ llvm_unreachable("bad schedpref string");
+ }
setBooleanContents(ZeroOrOneBooleanContent);
----------------
jonpa wrote:
> atrick wrote:
> > Right, I was looking at your PostRA policy, which is rightly top-down. That said, you might still achieve better register pressure results by a two-pass scheduling approach. I tried hard to wedge all heuristics into a single pass because I was paranoid about compile time.
> >
> > Ultimately it's whatever works for your target, I was just pointing out that
> > - SelectionDAG is a bad place for scheduler heuristics
> > - We could support a multiple-pass MI scheduler if anyone needs it
> I am curious as to what you think would be the possibilities of a multi-pass scheduling approach. I have tried this once before like: First do a minimal reg-pressure scheduling. Then increase parallelism (overlapping live intervals) only when it seems to not cause too much spilling. Is this also what you had in mind?
>
> Currently this is not needed for SystemZ, as the main focus at least right now is on JIT compilation.
>
Yes that's what I had in mind. I didn't take that approach because I wanted to preserve source order in common cases where an out-of-order target has enough registers, as well as compile time.
http://reviews.llvm.org/D17260
More information about the llvm-commits
mailing list