[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Minios-devel] [UNIKRAFT/INTEL-INTRINSICS PATCH v2 1/3] Implement _mm_pause



Hey Felipe,

The patch looks great, thanks!

Vlad

Reviewed-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@xxxxxxxxxxxxxxx>


On 6/16/19 12:29 AM, Felipe Huici wrote:
> From: Sharan Santhanam <sharan.santhanam@xxxxxxxxx>
>
> Signed-off-by: Sharan Santhanam <sharan.santhanam@xxxxxxxxx>
> Signed-off-by: Felipe Huici <felipe.huici@xxxxxxxxx>
> ---
>   include/emmintrin.h |  9 ---------
>   include/xmmintrin.h | 30 +++++++++++++++++++++---------
>   2 files changed, 21 insertions(+), 18 deletions(-)
>
> diff --git a/include/emmintrin.h b/include/emmintrin.h
> index 8703b9a..c0573a1 100644
> --- a/include/emmintrin.h
> +++ b/include/emmintrin.h
> @@ -4999,15 +4999,6 @@ _mm_castsi128_pd(__m128i __a)
>   extern "C" {
>   #endif
>   
> -/// Indicates that a spin loop is being executed for the purposes of
> -///    optimizing power consumption during the loop.
> -///
> -/// \headerfile <x86intrin.h>
> -///
> -/// This intrinsic corresponds to the <c> PAUSE </c> instruction.
> -///
> -void _mm_pause(void);
> -
>   #if defined(__cplusplus)
>   } // extern "C"
>   #endif
> diff --git a/include/xmmintrin.h b/include/xmmintrin.h
> index e2543a7..0b271b3 100644
> --- a/include/xmmintrin.h
> +++ b/include/xmmintrin.h
> @@ -25,6 +25,15 @@
>   #define __XMMINTRIN_H
>   
>   #include <mmintrin.h>
> +/* Define the default attributes for the functions in this file. */
> +#ifdef  __GNUC__
> +#define __DEFAULT_FN_ATTRS __attribute__((__gnu_inline__, __always_inline__, 
> __artificial__))
> +#define __DEFAULT_FN_ATTRS_MMX __attribute__((__gnu_inline__, 
> __always_inline__, __artificial__))
> +#else
> +#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, 
> __target__("sse2"), __min_vector_width__(128)))
> +#define __DEFAULT_FN_ATTRS_MMX __attribute__((__always_inline__, 
> __nodebug__, __target__("mmx,sse2"), __min_vector_width__(64)))
> +#endif
> +
>   
>   typedef int __v4si __attribute__((__vector_size__(16)));
>   typedef float __v4sf __attribute__((__vector_size__(16)));
> @@ -39,15 +48,6 @@ typedef unsigned int __v4su 
> __attribute__((__vector_size__(16)));
>   #include <mm_malloc.h>
>   #endif
>   
> -/* Define the default attributes for the functions in this file. */
> -#ifdef  __GNUC__
> -#define __DEFAULT_FN_ATTRS __attribute__((__gnu_inline__, __always_inline__, 
> __artificial__))
> -#define __DEFAULT_FN_ATTRS_MMX __attribute__((__gnu_inline__, 
> __always_inline__, __artificial__))
> -#else
> -#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, 
> __target__("sse"), __min_vector_width__(128)))
> -#define __DEFAULT_FN_ATTRS_MMX __attribute__((__always_inline__, 
> __nodebug__, __target__("mmx,sse"), __min_vector_width__(64)))
> -#endif
> -
>   #define _MM_SHUFFLE(z, y, x, w) (((z) << 6) | ((y) << 4) | ((x) << 2) | (w))
>   
>   
> @@ -3086,6 +3086,18 @@ do { \
>   #define _m_ _mm_
>   #define _m_ _mm_
>   
> +/// Indicates that a spin loop is being executed for the purposes of
> +///    optimizing power consumption during the loop.
> +///
> +/// \headerfile <x86intrin.h>
> +///
> +/// This intrinsic corresponds to the <c> PAUSE </c> instruction.
> +///
> +static inline void __DEFAULT_FN_ATTRS _mm_pause(void)
> +{
> +     __builtin_ia32_pause();
> +}
> +
>   #undef __DEFAULT_FN_ATTRS
>   #undef __DEFAULT_FN_ATTRS_MMX
>   
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.