Skip to content

Commit b6ae426

Browse files
Adding 'inline' for 'atomic_*' functions
- To prevent potential 'odr' failures from 'atomic_*' functions instantiated with same template argument
1 parent 87e39d5 commit b6ae426

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

sycl/include/sycl/ext/intel/esimd/detail/atomic_intrin.hpp

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ namespace __ESIMD_DNS {
2222
// 'bridging' variables in integral type.
2323
template <typename Ty> using CmpxchgTy = __ESIMD_DNS::uint_type_t<sizeof(Ty)>;
2424

25-
template <typename Ty> Ty atomic_load(Ty *ptr) {
25+
template <typename Ty> inline Ty atomic_load(Ty *ptr) {
2626
#ifdef _WIN32
2727
// TODO: Windows will be supported soon
2828
__ESIMD_UNSUPPORTED_ON_HOST;
@@ -34,7 +34,7 @@ template <typename Ty> Ty atomic_load(Ty *ptr) {
3434
#endif
3535
}
3636

37-
template <typename Ty> Ty atomic_store(Ty *ptr, Ty val) {
37+
template <typename Ty> inline Ty atomic_store(Ty *ptr, Ty val) {
3838
#ifdef _WIN32
3939
// TODO: Windows will be supported soon
4040
__ESIMD_UNSUPPORTED_ON_HOST;
@@ -45,7 +45,7 @@ template <typename Ty> Ty atomic_store(Ty *ptr, Ty val) {
4545
#endif
4646
}
4747

48-
template <typename Ty> Ty atomic_add(Ty *ptr, Ty val) {
48+
template <typename Ty> inline Ty atomic_add(Ty *ptr, Ty val) {
4949
#ifdef _WIN32
5050
// TODO: Windows will be supported soon
5151
__ESIMD_UNSUPPORTED_ON_HOST;
@@ -69,7 +69,7 @@ template <typename Ty> Ty atomic_add(Ty *ptr, Ty val) {
6969
#endif
7070
}
7171

72-
template <typename Ty> Ty atomic_sub(Ty *ptr, Ty val) {
72+
template <typename Ty> inline Ty atomic_sub(Ty *ptr, Ty val) {
7373
#ifdef _WIN32
7474
// TODO: Windows will be supported soon
7575
__ESIMD_UNSUPPORTED_ON_HOST;
@@ -93,7 +93,7 @@ template <typename Ty> Ty atomic_sub(Ty *ptr, Ty val) {
9393
#endif
9494
}
9595

96-
template <typename Ty> Ty atomic_and(Ty *ptr, Ty val) {
96+
template <typename Ty> inline Ty atomic_and(Ty *ptr, Ty val) {
9797
#ifdef _WIN32
9898
// TODO: Windows will be supported soon
9999
__ESIMD_UNSUPPORTED_ON_HOST;
@@ -103,7 +103,7 @@ template <typename Ty> Ty atomic_and(Ty *ptr, Ty val) {
103103
#endif
104104
}
105105

106-
template <typename Ty> Ty atomic_or(Ty *ptr, Ty val) {
106+
template <typename Ty> inline Ty atomic_or(Ty *ptr, Ty val) {
107107
#ifdef _WIN32
108108
// TODO: Windows will be supported soon
109109
__ESIMD_UNSUPPORTED_ON_HOST;
@@ -113,7 +113,7 @@ template <typename Ty> Ty atomic_or(Ty *ptr, Ty val) {
113113
#endif
114114
}
115115

116-
template <typename Ty> Ty atomic_xor(Ty *ptr, Ty val) {
116+
template <typename Ty> inline Ty atomic_xor(Ty *ptr, Ty val) {
117117
#ifdef _WIN32
118118
// TODO: Windows will be supported soon
119119
__ESIMD_UNSUPPORTED_ON_HOST;
@@ -123,7 +123,7 @@ template <typename Ty> Ty atomic_xor(Ty *ptr, Ty val) {
123123
#endif
124124
}
125125

126-
template <typename Ty> Ty atomic_min(Ty *ptr, Ty val) {
126+
template <typename Ty> inline Ty atomic_min(Ty *ptr, Ty val) {
127127
#ifdef _WIN32
128128
// TODO: Windows will be supported soon
129129
__ESIMD_UNSUPPORTED_ON_HOST;
@@ -152,7 +152,7 @@ template <typename Ty> Ty atomic_min(Ty *ptr, Ty val) {
152152
#endif
153153
}
154154

155-
template <typename Ty> Ty atomic_max(Ty *ptr, Ty val) {
155+
template <typename Ty> inline Ty atomic_max(Ty *ptr, Ty val) {
156156
#ifdef _WIN32
157157
// TODO: Windows will be supported soon
158158
__ESIMD_UNSUPPORTED_ON_HOST;
@@ -181,7 +181,8 @@ template <typename Ty> Ty atomic_max(Ty *ptr, Ty val) {
181181
#endif
182182
}
183183

184-
template <typename Ty> Ty atomic_cmpxchg(Ty *ptr, Ty expected, Ty desired) {
184+
template <typename Ty>
185+
inline Ty atomic_cmpxchg(Ty *ptr, Ty expected, Ty desired) {
185186
#ifdef _WIN32
186187
// TODO: Windows will be supported soon
187188
__ESIMD_UNSUPPORTED_ON_HOST;

0 commit comments

Comments
 (0)