rsimd

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

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:
Msrc/sse/sse.h | 1+
Msrc/test_v4f.c | 13+++++++++++++
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;