commit 98706a526efd07af934e64eba0003b6c883854e9
parent 737e6764c08ea7ecdf90841f841f6884d8148e74
Author: vaplv <vaplv@free.fr>
Date: Fri, 30 Jan 2015 15:08:33 +0100
Add and test the v4f_trunk_v4i function
Diffstat:
2 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/src/sse/sse.h b/src/sse/sse.h
@@ -21,6 +21,7 @@
static FINLINE v4i_T v4f_to_v4i(const v4f_T v) {return _mm_cvtps_epi32(v);}
static FINLINE v4f_T v4i_to_v4f(const v4i_T v) {return _mm_cvtepi32_ps(v);}
+static FINLINE v4i_T v4f_trunk_v4i(const v4f_T v) {return _mm_cvttps_epi32(v);}
/* Reinterpret cast */
static FINLINE v4i_T v4f_rcast_v4i(const v4f_T v) {return _mm_castps_si128(v);}
diff --git a/src/test_v4f.c b/src/test_v4f.c
@@ -523,6 +523,19 @@ main(int argc, char** argv)
CHECK(v4f_z(k), 3.f);
CHECK(v4f_w(k), 6.f);
+ i = v4f_set(1.5f, 2.51f, 3.2f, 4.35f);
+ l = v4f_to_v4i(i);
+ CHECK(v4i_x(l), 2);
+ CHECK(v4i_y(l), 3);
+ CHECK(v4i_z(l), 3);
+ CHECK(v4i_w(l), 4);
+
+ l = v4f_trunk_v4i(i);
+ CHECK(v4i_x(l), 1);
+ CHECK(v4i_y(l), 2);
+ CHECK(v4i_z(l), 3);
+ CHECK(v4i_w(l), 4);
+
cast.f[0] = 1.f;
cast.f[1] = 2.f;
cast.f[2] = 3.14f;