summaryrefslogtreecommitdiffstats
path: root/vec_pseudo.h
diff options
context:
space:
mode:
Diffstat (limited to 'vec_pseudo.h')
-rw-r--r--vec_pseudo.h29
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;
OpenPOWER on IntegriCloud