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