Open trcrsired opened 10 months ago
If you meant to check if the whole SIMD Register is all-zero, you can use vseteqz.v
and read the result from fcc. If you meant to check the zero elements of SIMD Register, you can use vmsknz.b/h/w/d
and invert the result with vnor.v
.
Any documentations on functionalities of all the simd instruction and its intrinsics?
What i am doing here is that i have a simd_vector<char,16> v; if(is_all_zero(v)) { blah blah blah }
https://github.com/trcrsired/fast_io/blob/master/include/fast_io_core_impl/simd/is_all_zeros.h#L81
Btw, does it provide instruction for creating mask like __builtin_ia32_pmovmskb128?
Any documentations on functionalities of all the simd instruction and its intrinsics?
The official manual is not yet released, but there is an unofficial one by me: http://jia.je/unofficial-loongarch-intrinsics-guide/
simd_vector<char,16> v; if(is_all_zero(v)) { blah blah blah }
You can use __lsx_bz_v
for this.
Btw, does it provide instruction for creating mask like __builtin_ia32_pmovmskb128?
I think you can use __lsx_vmskltz_b
+ __lsx_vpickve2gr_h
to achieve the same effect.
How to know a register is all zero and generate a mask to compare?