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

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



Actually I have a small comment inline.

Vlad

On 6/12/19 4:15 PM, 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 | 21 +++++++++++++++++++++
>   2 files changed, 21 insertions(+), 9 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..2dfa4d5 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
> +

Those macros should be already defined in the previous commit[1]. After 
applying this patch we end up with them defined twice.

[1] 
xenbits.xen.org/gitweb/?p=unikraft/libs/intel-intrinsics.git;a=blob;f=include/xmmintrin.h;h=e2543a779e07a283057f4fcbe45a2acd10f62cc4;hb=4dcfbc1f5e79a0e38f8c0bb60520ada6bf484eac

>   
>   typedef int __v4si __attribute__((__vector_size__(16)));
>   typedef float __v4sf __attribute__((__vector_size__(16)));
> @@ -3086,6 +3095,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®.