[Libclc-dev] [PATCH] Update atom_* function signatures to accept volatile pointers

Aaron Watry awatry at gmail.com
Thu Feb 26 09:52:08 PST 2015


On Thu, Feb 26, 2015 at 11:03 AM, Tom Stellard <thomas.stellard at amd.com>
wrote:

> On 02/25/2015 07:16 PM, Aaron Watry wrote:
>
>> On Tue, Feb 24, 2015 at 10:20 AM, Tom Stellard <thomas.stellard at amd.com
>> <mailto:thomas.stellard at amd.com>> wrote:
>>
>>     This is how they are defined by the spec.
>>
>>
>> The only wording that I see in the CL 1.1 and CL 1.2 specs is as such:
>> "
>> NOTE: The atomic built-in functions that use the atom_ prefix and are
>> described by the
>> following extensions
>> cl_khr_global_int32_base_atomics
>> cl_khr_global_int32_extended_atomics
>> cl_khr_local_int32_base_atomics
>> cl_khr_local_int32_extended_atomics
>> in sections 9.5 and 9.6 of the OpenCL 1.0 specification are also
>> supported.
>> "
>>
>> But in looking at the CL1.0 spec, none of the atom_* functions declare
>> their arguments as volatile pointers.
>>
>> I'm not necessarily against this change, I just wanted to point out the
>> inconsistency in case it would cause us problems later.
>>
>>
> Thanks for pointing this out.  I was looking at the 64-bit versions
> in the 1.1 spec that do have the volatile keyword.  I think this
> is probably an oversight in the spec, but you are right, I can't find
> anything that says the 32-bit atom_* functions have the volatile keyword.
>
> -Tom
>

I agree that this is probably an oversight.  Is there anyone at Khronos we
can ping for clarification?

Otherwise, we can defer to whatever other CL run-times (catalyst/nvidia) do
in similar situations (if they agree on an implementation).

--Aaron


