From f0a7baf340bab7c869fb99b9abddb757eca2f860 Mon Sep 17 00:00:00 2001 From: Dmitry Babokin Date: Sat, 22 Feb 2014 01:10:55 +0400 Subject: [PATCH] Remove conflicting __extract_element(__vec16_i64 ..., ...) --- examples/intrinsics/knc.h | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/examples/intrinsics/knc.h b/examples/intrinsics/knc.h index 458da458..36bc26b8 100644 --- a/examples/intrinsics/knc.h +++ b/examples/intrinsics/knc.h @@ -598,8 +598,10 @@ template <> static FORCEINLINE void __store<64>(__vec16_i32 *p, __vec16_i32 v) { // int64 /////////////////////////////////////////////////////////////////////////// -static FORCEINLINE int64_t __extract_element(__vec16_i64 v, uint32_t index) { - return (uint64_t(((int32_t *)&v.v_hi)[index])<<32) | (uint64_t(((int32_t *)&v.v_lo)[index])); +static FORCEINLINE int64_t __extract_element(const __vec16_i64 &v, uint32_t index) +{ + uint *src = (uint *)&v; + return src[index+16] | (int64_t(src[index]) << 32); } static FORCEINLINE void __insert_element(__vec16_i64 *v, uint32_t index, int64_t val) { @@ -750,12 +752,6 @@ static FORCEINLINE __vec16_i64 __select(__vec16_i1 mask, return ret; } -static FORCEINLINE int64_t __extract_element(const __vec16_i64 &v, uint32_t index) -{ - uint *src = (uint *)&v; - return src[index+16] | (int64_t(src[index]) << 32); -} - template RetVecType __smear_i64(const int64_t &l); template <> FORCEINLINE __vec16_i64 __smear_i64<__vec16_i64>(const int64_t &l) { const int *i = (const int*)&l;