rsimd

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

commit 666a26f2ce4cff5c3428376e2a22027a7508c7cc
parent b5149f48094d0168ad8ae4def058e10d1f24485a
Author: vaplv <vaplv@free.fr>
Date:   Wed,  5 Nov 2014 09:22:23 +0100

Add and test the v4f_xycd function

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

diff --git a/src/sse/ssef.h b/src/sse/ssef.h @@ -181,6 +181,12 @@ v4f_ayzw(const v4f_T xyzw, const v4f_T abcd) } static FINLINE v4f_T +v4f_xycd(const v4f_T xyzw, const v4f_T abcd) +{ + return _mm_shuffle_ps(xyzw, abcd, _MM_SHUFFLE(3, 2, 1, 0)); +} + +static FINLINE v4f_T v4f_xbzw(const v4f_T xyzw, const v4f_T abcd) { const v4f_T zwzw = _mm_movehl_ps(xyzw, xyzw); diff --git a/src/test_v4f.c b/src/test_v4f.c @@ -158,6 +158,12 @@ main(int argc, char** argv) CHECK(v4f_z(k), 3.f); CHECK(v4f_w(k), 4.f); + k = v4f_xycd(i, j); + CHECK(v4f_x(k), 1.f); + CHECK(v4f_y(k), 2.f); + CHECK(v4f_z(k), 7.f); + CHECK(v4f_w(k), 8.f); + k = v4f_xbzw(i, j); CHECK(v4f_x(k), 1.f); CHECK(v4f_y(k), 6.f);