>
>  Are we meant to assume that the atom_* functions are just aliased
>> versions of the atomic_* functions, or should there be an actual
>> difference between them?
>>
>> --Aaron
>>
>>     ---
>>       generic/include/clc/cl_khr_global_int32_base_atomics/atom_add.h
>>       | 4 ++--
>>       generic/include/clc/cl_khr_global_int32_base_atomics/atom_cmpxchg.h
>> | 4 ++--
>>       generic/include/clc/cl_khr_global_int32_base_atomics/atom_dec.h
>>       | 4 ++--
>>       generic/include/clc/cl_khr_global_int32_base_atomics/atom_inc.h
>>       | 4 ++--
>>       generic/include/clc/cl_khr_global_int32_base_atomics/atom_sub.h
>>       | 4 ++--
>>       generic/include/clc/cl_khr_global_int32_base_atomics/atom_xchg.h
>>        | 4 ++--
>>       generic/include/clc/cl_khr_global_int32_extended_atomics/atom_and.h
>> | 4 ++--
>>       generic/include/clc/cl_khr_global_int32_extended_atomics/atom_max.h
>> | 4 ++--
>>       generic/include/clc/cl_khr_global_int32_extended_atomics/atom_min.h
>> | 4 ++--
>>       generic/include/clc/cl_khr_global_int32_extended_atomics/atom_or.h
>> | 4 ++--
>>       generic/include/clc/cl_khr_global_int32_extended_atomics/atom_xor.h
>> | 4 ++--
>>       generic/include/clc/cl_khr_local_int32_base_atomics/atom_add.h
>>        | 4 ++--
>>       generic/include/clc/cl_khr_local_int32_base_atomics/atom_cmpxchg.h
>> | 4 ++--
>>       generic/include/clc/cl_khr_local_int32_base_atomics/atom_dec.h
>>        | 4 ++--
>>       generic/include/clc/cl_khr_local_int32_base_atomics/atom_inc.h
>>        | 4 ++--
>>       generic/include/clc/cl_khr_local_int32_base_atomics/atom_sub.h
>>        | 4 ++--
>>       generic/include/clc/cl_khr_local_int32_base_atomics/atom_xchg.h
>>       | 4 ++--
>>       generic/include/clc/cl_khr_local_int32_extended_atomics/atom_and.h
>> | 4 ++--
>>       generic/include/clc/cl_khr_local_int32_extended_atomics/atom_max.h
>> | 4 ++--
>>       generic/include/clc/cl_khr_local_int32_extended_atomics/atom_min.h
>> | 4 ++--
>>       generic/include/clc/cl_khr_local_int32_extended_atomics/atom_or.h
>>       | 4 ++--
>>       generic/include/clc/cl_khr_local_int32_extended_atomics/atom_xor.h
>> | 4 ++--
>>       generic/lib/cl_khr_global_int32_base_atomics/atom_add.cl
>>     <http://atom_add.cl>            | 2 +-
>>       generic/lib/cl_khr_global_int32_base_atomics/atom_cmpxchg.cl
>>     <http://atom_cmpxchg.cl>        | 2 +-
>>       generic/lib/cl_khr_global_int32_base_atomics/atom_dec.cl
>>     <http://atom_dec.cl>            | 2 +-
>>       generic/lib/cl_khr_global_int32_base_atomics/atom_inc.cl
>>     <http://atom_inc.cl>            | 2 +-
>>       generic/lib/cl_khr_global_int32_base_atomics/atom_sub.cl
>>     <http://atom_sub.cl>            | 2 +-
>>       generic/lib/cl_khr_global_int32_base_atomics/atom_xchg.cl
>>     <http://atom_xchg.cl>           | 2 +-
>>       generic/lib/cl_khr_global_int32_extended_atomics/atom_and.cl
>>     <http://atom_and.cl>        | 4 ++--
>>       generic/lib/cl_khr_global_int32_extended_atomics/atom_max.cl
>>     <http://atom_max.cl>        | 2 +-
>>       generic/lib/cl_khr_global_int32_extended_atomics/atom_min.cl
>>     <http://atom_min.cl>        | 2 +-
>>       generic/lib/cl_khr_global_int32_extended_atomics/atom_or.cl
>>     <http://atom_or.cl>         | 2 +-
>>       generic/lib/cl_khr_global_int32_extended_atomics/atom_xor.cl
>>     <http://atom_xor.cl>        | 2 +-
>>       generic/lib/cl_khr_local_int32_base_atomics/atom_add.cl
>>     <http://atom_add.cl>             | 2 +-
>>       generic/lib/cl_khr_local_int32_base_atomics/atom_cmpxchg.cl
>>     <http://atom_cmpxchg.cl>         | 2 +-
>>       generic/lib/cl_khr_local_int32_base_atomics/atom_dec.cl
>>     <http://atom_dec.cl>             | 2 +-
>>       generic/lib/cl_khr_local_int32_base_atomics/atom_inc.cl
>>     <http://atom_inc.cl>             | 2 +-
>>       generic/lib/cl_khr_local_int32_base_atomics/atom_sub.cl
>>     <http://atom_sub.cl>             | 2 +-
>>       generic/lib/cl_khr_local_int32_base_atomics/atom_xchg.cl
>>     <http://atom_xchg.cl>            | 2 +-
>>       generic/lib/cl_khr_local_int32_extended_atomics/atom_and.cl
>>     <http://atom_and.cl>         | 4 ++--
>>       generic/lib/cl_khr_local_int32_extended_atomics/atom_max.cl
>>     <http://atom_max.cl>         | 2 +-
>>       generic/lib/cl_khr_local_int32_extended_atomics/atom_min.cl
>>     <http://atom_min.cl>         | 2 +-
>>       generic/lib/cl_khr_local_int32_extended_atomics/atom_or.cl
>>     <http://atom_or.cl>          | 2 +-
>>       generic/lib/cl_khr_local_int32_extended_atomics/atom_xor.cl
>>     <http://atom_xor.cl>         | 2 +-
>>
>>       44 files changed, 68 insertions(+), 68 deletions(-)
>>
>>     diff --git
>>     a/generic/include/clc/cl_khr_global_int32_base_atomics/atom_add.h
>>     b/generic/include/clc/cl_khr_global_int32_base_atomics/atom_add.h
>>     index 9740b3d..10602c7 100644
>>     --- a/generic/include/clc/cl_khr_global_int32_base_atomics/atom_add.h
>>     +++ b/generic/include/clc/cl_khr_global_int32_base_atomics/atom_add.h
>>     @@ -1,2 +1,2 @@
>>     -_CLC_OVERLOAD _CLC_DECL int atom_add(global int *p, int val);
>>     -_CLC_OVERLOAD _CLC_DECL unsigned int atom_add(global unsigned int
>>     *p, unsigned int val);
>>     +_CLC_OVERLOAD _CLC_DECL int atom_add(volatile global int *p, int
>> val);
>>     +_CLC_OVERLOAD _CLC_DECL unsigned int atom_add(volatile global
>>     unsigned int *p, unsigned int val);
>>     diff --git
>>     a/generic/include/clc/cl_khr_global_int32_base_atomics/atom_cmpxchg.h
>> b/generic/include/clc/cl_khr_global_int32_base_atomics/atom_cmpxchg.h
>>     index 168f423..d84a9eb 100644
>>     ---
>>     a/generic/include/clc/cl_khr_global_int32_base_atomics/atom_cmpxchg.h
>>     +++
>>     b/generic/include/clc/cl_khr_global_int32_base_atomics/atom_cmpxchg.h
>>     @@ -1,2 +1,2 @@
>>     -_CLC_OVERLOAD _CLC_DECL int atom_cmpxchg(global int *p, int cmp,
>>     int val);
>>     -_CLC_OVERLOAD _CLC_DECL unsigned int atom_cmpxchg(global unsigned
>>     int *p, unsigned int cmp, unsigned int val);
>>     +_CLC_OVERLOAD _CLC_DECL int atom_cmpxchg(volatile global int *p,
>>     int cmp, int val);
>>     +_CLC_OVERLOAD _CLC_DECL unsigned int atom_cmpxchg(volatile global
>>     unsigned int *p, unsigned int cmp, unsigned int val);
>>     diff --git
>>     a/generic/include/clc/cl_khr_global_int32_base_atomics/atom_dec.h
>>     b/generic/include/clc/cl_khr_global_int32_base_atomics/atom_dec.h
>>     index bbc872c..d3c1c45 100644
>>     --- a/generic/include/clc/cl_khr_global_int32_base_atomics/atom_dec.h
>>     +++ b/generic/include/clc/cl_khr_global_int32_base_atomics/atom_dec.h
>>     @@ -1,2 +1,2 @@
>>     -_CLC_OVERLOAD _CLC_DECL int atom_dec(global int *p);
>>     -_CLC_OVERLOAD _CLC_DECL unsigned int atom_dec(global unsigned int
>> *p);
>>     +_CLC_OVERLOAD _CLC_DECL int atom_dec(volatile global int *p);
>>     +_CLC_OVERLOAD _CLC_DECL unsigned int atom_dec(volatile global
>>     unsigned int *p);
>>     diff --git
>>     a/generic/include/clc/cl_khr_global_int32_base_atomics/atom_inc.h
>>     b/generic/include/clc/cl_khr_global_int32_base_atomics/atom_inc.h
>>     index 050747c..712374d 100644
>>     --- a/generic/include/clc/cl_khr_global_int32_base_atomics/atom_inc.h
>>     +++ b/generic/include/clc/cl_khr_global_int32_base_atomics/atom_inc.h
>>     @@ -1,2 +1,2 @@
>>     -_CLC_OVERLOAD _CLC_DECL int atom_inc(global int *p);
>>     -_CLC_OVERLOAD _CLC_DECL unsigned int atom_inc(global unsigned int
>> *p);
>>     +_CLC_OVERLOAD _CLC_DECL int atom_inc(volatile global int *p);
>>     +_CLC_OVERLOAD _CLC_DECL unsigned int atom_inc(volatile global
>>     unsigned int *p);
>>     diff --git
>>     a/generic/include/clc/cl_khr_global_int32_base_atomics/atom_sub.h
>>     b/generic/include/clc/cl_khr_global_int32_base_atomics/atom_sub.h
>>     index c435c72..b065db9 100644
>>     --- a/generic/include/clc/cl_khr_global_int32_base_atomics/atom_sub.h
>>     +++ b/generic/include/clc/cl_khr_global_int32_base_atomics/atom_sub.h
>>     @@ -1,2 +1,2 @@
>>     -_CLC_OVERLOAD _CLC_DECL int atom_sub(global int *p, int val);
>>     -_CLC_OVERLOAD _CLC_DECL unsigned int atom_sub(global unsigned int
>>     *p, unsigned int val);
>>     +_CLC_OVERLOAD _CLC_DECL int atom_sub(volatile global int *p, int
>> val);
>>     +_CLC_OVERLOAD _CLC_DECL unsigned int atom_sub(volatile global
>>     unsigned int *p, unsigned int val);
>>     diff --git
>>     a/generic/include/clc/cl_khr_global_int32_base_atomics/atom_xchg.h
>>     b/generic/include/clc/cl_khr_global_int32_base_atomics/atom_xchg.h
>>     index 6a18e9e..0493b85 100644
>>     --- a/generic/include/clc/cl_khr_global_int32_base_atomics/
>> atom_xchg.h
>>     +++ b/generic/include/clc/cl_khr_global_int32_base_atomics/
>> atom_xchg.h
>>     @@ -1,2 +1,2 @@
>>     -_CLC_OVERLOAD _CLC_DECL int atom_xchg(global int *p, int val);
>>     -_CLC_OVERLOAD _CLC_DECL unsigned int atom_xchg(global unsigned int
>>     *p, unsigned int val);
>>     +_CLC_OVERLOAD _CLC_DECL int atom_xchg(volatile global int *p, int
>> val);
>>     +_CLC_OVERLOAD _CLC_DECL unsigned int atom_xchg(volatile global
>>     unsigned int *p, unsigned int val);
>>     diff --git
>>     a/generic/include/clc/cl_khr_global_int32_extended_atomics/atom_and.h
>> b/generic/include/clc/cl_khr_global_int32_extended_atomics/atom_and.h
>>     index 19df7d6..2364fe9 100644
>>     ---
>>     a/generic/include/clc/cl_khr_global_int32_extended_atomics/atom_and.h
>>     +++
>>     b/generic/include/clc/cl_khr_global_int32_extended_atomics/atom_and.h
>>     @@ -1,2 +1,2 @@
>>     -_CLC_OVERLOAD _CLC_DECL int atom_and(global int *p, int val);
>>     -_CLC_OVERLOAD _CLC_DECL unsigned int atom_and(global unsigned int
>>     *p, unsigned int val);
>>     +_CLC_OVERLOAD _CLC_DECL int atom_and(volatile global int *p, int
>> val);
>>     +_CLC_OVERLOAD _CLC_DECL unsigned int atom_and(volatile global
>>     unsigned int *p, unsigned int val);
>>     diff --git
>>     a/generic/include/clc/cl_khr_global_int32_extended_atomics/atom_max.h
>> b/generic/include/clc/cl_khr_global_int32_extended_atomics/atom_max.h
>>     index b46ce29..4e876da 100644
>>     ---
>>     a/generic/include/clc/cl_khr_global_int32_extended_atomics/atom_max.h
>>     +++
>>     b/generic/include/clc/cl_khr_global_int32_extended_atomics/atom_max.h
>>     @@ -1,2 +1,2 @@
>>     -_CLC_OVERLOAD _CLC_DECL int atom_max(global int *p, int val);
>>     -_CLC_OVERLOAD _CLC_DECL unsigned int atom_max(global unsigned int
>>     *p, unsigned int val);
>>     +_CLC_OVERLOAD _CLC_DECL int atom_max(volatile global int *p, int
>> val);
>>     +_CLC_OVERLOAD _CLC_DECL unsigned int atom_max(volatile global
>>     unsigned int *p, unsigned int val);
>>     diff --git
>>     a/generic/include/clc/cl_khr_global_int32_extended_atomics/atom_min.h
>> b/generic/include/clc/cl_khr_global_int32_extended_atomics/atom_min.h
>>     index 0e458eb..46b8b83 100644
>>     ---
>>     a/generic/include/clc/cl_khr_global_int32_extended_atomics/atom_min.h
>>     +++
>>     b/generic/include/clc/cl_khr_global_int32_extended_atomics/atom_min.h
>>     @@ -1,2 +1,2 @@
>>     -_CLC_OVERLOAD _CLC_DECL int atom_min(global int *p, int val);
>>     -_CLC_OVERLOAD _CLC_DECL unsigned int atom_min(global unsigned int
>>     *p, unsigned int val);
>>     +_CLC_OVERLOAD _CLC_DECL int atom_min(volatile global int *p, int
>> val);
>>     +_CLC_OVERLOAD _CLC_DECL unsigned int atom_min(volatile global
>>     unsigned int *p, unsigned int val);
>>     diff --git
>>     a/generic/include/clc/cl_khr_global_int32_extended_atomics/atom_or.h
>>     b/generic/include/clc/cl_khr_global_int32_extended_atomics/atom_or.h
>>     index 91cde56..d1e924d 100644
>>     --- a/generic/include/clc/cl_khr_global_int32_extended_atomics/
>> atom_or.h
>>     +++ b/generic/include/clc/cl_khr_global_int32_extended_atomics/
>> atom_or.h
>>     @@ -1,2 +1,2 @@
>>     -_CLC_OVERLOAD _CLC_DECL int atom_or(global int *p, int val);
>>     -_CLC_OVERLOAD _CLC_DECL unsigned int atom_or(global unsigned int
>>     *p, unsigned int val);
>>     +_CLC_OVERLOAD _CLC_DECL int atom_or(volatile global int *p, int val);
>>     +_CLC_OVERLOAD _CLC_DECL unsigned int atom_or(volatile global
>>     unsigned int *p, unsigned int val);
>>     diff --git
>>     a/generic/include/clc/cl_khr_global_int32_extended_atomics/atom_xor.h
>> b/generic/include/clc/cl_khr_global_int32_extended_atomics/atom_xor.h
>>     index f787849..9646c87 100644
>>     ---
>>     a/generic/include/clc/cl_khr_global_int32_extended_atomics/atom_xor.h
>>     +++
>>     b/generic/include/clc/cl_khr_global_int32_extended_atomics/atom_xor.h
>>     @@ -1,2 +1,2 @@
>>     -_CLC_OVERLOAD _CLC_DECL int atom_xor(global int *p, int val);
>>     -_CLC_OVERLOAD _CLC_DECL unsigned int atom_xor(global unsigned int
>>     *p, unsigned int val);
>>     +_CLC_OVERLOAD _CLC_DECL int atom_xor(volatile global int *p, int
>> val);
>>     +_CLC_OVERLOAD _CLC_DECL unsigned int atom_xor(volatile global
>>     unsigned int *p, unsigned int val);
>>     diff --git
>>     a/generic/include/clc/cl_khr_local_int32_base_atomics/atom_add.h
>>     b/generic/include/clc/cl_khr_local_int32_base_atomics/atom_add.h
>>     index 096d011..8999920 100644
>>     --- a/generic/include/clc/cl_khr_local_int32_base_atomics/atom_add.h
>>     +++ b/generic/include/clc/cl_khr_local_int32_base_atomics/atom_add.h
>>     @@ -1,2 +1,2 @@
>>     -_CLC_OVERLOAD _CLC_DECL int atom_add(local int *p, int val);
>>     -_CLC_OVERLOAD _CLC_DECL unsigned int atom_add(local unsigned int
>>     *p, unsigned int val);
>>     +_CLC_OVERLOAD _CLC_DECL int atom_add(volatile local int *p, int val);
>>     +_CLC_OVERLOAD _CLC_DECL unsigned int atom_add(volatile local
>>     unsigned int *p, unsigned int val);
>>     diff --git
>>     a/generic/include/clc/cl_khr_local_int32_base_atomics/atom_cmpxchg.h
>>     b/generic/include/clc/cl_khr_local_int32_base_atomics/atom_cmpxchg.h
>>     index e10a84f..c967d36 100644
>>     --- a/generic/include/clc/cl_khr_local_int32_base_atomics/atom_
>> cmpxchg.h
>>     +++ b/generic/include/clc/cl_khr_local_int32_base_atomics/atom_
>> cmpxchg.h
>>     @@ -1,2 +1,2 @@
>>     -_CLC_OVERLOAD _CLC_DECL int atom_cmpxchg(local int *p, int cmp, int
>>     val);
>>     -_CLC_OVERLOAD _CLC_DECL unsigned int atom_cmpxchg(local unsigned
>>     int *p, unsigned int cmp, unsigned int val);
>>     +_CLC_OVERLOAD _CLC_DECL int atom_cmpxchg(volatile local int *p, int
>>     cmp, int val);
>>     +_CLC_OVERLOAD _CLC_DECL unsigned int atom_cmpxchg(volatile local
>>     unsigned int *p, unsigned int cmp, unsigned int val);
>>     diff --git
>>     a/generic/include/clc/cl_khr_local_int32_base_atomics/atom_dec.h
>>     b/generic/include/clc/cl_khr_local_int32_base_atomics/atom_dec.h
>>     index e74d8fc..7bb33c9 100644
>>     --- a/generic/include/clc/cl_khr_local_int32_base_atomics/atom_dec.h
>>     +++ b/generic/include/clc/cl_khr_local_int32_base_atomics/atom_dec.h
>>     @@ -1,2 +1,2 @@
>>     -_CLC_OVERLOAD _CLC_DECL int atom_dec(local int *p);
>>     -_CLC_OVERLOAD _CLC_DECL unsigned int atom_dec(local unsigned int *p);
>>     +_CLC_OVERLOAD _CLC_DECL int atom_dec(volatile local int *p);
>>     +_CLC_OVERLOAD _CLC_DECL unsigned int atom_dec(volatile local
>>     unsigned int *p);
>>     diff --git
>>     a/generic/include/clc/cl_khr_local_int32_base_atomics/atom_inc.h
>>     b/generic/include/clc/cl_khr_local_int32_base_atomics/atom_inc.h
>>     index 718f1f2..96e6f30 100644
>>     --- a/generic/include/clc/cl_khr_local_int32_base_atomics/atom_inc.h
>>     +++ b/generic/include/clc/cl_khr_local_int32_base_atomics/atom_inc.h
>>     @@ -1,2 +1,2 @@
>>     -_CLC_OVERLOAD _CLC_DECL int atom_inc(local int *p);
>>     -_CLC_OVERLOAD _CLC_DECL unsigned int atom_inc(local unsigned int *p);
>>     +_CLC_OVERLOAD _CLC_DECL int atom_inc(volatile local int *p);
>>     +_CLC_OVERLOAD _CLC_DECL unsigned int atom_inc(volatile local
>>     unsigned int *p);
>>     diff --git
>>     a/generic/include/clc/cl_khr_local_int32_base_atomics/atom_sub.h
>>     b/generic/include/clc/cl_khr_local_int32_base_atomics/atom_sub.h
>>     index 6363780..0228fa4 100644
>>     --- a/generic/include/clc/cl_khr_local_int32_base_atomics/atom_sub.h
>>     +++ b/generic/include/clc/cl_khr_local_int32_base_atomics/atom_sub.h
>>     @@ -1,2 +1,2 @@
>>     -_CLC_OVERLOAD _CLC_DECL int atom_sub(local int *p, int val);
>>     -_CLC_OVERLOAD _CLC_DECL unsigned int atom_sub(local unsigned int
>>     *p, unsigned int val);
>>     +_CLC_OVERLOAD _CLC_DECL int atom_sub(volatile local int *p, int val);
>>     +_CLC_OVERLOAD _CLC_DECL unsigned int atom_sub(volatile local
>>     unsigned int *p, unsigned int val);
>>     diff --git
>>     a/generic/include/clc/cl_khr_local_int32_base_atomics/atom_xchg.h
>>     b/generic/include/clc/cl_khr_local_int32_base_atomics/atom_xchg.h
>>     index c5a1f09..e530158 100644
>>     --- a/generic/include/clc/cl_khr_local_int32_base_atomics/atom_xchg.h
>>     +++ b/generic/include/clc/cl_khr_local_int32_base_atomics/atom_xchg.h
>>     @@ -1,2 +1,2 @@
>>     -_CLC_OVERLOAD _CLC_DECL int atom_xchg(local int *p, int val);
>>     -_CLC_OVERLOAD _CLC_DECL unsigned int atom_xchg(local unsigned int
>>     *p, unsigned int val);
>>     +_CLC_OVERLOAD _CLC_DECL int atom_xchg(volatile local int *p, int
>> val);
>>     +_CLC_OVERLOAD _CLC_DECL unsigned int atom_xchg(volatile local
>>     unsigned int *p, unsigned int val);
>>     diff --git
>>     a/generic/include/clc/cl_khr_local_int32_extended_atomics/atom_and.h
>>     b/generic/include/clc/cl_khr_local_int32_extended_atomics/atom_and.h
>>     index 96d7b1a..0af8194 100644
>>     --- a/generic/include/clc/cl_khr_local_int32_extended_atomics/
>> atom_and.h
>>     +++ b/generic/include/clc/cl_khr_local_int32_extended_atomics/
>> atom_and.h
>>     @@ -1,2 +1,2 @@
>>     -_CLC_OVERLOAD _CLC_DECL int atom_and(local int *p, int val);
>>     -_CLC_OVERLOAD _CLC_DECL unsigned int atom_and(local unsigned int
>>     *p, unsigned int val);
>>     +_CLC_OVERLOAD _CLC_DECL int atom_and(volatile local int *p, int val);
>>     +_CLC_OVERLOAD _CLC_DECL unsigned int atom_and(volatile local
>>     unsigned int *p, unsigned int val);
>>     diff --git
>>     a/generic/include/clc/cl_khr_local_int32_extended_atomics/atom_max.h
>>     b/generic/include/clc/cl_khr_local_int32_extended_atomics/atom_max.h
>>     index 7d6b17d..e3b23dd 100644
>>     --- a/generic/include/clc/cl_khr_local_int32_extended_atomics/
>> atom_max.h
>>     +++ b/generic/include/clc/cl_khr_local_int32_extended_atomics/
>> atom_max.h
>>     @@ -1,2 +1,2 @@
>>     -_CLC_OVERLOAD _CLC_DECL int atom_max(local int *p, int val);
>>     -_CLC_OVERLOAD _CLC_DECL unsigned int atom_max(local unsigned int
>>     *p, unsigned int val);
>>     +_CLC_OVERLOAD _CLC_DECL int atom_max(volatile local int *p, int val);
>>     +_CLC_OVERLOAD _CLC_DECL unsigned int atom_max(volatile local
>>     unsigned int *p, unsigned int val);
>>     diff --git
>>     a/generic/include/clc/cl_khr_local_int32_extended_atomics/atom_min.h
>>     b/generic/include/clc/cl_khr_local_int32_extended_atomics/atom_min.h
>>     index ddb6cf3..ec11c96 100644
>>     --- a/generic/include/clc/cl_khr_local_int32_extended_atomics/
>> atom_min.h
>>     +++ b/generic/include/clc/cl_khr_local_int32_extended_atomics/
>> atom_min.h
>>     @@ -1,2 +1,2 @@
>>     -_CLC_OVERLOAD _CLC_DECL int atom_min(local int *p, int val);
>>     -_CLC_OVERLOAD _CLC_DECL unsigned int atom_min(local unsigned int
>>     *p, unsigned int val);
>>     +_CLC_OVERLOAD _CLC_DECL int atom_min(volatile local int *p, int val);
>>     +_CLC_OVERLOAD _CLC_DECL unsigned int atom_min(volatile local
>>     unsigned int *p, unsigned int val);
>>     diff --git
>>     a/generic/include/clc/cl_khr_local_int32_extended_atomics/atom_or.h
>>     b/generic/include/clc/cl_khr_local_int32_extended_atomics/atom_or.h
>>     index 518c256..abd8ac4 100644
>>     --- a/generic/include/clc/cl_khr_local_int32_extended_atomics/
>> atom_or.h
>>     +++ b/generic/include/clc/cl_khr_local_int32_extended_atomics/
>> atom_or.h
>>     @@ -1,2 +1,2 @@
>>     -_CLC_OVERLOAD _CLC_DECL int atom_or(local int *p, int val);
>>     -_CLC_OVERLOAD _CLC_DECL unsigned int atom_or(local unsigned int *p,
>>     unsigned int val);
>>     +_CLC_OVERLOAD _CLC_DECL int atom_or(volatile local int *p, int val);
>>     +_CLC_OVERLOAD _CLC_DECL unsigned int atom_or(volatile local
>>     unsigned int *p, unsigned int val);
>>     diff --git
>>     a/generic/include/clc/cl_khr_local_int32_extended_atomics/atom_xor.h
>>     b/generic/include/clc/cl_khr_local_int32_extended_atomics/atom_xor.h
>>     index e6c9f2f..fedf128 100644
>>     --- a/generic/include/clc/cl_khr_local_int32_extended_atomics/
>> atom_xor.h
>>     +++ b/generic/include/clc/cl_khr_local_int32_extended_atomics/
>> atom_xor.h
>>     @@ -1,2 +1,2 @@
>>     -_CLC_OVERLOAD _CLC_DECL int atom_xor(local int *p, int val);
>>     -_CLC_OVERLOAD _CLC_DECL unsigned int atom_xor(local unsigned int
>>     *p, unsigned int val);
>>     +_CLC_OVERLOAD _CLC_DECL int atom_xor(volatile local int *p, int val);
>>     +_CLC_OVERLOAD _CLC_DECL unsigned int atom_xor(volatile local
>>     unsigned int *p, unsigned int val);
>>     diff --git
>>     a/generic/lib/cl_khr_global_int32_base_atomics/atom_add.cl
>>     <http://atom_add.cl>
>>     b/generic/lib/cl_khr_global_int32_base_atomics/atom_add.cl
>>     <http://atom_add.cl>
>>     index 9151b0c..c0c14d3 100644
>>     --- a/generic/lib/cl_khr_global_int32_base_atomics/atom_add.cl
>>     <http://atom_add.cl>
>>     +++ b/generic/lib/cl_khr_global_int32_base_atomics/atom_add.cl
>>     <http://atom_add.cl>
>>     @@ -1,7 +1,7 @@
>>       #include <clc/clc.h>
>>
>>       #define IMPL(TYPE) \
>>     -_CLC_OVERLOAD _CLC_DEF TYPE atom_add(global TYPE *p, TYPE val) { \
>>     +_CLC_OVERLOAD _CLC_DEF TYPE atom_add(volatile global TYPE *p, TYPE
>>     val) { \
>>         return atomic_add(p, val); \
>>       }
>>
>>     diff --git
>>     a/generic/lib/cl_khr_global_int32_base_atomics/atom_cmpxchg.cl
>>     <http://atom_cmpxchg.cl>
>>     b/generic/lib/cl_khr_global_int32_base_atomics/atom_cmpxchg.cl
>>     <http://atom_cmpxchg.cl>
>>     index 7647740..becf767 100644
>>     --- a/generic/lib/cl_khr_global_int32_base_atomics/atom_cmpxchg.cl
>>     <http://atom_cmpxchg.cl>
>>     +++ b/generic/lib/cl_khr_global_int32_base_atomics/atom_cmpxchg.cl
>>     <http://atom_cmpxchg.cl>
>>     @@ -1,7 +1,7 @@
>>       #include <clc/clc.h>
>>
>>       #define IMPL(TYPE) \
>>     -_CLC_OVERLOAD _CLC_DEF TYPE atom_cmpxchg(global TYPE *p, TYPE cmp,
>>     TYPE val) { \
>>     +_CLC_OVERLOAD _CLC_DEF TYPE atom_cmpxchg(volatile global TYPE *p,
>>     TYPE cmp, TYPE val) { \
>>         return atomic_cmpxchg(p, cmp, val); \
>>       }
>>
>>     diff --git
>>     a/generic/lib/cl_khr_global_int32_base_atomics/atom_dec.cl
>>     <http://atom_dec.cl>
>>     b/generic/lib/cl_khr_global_int32_base_atomics/atom_dec.cl
>>     <http://atom_dec.cl>
>>     index a74158d..6d274d6 100644
>>     --- a/generic/lib/cl_khr_global_int32_base_atomics/atom_dec.cl
>>     <http://atom_dec.cl>
>>     +++ b/generic/lib/cl_khr_global_int32_base_atomics/atom_dec.cl
>>     <http://atom_dec.cl>
>>     @@ -1,7 +1,7 @@
>>       #include <clc/clc.h>
>>
>>       #define IMPL(TYPE) \
>>     -_CLC_OVERLOAD _CLC_DEF TYPE atom_dec(global TYPE *p) { \
>>     +_CLC_OVERLOAD _CLC_DEF TYPE atom_dec(volatile global TYPE *p) { \
>>         return atom_sub(p, 1); \
>>       }
>>
>>     diff --git
>>     a/generic/lib/cl_khr_global_int32_base_atomics/atom_inc.cl
>>     <http://atom_inc.cl>
>>     b/generic/lib/cl_khr_global_int32_base_atomics/atom_inc.cl
>>     <http://atom_inc.cl>
>>     index 1404b5a..9772777 100644
>>     --- a/generic/lib/cl_khr_global_int32_base_atomics/atom_inc.cl
>>     <http://atom_inc.cl>
>>     +++ b/generic/lib/cl_khr_global_int32_base_atomics/atom_inc.cl
>>     <http://atom_inc.cl>
>>     @@ -1,7 +1,7 @@
>>       #include <clc/clc.h>
>>
>>       #define IMPL(TYPE) \
>>     -_CLC_OVERLOAD _CLC_DEF TYPE atom_inc(global TYPE *p) { \
>>     +_CLC_OVERLOAD _CLC_DEF TYPE atom_inc(volatile global TYPE *p) { \
>>         return atom_add(p, 1); \
>>       }
>>
>>     diff --git
>>     a/generic/lib/cl_khr_global_int32_base_atomics/atom_sub.cl
>>     <http://atom_sub.cl>
>>     b/generic/lib/cl_khr_global_int32_base_atomics/atom_sub.cl
>>     <http://atom_sub.cl>
>>     index 7faa3cc..772fca8 100644
>>     --- a/generic/lib/cl_khr_global_int32_base_atomics/atom_sub.cl
>>     <http://atom_sub.cl>
>>     +++ b/generic/lib/cl_khr_global_int32_base_atomics/atom_sub.cl
>>     <http://atom_sub.cl>
>>     @@ -1,7 +1,7 @@
>>       #include <clc/clc.h>
>>
>>       #define IMPL(TYPE) \
>>     -_CLC_OVERLOAD _CLC_DEF TYPE atom_sub(global TYPE *p, TYPE val) { \
>>     +_CLC_OVERLOAD _CLC_DEF TYPE atom_sub(volatile global TYPE *p, TYPE
>>     val) { \
>>         return atomic_sub(p, val); \
>>       }
>>
>>     diff --git
>>     a/generic/lib/cl_khr_global_int32_base_atomics/atom_xchg.cl
>>     <http://atom_xchg.cl>
>>     b/generic/lib/cl_khr_global_int32_base_atomics/atom_xchg.cl
>>     <http://atom_xchg.cl>
>>     index 9c77db1..eb1fdcc 100644
>>     --- a/generic/lib/cl_khr_global_int32_base_atomics/atom_xchg.cl
>>     <http://atom_xchg.cl>
>>     +++ b/generic/lib/cl_khr_global_int32_base_atomics/atom_xchg.cl
>>     <http://atom_xchg.cl>
>>     @@ -1,7 +1,7 @@
>>       #include <clc/clc.h>
>>
>>       #define IMPL(TYPE) \
>>     -_CLC_OVERLOAD _CLC_DEF TYPE atom_xchg(global TYPE *p, TYPE val) { \
>>     +_CLC_OVERLOAD _CLC_DEF TYPE atom_xchg(volatile global TYPE *p, TYPE
>>     val) { \
>>         return atomic_xchg(p, val); \
>>       }
>>
>>     diff --git
>>     a/generic/lib/cl_khr_global_int32_extended_atomics/atom_and.cl
>>     <http://atom_and.cl>
>>     b/generic/lib/cl_khr_global_int32_extended_atomics/atom_and.cl
>>     <http://atom_and.cl>
>>     index e587969..e7d70ea 100644
>>     --- a/generic/lib/cl_khr_global_int32_extended_atomics/atom_and.cl
>>     <http://atom_and.cl>
>>     +++ b/generic/lib/cl_khr_global_int32_extended_atomics/atom_and.cl
>>     <http://atom_and.cl>
>>     @@ -1,9 +1,9 @@
>>       #include <clc/clc.h>
>>
>>       #define IMPL(TYPE) \
>>     -_CLC_OVERLOAD _CLC_DEF TYPE atom_and(global TYPE *p, TYPE val) { \
>>     +_CLC_OVERLOAD _CLC_DEF TYPE atom_and(volatile global TYPE *p, TYPE
>>     val) { \
>>         return atomic_and(p, val); \
>>       }
>>
>>       IMPL(int)
>>     -IMPL(unsigned int)
>>     \ No newline at end of file
>>     +IMPL(unsigned int)
>>     diff --git
>>     a/generic/lib/cl_khr_global_int32_extended_atomics/atom_max.cl
>>     <http://atom_max.cl>
>>     b/generic/lib/cl_khr_global_int32_extended_atomics/atom_max.cl
>>     <http://atom_max.cl>
>>     index 09177ed..a741b18 100644
>>     --- a/generic/lib/cl_khr_global_int32_extended_atomics/atom_max.cl
>>     <http://atom_max.cl>
>>     +++ b/generic/lib/cl_khr_global_int32_extended_atomics/atom_max.cl
>>     <http://atom_max.cl>
>>     @@ -1,7 +1,7 @@
>>       #include <clc/clc.h>
>>
>>       #define IMPL(TYPE) \
>>     -_CLC_OVERLOAD _CLC_DEF TYPE atom_max(global TYPE *p, TYPE val) { \
>>     +_CLC_OVERLOAD _CLC_DEF TYPE atom_max(volatile global TYPE *p, TYPE
>>     val) { \
>>         return atomic_max(p, val); \
>>       }
>>
>>     diff --git
>>     a/generic/lib/cl_khr_global_int32_extended_atomics/atom_min.cl
>>     <http://atom_min.cl>
>>     b/generic/lib/cl_khr_global_int32_extended_atomics/atom_min.cl
>>     <http://atom_min.cl>
>>     index 277c41b..f996526 100644
>>     --- a/generic/lib/cl_khr_global_int32_extended_atomics/atom_min.cl
>>     <http://atom_min.cl>
>>     +++ b/generic/lib/cl_khr_global_int32_extended_atomics/atom_min.cl
>>     <http://atom_min.cl>
>>     @@ -1,7 +1,7 @@
>>       #include <clc/clc.h>
>>
>>       #define IMPL(TYPE) \
>>     -_CLC_OVERLOAD _CLC_DEF TYPE atom_min(global TYPE *p, TYPE val) { \
>>     +_CLC_OVERLOAD _CLC_DEF TYPE atom_min(volatile global TYPE *p, TYPE
>>     val) { \
>>         return atomic_min(p, val); \
>>       }
>>
>>     diff --git
>>     a/generic/lib/cl_khr_global_int32_extended_atomics/atom_or.cl
>>     <http://atom_or.cl>
>>     b/generic/lib/cl_khr_global_int32_extended_atomics/atom_or.cl
>>     <http://atom_or.cl>
>>     index a936a8e..810d669 100644
>>     --- a/generic/lib/cl_khr_global_int32_extended_atomics/atom_or.cl
>>     <http://atom_or.cl>
>>     +++ b/generic/lib/cl_khr_global_int32_extended_atomics/atom_or.cl
>>     <http://atom_or.cl>
>>     @@ -1,7 +1,7 @@
>>       #include <clc/clc.h>
>>
>>       #define IMPL(TYPE) \
>>     -_CLC_OVERLOAD _CLC_DEF TYPE atom_or(global TYPE *p, TYPE val) { \
>>     +_CLC_OVERLOAD _CLC_DEF TYPE atom_or(volatile global TYPE *p, TYPE
>>     val) { \
>>         return atomic_or(p, val); \
>>       }
>>
>>     diff --git
>>     a/generic/lib/cl_khr_global_int32_extended_atomics/atom_xor.cl
>>     <http://atom_xor.cl>
>>     b/generic/lib/cl_khr_global_int32_extended_atomics/atom_xor.cl
>>     <http://atom_xor.cl>
>>     index 1a8e350..9dc5803 100644
>>     --- a/generic/lib/cl_khr_global_int32_extended_atomics/atom_xor.cl
>>     <http://atom_xor.cl>
>>     +++ b/generic/lib/cl_khr_global_int32_extended_atomics/atom_xor.cl
>>     <http://atom_xor.cl>
>>     @@ -1,7 +1,7 @@
>>       #include <clc/clc.h>
>>
>>       #define IMPL(TYPE) \
>>     -_CLC_OVERLOAD _CLC_DEF TYPE atom_xor(global TYPE *p, TYPE val) { \
>>     +_CLC_OVERLOAD _CLC_DEF TYPE atom_xor(volatile global TYPE *p, TYPE
>>     val) { \
>>         return atomic_xor(p, val); \
>>       }
>>
>>     diff --git a/generic/lib/cl_khr_local_int32_base_atomics/atom_add.cl
>>     <http://atom_add.cl>
>>     b/generic/lib/cl_khr_local_int32_base_atomics/atom_add.cl
>>     <http://atom_add.cl>
>>     index a5dea18..3ad364d 100644
>>     --- a/generic/lib/cl_khr_local_int32_base_atomics/atom_add.cl
>>     <http://atom_add.cl>
>>     +++ b/generic/lib/cl_khr_local_int32_base_atomics/atom_add.cl
>>     <http://atom_add.cl>
>>     @@ -1,7 +1,7 @@
>>       #include <clc/clc.h>
>>
>>       #define IMPL(TYPE) \
>>     -_CLC_OVERLOAD _CLC_DEF TYPE atom_add(local TYPE *p, TYPE val) { \
>>     +_CLC_OVERLOAD _CLC_DEF TYPE atom_add(volatile local TYPE *p, TYPE
>>     val) { \
>>         return atomic_add(p, val); \
>>       }
>>
>>     diff --git
>>     a/generic/lib/cl_khr_local_int32_base_atomics/atom_cmpxchg.cl
>>     <http://atom_cmpxchg.cl>
>>     b/generic/lib/cl_khr_local_int32_base_atomics/atom_cmpxchg.cl
>>     <http://atom_cmpxchg.cl>
>>     index 16e9579..ea648f0 100644
>>     --- a/generic/lib/cl_khr_local_int32_base_atomics/atom_cmpxchg.cl
>>     <http://atom_cmpxchg.cl>
>>     +++ b/generic/lib/cl_khr_local_int32_base_atomics/atom_cmpxchg.cl
>>     <http://atom_cmpxchg.cl>
>>     @@ -1,7 +1,7 @@
>>       #include <clc/clc.h>
>>
>>       #define IMPL(TYPE) \
>>     -_CLC_OVERLOAD _CLC_DEF TYPE atom_cmpxchg(local TYPE *p, TYPE cmp,
>>     TYPE val) { \
>>     +_CLC_OVERLOAD _CLC_DEF TYPE atom_cmpxchg(volatile local TYPE *p,
>>     TYPE cmp, TYPE val) { \
>>         return atomic_cmpxchg(p, cmp, val); \
>>       }
>>
>>     diff --git a/generic/lib/cl_khr_local_int32_base_atomics/atom_dec.cl
>>     <http://atom_dec.cl>
>>     b/generic/lib/cl_khr_local_int32_base_atomics/atom_dec.cl
>>     <http://atom_dec.cl>
>>     index d22c333..fd5fac8 100644
>>     --- a/generic/lib/cl_khr_local_int32_base_atomics/atom_dec.cl
>>     <http://atom_dec.cl>
>>     +++ b/generic/lib/cl_khr_local_int32_base_atomics/atom_dec.cl
>>     <http://atom_dec.cl>
>>     @@ -1,7 +1,7 @@
>>       #include <clc/clc.h>
>>
>>       #define IMPL(TYPE) \
>>     -_CLC_OVERLOAD _CLC_DEF TYPE atom_dec(local TYPE *p) { \
>>     +_CLC_OVERLOAD _CLC_DEF TYPE atom_dec(volatile local TYPE *p) { \
>>         return atom_sub(p, 1); \
>>       }
>>
>>     diff --git a/generic/lib/cl_khr_local_int32_base_atomics/atom_inc.cl
>>     <http://atom_inc.cl>
>>     b/generic/lib/cl_khr_local_int32_base_atomics/atom_inc.cl
>>     <http://atom_inc.cl>
>>     index 4ba0d06..7c57daa 100644
>>     --- a/generic/lib/cl_khr_local_int32_base_atomics/atom_inc.cl
>>     <http://atom_inc.cl>
>>     +++ b/generic/lib/cl_khr_local_int32_base_atomics/atom_inc.cl
>>     <http://atom_inc.cl>
>>     @@ -1,7 +1,7 @@
>>       #include <clc/clc.h>
>>
>>       #define IMPL(TYPE) \
>>     -_CLC_OVERLOAD _CLC_DEF TYPE atom_inc(local TYPE *p) { \
>>     +_CLC_OVERLOAD _CLC_DEF TYPE atom_inc(volatile local TYPE *p) { \
>>         return atom_add(p, 1); \
>>       }
>>
>>     diff --git a/generic/lib/cl_khr_local_int32_base_atomics/atom_sub.cl
>>     <http://atom_sub.cl>
>>     b/generic/lib/cl_khr_local_int32_base_atomics/atom_sub.cl
>>     <http://atom_sub.cl>
>>     index c96696a..b5f64a1 100644
>>     --- a/generic/lib/cl_khr_local_int32_base_atomics/atom_sub.cl
>>     <http://atom_sub.cl>
>>     +++ b/generic/lib/cl_khr_local_int32_base_atomics/atom_sub.cl
>>     <http://atom_sub.cl>
>>     @@ -1,7 +1,7 @@
>>       #include <clc/clc.h>
>>
>>       #define IMPL(TYPE) \
>>     -_CLC_OVERLOAD _CLC_DEF TYPE atom_sub(local TYPE *p, TYPE val) { \
>>     +_CLC_OVERLOAD _CLC_DEF TYPE atom_sub(volatile local TYPE *p, TYPE
>>     val) { \
>>         return atomic_sub(p, val); \
>>       }
>>
>>     diff --git
>>     a/generic/lib/cl_khr_local_int32_base_atomics/atom_xchg.cl
>>     <http://atom_xchg.cl>
>>     b/generic/lib/cl_khr_local_int32_base_atomics/atom_xchg.cl
>>     <http://atom_xchg.cl>
>>     index 7d4bcca..f2007d8 100644
>>     --- a/generic/lib/cl_khr_local_int32_base_atomics/atom_xchg.cl
>>     <http://atom_xchg.cl>
>>     +++ b/generic/lib/cl_khr_local_int32_base_atomics/atom_xchg.cl
>>     <http://atom_xchg.cl>
>>     @@ -1,7 +1,7 @@
>>       #include <clc/clc.h>
>>
>>       #define IMPL(TYPE) \
>>     -_CLC_OVERLOAD _CLC_DEF TYPE atom_xchg(local TYPE *p, TYPE val) { \
>>     +_CLC_OVERLOAD _CLC_DEF TYPE atom_xchg(volatile local TYPE *p, TYPE
>>     val) { \
>>         return atomic_xchg(p, val); \
>>       }
>>
>>     diff --git
>>     a/generic/lib/cl_khr_local_int32_extended_atomics/atom_and.cl
>>     <http://atom_and.cl>
>>     b/generic/lib/cl_khr_local_int32_extended_atomics/atom_and.cl
>>     <http://atom_and.cl>
>>     index 180103a..7e97ad1 100644
>>     --- a/generic/lib/cl_khr_local_int32_extended_atomics/atom_and.cl
>>     <http://atom_and.cl>
>>     +++ b/generic/lib/cl_khr_local_int32_extended_atomics/atom_and.cl
>>     <http://atom_and.cl>
>>     @@ -1,9 +1,9 @@
>>       #include <clc/clc.h>
>>
>>       #define IMPL(TYPE) \
>>     -_CLC_OVERLOAD _CLC_DEF TYPE atom_and(local TYPE *p, TYPE val) { \
>>     +_CLC_OVERLOAD _CLC_DEF TYPE atom_and(volatile local TYPE *p, TYPE
>>     val) { \
>>         return atomic_and(p, val); \
>>       }
>>
>>       IMPL(int)
>>     -IMPL(unsigned int)
>>     \ No newline at end of file
>>     +IMPL(unsigned int)
>>     diff --git
>>     a/generic/lib/cl_khr_local_int32_extended_atomics/atom_max.cl
>>     <http://atom_max.cl>
>>     b/generic/lib/cl_khr_local_int32_extended_atomics/atom_max.cl
>>     <http://atom_max.cl>
>>     index b90301b..c019646 100644
>>     --- a/generic/lib/cl_khr_local_int32_extended_atomics/atom_max.cl
>>     <http://atom_max.cl>
>>     +++ b/generic/lib/cl_khr_local_int32_extended_atomics/atom_max.cl
>>     <http://atom_max.cl>
>>     @@ -1,7 +1,7 @@
>>       #include <clc/clc.h>
>>
>>       #define IMPL(TYPE) \
>>     -_CLC_OVERLOAD _CLC_DEF TYPE atom_max(local TYPE *p, TYPE val) { \
>>     +_CLC_OVERLOAD _CLC_DEF TYPE atom_max(volatile local TYPE *p, TYPE
>>     val) { \
>>         return atomic_max(p, val); \
>>       }
>>
>>     diff --git
>>     a/generic/lib/cl_khr_local_int32_extended_atomics/atom_min.cl
>>     <http://atom_min.cl>
>>     b/generic/lib/cl_khr_local_int32_extended_atomics/atom_min.cl
>>     <http://atom_min.cl>
>>     index 3acedd8..77482f7 100644
>>     --- a/generic/lib/cl_khr_local_int32_extended_atomics/atom_min.cl
>>     <http://atom_min.cl>
>>     +++ b/generic/lib/cl_khr_local_int32_extended_atomics/atom_min.cl
>>     <http://atom_min.cl>
>>     @@ -1,7 +1,7 @@
>>       #include <clc/clc.h>
>>
>>       #define IMPL(TYPE) \
>>     -_CLC_OVERLOAD _CLC_DEF TYPE atom_min(local TYPE *p, TYPE val) { \
>>     +_CLC_OVERLOAD _CLC_DEF TYPE atom_min(volatile local TYPE *p, TYPE
>>     val) { \
>>         return atomic_min(p, val); \
>>       }
>>
>>     diff --git
>>     a/generic/lib/cl_khr_local_int32_extended_atomics/atom_or.cl
>>     <http://atom_or.cl>
>>     b/generic/lib/cl_khr_local_int32_extended_atomics/atom_or.cl
>>     <http://atom_or.cl>
>>     index 338ff2c..d9a12c7 100644
>>     --- a/generic/lib/cl_khr_local_int32_extended_atomics/atom_or.cl
>>     <http://atom_or.cl>
>>     +++ b/generic/lib/cl_khr_local_int32_extended_atomics/atom_or.cl
>>     <http://atom_or.cl>
>>     @@ -1,7 +1,7 @@
>>       #include <clc/clc.h>
>>
>>       #define IMPL(TYPE) \
>>     -_CLC_OVERLOAD _CLC_DEF TYPE atom_or(local TYPE *p, TYPE val) { \
>>     +_CLC_OVERLOAD _CLC_DEF TYPE atom_or(volatile local TYPE *p, TYPE
>>     val) { \
>>         return atomic_or(p, val); \
>>       }
>>
>>     diff --git
>>     a/generic/lib/cl_khr_local_int32_extended_atomics/atom_xor.cl
>>     <http://atom_xor.cl>
>>     b/generic/lib/cl_khr_local_int32_extended_atomics/atom_xor.cl
>>     <http://atom_xor.cl>
>>     index 51ae3c0..ee40bff 100644
>>     --- a/generic/lib/cl_khr_local_int32_extended_atomics/atom_xor.cl
>>     <http://atom_xor.cl>
>>     +++ b/generic/lib/cl_khr_local_int32_extended_atomics/atom_xor.cl
>>     <http://atom_xor.cl>
>>     @@ -1,7 +1,7 @@
>>       #include <clc/clc.h>
>>
>>       #define IMPL(TYPE) \
>>     -_CLC_OVERLOAD _CLC_DEF TYPE atom_xor(local TYPE *p, TYPE val) { \
>>     +_CLC_OVERLOAD _CLC_DEF TYPE atom_xor(volatile local TYPE *p, TYPE
>>     val) { \
>>         return atomic_xor(p, val); \
>>       }
>>
>>     --
>>     2.0.4
>>
>>
>>     _______________________________________________
>>     Libclc-dev mailing list
>>     Libclc-dev at pcc.me.uk <mailto:Libclc-dev at pcc.me.uk>
>>     http://www.pcc.me.uk/cgi-bin/mailman/listinfo/libclc-dev
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/libclc-dev/attachments/20150226/44bddc16/attachment.html>


More information about the Libclc-dev mailing list