<div dir="ltr">Having __attribute__ and DEFAULT_FN_ATTRIBUTE on the same line seemed weird, but as I said, don't care too much in this case, it's just a few #defines and updates.<div><br></div><div>-eric</div><div><br><div class="gmail_quote"><div dir="ltr">On Wed, Jun 17, 2015 at 2:32 PM Robinson, Paul <<a href="mailto:Paul_Robinson@playstation.sony.com" target="_blank">Paul_Robinson@playstation.sony.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div lang="EN-US" link="blue" vlink="purple">
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Not fussed about the adxintrin.h as it's just a couple.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Did you miss the comment in immintrin.h? That's more like a dozen, seems worthwhile there.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">--paulr<u></u><u></u></span></p>
<p class="MsoNormal"><a name="msg-f:1504263769682014874_msg-f:1504262762848206555__MailEndCompose"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></a></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #b5c4df 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> Eric Christopher [mailto:<a href="mailto:echristo@gmail.com" target="_blank">echristo@gmail.com</a>]
<br>
<b>Sent:</b> Wednesday, June 17, 2015 2:26 PM<br>
<b>To:</b> Robinson, Paul; <a href="mailto:cfe-commits@cs.uiuc.edu" target="_blank">cfe-commits@cs.uiuc.edu</a><br>
<b>Subject:</b> Re: r239883 - Update the intel intrinsic headers to use the target attribute support.<u></u><u></u></span></p>
</div>
</div></div></div></div><div lang="EN-US" link="blue" vlink="purple"><div><div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal">On Wed, Jun 17, 2015 at 2:19 PM Robinson, Paul <<a href="mailto:Paul_Robinson@playstation.sony.com" target="_blank">Paul_Robinson@playstation.sony.com</a>> wrote:<u></u><u></u></p>
</div>
<blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<p class="MsoNormal" style="margin-bottom:12.0pt">Fewer conditionals oughta be better for modules, yes? Nice.<br>
<br>
A few inline suggestions.<br>
--paulr<br>
<br>
> -----Original Message-----<br>
> From: <a href="mailto:cfe-commits-bounces@cs.uiuc.edu" target="_blank">cfe-commits-bounces@cs.uiuc.edu</a> [mailto:<a href="mailto:cfe-commits-" target="_blank">cfe-commits-</a><br>
> <a href="mailto:bounces@cs.uiuc.edu" target="_blank">bounces@cs.uiuc.edu</a>] On Behalf Of Eric Christopher<br>
> Sent: Wednesday, June 17, 2015 12:10 AM<br>
> To: <a href="mailto:cfe-commits@cs.uiuc.edu" target="_blank">cfe-commits@cs.uiuc.edu</a><br>
> Subject: r239883 - Update the intel intrinsic headers to use the target<br>
> attribute support.<br>
><br>
> Author: echristo<br>
> Date: Wed Jun 17 02:09:32 2015<br>
> New Revision: 239883<br>
><br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D239883-26view-3Drev&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=I92kq6evK_Movhf-TaiLVaQWBb0rh67U0gmkma6rLA0&e=" target="_blank">
http://llvm.org/viewvc/llvm-project?rev=239883&view=rev</a><br>
> Log:<br>
> Update the intel intrinsic headers to use the target attribute support.<br>
><br>
> This involved removing the conditional inclusion and replacing them<br>
> with target attributes matching the original conditional inclusion<br>
> and checks. The testcase update removes the macro checks for each<br>
> file and replaces them with usage of the __target__ attribute, e.g.:<br>
><br>
> int __attribute__((__target__(("sse3")))) foo(int a) {<br>
> _mm_mwait(0, 0);<br>
> return 4;<br>
> }<br>
><br>
> This usage does require the enclosing function have the requisite<br>
> __target__ attribute for inlining and code generation - also for<br>
> any macro intrinsic uses in the enclosing function. There's no change<br>
> for existing uses of the intrinsic headers.<br>
><br>
> Added:<br>
> cfe/trunk/test/Headers/pmmintrin.c<br>
> cfe/trunk/test/Headers/x86intrin-2.c<br>
> Modified:<br>
> cfe/trunk/lib/Headers/__wmmintrin_aes.h<br>
> cfe/trunk/lib/Headers/__wmmintrin_pclmul.h<br>
> cfe/trunk/lib/Headers/adxintrin.h<br>
> cfe/trunk/lib/Headers/ammintrin.h<br>
> cfe/trunk/lib/Headers/avx2intrin.h<br>
> cfe/trunk/lib/Headers/avx512bwintrin.h<br>
> cfe/trunk/lib/Headers/avx512dqintrin.h<br>
> cfe/trunk/lib/Headers/avx512fintrin.h<br>
> cfe/trunk/lib/Headers/avx512vlbwintrin.h<br>
> cfe/trunk/lib/Headers/avx512vldqintrin.h<br>
> cfe/trunk/lib/Headers/avx512vlintrin.h<br>
> cfe/trunk/lib/Headers/avxintrin.h<br>
> cfe/trunk/lib/Headers/bmi2intrin.h<br>
> cfe/trunk/lib/Headers/bmiintrin.h<br>
> cfe/trunk/lib/Headers/emmintrin.h<br>
> cfe/trunk/lib/Headers/f16cintrin.h<br>
> cfe/trunk/lib/Headers/fma4intrin.h<br>
> cfe/trunk/lib/Headers/fmaintrin.h<br>
> cfe/trunk/lib/Headers/immintrin.h<br>
> cfe/trunk/lib/Headers/lzcntintrin.h<br>
> cfe/trunk/lib/Headers/mm3dnow.h<br>
> cfe/trunk/lib/Headers/mmintrin.h<br>
> cfe/trunk/lib/Headers/nmmintrin.h<br>
> cfe/trunk/lib/Headers/pmmintrin.h<br>
> cfe/trunk/lib/Headers/popcntintrin.h<br>
> cfe/trunk/lib/Headers/rdseedintrin.h<br>
> cfe/trunk/lib/Headers/rtmintrin.h<br>
> cfe/trunk/lib/Headers/shaintrin.h<br>
> cfe/trunk/lib/Headers/smmintrin.h<br>
> cfe/trunk/lib/Headers/tbmintrin.h<br>
> cfe/trunk/lib/Headers/tmmintrin.h<br>
> cfe/trunk/lib/Headers/wmmintrin.h<br>
> cfe/trunk/lib/Headers/x86intrin.h<br>
> cfe/trunk/lib/Headers/xmmintrin.h<br>
> cfe/trunk/lib/Headers/xopintrin.h<br>
> cfe/trunk/test/Headers/x86intrin.c<br>
><br>
> Modified: cfe/trunk/lib/Headers/__wmmintrin_aes.h<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/lib/Headers/__wmmintrin_aes.h?rev=239883&r1=239882&r2=23<br>
> 9883&view=diff<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/lib/Headers/__wmmintrin_aes.h (original)<br>
> +++ cfe/trunk/lib/Headers/__wmmintrin_aes.h Wed Jun 17 02:09:32 2015<br>
> @@ -25,12 +25,8 @@<br>
><br>
> #include <emmintrin.h><br>
><br>
> -#if !defined (__AES__)<br>
> -# error "AES instructions not enabled"<br>
> -#else<br>
> -<br>
> /* Define the default attributes for the functions in this file. */<br>
> -#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))<br>
> +#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__,<br>
> __target__("aes")))<br>
><br>
> static __inline__ __m128i DEFAULT_FN_ATTRS<br>
> _mm_aesenc_si128(__m128i __V, __m128i __R)<br>
> @@ -67,6 +63,4 @@ _mm_aesimc_si128(__m128i __V)<br>
><br>
> #undef DEFAULT_FN_ATTRS<br>
><br>
> -#endif<br>
> -<br>
> #endif /* _WMMINTRIN_AES_H */<br>
><br>
> Modified: cfe/trunk/lib/Headers/__wmmintrin_pclmul.h<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/lib/Headers/__wmmintrin_pclmul.h?rev=239883&r1=239882&r2<br>
> =239883&view=diff<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/lib/Headers/__wmmintrin_pclmul.h (original)<br>
> +++ cfe/trunk/lib/Headers/__wmmintrin_pclmul.h Wed Jun 17 02:09:32 2015<br>
> @@ -23,12 +23,8 @@<br>
> #ifndef _WMMINTRIN_PCLMUL_H<br>
> #define _WMMINTRIN_PCLMUL_H<br>
><br>
> -#if !defined (__PCLMUL__)<br>
> -# error "PCLMUL instruction is not enabled"<br>
> -#else<br>
> #define _mm_clmulepi64_si128(__X, __Y, __I) \<br>
> ((__m128i)__builtin_ia32_pclmulqdq128((__v2di)(__m128i)(__X), \<br>
> (__v2di)(__m128i)(__Y),<br>
> (char)(__I)))<br>
> -#endif<br>
><br>
> #endif /* _WMMINTRIN_PCLMUL_H */<br>
><br>
> Modified: cfe/trunk/lib/Headers/adxintrin.h<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/lib/Headers/adxintrin.h?rev=239883&r1=239882&r2=239883&v<br>
> iew=diff<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/lib/Headers/adxintrin.h (original)<br>
> +++ cfe/trunk/lib/Headers/adxintrin.h Wed Jun 17 02:09:32 2015<br>
> @@ -32,8 +32,7 @@<br>
> #define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))<br>
><br>
> /* Intrinsics that are available only if __ADX__ defined */<br>
> -#ifdef __ADX__<br>
> -static __inline unsigned char DEFAULT_FN_ATTRS<br>
> +static __inline unsigned char __attribute__((__always_inline__,<br>
> __nodebug__, __target__("adx")))<br>
<br>
You can repeat __attribute__, right? Would be more robust to do this:<br>
<br>
static __inline unsigned char DEFAULT_FN_ATTRS __attribute__((__target("adx)))<br>
<br>
> _addcarryx_u32(unsigned char __cf, unsigned int __x, unsigned int __y,<br>
> unsigned int *__p)<br>
> {<br>
> @@ -41,14 +40,13 @@ _addcarryx_u32(unsigned char __cf, unsig<br>
> }<br>
><br>
> #ifdef __x86_64__<br>
> -static __inline unsigned char DEFAULT_FN_ATTRS<br>
> +static __inline unsigned char __attribute__((__always_inline__,<br>
> __nodebug__, __target__("adx")))<br>
<br>
Ditto.<u></u><u></u></p>
</blockquote>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">I thought about both of these, but for the couple of small things it didn't seem worth it, but I can be convinced otherwise if you feel strongly enough.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">-eric<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<p class="MsoNormal">> _addcarryx_u64(unsigned char __cf, unsigned long long __x,<br>
> unsigned long long __y, unsigned long long *__p)<br>
> {<br>
> return __builtin_ia32_addcarryx_u64(__cf, __x, __y, __p);<br>
> }<br>
> #endif<br>
> -#endif<br>
><br>
> /* Intrinsics that are also available if __ADX__ undefined */<br>
> static __inline unsigned char DEFAULT_FN_ATTRS<br>
><br>
> Modified: cfe/trunk/lib/Headers/ammintrin.h<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/lib/Headers/ammintrin.h?rev=239883&r1=239882&r2=239883&v<br>
> iew=diff<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/lib/Headers/ammintrin.h (original)<br>
> +++ cfe/trunk/lib/Headers/ammintrin.h Wed Jun 17 02:09:32 2015<br>
> @@ -24,14 +24,10 @@<br>
> #ifndef __AMMINTRIN_H<br>
> #define __AMMINTRIN_H<br>
><br>
> -#ifndef __SSE4A__<br>
> -#error "SSE4A instruction set not enabled"<br>
> -#else<br>
> -<br>
> #include <pmmintrin.h><br>
><br>
> /* Define the default attributes for the functions in this file. */<br>
> -#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))<br>
> +#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__,<br>
> __target__("sse4a")))<br>
><br>
> /// \brief Extracts the specified bits from the lower 64 bits of the 128-<br>
> bit<br>
> /// integer vector operand at the index idx and of the length len.<br>
> @@ -210,6 +206,4 @@ _mm_stream_ss(float *__p, __m128 __a)<br>
><br>
> #undef DEFAULT_FN_ATTRS<br>
><br>
> -#endif /* __SSE4A__ */<br>
> -<br>
> #endif /* __AMMINTRIN_H */<br>
><br>
> Modified: cfe/trunk/lib/Headers/avx2intrin.h<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/lib/Headers/avx2intrin.h?rev=239883&r1=239882&r2=239883&<br>
> view=diff<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/lib/Headers/avx2intrin.h (original)<br>
> +++ cfe/trunk/lib/Headers/avx2intrin.h Wed Jun 17 02:09:32 2015<br>
> @@ -29,7 +29,7 @@<br>
> #define __AVX2INTRIN_H<br>
><br>
> /* Define the default attributes for the functions in this file. */<br>
> -#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))<br>
> +#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__,<br>
> __target__("avx2")))<br>
><br>
> /* SSE4 Multiple Packed Sums of Absolute Difference. */<br>
> #define _mm256_mpsadbw_epu8(X, Y, M) __builtin_ia32_mpsadbw256((X), (Y),<br>
> (M))<br>
><br>
> Modified: cfe/trunk/lib/Headers/avx512bwintrin.h<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/lib/Headers/avx512bwintrin.h?rev=239883&r1=239882&r2=239<br>
> 883&view=diff<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/lib/Headers/avx512bwintrin.h (original)<br>
> +++ cfe/trunk/lib/Headers/avx512bwintrin.h Wed Jun 17 02:09:32 2015<br>
> @@ -34,7 +34,7 @@ typedef char __v64qi __attribute__ ((__v<br>
> typedef short __v32hi __attribute__ ((__vector_size__ (64)));<br>
><br>
> /* Define the default attributes for the functions in this file. */<br>
> -#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))<br>
> +#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__,<br>
> __target__("avx512bw")))<br>
><br>
> static __inline __v64qi DEFAULT_FN_ATTRS<br>
> _mm512_setzero_qi (void) {<br>
><br>
> Modified: cfe/trunk/lib/Headers/avx512dqintrin.h<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/lib/Headers/avx512dqintrin.h?rev=239883&r1=239882&r2=239<br>
> 883&view=diff<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/lib/Headers/avx512dqintrin.h (original)<br>
> +++ cfe/trunk/lib/Headers/avx512dqintrin.h Wed Jun 17 02:09:32 2015<br>
> @@ -29,7 +29,7 @@<br>
> #define __AVX512DQINTRIN_H<br>
><br>
> /* Define the default attributes for the functions in this file. */<br>
> -#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))<br>
> +#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__,<br>
> __target__("avx512dq")))<br>
><br>
> static __inline__ __m512i DEFAULT_FN_ATTRS<br>
> _mm512_mullo_epi64 (__m512i __A, __m512i __B) {<br>
><br>
> Modified: cfe/trunk/lib/Headers/avx512fintrin.h<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/lib/Headers/avx512fintrin.h?rev=239883&r1=239882&r2=2398<br>
> 83&view=diff<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/lib/Headers/avx512fintrin.h (original)<br>
> +++ cfe/trunk/lib/Headers/avx512fintrin.h Wed Jun 17 02:09:32 2015<br>
> @@ -47,7 +47,7 @@ typedef unsigned short __mmask16;<br>
> #define _MM_FROUND_CUR_DIRECTION 0x04<br>
><br>
> /* Define the default attributes for the functions in this file. */<br>
> -#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))<br>
> +#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__,<br>
> __target__("avx512f")))<br>
><br>
> /* Create vectors with repeated elements */<br>
><br>
><br>
> Modified: cfe/trunk/lib/Headers/avx512vlbwintrin.h<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/lib/Headers/avx512vlbwintrin.h?rev=239883&r1=239882&r2=2<br>
> 39883&view=diff<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/lib/Headers/avx512vlbwintrin.h (original)<br>
> +++ cfe/trunk/lib/Headers/avx512vlbwintrin.h Wed Jun 17 02:09:32 2015<br>
> @@ -29,7 +29,7 @@<br>
> #define __AVX512VLBWINTRIN_H<br>
><br>
> /* Define the default attributes for the functions in this file. */<br>
> -#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))<br>
> +#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__,<br>
> __target__("avx512vl,avx512bw")))<br>
><br>
> /* Integer compare */<br>
><br>
><br>
> Modified: cfe/trunk/lib/Headers/avx512vldqintrin.h<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/lib/Headers/avx512vldqintrin.h?rev=239883&r1=239882&r2=2<br>
> 39883&view=diff<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/lib/Headers/avx512vldqintrin.h (original)<br>
> +++ cfe/trunk/lib/Headers/avx512vldqintrin.h Wed Jun 17 02:09:32 2015<br>
> @@ -29,7 +29,7 @@<br>
> #define __AVX512VLDQINTRIN_H<br>
><br>
> /* Define the default attributes for the functions in this file. */<br>
> -#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))<br>
> +#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__,<br>
> __target__("avx512vl,avx512dq")))<br>
><br>
> static __inline__ __m256i DEFAULT_FN_ATTRS<br>
> _mm256_mullo_epi64 (__m256i __A, __m256i __B) {<br>
><br>
> Modified: cfe/trunk/lib/Headers/avx512vlintrin.h<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/lib/Headers/avx512vlintrin.h?rev=239883&r1=239882&r2=239<br>
> 883&view=diff<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/lib/Headers/avx512vlintrin.h (original)<br>
> +++ cfe/trunk/lib/Headers/avx512vlintrin.h Wed Jun 17 02:09:32 2015<br>
> @@ -29,7 +29,7 @@<br>
> #define __AVX512VLINTRIN_H<br>
><br>
> /* Define the default attributes for the functions in this file. */<br>
> -#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))<br>
> +#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__,<br>
> __target__("avx512vl")))<br>
><br>
> /* Integer compare */<br>
><br>
><br>
> Modified: cfe/trunk/lib/Headers/avxintrin.h<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/lib/Headers/avxintrin.h?rev=239883&r1=239882&r2=239883&v<br>
> iew=diff<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/lib/Headers/avxintrin.h (original)<br>
> +++ cfe/trunk/lib/Headers/avxintrin.h Wed Jun 17 02:09:32 2015<br>
> @@ -40,7 +40,7 @@ typedef double __m256d __attribute__((__<br>
> typedef long long __m256i __attribute__((__vector_size__(32)));<br>
><br>
> /* Define the default attributes for the functions in this file. */<br>
> -#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))<br>
> +#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__,<br>
> __target__("avx")))<br>
><br>
> /* Arithmetic */<br>
> static __inline __m256d DEFAULT_FN_ATTRS<br>
><br>
> Modified: cfe/trunk/lib/Headers/bmi2intrin.h<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/lib/Headers/bmi2intrin.h?rev=239883&r1=239882&r2=239883&<br>
> view=diff<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/lib/Headers/bmi2intrin.h (original)<br>
> +++ cfe/trunk/lib/Headers/bmi2intrin.h Wed Jun 17 02:09:32 2015<br>
> @@ -25,15 +25,11 @@<br>
> #error "Never use <bmi2intrin.h> directly; include <x86intrin.h><br>
> instead."<br>
> #endif<br>
><br>
> -#ifndef __BMI2__<br>
> -# error "BMI2 instruction set not enabled"<br>
> -#endif /* __BMI2__ */<br>
> -<br>
> #ifndef __BMI2INTRIN_H<br>
> #define __BMI2INTRIN_H<br>
><br>
> /* Define the default attributes for the functions in this file. */<br>
> -#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))<br>
> +#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__,<br>
> __target__("bmi2")))<br>
><br>
> static __inline__ unsigned int DEFAULT_FN_ATTRS<br>
> _bzhi_u32(unsigned int __X, unsigned int __Y)<br>
><br>
> Modified: cfe/trunk/lib/Headers/bmiintrin.h<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/lib/Headers/bmiintrin.h?rev=239883&r1=239882&r2=239883&v<br>
> iew=diff<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/lib/Headers/bmiintrin.h (original)<br>
> +++ cfe/trunk/lib/Headers/bmiintrin.h Wed Jun 17 02:09:32 2015<br>
> @@ -25,10 +25,6 @@<br>
> #error "Never use <bmiintrin.h> directly; include <x86intrin.h> instead."<br>
> #endif<br>
><br>
> -#ifndef __BMI__<br>
> -# error "BMI instruction set not enabled"<br>
> -#endif /* __BMI__ */<br>
> -<br>
> #ifndef __BMIINTRIN_H<br>
> #define __BMIINTRIN_H<br>
><br>
> @@ -41,7 +37,7 @@<br>
> #define _tzcnt_u32(a) (__tzcnt_u32((a)))<br>
><br>
> /* Define the default attributes for the functions in this file. */<br>
> -#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))<br>
> +#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__,<br>
> __target__("bmi")))<br>
><br>
> static __inline__ unsigned short DEFAULT_FN_ATTRS<br>
> __tzcnt_u16(unsigned short __X)<br>
><br>
> Modified: cfe/trunk/lib/Headers/emmintrin.h<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/lib/Headers/emmintrin.h?rev=239883&r1=239882&r2=239883&v<br>
> iew=diff<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/lib/Headers/emmintrin.h (original)<br>
> +++ cfe/trunk/lib/Headers/emmintrin.h Wed Jun 17 02:09:32 2015<br>
> @@ -24,10 +24,6 @@<br>
> #ifndef __EMMINTRIN_H<br>
> #define __EMMINTRIN_H<br>
><br>
> -#ifndef __SSE2__<br>
> -#error "SSE2 instruction set not enabled"<br>
> -#else<br>
> -<br>
> #include <xmmintrin.h><br>
><br>
> typedef double __m128d __attribute__((__vector_size__(16)));<br>
> @@ -40,7 +36,7 @@ typedef short __v8hi __attribute__((__ve<br>
> typedef char __v16qi __attribute__((__vector_size__(16)));<br>
><br>
> /* Define the default attributes for the functions in this file. */<br>
> -#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))<br>
> +#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__,<br>
> __target__("sse2")))<br>
><br>
> static __inline__ __m128d DEFAULT_FN_ATTRS<br>
> _mm_add_sd(__m128d __a, __m128d __b)<br>
> @@ -1475,6 +1471,4 @@ _mm_pause(void)<br>
><br>
> #define _MM_SHUFFLE2(x, y) (((x) << 1) | (y))<br>
><br>
> -#endif /* __SSE2__ */<br>
> -<br>
> #endif /* __EMMINTRIN_H */<br>
><br>
> Modified: cfe/trunk/lib/Headers/f16cintrin.h<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/lib/Headers/f16cintrin.h?rev=239883&r1=239882&r2=239883&<br>
> view=diff<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/lib/Headers/f16cintrin.h (original)<br>
> +++ cfe/trunk/lib/Headers/f16cintrin.h Wed Jun 17 02:09:32 2015<br>
> @@ -25,10 +25,6 @@<br>
> #error "Never use <f16cintrin.h> directly; include <x86intrin.h><br>
> instead."<br>
> #endif<br>
><br>
> -#ifndef __F16C__<br>
> -# error "F16C instruction is not enabled"<br>
> -#endif /* __F16C__ */<br>
> -<br>
> #ifndef __F16CINTRIN_H<br>
> #define __F16CINTRIN_H<br>
><br>
> @@ -36,7 +32,7 @@ typedef float __v8sf __attribute__ ((__v<br>
> typedef float __m256 __attribute__ ((__vector_size__ (32)));<br>
><br>
> /* Define the default attributes for the functions in this file. */<br>
> -#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))<br>
> +#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__,<br>
> __target__("f16c")))<br>
><br>
> #define _mm_cvtps_ph(a, imm) __extension__ ({ \<br>
> __m128 __a = (a); \<br>
><br>
> Modified: cfe/trunk/lib/Headers/fma4intrin.h<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/lib/Headers/fma4intrin.h?rev=239883&r1=239882&r2=239883&<br>
> view=diff<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/lib/Headers/fma4intrin.h (original)<br>
> +++ cfe/trunk/lib/Headers/fma4intrin.h Wed Jun 17 02:09:32 2015<br>
> @@ -28,14 +28,10 @@<br>
> #ifndef __FMA4INTRIN_H<br>
> #define __FMA4INTRIN_H<br>
><br>
> -#ifndef __FMA4__<br>
> -# error "FMA4 instruction set is not enabled"<br>
> -#else<br>
> -<br>
> #include <pmmintrin.h><br>
><br>
> /* Define the default attributes for the functions in this file. */<br>
> -#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))<br>
> +#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__,<br>
> __target__("fma4")))<br>
><br>
> static __inline__ __m128 DEFAULT_FN_ATTRS<br>
> _mm_macc_ps(__m128 __A, __m128 __B, __m128 __C)<br>
> @@ -231,6 +227,4 @@ _mm256_msubadd_pd(__m256d __A, __m256d _<br>
><br>
> #undef DEFAULT_FN_ATTRS<br>
><br>
> -#endif /* __FMA4__ */<br>
> -<br>
> #endif /* __FMA4INTRIN_H */<br>
><br>
> Modified: cfe/trunk/lib/Headers/fmaintrin.h<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/lib/Headers/fmaintrin.h?rev=239883&r1=239882&r2=239883&v<br>
> iew=diff<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/lib/Headers/fmaintrin.h (original)<br>
> +++ cfe/trunk/lib/Headers/fmaintrin.h Wed Jun 17 02:09:32 2015<br>
> @@ -28,12 +28,8 @@<br>
> #ifndef __FMAINTRIN_H<br>
> #define __FMAINTRIN_H<br>
><br>
> -#ifndef __FMA__<br>
> -# error "FMA instruction set is not enabled"<br>
> -#else<br>
> -<br>
> /* Define the default attributes for the functions in this file. */<br>
> -#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))<br>
> +#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__,<br>
> __target__("fma")))<br>
><br>
> static __inline__ __m128 DEFAULT_FN_ATTRS<br>
> _mm_fmadd_ps(__m128 __A, __m128 __B, __m128 __C)<br>
> @@ -229,6 +225,4 @@ _mm256_fmsubadd_pd(__m256d __A, __m256d<br>
><br>
> #undef DEFAULT_FN_ATTRS<br>
><br>
> -#endif /* __FMA__ */<br>
> -<br>
> #endif /* __FMAINTRIN_H */<br>
><br>
> Modified: cfe/trunk/lib/Headers/immintrin.h<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/lib/Headers/immintrin.h?rev=239883&r1=239882&r2=239883&v<br>
> iew=diff<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/lib/Headers/immintrin.h (original)<br>
> +++ cfe/trunk/lib/Headers/immintrin.h Wed Jun 17 02:09:32 2015<br>
> @@ -24,176 +24,126 @@<br>
> #ifndef __IMMINTRIN_H<br>
> #define __IMMINTRIN_H<br>
><br>
> -#ifdef __MMX__<br>
> #include <mmintrin.h><br>
> -#endif<br>
><br>
> -#ifdef __SSE__<br>
> #include <xmmintrin.h><br>
> -#endif<br>
><br>
> -#ifdef __SSE2__<br>
> #include <emmintrin.h><br>
> -#endif<br>
><br>
> -#ifdef __SSE3__<br>
> #include <pmmintrin.h><br>
> -#endif<br>
><br>
> -#ifdef __SSSE3__<br>
> #include <tmmintrin.h><br>
> -#endif<br>
><br>
> -#if defined (__SSE4_2__) || defined (__SSE4_1__)<br>
> #include <smmintrin.h><br>
> -#endif<br>
><br>
> -#if defined (__AES__) || defined (__PCLMUL__)<br>
> #include <wmmintrin.h><br>
> -#endif<br>
><br>
> -#ifdef __AVX__<br>
> #include <avxintrin.h><br>
> -#endif<br>
><br>
> -#ifdef __AVX2__<br>
> #include <avx2intrin.h><br>
> -#endif<br>
><br>
> -#ifdef __BMI__<br>
> #include <bmiintrin.h><br>
> -#endif<br>
><br>
> -#ifdef __BMI2__<br>
> #include <bmi2intrin.h><br>
> -#endif<br>
><br>
> -#ifdef __LZCNT__<br>
> #include <lzcntintrin.h><br>
> -#endif<br>
><br>
> -#ifdef __FMA__<br>
> #include <fmaintrin.h><br>
> -#endif<br>
><br>
> -#ifdef __AVX512F__<br>
> #include <avx512fintrin.h><br>
> -#endif<br>
><br>
> -#ifdef __AVX512VL__<br>
> #include <avx512vlintrin.h><br>
> -#endif<br>
><br>
> -#ifdef __AVX512BW__<br>
> #include <avx512bwintrin.h><br>
> -#endif<br>
><br>
> -#ifdef __AVX512DQ__<br>
> #include <avx512dqintrin.h><br>
> -#endif<br>
><br>
> -#if defined (__AVX512VL__) && defined (__AVX512BW__)<br>
> #include <avx512vlbwintrin.h><br>
> -#endif<br>
><br>
> -#if defined (__AVX512VL__) && defined (__AVX512DQ__)<br>
> #include <avx512vldqintrin.h><br>
> -#endif<br>
><br>
> -#ifdef __AVX512ER__<br>
> #include <avx512erintrin.h><br>
> -#endif<br>
><br>
> -#ifdef __RDRND__<br>
> -static __inline__ int __attribute__((__always_inline__, __nodebug__))<br>
> +static __inline__ int __attribute__((__always_inline__, __nodebug__,<br>
> __target__("rdrnd")))<br>
<br>
Seems like this sequence could also benefit from having a DEFAULT_FN_ATTRS.<br>
<br>
> _rdrand16_step(unsigned short *__p)<br>
> {<br>
> return __builtin_ia32_rdrand16_step(__p);<br>
> }<br>
><br>
> -static __inline__ int __attribute__((__always_inline__, __nodebug__))<br>
> +static __inline__ int __attribute__((__always_inline__, __nodebug__,<br>
> __target__("rdrnd")))<br>
> _rdrand32_step(unsigned int *__p)<br>
> {<br>
> return __builtin_ia32_rdrand32_step(__p);<br>
> }<br>
><br>
> #ifdef __x86_64__<br>
> -static __inline__ int __attribute__((__always_inline__, __nodebug__))<br>
> +static __inline__ int __attribute__((__always_inline__, __nodebug__,<br>
> __target__("rdrnd")))<br>
> _rdrand64_step(unsigned long long *__p)<br>
> {<br>
> return __builtin_ia32_rdrand64_step(__p);<br>
> }<br>
> #endif<br>
> -#endif /* __RDRND__ */<br>
><br>
> -#ifdef __FSGSBASE__<br>
> #ifdef __x86_64__<br>
> -static __inline__ unsigned int __attribute__((__always_inline__,<br>
> __nodebug__))<br>
> +static __inline__ unsigned int __attribute__((__always_inline__,<br>
> __nodebug__, __target__("fsgsbase")))<br>
> _readfsbase_u32(void)<br>
> {<br>
> return __builtin_ia32_rdfsbase32();<br>
> }<br>
><br>
> -static __inline__ unsigned long long __attribute__((__always_inline__,<br>
> __nodebug__))<br>
> +static __inline__ unsigned long long __attribute__((__always_inline__,<br>
> __nodebug__, __target__("fsgsbase")))<br>
> _readfsbase_u64(void)<br>
> {<br>
> return __builtin_ia32_rdfsbase64();<br>
> }<br>
><br>
> -static __inline__ unsigned int __attribute__((__always_inline__,<br>
> __nodebug__))<br>
> +static __inline__ unsigned int __attribute__((__always_inline__,<br>
> __nodebug__, __target__("fsgsbase")))<br>
> _readgsbase_u32(void)<br>
> {<br>
> return __builtin_ia32_rdgsbase32();<br>
> }<br>
><br>
> -static __inline__ unsigned long long __attribute__((__always_inline__,<br>
> __nodebug__))<br>
> +static __inline__ unsigned long long __attribute__((__always_inline__,<br>
> __nodebug__, __target__("fsgsbase")))<br>
> _readgsbase_u64(void)<br>
> {<br>
> return __builtin_ia32_rdgsbase64();<br>
> }<br>
><br>
> -static __inline__ void __attribute__((__always_inline__, __nodebug__))<br>
> +static __inline__ void __attribute__((__always_inline__, __nodebug__,<br>
> __target__("fsgsbase")))<br>
> _writefsbase_u32(unsigned int __V)<br>
> {<br>
> return __builtin_ia32_wrfsbase32(__V);<br>
> }<br>
><br>
> -static __inline__ void __attribute__((__always_inline__, __nodebug__))<br>
> +static __inline__ void __attribute__((__always_inline__, __nodebug__,<br>
> __target__("fsgsbase")))<br>
> _writefsbase_u64(unsigned long long __V)<br>
> {<br>
> return __builtin_ia32_wrfsbase64(__V);<br>
> }<br>
><br>
> -static __inline__ void __attribute__((__always_inline__, __nodebug__))<br>
> +static __inline__ void __attribute__((__always_inline__, __nodebug__,<br>
> __target__("fsgsbase")))<br>
> _writegsbase_u32(unsigned int __V)<br>
> {<br>
> return __builtin_ia32_wrgsbase32(__V);<br>
> }<br>
><br>
> -static __inline__ void __attribute__((__always_inline__, __nodebug__))<br>
> +static __inline__ void __attribute__((__always_inline__, __nodebug__,<br>
> __target__("fsgsbase")))<br>
> _writegsbase_u64(unsigned long long __V)<br>
> {<br>
> return __builtin_ia32_wrgsbase64(__V);<br>
> }<br>
> #endif<br>
> -#endif /* __FSGSBASE__ */<br>
><br>
> -#ifdef __RTM__<br>
> #include <rtmintrin.h><br>
> -#endif<br>
><br>
> /* FIXME: check __HLE__ as well when HLE is supported. */<br>
> -#if defined (__RTM__)<br>
> -static __inline__ int __attribute__((__always_inline__, __nodebug__))<br>
> +static __inline__ int __attribute__((__always_inline__, __nodebug__,<br>
> __target__("rtm")))<br>
> _xtest(void)<br>
> {<br>
> return __builtin_ia32_xtest();<br>
> }<br>
> -#endif<br>
><br>
> -#ifdef __SHA__<br>
> #include <shaintrin.h><br>
> -#endif<br>
><br>
> /* Some intrinsics inside adxintrin.h are available only if __ADX__<br>
> defined,<br>
> * whereas others are also available if __ADX__ undefined */<br>
><br>
> Modified: cfe/trunk/lib/Headers/lzcntintrin.h<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/lib/Headers/lzcntintrin.h?rev=239883&r1=239882&r2=239883<br>
> &view=diff<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/lib/Headers/lzcntintrin.h (original)<br>
> +++ cfe/trunk/lib/Headers/lzcntintrin.h Wed Jun 17 02:09:32 2015<br>
> @@ -25,15 +25,11 @@<br>
> #error "Never use <lzcntintrin.h> directly; include <x86intrin.h><br>
> instead."<br>
> #endif<br>
><br>
> -#ifndef __LZCNT__<br>
> -# error "LZCNT instruction is not enabled"<br>
> -#endif /* __LZCNT__ */<br>
> -<br>
> #ifndef __LZCNTINTRIN_H<br>
> #define __LZCNTINTRIN_H<br>
><br>
> /* Define the default attributes for the functions in this file. */<br>
> -#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))<br>
> +#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__,<br>
> __target__("lzcnt")))<br>
><br>
> static __inline__ unsigned short DEFAULT_FN_ATTRS<br>
> __lzcnt16(unsigned short __X)<br>
><br>
> Modified: cfe/trunk/lib/Headers/mm3dnow.h<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/lib/Headers/mm3dnow.h?rev=239883&r1=239882&r2=239883&vie<br>
> w=diff<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/lib/Headers/mm3dnow.h (original)<br>
> +++ cfe/trunk/lib/Headers/mm3dnow.h Wed Jun 17 02:09:32 2015<br>
> @@ -30,7 +30,7 @@<br>
> typedef float __v2sf __attribute__((__vector_size__(8)));<br>
><br>
> /* Define the default attributes for the functions in this file. */<br>
> -#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))<br>
> +#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__,<br>
> __target__("3dnow")))<br>
><br>
> static __inline__ void DEFAULT_FN_ATTRS<br>
> _m_femms() {<br>
><br>
> Modified: cfe/trunk/lib/Headers/mmintrin.h<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/lib/Headers/mmintrin.h?rev=239883&r1=239882&r2=239883&vi<br>
> ew=diff<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/lib/Headers/mmintrin.h (original)<br>
> +++ cfe/trunk/lib/Headers/mmintrin.h Wed Jun 17 02:09:32 2015<br>
> @@ -24,10 +24,6 @@<br>
> #ifndef __MMINTRIN_H<br>
> #define __MMINTRIN_H<br>
><br>
> -#ifndef __MMX__<br>
> -#error "MMX instruction set not enabled"<br>
> -#else<br>
> -<br>
> typedef long long __m64 __attribute__((__vector_size__(8)));<br>
><br>
> typedef int __v2si __attribute__((__vector_size__(8)));<br>
> @@ -35,7 +31,7 @@ typedef short __v4hi __attribute__((__ve<br>
> typedef char __v8qi __attribute__((__vector_size__(8)));<br>
><br>
> /* Define the default attributes for the functions in this file. */<br>
> -#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))<br>
> +#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__,<br>
> __target__("mmx")))<br>
><br>
> static __inline__ void DEFAULT_FN_ATTRS<br>
> _mm_empty(void)<br>
> @@ -501,7 +497,5 @@ _mm_setr_pi8(char __b0, char __b1, char<br>
> #define _m_pcmpgtw _mm_cmpgt_pi16<br>
> #define _m_pcmpgtd _mm_cmpgt_pi32<br>
><br>
> -#endif /* __MMX__ */<br>
> -<br>
> #endif /* __MMINTRIN_H */<br>
><br>
><br>
> Modified: cfe/trunk/lib/Headers/nmmintrin.h<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/lib/Headers/nmmintrin.h?rev=239883&r1=239882&r2=239883&v<br>
> iew=diff<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/lib/Headers/nmmintrin.h (original)<br>
> +++ cfe/trunk/lib/Headers/nmmintrin.h Wed Jun 17 02:09:32 2015<br>
> @@ -24,12 +24,7 @@<br>
> #ifndef _NMMINTRIN_H<br>
> #define _NMMINTRIN_H<br>
><br>
> -#ifndef __SSE4_2__<br>
> -#error "SSE4.2 instruction set not enabled"<br>
> -#else<br>
> -<br>
> /* To match expectations of gcc we put the sse4.2 definitions into<br>
> smmintrin.h,<br>
> just include it now then. */<br>
> #include <smmintrin.h><br>
> -#endif /* __SSE4_2__ */<br>
> #endif /* _NMMINTRIN_H */<br>
><br>
> Modified: cfe/trunk/lib/Headers/pmmintrin.h<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/lib/Headers/pmmintrin.h?rev=239883&r1=239882&r2=239883&v<br>
> iew=diff<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/lib/Headers/pmmintrin.h (original)<br>
> +++ cfe/trunk/lib/Headers/pmmintrin.h Wed Jun 17 02:09:32 2015<br>
> @@ -24,14 +24,10 @@<br>
> #ifndef __PMMINTRIN_H<br>
> #define __PMMINTRIN_H<br>
><br>
> -#ifndef __SSE3__<br>
> -#error "SSE3 instruction set not enabled"<br>
> -#else<br>
> -<br>
> #include <emmintrin.h><br>
><br>
> /* Define the default attributes for the functions in this file. */<br>
> -#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))<br>
> +#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__,<br>
> __target__("sse3")))<br>
><br>
> static __inline__ __m128i DEFAULT_FN_ATTRS<br>
> _mm_lddqu_si128(__m128i const *__p)<br>
> @@ -117,6 +113,4 @@ _mm_mwait(unsigned __extensions, unsigne<br>
><br>
> #undef DEFAULT_FN_ATTRS<br>
><br>
> -#endif /* __SSE3__ */<br>
> -<br>
> #endif /* __PMMINTRIN_H */<br>
><br>
> Modified: cfe/trunk/lib/Headers/popcntintrin.h<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/lib/Headers/popcntintrin.h?rev=239883&r1=239882&r2=23988<br>
> 3&view=diff<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/lib/Headers/popcntintrin.h (original)<br>
> +++ cfe/trunk/lib/Headers/popcntintrin.h Wed Jun 17 02:09:32 2015<br>
> @@ -21,15 +21,11 @@<br>
> *===--------------------------------------------------------------------<br>
> ---===<br>
> */<br>
><br>
> -#ifndef __POPCNT__<br>
> -#error "POPCNT instruction set not enabled"<br>
> -#endif<br>
> -<br>
> #ifndef _POPCNTINTRIN_H<br>
> #define _POPCNTINTRIN_H<br>
><br>
> /* Define the default attributes for the functions in this file. */<br>
> -#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))<br>
> +#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__,<br>
> __target__("popcnt")))<br>
><br>
> static __inline__ int DEFAULT_FN_ATTRS<br>
> _mm_popcnt_u32(unsigned int __A)<br>
><br>
> Modified: cfe/trunk/lib/Headers/rdseedintrin.h<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/lib/Headers/rdseedintrin.h?rev=239883&r1=239882&r2=23988<br>
> 3&view=diff<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/lib/Headers/rdseedintrin.h (original)<br>
> +++ cfe/trunk/lib/Headers/rdseedintrin.h Wed Jun 17 02:09:32 2015<br>
> @@ -28,10 +28,8 @@<br>
> #ifndef __RDSEEDINTRIN_H<br>
> #define __RDSEEDINTRIN_H<br>
><br>
> -#ifdef __RDSEED__<br>
> -<br>
> /* Define the default attributes for the functions in this file. */<br>
> -#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))<br>
> +#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__,<br>
> __target__("rdseed")))<br>
><br>
> static __inline__ int DEFAULT_FN_ATTRS<br>
> _rdseed16_step(unsigned short *__p)<br>
> @@ -55,5 +53,4 @@ _rdseed64_step(unsigned long long *__p)<br>
><br>
> #undef DEFAULT_FN_ATTRS<br>
><br>
> -#endif /* __RDSEED__ */<br>
> #endif /* __RDSEEDINTRIN_H */<br>
><br>
> Modified: cfe/trunk/lib/Headers/rtmintrin.h<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/lib/Headers/rtmintrin.h?rev=239883&r1=239882&r2=239883&v<br>
> iew=diff<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/lib/Headers/rtmintrin.h (original)<br>
> +++ cfe/trunk/lib/Headers/rtmintrin.h Wed Jun 17 02:09:32 2015<br>
> @@ -38,7 +38,7 @@<br>
> #define _XABORT_CODE(x) (((x) >> 24) & 0xFF)<br>
><br>
> /* Define the default attributes for the functions in this file. */<br>
> -#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))<br>
> +#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__,<br>
> __target__("rtm")))<br>
><br>
> static __inline__ unsigned int DEFAULT_FN_ATTRS<br>
> _xbegin(void)<br>
><br>
> Modified: cfe/trunk/lib/Headers/shaintrin.h<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/lib/Headers/shaintrin.h?rev=239883&r1=239882&r2=239883&v<br>
> iew=diff<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/lib/Headers/shaintrin.h (original)<br>
> +++ cfe/trunk/lib/Headers/shaintrin.h Wed Jun 17 02:09:32 2015<br>
> @@ -28,12 +28,8 @@<br>
> #ifndef __SHAINTRIN_H<br>
> #define __SHAINTRIN_H<br>
><br>
> -#if !defined (__SHA__)<br>
> -# error "SHA instructions not enabled"<br>
> -#endif<br>
> -<br>
> /* Define the default attributes for the functions in this file. */<br>
> -#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))<br>
> +#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__,<br>
> __target__("sha")))<br>
><br>
> #define _mm_sha1rnds4_epu32(V1, V2, M) __extension__ ({ \<br>
> __builtin_ia32_sha1rnds4((V1), (V2), (M)); })<br>
><br>
> Modified: cfe/trunk/lib/Headers/smmintrin.h<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/lib/Headers/smmintrin.h?rev=239883&r1=239882&r2=239883&v<br>
> iew=diff<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/lib/Headers/smmintrin.h (original)<br>
> +++ cfe/trunk/lib/Headers/smmintrin.h Wed Jun 17 02:09:32 2015<br>
> @@ -24,14 +24,10 @@<br>
> #ifndef _SMMINTRIN_H<br>
> #define _SMMINTRIN_H<br>
><br>
> -#ifndef __SSE4_1__<br>
> -#error "SSE4.1 instruction set not enabled"<br>
> -#else<br>
> -<br>
> #include <tmmintrin.h><br>
><br>
> /* Define the default attributes for the functions in this file. */<br>
> -#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))<br>
> +#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__,<br>
> __target__("sse4.1")))<br>
><br>
> /* SSE4 Rounding macros. */<br>
> #define _MM_FROUND_TO_NEAREST_INT 0x00<br>
> @@ -379,9 +375,13 @@ _mm_minpos_epu16(__m128i __V)<br>
> return (__m128i) __builtin_ia32_phminposuw128((__v8hi)__V);<br>
> }<br>
><br>
> +/* Handle the sse4.2 definitions here. */<br>
> +<br>
> /* These definitions are normally in nmmintrin.h, but gcc puts them in<br>
> here<br>
> so we'll do the same. */<br>
> -#ifdef __SSE4_2__<br>
> +<br>
> +#undef DEFAULT_FN_ATTRS<br>
> +#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__,<br>
> __target__("sse4.2")))<br>
><br>
> /* These specify the type of data that we're comparing. */<br>
> #define _SIDD_UBYTE_OPS 0x00<br>
> @@ -481,7 +481,4 @@ _mm_crc32_u64(unsigned long long __C, un<br>
> #include <popcntintrin.h><br>
> #endif<br>
><br>
> -#endif /* __SSE4_2__ */<br>
> -#endif /* __SSE4_1__ */<br>
> -<br>
> #endif /* _SMMINTRIN_H */<br>
><br>
> Modified: cfe/trunk/lib/Headers/tbmintrin.h<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/lib/Headers/tbmintrin.h?rev=239883&r1=239882&r2=239883&v<br>
> iew=diff<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/lib/Headers/tbmintrin.h (original)<br>
> +++ cfe/trunk/lib/Headers/tbmintrin.h Wed Jun 17 02:09:32 2015<br>
> @@ -21,10 +21,6 @@<br>
> *===--------------------------------------------------------------------<br>
> ---===<br>
> */<br>
><br>
> -#ifndef __TBM__<br>
> -#error "TBM instruction set is not enabled"<br>
> -#endif<br>
> -<br>
> #ifndef __X86INTRIN_H<br>
> #error "Never use <tbmintrin.h> directly; include <x86intrin.h> instead."<br>
> #endif<br>
> @@ -33,7 +29,7 @@<br>
> #define __TBMINTRIN_H<br>
><br>
> /* Define the default attributes for the functions in this file. */<br>
> -#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))<br>
> +#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__,<br>
> __target__("tbm")))<br>
><br>
> #define __bextri_u32(a, b) (__builtin_ia32_bextri_u32((a), (b)))<br>
><br>
><br>
> Modified: cfe/trunk/lib/Headers/tmmintrin.h<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/lib/Headers/tmmintrin.h?rev=239883&r1=239882&r2=239883&v<br>
> iew=diff<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/lib/Headers/tmmintrin.h (original)<br>
> +++ cfe/trunk/lib/Headers/tmmintrin.h Wed Jun 17 02:09:32 2015<br>
> @@ -24,14 +24,10 @@<br>
> #ifndef __TMMINTRIN_H<br>
> #define __TMMINTRIN_H<br>
><br>
> -#ifndef __SSSE3__<br>
> -#error "SSSE3 instruction set not enabled"<br>
> -#else<br>
> -<br>
> #include <pmmintrin.h><br>
><br>
> /* Define the default attributes for the functions in this file. */<br>
> -#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))<br>
> +#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__,<br>
> __target__("ssse3")))<br>
><br>
> static __inline__ __m64 DEFAULT_FN_ATTRS<br>
> _mm_abs_pi8(__m64 __a)<br>
> @@ -225,6 +221,4 @@ _mm_sign_pi32(__m64 __a, __m64 __b)<br>
><br>
> #undef DEFAULT_FN_ATTRS<br>
><br>
> -#endif /* __SSSE3__ */<br>
> -<br>
> #endif /* __TMMINTRIN_H */<br>
><br>
> Modified: cfe/trunk/lib/Headers/wmmintrin.h<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/lib/Headers/wmmintrin.h?rev=239883&r1=239882&r2=239883&v<br>
> iew=diff<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/lib/Headers/wmmintrin.h (original)<br>
> +++ cfe/trunk/lib/Headers/wmmintrin.h Wed Jun 17 02:09:32 2015<br>
> @@ -26,17 +26,8 @@<br>
><br>
> #include <emmintrin.h><br>
><br>
> -#if !defined (__AES__) && !defined (__PCLMUL__)<br>
> -# error "AES/PCLMUL instructions not enabled"<br>
> -#else<br>
> -<br>
> -#ifdef __AES__<br>
> #include <__wmmintrin_aes.h><br>
> -#endif /* __AES__ */<br>
><br>
> -#ifdef __PCLMUL__<br>
> #include <__wmmintrin_pclmul.h><br>
> -#endif /* __PCLMUL__ */<br>
><br>
> -#endif /* __AES__ || __PCLMUL__ */<br>
> #endif /* _WMMINTRIN_H */<br>
><br>
> Modified: cfe/trunk/lib/Headers/x86intrin.h<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/lib/Headers/x86intrin.h?rev=239883&r1=239882&r2=239883&v<br>
> iew=diff<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/lib/Headers/x86intrin.h (original)<br>
> +++ cfe/trunk/lib/Headers/x86intrin.h Wed Jun 17 02:09:32 2015<br>
> @@ -28,53 +28,29 @@<br>
><br>
> #include <immintrin.h><br>
><br>
> -#ifdef __3dNOW__<br>
> #include <mm3dnow.h><br>
> -#endif<br>
><br>
> -#ifdef __BMI__<br>
> #include <bmiintrin.h><br>
> -#endif<br>
><br>
> -#ifdef __BMI2__<br>
> #include <bmi2intrin.h><br>
> -#endif<br>
><br>
> -#ifdef __LZCNT__<br>
> #include <lzcntintrin.h><br>
> -#endif<br>
><br>
> -#ifdef __POPCNT__<br>
> #include <popcntintrin.h><br>
> -#endif<br>
><br>
> -#ifdef __RDSEED__<br>
> #include <rdseedintrin.h><br>
> -#endif<br>
><br>
> -#ifdef __PRFCHW__<br>
> #include <prfchwintrin.h><br>
> -#endif<br>
><br>
> -#ifdef __SSE4A__<br>
> #include <ammintrin.h><br>
> -#endif<br>
><br>
> -#ifdef __FMA4__<br>
> #include <fma4intrin.h><br>
> -#endif<br>
><br>
> -#ifdef __XOP__<br>
> #include <xopintrin.h><br>
> -#endif<br>
><br>
> -#ifdef __TBM__<br>
> #include <tbmintrin.h><br>
> -#endif<br>
><br>
> -#ifdef __F16C__<br>
> #include <f16cintrin.h><br>
> -#endif<br>
><br>
> /* FIXME: LWP */<br>
><br>
><br>
> Modified: cfe/trunk/lib/Headers/xmmintrin.h<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/lib/Headers/xmmintrin.h?rev=239883&r1=239882&r2=239883&v<br>
> iew=diff<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/lib/Headers/xmmintrin.h (original)<br>
> +++ cfe/trunk/lib/Headers/xmmintrin.h Wed Jun 17 02:09:32 2015<br>
> @@ -24,10 +24,6 @@<br>
> #ifndef __XMMINTRIN_H<br>
> #define __XMMINTRIN_H<br>
><br>
> -#ifndef __SSE__<br>
> -#error "SSE instruction set not enabled"<br>
> -#else<br>
> -<br>
> #include <mmintrin.h><br>
><br>
> typedef int __v4si __attribute__((__vector_size__(16)));<br>
> @@ -41,7 +37,7 @@ typedef float __m128 __attribute__((__ve<br>
> #endif<br>
><br>
> /* Define the default attributes for the functions in this file. */<br>
> -#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))<br>
> +#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__,<br>
> __target__("sse")))<br>
><br>
> static __inline__ __m128 DEFAULT_FN_ATTRS<br>
> _mm_add_ss(__m128 __a, __m128 __b)<br>
> @@ -1003,6 +999,4 @@ do { \<br>
> #include <emmintrin.h><br>
> #endif<br>
><br>
> -#endif /* __SSE__ */<br>
> -<br>
> #endif /* __XMMINTRIN_H */<br>
><br>
> Modified: cfe/trunk/lib/Headers/xopintrin.h<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/lib/Headers/xopintrin.h?rev=239883&r1=239882&r2=239883&v<br>
> iew=diff<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/lib/Headers/xopintrin.h (original)<br>
> +++ cfe/trunk/lib/Headers/xopintrin.h Wed Jun 17 02:09:32 2015<br>
> @@ -28,14 +28,10 @@<br>
> #ifndef __XOPINTRIN_H<br>
> #define __XOPINTRIN_H<br>
><br>
> -#ifndef __XOP__<br>
> -# error "XOP instruction set is not enabled"<br>
> -#else<br>
> -<br>
> #include <fma4intrin.h><br>
><br>
> /* Define the default attributes for the functions in this file. */<br>
> -#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))<br>
> +#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__,<br>
> __target__("xop")))<br>
><br>
> static __inline__ __m128i DEFAULT_FN_ATTRS<br>
> _mm_maccs_epi16(__m128i __A, __m128i __B, __m128i __C)<br>
> @@ -804,6 +800,4 @@ _mm256_frcz_pd(__m256d __A)<br>
><br>
> #undef DEFAULT_FN_ATTRS<br>
><br>
> -#endif /* __XOP__ */<br>
> -<br>
> #endif /* __XOPINTRIN_H */<br>
><br>
> Added: cfe/trunk/test/Headers/pmmintrin.c<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/test/Headers/pmmintrin.c?rev=239883&view=auto<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/test/Headers/pmmintrin.c (added)<br>
> +++ cfe/trunk/test/Headers/pmmintrin.c Wed Jun 17 02:09:32 2015<br>
> @@ -0,0 +1,12 @@<br>
> +// RUN: %clang_cc1 -fsyntax-only -ffreestanding %s -verify<br>
> +// RUN: %clang_cc1 -fsyntax-only -ffreestanding -x c++ %s -verify<br>
> +// expected-no-diagnostics<br>
> +<br>
> +#if defined(i386) || defined(__x86_64__)<br>
> +#include <pmmintrin.h><br>
> +<br>
> +int __attribute__((__target__(("sse3")))) foo(int a) {<br>
> + _mm_mwait(0, 0);<br>
> + return 4;<br>
> +}<br>
> +#endif<br>
><br>
> Added: cfe/trunk/test/Headers/x86intrin-2.c<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_test_Headers_x86intrin-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=3_co_dOUj3HQP7SHzPWU2DWcA4qzbm-9VeR7cK1Eteo&e=" target="_blank">
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Headers/x86intrin-</a><br>
> 2.c?rev=239883&view=auto<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/test/Headers/x86intrin-2.c (added)<br>
> +++ cfe/trunk/test/Headers/x86intrin-2.c Wed Jun 17 02:09:32 2015<br>
> @@ -0,0 +1,131 @@<br>
> +// RUN: %clang_cc1 -fsyntax-only -ffreestanding %s -verify<br>
> +// RUN: %clang_cc1 -fsyntax-only -ffreestanding -fno-lax-vector-<br>
> conversions %s -verify<br>
> +// RUN: %clang_cc1 -fsyntax-only -ffreestanding -x c++ %s -verify<br>
> +// expected-no-diagnostics<br>
> +<br>
> +#if defined(i386) || defined(__x86_64__)<br>
> +<br>
> +// Include the metaheader that includes all x86 intrinsic headers.<br>
> +#include <x86intrin.h><br>
> +<br>
> +void __attribute__((__target__("mmx"))) mm_empty_wrap(void) {<br>
> + _mm_empty();<br>
> +}<br>
> +<br>
> +__m128 __attribute__((__target__("sse"))) mm_add_ss_wrap(__m128 a, __m128<br>
> b) {<br>
> + return _mm_add_ss(a, b);<br>
> +}<br>
> +<br>
> +__m128d __attribute__((__target__("sse2"))) mm_sqrt_sd_wrap(__m128d a,<br>
> __m128d b) {<br>
> + return _mm_sqrt_sd(a, b);<br>
> +}<br>
> +<br>
> +void __attribute__((__target__("sse3"))) mm_mwait_wrap(int a) {<br>
> + _mm_mwait(0, 0);<br>
> +}<br>
> +<br>
> +__m64 __attribute__((__target__("ssse3"))) mm_abs_pi8_wrap(__m64 a) {<br>
> + return _mm_abs_pi8(a);<br>
> +}<br>
> +<br>
> +__m128i __attribute__((__target__("sse4.1")))<br>
> mm_minpos_epu16_wrap(__m128i v) {<br>
> + return _mm_minpos_epu16(v);<br>
> +}<br>
> +<br>
> +unsigned int __attribute__((__target__("sse4.2")))<br>
> mm_crc32_u8_wrap(unsigned int c, unsigned char d) {<br>
> + return _mm_crc32_u8(c, d);<br>
> +}<br>
> +<br>
> +__m128i __attribute__((__target__("aes"))) mm_aesenc_si128_wrap(__m128i<br>
> v, __m128i r) {<br>
> + return _mm_aesenc_si128(v, r);<br>
> +}<br>
> +<br>
> +__m256d __attribute__((__target__("avx"))) mm256_add_pd_wrap(__m256d a,<br>
> __m256d b) {<br>
> + return _mm256_add_pd(a, b);<br>
> +}<br>
> +<br>
> +__m256i __attribute__((__target__("avx2"))) mm256_abs_epi8_wrap(__m256i<br>
> a) {<br>
> + return _mm256_abs_epi8(a);<br>
> +}<br>
> +<br>
> +unsigned short __attribute__((__target__("bmi"))) tzcnt_u16_wrap(unsigned<br>
> short x) {<br>
> + return __tzcnt_u16(x);<br>
> +}<br>
> +<br>
> +unsigned int __attribute__((__target__("bmi2"))) bzhi_u32_wrap(unsigned<br>
> int x, unsigned int y) {<br>
> + return _bzhi_u32(x, y);<br>
> +}<br>
> +<br>
> +unsigned short __attribute__((__target__("lzcnt"))) lzcnt16_wrap(unsigned<br>
> short x) {<br>
> + return __lzcnt16(x);<br>
> +}<br>
> +<br>
> +__m256d __attribute__((__target__("fma"))) mm256_fmsubadd_pd_wrap(__m256d<br>
> a, __m256d b, __m256d c) {<br>
> + return _mm256_fmsubadd_pd(a, b, c);<br>
> +}<br>
> +<br>
> +__m512i __attribute__((__target__("avx512f")))<br>
> mm512_setzero_si512_wrap(void) {<br>
> + return _mm512_setzero_si512();<br>
> +}<br>
> +<br>
> +__mmask8 __attribute__((__target__("avx512vl")))<br>
> mm_cmpeq_epi32_mask_wrap(__m128i a, __m128i b) {<br>
> + return _mm_cmpeq_epi32_mask(a, b);<br>
> +}<br>
> +<br>
> +__v64qi __attribute__((__target__("avx512bw")))<br>
> mm512_setzero_qi_wrap(void) {<br>
> + return _mm512_setzero_qi();<br>
> +}<br>
> +<br>
> +__m512i __attribute__((__target__("avx512dq")))<br>
> mm512_mullo_epi64_wrap(__m512i a, __m512i b) {<br>
> + return _mm512_mullo_epi64(a, b);<br>
> +}<br>
> +<br>
> +__mmask16 __attribute__((__target__("avx512vl,avx512bw")))<br>
> mm_cmpeq_epi8_mask_wrap(__m128i a, __m128i b) {<br>
> + return _mm_cmpeq_epi8_mask(a, b);<br>
> +}<br>
> +<br>
> +__m256i __attribute__((__target__("avx512vl,avx512dq")))<br>
> mm256_mullo_epi64_wrap(__m256i a, __m256i b) {<br>
> + return _mm256_mullo_epi64(a, b);<br>
> +}<br>
> +<br>
> +int __attribute__((__target__("rdrnd"))) rdrand16_step_wrap(unsigned<br>
> short *p) {<br>
> + return _rdrand16_step(p);<br>
> +}<br>
> +<br>
> +unsigned int __attribute__((__target__("fsgsbase")))<br>
> readfsbase_u32_wrap(void) {<br>
> + return _readfsbase_u32();<br>
> +}<br>
> +<br>
> +unsigned int __attribute__((__target__("rtm"))) xbegin_wrap(void) {<br>
> + return _xbegin();<br>
> +}<br>
> +<br>
> +__m128i __attribute__((__target__("sha")))<br>
> mm_sha1nexte_epu32_wrap(__m128i x, __m128i y) {<br>
> + return _mm_sha1nexte_epu32(x, y);<br>
> +}<br>
> +<br>
> +int __attribute__((__target__("rdseed"))) rdseed16_step_wrap(unsigned<br>
> short *p) {<br>
> + return _rdseed16_step(p);<br>
> +}<br>
> +<br>
> +__m128i __attribute__((__target__("sse4a"))) mm_extract_si64_wrap(__m128i<br>
> x, __m128i y) {<br>
> + return _mm_extract_si64(x, y);<br>
> +}<br>
> +<br>
> +__m128 __attribute__((__target__("fma4"))) mm_macc_ps_wrap(__m128 a,<br>
> __m128 b, __m128 c) {<br>
> + return _mm_macc_ps(a, b, c);<br>
> +}<br>
> +<br>
> +__m256 __attribute__((__target__("xop"))) mm256_frcz_ps_wrap(__m256 a) {<br>
> + return _mm256_frcz_ps(a);<br>
> +}<br>
> +<br>
> +unsigned int __attribute__((__target__("tbm"))) blcfill_u32_wrap(unsigned<br>
> int a) {<br>
> + return __blcfill_u32(a);<br>
> +}<br>
> +<br>
> +__m128 __attribute__((__target__("f16c"))) mm_cvtph_ps_wrap(__m128i a) {<br>
> + return _mm_cvtph_ps(a);<br>
> +}<br>
> +<br>
> +#endif<br>
><br>
> Modified: cfe/trunk/test/Headers/x86intrin.c<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2D&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=cguIHjuPDQxRh-0ZyKxBShyQDWXzeKWQe3AXoa6GFoM&s=_L4-99CnFfYqXHlPQtXEeiyY9h91VS5GthukBMQNSl8&e=" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/cfe/trunk/test/Headers/x86intrin.c?rev=239883&r1=239882&r2=239883&<br>
> view=diff<br>
> ==========================================================================<br>
> ====<br>
> --- cfe/trunk/test/Headers/x86intrin.c (original)<br>
> +++ cfe/trunk/test/Headers/x86intrin.c Wed Jun 17 02:09:32 2015<br>
> @@ -5,126 +5,7 @@<br>
><br>
> #if defined(i386) || defined(__x86_64__)<br>
><br>
> -// Pretend to enable all features.<br>
> -#ifndef __3dNOW__<br>
> -#define __3dNOW__<br>
> -#endif<br>
> -#ifndef __BMI__<br>
> -#define __BMI__<br>
> -#endif<br>
> -#ifndef __BMI2__<br>
> -#define __BMI2__<br>
> -#endif<br>
> -#ifndef __LZCNT__<br>
> -#define __LZCNT__<br>
> -#endif<br>
> -#ifndef __POPCNT__<br>
> -#define __POPCNT__<br>
> -#endif<br>
> -#ifndef __RDSEED__<br>
> -#define __RDSEED__<br>
> -#endif<br>
> -#ifndef __PRFCHW__<br>
> -#define __PRFCHW__<br>
> -#endif<br>
> -#ifndef __SSE4A__<br>
> -#define __SSE4A__<br>
> -#endif<br>
> -#ifndef __FMA4__<br>
> -#define __FMA4__<br>
> -#endif<br>
> -#ifndef __XOP__<br>
> -#define __XOP__<br>
> -#endif<br>
> -#ifndef __F16C__<br>
> -#define __F16C__<br>
> -#endif<br>
> -#ifndef __MMX__<br>
> -#define __MMX__<br>
> -#endif<br>
> -#ifndef __SSE__<br>
> -#define __SSE__<br>
> -#endif<br>
> -#ifndef __SSE2__<br>
> -#define __SSE2__<br>
> -#endif<br>
> -#ifndef __SSE3__<br>
> -#define __SSE3__<br>
> -#endif<br>
> -#ifndef __SSSE3__<br>
> -#define __SSSE3__<br>
> -#endif<br>
> -#ifndef __SSE4_1__<br>
> -#define __SSE4_1__<br>
> -#endif<br>
> -#ifndef __SSE4_2__<br>
> -#define __SSE4_2__<br>
> -#endif<br>
> -#ifndef __AES__<br>
> -#define __AES__<br>
> -#endif<br>
> -#ifndef __AVX__<br>
> -#define __AVX__<br>
> -#endif<br>
> -#ifndef __AVX2__<br>
> -#define __AVX2__<br>
> -#endif<br>
> -#ifndef __BMI__<br>
> -#define __BMI__<br>
> -#endif<br>
> -#ifndef __BMI2__<br>
> -#define __BMI2__<br>
> -#endif<br>
> -#ifndef __LZCNT__<br>
> -#define __LZCNT__<br>
> -#endif<br>
> -#ifndef __FMA__<br>
> -#define __FMA__<br>
> -#endif<br>
> -#ifndef __RDRND__<br>
> -#define __RDRND__<br>
> -#endif<br>
> -#ifndef __SHA__<br>
> -#define __SHA__<br>
> -#endif<br>
> -#ifndef __ADX__<br>
> -#define __ADX__<br>
> -#endif<br>
> -#ifndef __TBM__<br>
> -#define __TBM__<br>
> -#endif<br>
> -#ifndef __RTM__<br>
> -#define __RTM__<br>
> -#endif<br>
> -#ifndef __PCLMUL__<br>
> -#define __PCLMUL__<br>
> -#endif<br>
> -#ifndef __FSGSBASE__<br>
> -#define __FSGSBASE__<br>
> -#endif<br>
> -#ifndef __AVX512F__<br>
> -#define __AVX512F__<br>
> -#endif<br>
> -#ifndef __AVX512VL__<br>
> -#define __AVX512VL__<br>
> -#endif<br>
> -#ifndef __AVX512BW__<br>
> -#define __AVX512BW__<br>
> -#endif<br>
> -#ifndef __AVX512ER__<br>
> -#define __AVX512ER__<br>
> -#endif<br>
> -#ifndef __AVX512PF__<br>
> -#define __AVX512PF__<br>
> -#endif<br>
> -#ifndef __AVX512DQ__<br>
> -#define __AVX512DQ__<br>
> -#endif<br>
> -#ifndef __AVX512CD__<br>
> -#define __AVX512CD__<br>
> -#endif<br>
> -<br>
> -// Now include the metaheader that includes all x86 intrinsic headers.<br>
> +// Include the metaheader that includes all x86 intrinsic headers.<br>
> #include <x86intrin.h><br>
><br>
> #endif<br>
><br>
><br>
> _______________________________________________<br>
> cfe-commits mailing list<br>
> <a href="mailto:cfe-commits@cs.uiuc.edu" target="_blank">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><u></u><u></u></p>
</blockquote>
</div>
</div>
</div></div></div></blockquote></div></div></div>