<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>