Minor fixes to remove copy-paste
This commit is contained in:
committed by
Vsevolod Livinskij
parent
12376e6a0c
commit
67cc62d619
@@ -451,71 +451,6 @@ template <> FORCEINLINE __vec16_i1 __undef_i1<__vec16_i1>() {
|
||||
return __vec16_i1();
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// int8
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
template <class RetVecType> static RetVecType __setzero_i8();
|
||||
template <> FORCEINLINE __vec16_i8 __setzero_i8<__vec16_i8>() {
|
||||
return __vec16_i8(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
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 = _mm512_permutevar_epi32(tmp_v, index);
|
||||
__vec16_i8 ret;
|
||||
_mm512_extstore_epi32(&ret, tmp, _MM_DOWNCONV_EPI32_SINT8,_MM_HINT_NONE);
|
||||
return ret;
|
||||
|
||||
}
|
||||
|
||||
template <class RetVecType> 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
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
template <class RetVecType> static RetVecType __setzero_i16();
|
||||
template <> FORCEINLINE __vec16_i16 __setzero_i16<__vec16_i16>() {
|
||||
return __vec16_i16(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
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 = _mm512_permutevar_epi32(tmp_v, index);
|
||||
__vec16_i16 ret;
|
||||
_mm512_extstore_epi32(&ret, tmp, _MM_DOWNCONV_EPI32_SINT16,_MM_HINT_NONE);
|
||||
return ret;
|
||||
|
||||
}
|
||||
|
||||
template <class RetVecType> 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
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
@@ -1775,6 +1710,70 @@ static FORCEINLINE __vec16_d __cast_bits(__vec16_d, __vec16_i64 val) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// int8
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
template <class RetVecType> static RetVecType __setzero_i8();
|
||||
template <> FORCEINLINE __vec16_i8 __setzero_i8<__vec16_i8>() {
|
||||
return __vec16_i8(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
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 <class RetVecType> 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
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
template <class RetVecType> static RetVecType __setzero_i16();
|
||||
template <> FORCEINLINE __vec16_i16 __setzero_i16<__vec16_i16>() {
|
||||
return __vec16_i16(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
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 <class RetVecType> 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
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Reference in New Issue
Block a user