summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@gmail.com>2013-07-25 14:05:15 -0700
committerErik Schnetter <schnetter@gmail.com>2013-07-25 14:05:15 -0700
commit040ac916dba3c33b9fa12cd52de7835db37faf47 (patch)
tree1a0785fbf140bd94746de9981a98950ee6f77fb7
parentc911dadc52ce49e438430a2954a3b33dc35620a4 (diff)
downloadvecmathlib-040ac916dba3c33b9fa12cd52de7835db37faf47.zip
vecmathlib-040ac916dba3c33b9fa12cd52de7835db37faf47.tar.gz
Correct and simplify convert_int and convert_float for SSE doubles
-rw-r--r--vec_avx_double4.h19
-rw-r--r--vec_sse_double2.h13
2 files changed, 16 insertions, 16 deletions
diff --git a/vec_avx_double4.h b/vec_avx_double4.h
index 9867c85..e4699d8 100644
--- a/vec_avx_double4.h
+++ b/vec_avx_double4.h
@@ -499,16 +499,12 @@ namespace vecmathlib {
intvec_t as_int() const { return _mm256_castpd_si256(v); }
intvec_t convert_int() const
{
-#ifdef __x86_64__
intvec_t r;
- r.set_elt(0, _mm_cvttsd_si64(_mm_set_sd((*this)[0])));
- r.set_elt(1, _mm_cvttsd_si64(_mm_set_sd((*this)[1])));
- r.set_elt(2, _mm_cvttsd_si64(_mm_set_sd((*this)[2])));
- r.set_elt(3, _mm_cvttsd_si64(_mm_set_sd((*this)[3])));
+ r.set_elt(0, floatprops::convert_int((*this)[0]));
+ r.set_elt(1, floatprops::convert_int((*this)[1]));
+ r.set_elt(2, floatprops::convert_int((*this)[2]));
+ r.set_elt(3, floatprops::convert_int((*this)[3]));
return r;
-#else
- return floatprops::convert_int(v);
-#endif
}
@@ -698,7 +694,12 @@ namespace vecmathlib {
inline realvec<double,4> intvec<double,4>::convert_float() const
{
- return MF::vml_convert_float(*this);
+ realvec_t r;
+ r.set_elt(0, floatprops::convert_float((*this)[0]));
+ r.set_elt(1, floatprops::convert_float((*this)[1]));
+ r.set_elt(2, floatprops::convert_float((*this)[2]));
+ r.set_elt(3, floatprops::convert_float((*this)[3]));
+ return r;
}
} // namespace vecmathlib
diff --git a/vec_sse_double2.h b/vec_sse_double2.h
index d76f18d..0d847aa 100644
--- a/vec_sse_double2.h
+++ b/vec_sse_double2.h
@@ -468,14 +468,10 @@ namespace vecmathlib {
intvec_t as_int() const { return _mm_castpd_si128(v); }
intvec_t convert_int() const
{
-#ifdef __x86_64__
intvec_t r;
- r.set_elt(0, _mm_cvttsd_si64(_mm_set_sd((*this)[0])));
- r.set_elt(1, _mm_cvttsd_si64(_mm_set_sd((*this)[1])));
+ r.set_elt(0, floatprops::convert_int((*this)[0]));
+ r.set_elt(1, floatprops::convert_int((*this)[1]));
return r;
-#else
- return floatprops::convert_int(v);
-#endif
}
@@ -679,7 +675,10 @@ namespace vecmathlib {
inline realvec<double,2> intvec<double,2>::convert_float() const
{
- return MF::vml_convert_float(*this);
+ realvec_t r;
+ r.set_elt(0, floatprops::convert_float((*this)[0]));
+ r.set_elt(1, floatprops::convert_float((*this)[1]));
+ return r;
}
} // namespace vecmathlib
OpenPOWER on IntegriCloud