Blah, for some reason I was thinking "popc" == "sync". :(<div><br></div><div>membar should be "n".</div><div><br></div><div>Thanks for the catch!</div><div><br></div><div>Side question though: what does Clang actually do with the "const" modifier?  The intrinsics are not marked as affecting memory, so the optimizers should be be unaffected.</div>
<div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Nov 9, 2012 at 4:02 PM, Eli Friedman <span dir="ltr"><<a href="mailto:eli.friedman@gmail.com" target="_blank">eli.friedman@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Fri, Nov 9, 2012 at 3:50 PM, Justin Holewinski<br>
<<a href="mailto:justin.holewinski@gmail.com">justin.holewinski@gmail.com</a>> wrote:<br>
> Author: jholewinski<br>
> Date: Fri Nov  9 17:50:51 2012<br>
> New Revision: 167647<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=167647&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=167647&view=rev</a><br>
> Log:<br>
> [NVPTX] Add __nvvm_* intrinsics as Clang builtins<br>
><br>
> Fixes bug 13354.<br>
><br>
> Modified:<br>
>     cfe/trunk/include/clang/Basic/BuiltinsNVPTX.def<br>
>     cfe/trunk/test/CodeGen/builtins-nvptx.c<br>
><br>
> Modified: cfe/trunk/include/clang/Basic/BuiltinsNVPTX.def<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsNVPTX.def?rev=167647&r1=167646&r2=167647&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsNVPTX.def?rev=167647&r1=167646&r2=167647&view=diff</a><br>

> ==============================================================================<br>
> --- cfe/trunk/include/clang/Basic/BuiltinsNVPTX.def (original)<br>
> +++ cfe/trunk/include/clang/Basic/BuiltinsNVPTX.def Fri Nov  9 17:50:51 2012<br>
> @@ -14,6 +14,7 @@<br>
><br>
>  // The format of this database matches clang/Basic/Builtins.def.<br>
><br>
> +// Builtins retained from previous PTX back-end<br>
>  BUILTIN(__builtin_ptx_read_tid_x, "i", "nc")<br>
>  BUILTIN(__builtin_ptx_read_tid_y, "i", "nc")<br>
>  BUILTIN(__builtin_ptx_read_tid_z, "i", "nc")<br>
> @@ -59,4 +60,249 @@<br>
>  BUILTIN(__builtin_ptx_bar_sync, "vi", "n")<br>
><br>
><br>
> +// Builtins exposed as part of NVVM<br>
> +BUILTIN(__syncthreads, "v", "nc")<br>
> +BUILTIN(__nvvm_bar0, "v", "nc")<br>
> +BUILTIN(__nvvm_bar0_popc, "ii", "nc")<br>
> +BUILTIN(__nvvm_bar0_and, "ii", "nc")<br>
> +BUILTIN(__nvvm_bar0_or, "ii", "nc")<br>
> +BUILTIN(__nvvm_membar_cta, "v", "n")<br>
> +BUILTIN(__nvvm_membar_gl, "v", "n")<br>
> +BUILTIN(__nvvm_membar_sys, "v", "n")<br>
> +BUILTIN(__nvvm_popc_i, "ii", "n")<br>
> +BUILTIN(__nvvm_popc_ll, "iLLi", "n")<br>
<br>
</div></div>Shouldn't this be marked with "c" as well?   More generally, how<br>
carefully did you review this?<br>
<span class="HOEnZb"><font color="#888888"><br>
-Eli<br>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br><br><div>Thanks,</div><div><br></div><div>Justin Holewinski</div><br>
</div>