diff options
Diffstat (limited to 'vec_pseudo.h')
-rw-r--r-- | vec_pseudo.h | 29 |
1 files changed, 1 insertions, 28 deletions
diff --git a/vec_pseudo.h b/vec_pseudo.h index c4cbbc1..fa2895c 100644 --- a/vec_pseudo.h +++ b/vec_pseudo.h @@ -472,35 +472,8 @@ template <typename T, int N> struct realpseudovec : floatprops<T> { } #endif void barrier() { -#if defined __GNUC__ && !defined __clang__ && !defined __ICC -// GCC crashes when +X is used as constraint -#if defined __SSE2__ for (int d = 0; d < size; ++d) - __asm__("" : "+x"(v[d])); -#elif defined __PPC64__ // maybe also __PPC__ - for (int d = 0; d < size; ++d) - __asm__("" : "+f"(v[d])); -#elif defined __arm__ - for (int d = 0; d < size; ++d) - __asm__("" : "+w"(v[d])); -#else -#error "Floating point barrier undefined on this architecture" -#endif -#elif defined __clang__ - for (int d = 0; d < size; ++d) - __asm__("" : "+X"(v[d])); -#elif defined __ICC - for (int d = 0; d < size; ++d) { - real_t tmp = v[d]; - __asm__("" : "+X"(tmp)); - v[d] = tmp; - } -#elif defined __IBMCPP__ - for (int d = 0; d < size; ++d) - __asm__("" : "+f"(v[d])); -#else -#error "Floating point barrier undefined on this architecture" -#endif + v[d] = vecmathlib::barrier(v[d]); } typedef boolpseudovec<real_t, size> boolvec_t; |