rsimd

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

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:
Msrc/sse/ssei.h | 6++++++
Msrc/test_v4i.c | 8+++++++-
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);