<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jun 30, 2015 at 2:45 AM, Michael Kuperstein <span dir="ltr"><<a href="mailto:michael.m.kuperstein@intel.com" target="_blank">michael.m.kuperstein@intel.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Author: mkuper<br>
Date: Tue Jun 30 04:45:38 2015<br>
New Revision: 241053<br>
<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D241053-26view-3Drev&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=SQmsB-88CherDR5NN0xRLF4vvLLtj0DSrCSZi7p38FM&s=qCYte_K9bpGVYhQq_vnQ7BMxF8E_JTeigqtTxYSi-pg&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=241053&view=rev</a><br>
Log:<br>
[X86] Add FXSR intrinsics<br>
<br>
Add intrinsics for the FXSR instructions (FXSAVE/FXSAVE64/FXRSTOR/FXRSTOR64)<br>
<br>
These were previously declared in Intrin.h for MSVC compatibility, but now<br>
that we have them implemented, these declarations can be removed.<br>
<br>
Added:<br>
    cfe/trunk/lib/Headers/fxsrintrin.h   (with props)<br>
Modified:<br>
    cfe/trunk/include/clang/Basic/BuiltinsX86.def<br>
    cfe/trunk/lib/Headers/CMakeLists.txt<br>
    cfe/trunk/lib/Headers/Intrin.h<br>
    cfe/trunk/lib/Headers/immintrin.h<br>
    cfe/trunk/test/CodeGen/builtins-x86.c<br>
