<div dir="ltr">Where do the definitions for the things in Intrin.h live? It's just declarations.</div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Nov 2, 2014 at 10:16 AM, Alex Rosenberg <span dir="ltr"><<a href="mailto:alexr@leftfield.org" target="_blank">alexr@leftfield.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Intrin.h is the MSVC-compatibility header. lzcntintrin.h is the GCC/ICC,etc. style header as well as MSVC's vendor-specific header in some cases.<br>
<span class="HOEnZb"><font color="#888888"><br>
Alex<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
> On Nov 1, 2014, at 7:20 PM, Robinson, Paul <<a href="mailto:Paul_Robinson@playstation.sony.com">Paul_Robinson@playstation.sony.com</a>> wrote:<br>
><br>
> I thought these were already defined in Intrin.h?  Except only for Windows I guess.<br>
> Still can't reach my work systems so checking it myself might have to wait until<br>
> Monday.<br>
> --paulr<br>
><br>
>> -----Original Message-----<br>
>> From: <a href="mailto:cfe-commits-bounces@cs.uiuc.edu">cfe-commits-bounces@cs.uiuc.edu</a> [mailto:<a href="mailto:cfe-commits-">cfe-commits-</a><br>
>> <a href="mailto:bounces@cs.uiuc.edu">bounces@cs.uiuc.edu</a>] On Behalf Of Craig Topper<br>
>> Sent: Saturday, November 01, 2014 3:51 PM<br>
>> To: <a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
>> Subject: r221066 - Add _lzcnt_u32 and _lzcnt_u64 to lzcntintrin.h to match<br>
>> Intel documentation names for these intrinsics.<br>
>><br>
>> Author: ctopper<br>
>> Date: Sat Nov  1 17:50:57 2014<br>
>> New Revision: 221066<br>
>><br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=221066&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=221066&view=rev</a><br>
>> Log:<br>
>> Add _lzcnt_u32 and _lzcnt_u64 to lzcntintrin.h to match Intel<br>
>> documentation names for these intrinsics.<br>
>><br>
>> Modified:<br>
>>    cfe/trunk/lib/Headers/lzcntintrin.h<br>
>>    cfe/trunk/test/CodeGen/lzcnt-builtins.c<br>
>><br>
>> Modified: cfe/trunk/lib/Headers/lzcntintrin.h<br>
>> URL: <a href="http://llvm.org/viewvc/llvm-" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
>> project/cfe/trunk/lib/Headers/lzcntintrin.h?rev=221066&r1=221065&r2=221066<br>
>> &view=diff<br>
>> ==========================================================================<br>
>> ====<br>
>> --- cfe/trunk/lib/Headers/lzcntintrin.h (original)<br>
>> +++ cfe/trunk/lib/Headers/lzcntintrin.h Sat Nov  1 17:50:57 2014<br>
>> @@ -44,12 +44,24 @@ __lzcnt32(unsigned int __X)<br>
>>   return __X ? __builtin_clz(__X) : 32;<br>
>> }<br>
>><br>
>> +static __inline__ unsigned int __attribute__((__always_inline__,<br>
>> __nodebug__))<br>
>> +_lzcnt_u32(unsigned int __X)<br>
>> +{<br>
>> +  return __X ? __builtin_clz(__X) : 32;<br>
>> +}<br>
>> +<br>
>> #ifdef __x86_64__<br>
>> static __inline__ unsigned long long __attribute__((__always_inline__,<br>
>> __nodebug__))<br>
>> __lzcnt64(unsigned long long __X)<br>
>> {<br>
>>   return __X ? __builtin_clzll(__X) : 64;<br>
>> }<br>
>> +<br>
>> +static __inline__ unsigned long long __attribute__((__always_inline__,<br>
>> __nodebug__))<br>
>> +_lzcnt_u64(unsigned long long __X)<br>
>> +{<br>
>> +  return __X ? __builtin_clzll(__X) : 64;<br>
>> +}<br>
>> #endif<br>
>><br>
>> #endif /* __LZCNTINTRIN_H */<br>
>><br>
>> Modified: cfe/trunk/test/CodeGen/lzcnt-builtins.c<br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/lzcnt-" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/lzcnt-</a><br>
>> builtins.c?rev=221066&r1=221065&r2=221066&view=diff<br>
>> ==========================================================================<br>
>> ====<br>
>> --- cfe/trunk/test/CodeGen/lzcnt-builtins.c (original)<br>
>> +++ cfe/trunk/test/CodeGen/lzcnt-builtins.c Sat Nov  1 17:50:57 2014<br>
>> @@ -22,3 +22,15 @@ unsigned long long test__lzcnt64(unsigne<br>
>>   // CHECK: @llvm.ctlz.i64<br>
>>   return __lzcnt64(__X);<br>
>> }<br>
>> +<br>
>> +unsigned int test_lzcnt_u32(unsigned int __X)<br>
>> +{<br>
>> +  // CHECK: @llvm.ctlz.i32<br>
>> +  return _lzcnt_u32(__X);<br>
>> +}<br>
>> +<br>
>> +unsigned long long test__lzcnt_u64(unsigned long long __X)<br>
>> +{<br>
>> +  // CHECK: @llvm.ctlz.i64<br>
>> +  return _lzcnt_u64(__X);<br>
>> +}<br>
>><br>
>><br>
>> _______________________________________________<br>
>> cfe-commits mailing list<br>
>> <a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
>> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
><br>
> _______________________________________________<br>
> cfe-commits mailing list<br>
> <a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>~Craig
</div>