From 693cda4719bb0ab9765fd740e6bd684657ec4fe3 Mon Sep 17 00:00:00 2001 From: Martin Reinecke Date: Thu, 8 Aug 2013 12:59:07 +0200 Subject: [PATCH] more MIC stuff --- libsharp/sharp_complex_hacks.h | 16 +++++++++++++++- libsharp/sharp_vecsupport.h | 3 +-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/libsharp/sharp_complex_hacks.h b/libsharp/sharp_complex_hacks.h index 70f8ffb..9227ca9 100644 --- a/libsharp/sharp_complex_hacks.h +++ b/libsharp/sharp_complex_hacks.h @@ -25,7 +25,7 @@ /* \file sharp_complex_hacks.h * support for converting vector types and complex numbers * - * Copyright (C) 2012 Max-Planck-Society + * Copyright (C) 2012,2013 Max-Planck-Society * Author: Martin Reinecke */ @@ -132,4 +132,18 @@ static inline void vhsum_cmplx2 (Tv a, Tv b, Tv c, Tv d, #endif +#if (VLEN==8) + +static inline complex double vhsum_cmplx(Tv a, Tv b) + { return _mm512_reduce_add_pd(a)+_Complex_I*_mm512_reduce_add_pd(b); } + +static inline void vhsum_cmplx2 (Tv a, Tv b, Tv c, Tv d, + complex double * restrict c1, complex double * restrict c2) + { + *c1 += _mm512_reduce_add_pd(a)+_Complex_I*_mm512_reduce_add_pd(b); + *c2 += _mm512_reduce_add_pd(c)+_Complex_I*_mm512_reduce_add_pd(d); + } + +#endif + #endif diff --git a/libsharp/sharp_vecsupport.h b/libsharp/sharp_vecsupport.h index 81fec5b..e4b777d 100644 --- a/libsharp/sharp_vecsupport.h +++ b/libsharp/sharp_vecsupport.h @@ -209,8 +209,7 @@ typedef __mmask8 Tm; #define vgt(a,b) _mm512_cmp_pd_mask(a,b,_CMP_GT_OQ) #define vge(a,b) _mm512_cmp_pd_mask(a,b,_CMP_GE_OQ) #define vne(a,b) _mm512_cmp_pd_mask(a,b,_CMP_NEQ_OQ) -#define vand(a,b) (__m512d)_mm512_and_epi64((__m512i)a,(__m512i)b) -#define vor(a,b) (__m512d)_mm512_or_epi64((__m512i)a,(__m512i)b) +#define vand_mask(a,b) ((a)&(b)) #define vmin(a,b) _mm512_min_pd(a,b) #define vmax(a,b) _mm512_max_pd(a,b) #define vanyTrue(a) (a!=0)