[llvm-dev] Prioritizing an SDNode for scheduling

Ehsan Amiri via llvm-dev llvm-dev at lists.llvm.org
Wed Nov 9 15:11:21 PST 2016


What is the reason that you need to change the order of instructions? What
is the problem that you want to solve?


On Wed, Nov 9, 2016 at 7:05 AM, Alex Susu via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

>   Hello.
>     I have tried hard, but in the end I chose a different solution: I
> change the order of machine instructions by using the ASM writer classes
> such as [Target]AsmPrinter.cpp. There the code is already scheduled, in a
> list of instructions and it's very easy to move the instructions in the
> list.
>     (Following Ehsan's advice I looked at http://llvm.org/docs/doxygen/h
> tml/classllvm_1_1GenericScheduler.html for example, but I did not get any
> idea.)
>
>   Best regards,
>     Alex
>
>
> On 10/21/2016 5:32 PM, Ehsan Amiri wrote:
>
>> I probably misunderstood the question. You probably want to do this in
>> SelectionDAG.
>>
>> On Fri, Oct 21, 2016 at 10:29 AM, Ehsan Amiri <ehsanamiri at gmail.com
>> <mailto:ehsanamiri at gmail.com>> wrote:
>>
>>     You can do this by changing instruction scheduling heuristics. I
>> think the more
>>     important question is if this correct always for all platforms.
>>
>>     I don't know which scheduler you use. We use GenericScheduler and
>> PostGenericScheduler
>>     before and after RA. These classes have a ::tryCandidate method which
>> compares two
>>     instructions that can be legally scheduled and decide which of the
>> two should be
>>     scheduled. Currently these method are target independent.
>>
>>     The correctness question still remains open for me.
>>
>>
>>     On Thu, Oct 20, 2016 at 8:08 PM, Alex Susu via llvm-dev <
>> llvm-dev at lists.llvm.org
>>     <mailto:llvm-dev at lists.llvm.org>> wrote:
>>
>>           Hello.
>>             Is there a way to specify in the back end an (ISD::INLINEASM)
>> SDNode to be
>>         scheduled first under all circumstances? I need to specify
>> something like node
>>         priority to schedule the node before all other nodes in the
>> SelectionDAG of the
>>         basic block.
>>             (Using chain or glue edges in order to make a node first is
>> not a good idea,
>>         since I am doing this at instruction selection time, on
>> individual nodes.)
>>
>>           Thank you,
>>             Alex
>>         _______________________________________________
>>         LLVM Developers mailing list
>>         llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>
>>         http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>         <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev>
>>
>>
>>
>> _______________________________________________
> 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/20161109/b95a761d/attachment.html>


More information about the llvm-dev mailing list