[OpenCL] Fix atomic_fetch_add/sub with half type
authorSven van Haastregt <sven.vanhaastregt@arm.com>
Wed, 9 Feb 2022 10:47:45 +0000 (10:47 +0000)
committerSven van Haastregt <sven.vanhaastregt@arm.com>
Wed, 9 Feb 2022 10:47:45 +0000 (10:47 +0000)
An error in the tablegen description affects the declarations
provided by `-fdeclare-opencl-builtins` for `atomic_fetch_add` and
`atomic_fetch_sub`.

The atomic argument should be an atomic_half, not an atomic_float.

clang/lib/Sema/OpenCLBuiltins.td

index 08f8630..60a05f9 100644 (file)
@@ -1138,7 +1138,7 @@ let MinVersion = CL20 in {
   foreach ModOp = ["add", "sub"] in {
     let Extension = FuncExtFloatAtomicsFp16GlobalAdd in {
       defm : BuiltinAtomicExplicit<"atomic_fetch_" # ModOp,
-          [Half, PointerType<VolatileType<AtomicFloat>, GlobalAS>, Half]>;
+          [Half, PointerType<VolatileType<AtomicHalf>, GlobalAS>, Half]>;
     }
     let Extension = FuncExtFloatAtomicsFp32GlobalAdd in {
       defm : BuiltinAtomicExplicit<"atomic_fetch_" # ModOp,
@@ -1150,7 +1150,7 @@ let MinVersion = CL20 in {
     }
     let Extension = FuncExtFloatAtomicsFp16LocalAdd in {
       defm : BuiltinAtomicExplicit<"atomic_fetch_" # ModOp,
-          [Half, PointerType<VolatileType<AtomicFloat>, LocalAS>, Half]>;
+          [Half, PointerType<VolatileType<AtomicHalf>, LocalAS>, Half]>;
     }
     let Extension = FuncExtFloatAtomicsFp32LocalAdd in {
       defm : BuiltinAtomicExplicit<"atomic_fetch_" # ModOp,
@@ -1162,7 +1162,7 @@ let MinVersion = CL20 in {
     }
     let Extension = FuncExtFloatAtomicsFp16GenericAdd in {
       defm : BuiltinAtomicExplicit<"atomic_fetch_" # ModOp,
-          [Half, PointerType<VolatileType<AtomicFloat>, GenericAS>, Half]>;
+          [Half, PointerType<VolatileType<AtomicHalf>, GenericAS>, Half]>;
     }
     let Extension = FuncExtFloatAtomicsFp32GenericAdd in {
       defm : BuiltinAtomicExplicit<"atomic_fetch_" # ModOp,