[llvm-dev] scheduler options documentation?

Phil Tomson via llvm-dev llvm-dev at lists.llvm.org
Mon Sep 12 16:44:55 PDT 2016


Thanks for that SchedPolicy info. Setting  Policy.ShouldTrackPressure =
true seems to be giving much improved results.

Phil


On Mon, Sep 12, 2016 at 11:38 AM, Matthias Braun <mbraun at apple.com> wrote:

> LLVM targets have other options available to influence the scheduling:
> From enabling the machine scheduler at all (see TargetSubtargetInfo), to
> providing a SchedPolicy implementation, providing a scheduling model up to
> using the MachineScheduler framework to develop your own variant.
> MachineScheduler.h has a bunch of documentation at the beginning.
>
> - Matthias
>
> On Sep 12, 2016, at 11:33 AM, Phil Tomson <phil.a.tomson at gmail.com> wrote:
>
>
>
> On Mon, Sep 12, 2016 at 11:26 AM, Matthias Braun <mbraun at apple.com> wrote:
>
>> I think those should be considered internal options for (llvm codegen)
>> developers, a normal compiler user should not need to use any of them.
>>
>
> We're targetting a new processor. I'm trying to get IPC numbers up a bit
> by trying to figure out how to improve scheduling for our particular
> architecture. If it turns out that some of these options give us
> improvements I can have them be 'on' by default for our target.
>
>
>
>> Of course you can look around the llvm sourcecode (esp. in
>> lib/CodeGen/MachineScheduler.cpp) and see what cl::opt options are
>> available and how they affect the scheduler operation.
>>
>> In case of the MachineScheduler all settings are the same regardless of
>> the optimisation level, however the MachineScheduler is disabled as a whole
>> in TargetPassConfig.cpp when optimized regalloc is not enabled (which I
>> believe happens for everything except -O0).
>>
>> - Matthias
>>
>> On Sep 12, 2016, at 10:41 AM, Phil Tomson via llvm-dev <
>> llvm-dev at lists.llvm.org> wrote:
>>
>> As a follow on question: which of these options are already enabled when
>> compiling with -O3?
>>
>> Phil
>>
>> On Mon, Sep 12, 2016 at 10:37 AM, Phil Tomson <phil.a.tomson at gmail.com>
>> wrote:
>>
>>> I see that there are several options to influence instruction
>>> scheduling, but there doesn't seem to be a lot of information about what
>>> they do, for example:
>>>
>>> -misched-topdown -misched-bottomup
>>>
>>> The description in MachineScheduler.cpp says:
>>>
>>> "Force top-down list scheduling" and "Force bottom-up list scheduling"
>>>
>>> Which isn't too helpful - where might I want to use these? Under what
>>> conditions might they improve an instruction schedule?
>>>
>>> Similar questions for the instruction scheduler strategies:
>>>
>>> -misched=(default, converge,
>>> ilpmax, ilpmin, or shuffle)
>>>
>>> And for the analysis heuristics:
>>>
>>> -misched-cluster,
>>> -misched-cyclicpath, -misched-regpressure, and -misched-
>>> fusion
>>>
>>> Are these things mutually exclusive or can they be combined? What
>>> combination will give the most rigorous analysis and improve scheduling (at
>>> the cost of longer runtime of llc)
>>>
>>> Phil
>>>
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>
>>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160912/9da1ce53/attachment.html>


More information about the llvm-dev mailing list