<br>
Modified: cfe/trunk/include/clang/Basic/BuiltinsX86.def<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_include_clang_Basic_BuiltinsX86.def-3Frev-3D241053-26r1-3D241052-26r2-3D241053-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=SQmsB-88CherDR5NN0xRLF4vvLLtj0DSrCSZi7p38FM&s=M5KrG2_eg3L0QxfRbUFgStEvWc3V5DE9-fQdtW_0jm0&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsX86.def?rev=241053&r1=241052&r2=241053&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/include/clang/Basic/BuiltinsX86.def (original)<br>
+++ cfe/trunk/include/clang/Basic/BuiltinsX86.def Tue Jun 30 04:45:38 2015<br>
@@ -656,6 +656,12 @@ BUILTIN(__builtin_ia32_wrfsbase64, "vULL<br>
 BUILTIN(__builtin_ia32_wrgsbase32, "vUi", "")<br>
 BUILTIN(__builtin_ia32_wrgsbase64, "vULLi", "")<br>
<br>
+// FXSR<br>
+BUILTIN(__builtin_ia32_fxrstor, "vv*", "")<br>
+BUILTIN(__builtin_ia32_fxrstor64, "vv*", "")<br>
+BUILTIN(__builtin_ia32_fxsave, "vv*", "")<br>
+BUILTIN(__builtin_ia32_fxsave64, "vv*", "")<br>
+<br>
 // ADX<br>
 BUILTIN(__builtin_ia32_addcarryx_u32, "UcUcUiUiUi*", "")<br>
 BUILTIN(__builtin_ia32_addcarryx_u64, "UcUcULLiULLiULLi*", "")<br>
<br>
Modified: cfe/trunk/lib/Headers/CMakeLists.txt<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Headers_CMakeLists.txt-3Frev-3D241053-26r1-3D241052-26r2-3D241053-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=SQmsB-88CherDR5NN0xRLF4vvLLtj0DSrCSZi7p38FM&s=PLqXBB1dMCqwSDjCYmvgYrl5WEvrgNxeQJFcKMya_Lg&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/CMakeLists.txt?rev=241053&r1=241052&r2=241053&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/Headers/CMakeLists.txt (original)<br>
+++ cfe/trunk/lib/Headers/CMakeLists.txt Tue Jun 30 04:45:38 2015<br>
@@ -22,6 +22,7 @@ set(files<br>
   float.h<br>
   fma4intrin.h<br>
   fmaintrin.h<br>
+  fxsrintrin.h<br>
   htmintrin.h<br>
   htmxlintrin.h<br>
   ia32intrin.h<br>
<br>
Modified: cfe/trunk/lib/Headers/Intrin.h<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Headers_Intrin.h-3Frev-3D241053-26r1-3D241052-26r2-3D241053-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=SQmsB-88CherDR5NN0xRLF4vvLLtj0DSrCSZi7p38FM&s=toWl0O5X5d_8Fg3nHVP22JN8R2vU4HqZeAgpO-1zatI&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/Intrin.h?rev=241053&r1=241052&r2=241053&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/Headers/Intrin.h (original)<br>
+++ cfe/trunk/lib/Headers/Intrin.h Tue Jun 30 04:45:38 2015<br>
@@ -180,8 +180,6 @@ unsigned long __cdecl _byteswap_ulong(un<br>
 unsigned short __cdecl _byteswap_ushort(unsigned short);<br>
 void __cdecl _disable(void);<br>
 void __cdecl _enable(void);<br>
-void __cdecl _fxrstor(void const *);<br>
-void __cdecl _fxsave(void *);<br>
 long _InterlockedAddLargeStatistic(__int64 volatile *_Addend, long _Value);<br>
 static __inline__<br>
 long _InterlockedAnd(long volatile *_Value, long _Mask);<br>
@@ -358,8 +356,6 @@ unsigned char _bittestandreset64(__int64<br>
 static __inline__<br>
 unsigned char _bittestandset64(__int64 *, __int64);<br>
 unsigned __int64 __cdecl _byteswap_uint64(unsigned __int64);<br>
-void __cdecl _fxrstor64(void const *);<br>
-void __cdecl _fxsave64(void *);<br>
 long _InterlockedAnd_np(long volatile *_Value, long _Mask);<br>
 short _InterlockedAnd16_np(short volatile *_Value, short _Mask);<br>
 __int64 _InterlockedAnd64_np(__int64 volatile *_Value, __int64 _Mask);<br>
<br>
Added: cfe/trunk/lib/Headers/fxsrintrin.h<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Headers_fxsrintrin.h-3Frev-3D241053-26view-3Dauto&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=SQmsB-88CherDR5NN0xRLF4vvLLtj0DSrCSZi7p38FM&s=oH5xar35F3Q-I6qbZZGMKyDor3kmz-NkrhAUDsKg8NU&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/fxsrintrin.h?rev=241053&view=auto</a><br>
==============================================================================<br>
--- cfe/trunk/lib/Headers/fxsrintrin.h (added)<br>
+++ cfe/trunk/lib/Headers/fxsrintrin.h Tue Jun 30 04:45:38 2015<br>
@@ -0,0 +1,53 @@<br>
+/*===---- fxsrintrin.h - FXSR intrinsic ------------------------------------===<br>
+ *<br>
+ * Permission is hereby granted, free of charge, to any person obtaining a copy<br>
+ * of this software and associated documentation files (the "Software"), to deal<br>
+ * in the Software without restriction, including without limitation the rights<br>
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell<br>
+ * copies of the Software, and to permit persons to whom the Software is<br>
+ * furnished to do so, subject to the following conditions:<br>
+ *<br>
+ * The above copyright notice and this permission notice shall be included in<br>
+ * all copies or substantial portions of the Software.<br>
+ *<br>
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR<br>
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,<br>
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE<br>
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER<br>
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,<br>
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN<br>
+ * THE SOFTWARE.<br>
+ *<br>
+ *===-----------------------------------------------------------------------===<br>
+ */<br>
+<br>
+#ifndef __IMMINTRIN_H<br>
+#error "Never use <fxsrintrin.h> directly; include <immintrin.h> instead."<br>
+#endif<br>
+<br>
+#ifndef __FXSRINTRIN_H<br>
+#define __FXSRINTRIN_H<br>
+<br>
+#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))<br></blockquote><div><br></div><div>I think you need to name this __DEFAULT_FN_ATTRS as DEFAULT_FN_ATTRS is not in the implementors namespace.  Also, it looks like the other header files undef it once they are done using it.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
+<br>
+static __inline__ void DEFAULT_FN_ATTRS<br>
+_fxsave(void *__p) {<br>
+  return __builtin_ia32_fxsave(__p);<br>
+}<br>
+<br>
+static __inline__ void DEFAULT_FN_ATTRS<br>
+_fxsave64(void *__p) {<br>
+  return __builtin_ia32_fxsave64(__p);<br>
+}<br>
+<br>
+static __inline__ void DEFAULT_FN_ATTRS<br>
+_fxrstor(void *__p) {<br>
+  return __builtin_ia32_fxrstor(__p);<br>
+}<br>
+<br>
+static __inline__ void DEFAULT_FN_ATTRS<br>
+_fxrstor64(void *__p) {<br>
+  return __builtin_ia32_fxrstor64(__p);<br>
+}<br>
+<br>
+#endif<br>
<br>
Propchange: cfe/trunk/lib/Headers/fxsrintrin.h<br>
------------------------------------------------------------------------------<br>
    svn:eol-style = native<br>
<br>
Propchange: cfe/trunk/lib/Headers/fxsrintrin.h<br>
------------------------------------------------------------------------------<br>
    svn:keywords = Author Date Id Rev URL<br>
<br>
Propchange: cfe/trunk/lib/Headers/fxsrintrin.h<br>
------------------------------------------------------------------------------<br>
    svn:mime-type = text/plain<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-2Dproject_cfe_trunk_lib_Headers_immintrin.h-3Frev-3D241053-26r1-3D241052-26r2-3D241053-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=SQmsB-88CherDR5NN0xRLF4vvLLtj0DSrCSZi7p38FM&s=38qA0EAKxLFJuRoUJQ21B5CqHr7lxYr6cZANx_eBZV4&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/immintrin.h?rev=241053&r1=241052&r2=241053&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/Headers/immintrin.h (original)<br>
+++ cfe/trunk/lib/Headers/immintrin.h Tue Jun 30 04:45:38 2015<br>
@@ -142,6 +142,8 @@ _writegsbase_u64(unsigned long long __V)<br>
<br>
 #include <shaintrin.h><br>
<br>
+#include <fxsrintrin.h><br>
+<br>
 /* Some intrinsics inside adxintrin.h are available only on processors with ADX,<br>
  * whereas others are also available at all times. */<br>
 #include <adxintrin.h><br>
<br>
Modified: cfe/trunk/test/CodeGen/builtins-x86.c<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_test_CodeGen_builtins-2Dx86.c-3Frev-3D241053-26r1-3D241052-26r2-3D241053-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=SQmsB-88CherDR5NN0xRLF4vvLLtj0DSrCSZi7p38FM&s=WC0aR6bNWhCquDXOl2l68JwKClZ-xkn6JWGkuS83WRo&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/builtins-x86.c?rev=241053&r1=241052&r2=241053&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/CodeGen/builtins-x86.c (original)<br>
+++ cfe/trunk/test/CodeGen/builtins-x86.c Tue Jun 30 04:45:38 2015<br>
@@ -260,6 +260,10 @@ void f0() {<br>
<br>
   (void) __builtin_ia32_ldmxcsr(tmp_Ui);<br>
   tmp_Ui = __builtin_ia32_stmxcsr();<br>
+  (void)__builtin_ia32_fxsave(tmp_vp);<br>
+  (void)__builtin_ia32_fxsave64(tmp_vp);<br>
+  (void)__builtin_ia32_fxrstor(tmp_vp);<br>
+  (void)__builtin_ia32_fxrstor64(tmp_vp);<br>
   tmp_V4f = __builtin_ia32_cvtpi2ps(tmp_V4f, tmp_V2i);<br>
   tmp_V2i = __builtin_ia32_cvtps2pi(tmp_V4f);<br>
   tmp_i = __builtin_ia32_cvtss2si(tmp_V4f);<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" rel="noreferrer" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
</blockquote></div><br></div></div>