[LLVMdev] RFC: PerfGuide for frontend authors

Philip Reames listmail at philipreames.com
Wed Feb 25 14:27:17 PST 2015


On further thought, I don't think the extra directory structure is 
warranted yet.  We have several other frontend relevant docs at the top 
level so splitting off a directory without moving them would just make 
things more confusing.

Given that, tentative name is docs/PerfTips.rst and this will be going 
out as a code review to give time for others to comment on naming.

Philip

On 02/25/2015 02:22 PM, Philip Reames wrote:
> I'm moving forward with this now given no one has raised objections.
>
> Based on Sean's comments, the naming I'm going to use is: 
> FrontendInfo/PerfTips
>
> I plan on committing an initial version based on what was discussed 
> here without further review.  I'm going to keep the first version 
> short, and then open it for others to contribute.
>
> Philip
>
> On 02/24/2015 02:13 PM, Sean Silva wrote:
>> SGTM.
>>
>> I like your idea of starting "perf tips" as sort of isolated 
>> guidelines for better IRGen. Should allow some nice incremental 
>> growth of the documentation. I expect some stuff will need a bit more 
>> discussion, so I would like this document to be in a directory 
>> docs/FrontendInfo/ or something like that (bikeshed) so that we can 
>> easily split out into new docs as needed for some breathing room, or 
>> to give some structure for readers to follow.
>>
>> Our optimizer and backends are our lifeblood, but frontends are our 
>> reason for existence. This kind of frontend-oriented documentation 
>> has been needed for a long time. Thanks for kicking it off!
>>
>> -- Sean Silva
>>
>> On Mon, Feb 23, 2015 at 4:46 PM, Philip Reames 
>> <listmail at philipreames.com <mailto:listmail at philipreames.com>> wrote:
>>
>>     I'd like to propose that we create a new Performance Guide
>>     document.  The target of this document will be frontend authors,
>>     not necessarily LLVM contributors.  The content will be a
>>     collection of items a frontend author might want to know about
>>     how to generate LLVM IR which will optimize well.
>>
>>     Some ideas on topics that might be worthwhile:
>>     - Prefer sext over zext when value is known to be positive in the
>>     language (e.g. range checked index on a GEP)
>>     - Avoid loading and storing first class aggregates (i.e. they're
>>     not well supported in the optimizer)
>>     - Mark invariant locations - i.e. link to !invariant.load and
>>     TBAA constant flags
>>     - Use globals not inttoptr for runtime structures - this gives
>>     you dereferenceability information
>>     - Use function attributes where possible (nonnull, deref, etc..)
>>     - Be ware of ordered and atomic memory operations (not well
>>     optimized), depending on source language, might be faster to use
>>     fences.
>>     - Range checks - make sure you test with the IRCE pass
>>
>>     If folks are happy with the idea of having such a document, I
>>     volunteer to create version 0.1 with one or two items.  After
>>     that, we can add to it as folks encounter ideas.  The initial
>>     content will be fairly minimal, I just want a link I can send to
>>     folks in reviews to record comments made.  :)
>>
>>     Philip
>>     _______________________________________________
>>     LLVM Developers mailing list
>>     LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu>
>>     http://llvm.cs.uiuc.edu
>>     http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>
>>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150225/6002c170/attachment.html>


More information about the llvm-dev mailing list