So why are you wanting to make Intrin.h non-windows? Is there a version of Intrin.h that's cross platform?
-eric On Mon, Dec 30, 2013 at 5:35 AM, Alexey Volkov <[email protected]> wrote: > I moved intrinsics to Intrin.h into non-Windows section since Windows part > of header cannot be compiled on Linux. > I also removed include_next directive for Linux. > > http://llvm-reviews.chandlerc.com/D2468 > > CHANGE SINCE LAST DIFF > http://llvm-reviews.chandlerc.com/D2468?vs=6263&id=6313#toc > > Files: > lib/Headers/Intrin.h > > Index: lib/Headers/Intrin.h > =================================================================== > --- lib/Headers/Intrin.h > +++ lib/Headers/Intrin.h > @@ -21,17 +21,65 @@ > > *===-----------------------------------------------------------------------=== > */ > > -/* Only include this if we're compiling for the windows platform. */ > -#ifndef _MSC_VER > -#include_next <Intrin.h> > -#else > - > #ifndef __INTRIN_H > #define __INTRIN_H > > /* First include the standard intrinsics. */ > #include <x86intrin.h> > > +#ifndef _MSC_VER > +#ifdef __x86_64__ > +static __inline__ unsigned long long __attribute__((__always_inline__, > __nodebug__)) > +__readeflags(void) > +{ > + unsigned long long res = 0; > + __asm__ __volatile__ ("pushf\n\t" > + "popq %0\n" > + :"=r"(res) > + : > + : > + ); > + return res; > +} > + > +static __inline__ void __attribute__((__always_inline__, __nodebug__)) > +__writeeflags(unsigned long long __f) > +{ > + __asm__ __volatile__ ("pushq %0\n\t" > + "popf\n" > + : > + :"r"(__f) > + :"flags" > + ); > +} > + > +#else > +static __inline__ unsigned int __attribute__((__always_inline__, > __nodebug__)) > +__readeflags(void) > +{ > + unsigned int res = 0; > + __asm__ __volatile__ ("pushf\n\t" > + "popl %0\n" > + :"=r"(res) > + : > + : > + ); > + return res; > +} > + > +static __inline__ void __attribute__((__always_inline__, __nodebug__)) > +__writeeflags(unsigned int __f) > +{ > + __asm__ __volatile__ ("pushl %0\n\t" > + "popf\n" > + : > + :"r"(__f) > + :"flags" > + ); > +} > +#endif > +#else > + > #ifdef __cplusplus > extern "C" { > #endif > @@ -780,5 +828,5 @@ > } > #endif > > -#endif /* __INTRIN_H */ > #endif /* _MSC_VER */ > +#endif /* __INTRIN_H */ _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
