[LLVMdev] Metadata

Jeffrey Yasskin jyasskin at google.com
Thu Feb 11 15:47:26 PST 2010


On Thu, Feb 11, 2010 at 3:36 PM, Devang Patel <devang.patel at gmail.com> wrote:
> On Thu, Feb 11, 2010 at 10:54 PM, David Greene <dag at cray.com> wrote:
>> On Thursday 11 February 2010 16:31:16 Garrison Venn wrote:
>>> I don't think the lang ref metadata grammar section
>>> (http://llvm.org/docs/LangRef.html#metadata) has been fully updated with
>>> how !dbg metadata is used in
>>> http://llvm.org/docs/SourceLevelDebugging.html. At least to me it is not
>>> clear. In my mind I translate the phrase "LLVM IR allows metadata to be
>>> attached to instructions " into a grammar depicted in
>>> SourceLevelDebugging.html. I was going to ask about this, but I'll let you
>>> instead. :-)
>>
>> But that's not even a grammar.
>>
>> I simply want to know what the syntax is for specifying metadata on an
>> instruction.  From what I gather, it is this:
>>
>> <instruction> ',' <MetadataSpec>
>>
>> <MetadataSpec>: '!' <ID> '!' <ID>
>>
>> <ID>: [a-zA-Z_][a-zA-Z0-9_]*
>>
>> And the second <ID> needs to be the name of a metadata node:
>>
>> '!' <ID> '=' METADATA '!' '{' <MDNodeList> '}'
>>
>> And MDNodeList contains a list of stuff like integer values, strings and so
>> on.
>>
>> Is that basically right?  So I would have to do this:
>>
>>        %r8 = load <2 x double>* %r6, align 16, !nontemporal !0
>> [...]
>> !0 = metadata !{ i32 1 }
>
> I guess, that's what I described in the example in previous email :).
> In this case, your metadata is just an integer one. In my example, my
> metadata was a collection of 4 values.

So David would write what he wants as:

  %r8 = load <2 x double>* %r6, align 16, !nontemporal !{ i32 1 }

?

>> I would really rather not have to specify the entirely redundant !0.  Just the
>> fact that the instruction has metadata with index/name "nontemporal" should
>> be enough.
>
> -
> Devang
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>




More information about the llvm-dev mailing list