commit f88d39d26edfd5a059e09984241ceb0fc9d4613f
parent 666a26f2ce4cff5c3428376e2a22027a7508c7cc
Author: vaplv <vaplv@free.fr>
Date: Wed, 5 Nov 2014 09:34:46 +0100
Add and test the v4f_ywbd function
Diffstat:
2 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/src/sse/ssef.h b/src/sse/ssef.h
@@ -187,6 +187,12 @@ v4f_xycd(const v4f_T xyzw, const v4f_T abcd)
}
static FINLINE v4f_T
+v4f_ywbd(const v4f_T xyzw, const v4f_T abcd)
+{
+ return _mm_shuffle_ps(xyzw, abcd, _MM_SHUFFLE(3, 1, 3, 1));
+}
+
+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
@@ -164,6 +164,12 @@ main(int argc, char** argv)
CHECK(v4f_z(k), 7.f);
CHECK(v4f_w(k), 8.f);
+ k = v4f_ywbd(i, j);
+ CHECK(v4f_x(k), 2.f);
+ CHECK(v4f_y(k), 4.f);
+ CHECK(v4f_z(k), 6.f);
+ CHECK(v4f_w(k), 8.f);
+
k = v4f_xbzw(i, j);
CHECK(v4f_x(k), 1.f);
CHECK(v4f_y(k), 6.f);