Skip to content

Commit 1ac8383

Browse files
committed
Add atomic float support
1 parent 95039b8 commit 1ac8383

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

lib/intrinsics/src/atomic.jl

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@
33
# provides atomic functions that rely on the OpenCL base atomics, as well as the
44
# cl_khr_int64_base_atomics and cl_khr_int64_extended_atomics extensions.
55

6+
const atomic_float_types = [Float32, Float64]
67
const atomic_integer_types = [UInt32, Int32, UInt64, Int64]
78
const atomic_memory_types = [AS.Workgroup, AS.CrossWorkgroup]
9+
const atomic_types = vcat(atomic_float_types, atomic_integer_types)
810

911

1012
# generically typed
1113

12-
for gentype in atomic_integer_types, as in atomic_memory_types
14+
for gentype in atomic_types, as in atomic_memory_types
1315
@eval begin
1416

1517
@device_function atomic_add!(p::LLVMPtr{$gentype,$as}, val::$gentype) =
@@ -45,15 +47,17 @@ for gentype in atomic_integer_types, as in atomic_memory_types
4547
@device_function atomic_xor!(p::LLVMPtr{$gentype,$as}, val::$gentype) =
4648
@builtin_ccall("atomic_xor", $gentype,
4749
(LLVMPtr{$gentype,$as}, $gentype), p, val)
48-
49-
@device_function atomic_xchg!(p::LLVMPtr{$gentype,$as}, val::$gentype) =
50-
@builtin_ccall("atomic_xchg", $gentype,
51-
(LLVMPtr{$gentype,$as}, $gentype), p, val)
52-
53-
@device_function atomic_cmpxchg!(p::LLVMPtr{$gentype,$as}, cmp::$gentype, val::$gentype) =
54-
@builtin_ccall("atomic_cmpxchg", $gentype,
55-
(LLVMPtr{$gentype,$as}, $gentype, $gentype), p, cmp, val)
56-
50+
end
51+
if gentype in atomic_integer_types
52+
@eval begin
53+
@device_function atomic_xchg!(p::LLVMPtr{$gentype,$as}, val::$gentype) =
54+
@builtin_ccall("atomic_xchg", $gentype,
55+
(LLVMPtr{$gentype,$as}, $gentype), p, val)
56+
57+
@device_function atomic_cmpxchg!(p::LLVMPtr{$gentype,$as}, cmp::$gentype, val::$gentype) =
58+
@builtin_ccall("atomic_cmpxchg", $gentype,
59+
(LLVMPtr{$gentype,$as}, $gentype, $gentype), p, cmp, val)
60+
end
5761
end
5862
end
5963

0 commit comments

Comments
 (0)