rsimd

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

commit bf358371492c5375e662bef53c9d11cf8c406b8c
parent 98706a526efd07af934e64eba0003b6c883854e9
Author: vaplv <vaplv@free.fr>
Date:   Sat, 31 Jan 2015 14:29:04 +0100

Add and test the v4f_clamp 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 @@ -565,6 +565,12 @@ v4f_reduce_max(const v4f_T v) return v4f_max(v4f_zwxy(tmp), tmp); } +static FINLINE v4f_T +v4f_clamp(const v4f_T v, const v4f_T vmin, const v4f_T vmax) +{ + return v4f_min(v4f_max(v, vmin), vmax); +} + /******************************************************************************* * Miscellaneous ******************************************************************************/ diff --git a/src/test_v4f.c b/src/test_v4f.c @@ -511,6 +511,12 @@ main(int argc, char** argv) CHECK(v4f_z(k), 6.f); CHECK(v4f_w(k), 6.f); + k = v4f_clamp(i, v4f_set(0.f, 0.f, -1.f, 3.f), v4f_set(1.f, 3.f, 2.f, 3.1f)); + CHECK(v4f_x(k), 1.f); + CHECK(v4f_y(k), 2.f); + CHECK(v4f_z(k), 2.f); + CHECK(v4f_w(k), 3.1f); + l = v4f_to_v4i(j); CHECK(v4i_x(l), -2); CHECK(v4i_y(l), -4);