summaryrefslogtreecommitdiffstats
path: root/vec_sse_float4.h
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@gmail.com>2013-07-07 15:55:45 -0400
committerErik Schnetter <schnetter@gmail.com>2013-07-07 15:55:45 -0400
commit308259ef14ea04b6888d372b2dbe65d48760b7a9 (patch)
tree07e45b0aee39af37ba8e90404ceb1c387ead1196 /vec_sse_float4.h
parenta505a64345a0d43e212bba31694f48790a5eac2f (diff)
downloadvecmathlib-308259ef14ea04b6888d372b2dbe65d48760b7a9.zip
vecmathlib-308259ef14ea04b6888d372b2dbe65d48760b7a9.tar.gz
Implement ifthen with boolvec arguments
Diffstat (limited to 'vec_sse_float4.h')
-rw-r--r--vec_sse_float4.h12
1 files changed, 8 insertions, 4 deletions
diff --git a/vec_sse_float4.h b/vec_sse_float4.h
index 3dd861a..c120abd 100644
--- a/vec_sse_float4.h
+++ b/vec_sse_float4.h
@@ -135,6 +135,7 @@ namespace vecmathlib {
// ifthen(condition, then-value, else-value)
+ boolvec_t ifthen(boolvec_t x, boolvec_t y) const;
intvec_t ifthen(intvec_t x, intvec_t y) const; // defined after intvec
realvec_t ifthen(realvec_t x, realvec_t y) const; // defined after realvec
};
@@ -662,15 +663,18 @@ namespace vecmathlib {
}
inline
- boolvec<float,4>::intvec_t boolvec<float,4>::ifthen(intvec_t x, intvec_t y)
- const
+ boolvec<float,4> boolvec<float,4>::ifthen(boolvec_t x, boolvec_t y) const
+ {
+ return ifthen(x.as_int(), y.as_int()).as_bool();
+ }
+
+ inline intvec<float,4> boolvec<float,4>::ifthen(intvec_t x, intvec_t y) const
{
return ifthen(x.as_float(), y.as_float()).as_int();
}
inline
- boolvec<float,4>::realvec_t boolvec<float,4>::ifthen(realvec_t x, realvec_t y)
- const
+ realvec<float,4> boolvec<float,4>::ifthen(realvec_t x, realvec_t y) const
{
#ifdef __SSE4_1__
return _mm_blendv_ps(y.v, x.v, v);
OpenPOWER on IntegriCloud