[LLVMdev] Support for per-loop pragma
Junjie Gu
jgu222 at gmail.com
Tue Jun 1 17:42:01 PDT 2010
I'd like to add a pragma support in llvm. I am thinking about using a
llvm intrinsic to represent each pragma, such as
llvm.pragma (metadata, ...)
where metadata describes a pragma. So if an application has:
#pragma p1 ..
#pragma p2...
for (...)
The llvm IR would be
llvm.pragma (metadata..) // for p1
llvm.pragma (metadata..) // for p2
llvm IR for "for (...)"
In this way, the pragma handling is quite general (for example, it can
be used to support frequency hint for a branch, etc).
And it should be easy for any frontend to generate.
A possible issue might be that optimizations might make the
association between pragmas and their loops (in this case)
less obvious.
Any suggestions/ideas ?
Junjie
On Wed, May 19, 2010 at 4:31 PM, Junjie Gu <jgu222 at gmail.com> wrote:
> Hi Chris,
>
> Thanks. I will see what I can do for this.
>
> Junjie
>
> On Wed, May 19, 2010 at 3:45 PM, Chris Lattner <clattner at apple.com> wrote:
>>
>> On May 19, 2010, at 2:38 PM, Junjie Gu wrote:
>>
>>> Many compilers support per-loop pragma, such as loop unrolling (ie
>>> #pragma unroll=2). Is there any LLVM project/effort going on
>>> in this area ? What is the expected way for implementing per-loop
>>> pragma, or general pragma ? Suggestions/comments ?
>>
>> Hi Junjie,
>>
>> I don't know of anyone working on it, but it seems like a natural application of the metadata support in mainline:
>> http://blog.llvm.org/2010/04/extensible-metadata-in-llvm-ir.html
>>
>> We'd want to tag something, perhaps the backedge branches with metadata, then have the loop canonicalization passes preserve them.
>>
>> -Chris
>
More information about the llvm-dev
mailing list