diff --git a/examples/intrinsics/knc.h b/examples/intrinsics/knc.h index b075ac4f..b16fe067 100644 --- a/examples/intrinsics/knc.h +++ b/examples/intrinsics/knc.h @@ -468,42 +468,6 @@ template <> FORCEINLINE __vec16_i1 __undef_i1<__vec16_i1>() { return __vec16_i1(); } -/////////////////////////////////////////////////////////////////////////// -// int8 -/////////////////////////////////////////////////////////////////////////// - -static FORCEINLINE __vec16_i1 __not_equal_i8(__vec16_i8 a, __vec16_i8 b) { - __vec16_i32 tmp_a = _mm512_extload_epi32(&a, _MM_UPCONV_EPI32_SINT8, _MM_BROADCAST32_NONE, _MM_HINT_NONE); - __vec16_i32 tmp_b = _mm512_extload_epi32(&b, _MM_UPCONV_EPI32_SINT8, _MM_BROADCAST32_NONE, _MM_HINT_NONE); - return _mm512_cmpneq_epi32_mask(tmp_a, tmp_b); -} - -template static RetVecType __smear_i8(int8_t i); -template <> FORCEINLINE __vec16_i8 __smear_i8<__vec16_i8>(int8_t i) { - __vec16_i32 tmp = _mm512_set1_epi32(i); - __vec16_i8 ret; - _mm512_extstore_epi32(&ret, tmp, _MM_DOWNCONV_EPI32_SINT8,_MM_HINT_NONE); - return ret; -} - - -/////////////////////////////////////////////////////////////////////////// -// int16 -/////////////////////////////////////////////////////////////////////////// - -static FORCEINLINE __vec16_i1 __not_equal_i16(__vec16_i16 a, __vec16_i16 b) { - __vec16_i32 tmp_a = _mm512_extload_epi32(&a, _MM_UPCONV_EPI32_SINT16, _MM_BROADCAST32_NONE, _MM_HINT_NONE); - __vec16_i32 tmp_b = _mm512_extload_epi32(&b, _MM_UPCONV_EPI32_SINT16, _MM_BROADCAST32_NONE, _MM_HINT_NONE); - return _mm512_cmpneq_epi32_mask(tmp_a, tmp_b); -} - -template static RetVecType __smear_i16(int16_t i); -template <> FORCEINLINE __vec16_i16 __smear_i16<__vec16_i16>(int16_t i) { - __vec16_i32 tmp = _mm512_set1_epi32(i); - __vec16_i16 ret; - _mm512_extstore_epi32(&ret, tmp, _MM_DOWNCONV_EPI32_SINT16,_MM_HINT_NONE); - return ret; -} /////////////////////////////////////////////////////////////////////////// // int32 @@ -2031,60 +1995,6 @@ static FORCEINLINE __vec16_i16 __shuffle2_i16(__vec16_i16 v0, __vec16_i16 v1, __ return ret; } -/////////////////////////////////////////////////////////////////////////// -// int8 -/////////////////////////////////////////////////////////////////////////// - -static FORCEINLINE __vec16_i1 __not_equal_i8(__vec16_i8 a, __vec16_i8 b) { - __vec16_i32 tmp_a = _mm512_extload_epi32(&a, _MM_UPCONV_EPI32_SINT8, _MM_BROADCAST32_NONE, _MM_HINT_NONE); - __vec16_i32 tmp_b = _mm512_extload_epi32(&b, _MM_UPCONV_EPI32_SINT8, _MM_BROADCAST32_NONE, _MM_HINT_NONE); - return __not_equal_i32(tmp_a, tmp_b); -} - -static FORCEINLINE __vec16_i8 __shuffle_i8(__vec16_i8 v, __vec16_i32 index) { - __vec16_i32 tmp_v = _mm512_extload_epi32(&v, _MM_UPCONV_EPI32_SINT8, _MM_BROADCAST32_NONE, _MM_HINT_NONE); - __vec16_i32 tmp = __shuffle_i32(tmp_v, index); - __vec16_i8 ret; - _mm512_extstore_epi32(&ret, tmp, _MM_DOWNCONV_EPI32_SINT8,_MM_HINT_NONE); - return ret; - -} - -template static RetVecType __smear_i8(int8_t i); -template <> FORCEINLINE __vec16_i8 __smear_i8<__vec16_i8>(int8_t i) { - __vec16_i32 tmp = __smear_i32<__vec16_i32>(i); - __vec16_i8 ret; - _mm512_extstore_epi32(&ret, tmp, _MM_DOWNCONV_EPI32_SINT8,_MM_HINT_NONE); - return ret; -} - -/////////////////////////////////////////////////////////////////////////// -// int16 -/////////////////////////////////////////////////////////////////////////// - -static FORCEINLINE __vec16_i1 __not_equal_i16(__vec16_i16 a, __vec16_i16 b) { - __vec16_i32 tmp_a = _mm512_extload_epi32(&a, _MM_UPCONV_EPI32_SINT16, _MM_BROADCAST32_NONE, _MM_HINT_NONE); - __vec16_i32 tmp_b = _mm512_extload_epi32(&b, _MM_UPCONV_EPI32_SINT16, _MM_BROADCAST32_NONE, _MM_HINT_NONE); - return __not_equal_i32(tmp_a, tmp_b); -} - -static FORCEINLINE __vec16_i16 __shuffle_i16(__vec16_i16 v, __vec16_i32 index) { - __vec16_i32 tmp_v = _mm512_extload_epi32(&v, _MM_UPCONV_EPI32_SINT16, _MM_BROADCAST32_NONE, _MM_HINT_NONE); - __vec16_i32 tmp = __shuffle_i32(tmp_v, index); - __vec16_i16 ret; - _mm512_extstore_epi32(&ret, tmp, _MM_DOWNCONV_EPI32_SINT16,_MM_HINT_NONE); - return ret; - -} - -template static RetVecType __smear_i16(int16_t i); -template <> FORCEINLINE __vec16_i16 __smear_i16<__vec16_i16>(int16_t i) { - __vec16_i32 tmp = __smear_i32<__vec16_i32>(i); - __vec16_i16 ret; - _mm512_extstore_epi32(&ret, tmp, _MM_DOWNCONV_EPI32_SINT16,_MM_HINT_NONE); - return ret; -} - /////////////////////////////////////////////////////////////////////////// // various math functions ///////////////////////////////////////////////////////////////////////////