<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jul 23, 2015 at 8:25 AM, Meador Inge <span dir="ltr"><<a href="mailto:meadori@gmail.com" target="_blank">meadori@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Thu, Jul 23, 2015 at 9:53 AM, Sky Flyer <<a href="mailto:skylake007@googlemail.com">skylake007@googlemail.com</a>> wrote:<br>
<br>
> Hello all,<br>
><br>
> I don't find anything helping me understand the llvm bang operator. In the<br>
> llvm TableGen language reference, it only says:<br>
><br>
> 'TableGen also has “bang operators” which have a wide variety of meanings:'<br>
><br>
> I would be very thankful if someone can explain it to me.<br>
><br>
> e.g. what does "!strconcat" or "!if" mean?<br>
<br>
</span>Those are defined in the "Language Introduction":<br>
<br>
<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_docs_TableGen_LangIntro.html-23tablegen-2Dvalues-2Dand-2Dexpressions&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=Mfk2qtn1LTDThVkh6-oGglNfMADXfJdty4_bhmuhMHA&m=1o21LPFbHPAW5eUYGbSDh7uhl_5uVkWqieMxeWmGcWc&s=ahpGJobrBnpS3aEpta69rx9ua6rs9T8qcDYCi43k75A&e=" rel="noreferrer" target="_blank">http://llvm.org/docs/TableGen/LangIntro.html#tablegen-values-and-expressions</a><br>
<br>
Not sure why we have things split into three separate pages:<br>
<br>
  * TableGen - <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_docs_TableGen_index.html&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=Mfk2qtn1LTDThVkh6-oGglNfMADXfJdty4_bhmuhMHA&m=1o21LPFbHPAW5eUYGbSDh7uhl_5uVkWqieMxeWmGcWc&s=us7hw-C30vo2p9jtRyKqAS4n0DwAngcQt-vH_PZeZCg&e=" rel="noreferrer" target="_blank">http://llvm.org/docs/TableGen/index.html</a><br>
<br>
  * Introduction - <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_docs_TableGen_LangIntro.html&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=Mfk2qtn1LTDThVkh6-oGglNfMADXfJdty4_bhmuhMHA&m=1o21LPFbHPAW5eUYGbSDh7uhl_5uVkWqieMxeWmGcWc&s=un4kLx2FrwGeh2bHDY2dsjGF5kYLskS0a5eRShYEqjA&e=" rel="noreferrer" target="_blank">http://llvm.org/docs/TableGen/LangIntro.html</a><br>
<br>
  * Reference - <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_docs_TableGen_LangRef.html&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=Mfk2qtn1LTDThVkh6-oGglNfMADXfJdty4_bhmuhMHA&m=1o21LPFbHPAW5eUYGbSDh7uhl_5uVkWqieMxeWmGcWc&s=J7y8GnWYGr0E5hY3qdf8xG30qGIYEXx-mrbmlxzi_hU&e=" rel="noreferrer" target="_blank">http://llvm.org/docs/TableGen/LangRef.html</a><br>
<br></blockquote><div><br></div><div>index is about TableGen as a whole (i.e. what you might use it for, why you would use it for that, etc.).</div><div>LangIntro is about how to use the language itself (irrespective of any particular backend).</div><div>LangRef is a dry language reference (i.e. that you would look at or update if modifying lib/TableGen).</div><div><br></div><div>Unless you are hacking in lib/TableGen, you should not need to be looking at LangRef too much, except to maybe get an idea about the precise syntax for a construct when you get a syntax error.</div><div><br></div><div>LangRef currently is mostly about syntax; there remains work to be done to fully cover the semantics of the various constructs.<br></div><div><br></div><div>-- Sean Silva</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I consistently find myself lost between those pages.<br>
<br>
-- Meador<br>
<br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" rel="noreferrer" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" rel="noreferrer" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
</blockquote></div><br></div></div>