rsimd

Make SIMD instruction sets easier to use
git clone git://git.meso-star.fr/rsimd.git
Log | Files | Refs | README | LICENSE

commit bf2c9a9410fb61d7d03c62ec70b982a0a77a7d75
parent 030d7a7ca297002ee2f77091f3d90a2458a3c04b
Author: vaplv <vaplv@free.fr>
Date:   Fri, 24 Oct 2014 19:51:57 +0200

Add and test the v4f_movemask function

Diffstat:
Msrc/sse/ssef.h | 6++++++
Msrc/test_v4f.c | 4++++
2 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/src/sse/ssef.h b/src/sse/ssef.h @@ -141,6 +141,12 @@ v4f_mask_w(const v4f_T v) return ucast.i; } +static FINLINE int +v4f_movemask(const v4f_T v) +{ + return _mm_movemask_ps(v); +} + /******************************************************************************* * Merge operations ******************************************************************************/ diff --git a/src/test_v4f.c b/src/test_v4f.c @@ -118,6 +118,10 @@ main(int argc, char** argv) cast.f[2] = v4f_z(k); CHECK(cast.i[2], 0x07162534); cast.f[3] = v4f_w(k); CHECK(cast.i[3], 0x00000000); + CHECK(v4f_movemask(i), 0); + i = v4f_mask(0x01020401, (int32_t)0x80605040, 0x7F1F2F3F, 0x00000000); + CHECK(v4f_movemask(i), 2); + i = v4f_set(1.f, 2.f, 3.f, 4.f); j = v4f_set(5.f, 6.f, 7.f, 8.f); k = v4f_sel(i, j, v4f_mask(~0, 0, 0, ~0));