From 9a8782d12213195e7bf190d823116a0ce6176c28 Mon Sep 17 00:00:00 2001 From: Vsevolod Livinskiy Date: Thu, 30 Oct 2014 18:37:38 +0400 Subject: [PATCH] Fix for load/store i16 --- examples/intrinsics/knc.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/examples/intrinsics/knc.h b/examples/intrinsics/knc.h index 5055e1d4..12e63d92 100644 --- a/examples/intrinsics/knc.h +++ b/examples/intrinsics/knc.h @@ -311,6 +311,18 @@ FORCEINLINE __vec16_i8& __vec16_i8::operator=(const __vec16_i8 &o) return *this; } +FORCEINLINE __vec16_i16::__vec16_i16(const __vec16_i16 &o) +{ + for (int i=0;i<16;i++) + v[i] = o.v[i]; +} + +FORCEINLINE __vec16_i16& __vec16_i16::operator=(const __vec16_i16 &o) +{ + for (int i=0;i<16;i++) + v[i] = o.v[i]; + return *this; +} /////////////////////////////////////////////////////////////////////////// // mask ops /////////////////////////////////////////////////////////////////////////// @@ -1889,6 +1901,13 @@ __scatter_base_offsets32_i8(uint8_t *b, uint32_t scale, __vec16_i32 offsets, _MM_HINT_NONE); } +template static FORCEINLINE __vec16_i16 __load(const __vec16_i16 *p) { + return *p; +} +template static FORCEINLINE void __store(__vec16_i16 *p, __vec16_i16 v) { + *p = v; +} + static FORCEINLINE void __masked_store_i32(void *p, __vec16_i32 val, __vec16_i1 mask) { #ifdef ISPC_FORCE_ALIGNED_MEMORY _mm512_mask_store_epi32(p, mask, val.v);