diff options
-rw-r--r-- | vec_avx_double4.h | 19 | ||||
-rw-r--r-- | vec_sse_double2.h | 13 |
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 |