<div dir="ltr">Can you define these in lib/Headers/Intrin.h?  See the existing prototypes for __readeflags etc.</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Dec 24, 2013 at 3:09 AM, Alexey Volkov <span dir="ltr"><<a href="mailto:avolkov.intel@gmail.com" target="_blank">avolkov.intel@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi all,<br>
<br>
This patch implements __readeflags and __writeeflags intrinsics for x86 arch.<br>
<br>
Alexey Volkov<br>
Intel Corporation<br>
<br>
<a href="http://llvm-reviews.chandlerc.com/D2468" target="_blank">http://llvm-reviews.chandlerc.com/D2468</a><br>
<br>
Files:<br>
  lib/Headers/immintrin.h<br>
<br>
Index: lib/Headers/immintrin.h<br>
===================================================================<br>
--- lib/Headers/immintrin.h<br>
+++ lib/Headers/immintrin.h<br>
@@ -115,4 +115,58 @@<br>
 #include <shaintrin.h><br>
 #endif<br>
<br>
+/* These intrinsics are defined in Intrin.h on Windows. */<br>
+#ifndef _MSC_VER<br>
+#ifdef __x86_64__<br>
+static __inline__ unsigned long long __attribute__((__always_inline__, __nodebug__))<br>
+__readeflags(void)<br>
+{<br>
+  unsigned long long res = 0;<br>
+  __asm__ __volatile__ ("pushf\n\t"<br>
+                        "popq %0\n"<br>
+                        :"=r"(res)<br>
+                        :<br>
+                        :<br>
+                       );<br>
+  return res;<br>
+}<br>
+<br>
+static __inline__ void __attribute__((__always_inline__, __nodebug__))<br>
+__writeeflags(unsigned long long __f)<br>
+{<br>
+  __asm__ __volatile__ ("pushq %0\n\t"<br>
+                        "popf\n"<br>
+                        :<br>
+                        :"r"(__f)<br>
+                        :"flags"<br>
+                       );<br>
+}<br>
+<br>
+#else<br>
+static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__))<br>
+__readeflags(void)<br>
+{<br>
+  unsigned int res = 0;<br>
+  __asm__ __volatile__ ("pushf\n\t"<br>
+                        "popl %0\n"<br>
+                        :"=r"(res)<br>
+                        :<br>
+                        :<br>
+                       );<br>
+  return res;<br>
+}<br>
+<br>
+static __inline__ void __attribute__((__always_inline__, __nodebug__))<br>
+__writeeflags(unsigned int __f)<br>
+{<br>
+  __asm__ __volatile__ ("pushl %0\n\t"<br>
+                        "popf\n"<br>
+                        :<br>
+                        :"r"(__f)<br>
+                        :"flags"<br>
+                       );<br>
+}<br>
+#endif<br>
+#endif /* _MSC_VER */<br>
+<br>
 #endif /* __IMMINTRIN_H */<br>
<br>_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
<br></blockquote></div><br></div>