Can you define these in lib/Headers/Intrin.h? See the existing prototypes for __readeflags etc.
On Tue, Dec 24, 2013 at 3:09 AM, Alexey Volkov <[email protected]>wrote: > Hi all, > > This patch implements __readeflags and __writeeflags intrinsics for x86 > arch. > > Alexey Volkov > Intel Corporation > > http://llvm-reviews.chandlerc.com/D2468 > > Files: > lib/Headers/immintrin.h > > Index: lib/Headers/immintrin.h > =================================================================== > --- lib/Headers/immintrin.h > +++ lib/Headers/immintrin.h > @@ -115,4 +115,58 @@ > #include <shaintrin.h> > #endif > > +/* These intrinsics are defined in Intrin.h on Windows. */ > +#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 > +#endif /* _MSC_VER */ > + > #endif /* __IMMINTRIN_H */ > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits > >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
