commit 9ede110fda406d3138d015206253f20c9b0c90db
parent b2565b3d484e4b2aa6f0c196c5370df0d36039bc
Author: vaplv <vaplv@free.fr>
Date: Fri, 29 Jan 2021 16:57:46 +0100
Add and test the v4i_minus function
Diffstat:
2 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/src/sse/ssei.h b/src/sse/ssei.h
@@ -155,6 +155,12 @@ v4i_sub(const v4i_T v0, const v4i_T v1)
return _mm_sub_epi32(v0, v1);
}
+static FINLINE v4i_T
+v4i_minus(const v4i_T v)
+{
+ return v4i_add(v4i_not(v), v4i_set1(1));
+}
+
/*******************************************************************************
* Comparators
******************************************************************************/
diff --git a/src/test_v4i.c b/src/test_v4i.c
@@ -105,7 +105,7 @@ main(int argc, char** argv)
CHK(v4i_y(k) == 1);
CHK(v4i_z(k) == 0);
CHK(v4i_w(k) == 0);
-
+
k = v4i_rshift(i, 1);
CHK(v4i_x(k) == 16);
CHK(v4i_y(k) == 8);
@@ -132,6 +132,12 @@ main(int argc, char** argv)
CHK(v4i_z(k) == 0);
CHK(v4i_w(k) == -2);
+ k = v4i_minus(j);
+ CHK(v4i_x(k) == -v4i_x(j));
+ CHK(v4i_y(k) == -v4i_y(j));
+ CHK(v4i_z(k) == -v4i_z(j));
+ CHK(v4i_w(k) == -v4i_w(j));
+
k = v4i_eq(i, j);
CHK(v4i_x(k) == (int32_t)0x00000000);
CHK(v4i_y(k) == (int32_t)0x00000000);