cMHN 1.2
C++ library for learning MHNs with pRC
Loading...
Searching...
No Matches
barrier.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: BSD-2-Clause
2
3#ifndef pRC_CORE_PROFILING_BARRIER_H
4#define pRC_CORE_PROFILING_BARRIER_H
5
6namespace pRC
7{
8 template<class T, class... Ts>
9 [[gnu::always_inline]] static inline auto optimizationBarrier(
10 const T &basic, Ts &...basics)
11 {
12#if defined(__clang__)
13 asm volatile("#MARKER" : : "g"(basic) : "memory");
14#else
15 asm volatile("#MARKER" : : "i,r,m"(basic) : "memory");
16#endif // __clang__
17
18 if constexpr(sizeof...(Ts) == 0)
19 {
20 return;
21 }
22 else
23 {
24 return optimizationBarrier(basics...);
25 }
26 }
27}
28#endif // pRC_CORE_PROFILING_BARRIER_H
Definition value.hpp:12
pRC::Float<> T
Definition externs_nonTT.hpp:1
Definition cholesky.hpp:10
static auto optimizationBarrier(const T &basic, Ts &...basics)
Definition barrier.hpp:9