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:
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));