pRC
multi-purpose Tensor Train library for C++
Loading...
Searching...
No Matches
prc
core
profiling
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
6
namespace
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
pRC
Definition
cholesky.hpp:18
pRC::copy
static constexpr Conditional< IsSatisfied< C >, RemoveConstReference< X >, X > copy(X &&a)
Definition
copy.hpp:13
pRC::optimizationBarrier
static auto optimizationBarrier(const T &basic, Ts &...basics)
Definition
barrier.hpp:9
Generated by
1.9.8