Merge pull request #976 from Vsevolod-Livinskij/new_unordered_func
New unordered function
This commit is contained in:
@@ -1385,6 +1385,10 @@ static FORCEINLINE __vec16_i1 __unordered_float(__vec16_f a, __vec16_f b) {
|
||||
return _mm512_cmpunord_ps_mask(a, b);
|
||||
}
|
||||
|
||||
static FORCEINLINE __vec16_i1 __unordered_float_and_mask(__vec16_f a, __vec16_f b, __vec16_i1 mask) {
|
||||
return _mm512_mask_cmpunord_ps_mask(mask, a, b);
|
||||
}
|
||||
|
||||
static FORCEINLINE __vec16_f __select(__vec16_i1 mask, __vec16_f a, __vec16_f b) {
|
||||
return _mm512_mask_mov_ps(b, mask, a);
|
||||
}
|
||||
@@ -1727,6 +1731,15 @@ static FORCEINLINE __vec16_i1 __unordered_double(__vec16_d a, __vec16_d b) {
|
||||
return _mm512_kmovlhb(ret1, ret2);
|
||||
}
|
||||
|
||||
static FORCEINLINE __vec16_i1 __unordered_double_and_mask(__vec16_d a, __vec16_d b, __vec16_i1 mask) {
|
||||
__vec16_i1 ret1;
|
||||
__vec16_i1 ret2;
|
||||
__vec16_i1 tmp_m = mask;
|
||||
ret1 = _mm512_mask_cmpunord_pd_mask(mask, a.v1, b.v1);
|
||||
ret2 = _mm512_mask_cmpunord_pd_mask(_mm512_kswapb(tmp_m, tmp_m), a.v2, b.v2);
|
||||
return _mm512_kmovlhb(ret1, ret2);
|
||||
}
|
||||
|
||||
static FORCEINLINE __vec16_d __select(__vec16_i1 mask, __vec16_d a, __vec16_d b) {
|
||||
__vec16_d ret;
|
||||
__vec16_i1 tmp_m = mask;
|
||||
|
||||
Reference in New Issue
Block a user