<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
.MsoPapDefault
        {mso-style-type:export-only;
        line-height:115%;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Right, will add the undef, thanks!<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">As to the name – it’s DEFAULT_FN_ATTRS throughout the header files.
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">I’ll replace it everywhere in a separate commit.<o:p></o:p></span></p>
<p class="MsoNormal"><a name="_MailEndCompose"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></a></p>
<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""> David Majnemer [mailto:david.majnemer@gmail.com]
<br>
<b>Sent:</b> Tuesday, June 30, 2015 12:54<br>
<b>To:</b> Kuperstein, Michael M<br>
<b>Cc:</b> cfe-commits@cs.uiuc.edu<br>
<b>Subject:</b> Re: r241053 - [X86] Add FXSR intrinsics<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal" style="line-height:115%"><o:p> </o:p></p>
<div>
<p class="MsoNormal" style="line-height:115%"><o:p> </o:p></p>
<div>
<p class="MsoNormal" style="line-height:115%">On Tue, Jun 30, 2015 at 2:45 AM, Michael Kuperstein <<a href="mailto:michael.m.kuperstein@intel.com" target="_blank">michael.m.kuperstein@intel.com</a>> wrote:<o:p></o:p></p>
<p class="MsoNormal" style="line-height:115%">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=AwMGaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=gnU7TWjV5fQZrJBLRoAuUG8bCfhXykml29LJxIShA18&s=OIoS2HPxNwjX0MUsfx7IivYH4FM7IHuAfOkN-DQmJyM&e=" 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=AwMGaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=gnU7TWjV5fQZrJBLRoAuUG8bCfhXykml29LJxIShA18&s=73ZDD8_ehIXKXMe7ufTGe3hjy_fCMY9HcW9REn-aHVU&e=" 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=AwMGaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=gnU7TWjV5fQZrJBLRoAuUG8bCfhXykml29LJxIShA18&s=yUymfmMRwB2_BrlFVeICar3-DeblF76pycBRfzIGYEY&e=" 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=AwMGaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=gnU7TWjV5fQZrJBLRoAuUG8bCfhXykml29LJxIShA18&s=svPsJm80NUYIqtVstqwRy2iV2bvonL1GZd4hsPZ0Ups&e=" 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=AwMGaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=gnU7TWjV5fQZrJBLRoAuUG8bCfhXykml29LJxIShA18&s=lpUUiMLvuVvDv1Lcn7C-5Qd_PAWB3rWI5CVaBcYKASI&e=" 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__))<o:p></o:p></p>
<div>
<p class="MsoNormal" style="line-height:115%"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="line-height:115%">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.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="line-height:115%"> <o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<p class="MsoNormal" style="line-height:115%">+<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=AwMGaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=gnU7TWjV5fQZrJBLRoAuUG8bCfhXykml29LJxIShA18&s=c_2LZg3_eOsMOX8fUUBvAwNkT4OYyfbsNSY0tO_FIf8&e=" 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=AwMGaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=gnU7TWjV5fQZrJBLRoAuUG8bCfhXykml29LJxIShA18&s=rjeXcfhfvcvkgCkNpJaHpJFedtsvh-lMHjKbfU5orC4&e=" 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" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><o:p></o:p></p>
</blockquote>
</div>
<p class="MsoNormal" style="line-height:115%"><o:p> </o:p></p>
</div>
</div>
</div>
<p>---------------------------------------------------------------------<br>
Intel Israel (74) Limited</p>

<p>This e-mail and any attachments may contain confidential material for<br>
the sole use of the intended recipient(s). Any review or distribution<br>
by others is strictly prohibited. If you are not the intended<br>
recipient, please contact the sender and delete all copies.</p></body>
</html>