From 3920874a3535c22f26b853af3c949446d7c8b89a Mon Sep 17 00:00:00 2001 From: Andrey Shishpanov Date: Tue, 2 Feb 2016 11:03:12 +0300 Subject: [PATCH] Impl. for knl-generic target (fix compfails) --- examples/intrinsics/knl.h | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/examples/intrinsics/knl.h b/examples/intrinsics/knl.h index 91db15a7..9d2d4cfe 100644 --- a/examples/intrinsics/knl.h +++ b/examples/intrinsics/knl.h @@ -3015,6 +3015,17 @@ __gather_base_offsets32_double(uint8_t *base, uint32_t scale, __vec16_i32 offset return ret; } +static FORCEINLINE __vec16_d +__gather_base_offsets64_double(uint8_t *base, uint32_t scale, __vec16_i64 offsets, + __vec16_i1 mask) { + __vec16_d ret; + ret.v_lo = _mm512_mask_i64gather_pd(_mm512_undefined_pd(), mask.lo(), + offsets.v_lo, base, scale); + ret.v_hi = _mm512_mask_i64gather_pd(_mm512_undefined_pd(), mask.hi(), + offsets.v_hi, base, scale); + return ret; +} + static FORCEINLINE __vec16_i32 __gather64_i32(__vec16_i64 addr, __vec16_i1 mask) { @@ -3144,6 +3155,17 @@ static FORCEINLINE __vec16_i32 __gather_base_offsets64_i32(uint8_t *_base, uint3 return _mm512_inserti64x4(_mm512_castsi256_si512(lo), hi, 1); } +static FORCEINLINE __vec16_i64 __gather_base_offsets64_i64(uint8_t *_base, uint32_t scale, __vec16_i64 offsets, + __vec16_i1 mask) +{ + __vec16_i64 ret; + ret.v_lo = _mm512_mask_i64gather_epi64(_mm512_undefined_epi32(), mask.lo(), + offsets.v_lo, _base, scale); + ret.v_hi = _mm512_mask_i64gather_epi64(_mm512_undefined_epi32(), mask.hi(), + offsets.v_hi, _base, scale); + return ret; +} + // scatter static FORCEINLINE void __scatter_base_offsets32_i32(uint8_t *b, uint32_t scale, __vec16_i32 offsets, __vec16_i32 val, __vec16_i1 mask)