@@ -121,12 +121,6 @@ extern T __spirv_AtomicISub(std::atomic<T> *Ptr, __spv::Scope::Flag,
121121 return Ptr->fetch_sub (V, ::cl::sycl::detail::getStdMemoryOrder (MS));
122122}
123123
124- template <typename T>
125- extern T __spirv_AtomicFAdd (std::atomic<T> *Ptr, __spv::Scope::Flag,
126- __spv::MemorySemanticsMask::Flag MS, T V) {
127- return Ptr->fetch_add (V, ::cl::sycl::detail::getStdMemoryOrder (MS));
128- }
129-
130124template <typename T>
131125extern T __spirv_AtomicAnd (std::atomic<T> *Ptr, __spv::Scope::Flag,
132126 __spv::MemorySemanticsMask::Flag MS, T V) {
@@ -280,36 +274,18 @@ class atomic {
280274#endif
281275 }
282276
283- template <typename T2 = T>
284- detail::enable_if_t <std::is_integral<T2>::value, T>
285- fetch_add (T Operand, memory_order Order = memory_order::relaxed) {
277+ T fetch_add (T Operand, memory_order Order = memory_order::relaxed) {
278+ __SYCL_STATIC_ASSERT_NOT_FLOAT (T);
286279 return __spirv_AtomicIAdd (
287280 Ptr, SpirvScope, detail::getSPIRVMemorySemanticsMask (Order), Operand);
288281 }
289282
290- template <typename T2 = T>
291- detail::enable_if_t <std::is_floating_point<T2>::value, T>
292- fetch_add (T Operand, memory_order Order = memory_order::relaxed) {
293- return __spirv_AtomicFAdd (
294- Ptr, SpirvScope, detail::getSPIRVMemorySemanticsMask (Order), Operand);
295- }
296-
297- template <typename T2 = T>
298- detail::enable_if_t <std::is_integral<T2>::value, T>
299- fetch_sub (T Operand, memory_order Order = memory_order::relaxed) {
283+ T fetch_sub (T Operand, memory_order Order = memory_order::relaxed) {
300284 __SYCL_STATIC_ASSERT_NOT_FLOAT (T);
301285 return __spirv_AtomicISub (
302286 Ptr, SpirvScope, detail::getSPIRVMemorySemanticsMask (Order), Operand);
303287 }
304288
305- template <typename T2 = T>
306- detail::enable_if_t <std::is_floating_point<T2>::value, T>
307- fetch_sub (T Operand, memory_order Order = memory_order::relaxed) {
308- // Negate the float add instruction operand.
309- return __spirv_AtomicFAdd (
310- Ptr, SpirvScope, detail::getSPIRVMemorySemanticsMask (Order), -Operand);
311- }
312-
313289 T fetch_and (T Operand, memory_order Order = memory_order::relaxed) {
314290 __SYCL_STATIC_ASSERT_NOT_FLOAT (T);
315291 return __spirv_AtomicAnd (
0 commit comments