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);
|
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) {
|
static FORCEINLINE __vec16_f __select(__vec16_i1 mask, __vec16_f a, __vec16_f b) {
|
||||||
return _mm512_mask_mov_ps(b, mask, a);
|
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);
|
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) {
|
static FORCEINLINE __vec16_d __select(__vec16_i1 mask, __vec16_d a, __vec16_d b) {
|
||||||
__vec16_d ret;
|
__vec16_d ret;
|
||||||
__vec16_i1 tmp_m = mask;
|
__vec16_i1 tmp_m = mask;
|
||||||
|
|||||||
Reference in New Issue
Block a user