diff --git a/clang/include/clang/Basic/OpenCLExtensions.def b/clang/include/clang/Basic/OpenCLExtensions.def --- a/clang/include/clang/Basic/OpenCLExtensions.def +++ b/clang/include/clang/Basic/OpenCLExtensions.def @@ -110,6 +110,8 @@ OPENCL_OPTIONALCOREFEATURE(__opencl_c_generic_address_space, false, 300, OCL_C_30) OPENCL_OPTIONALCOREFEATURE(__opencl_c_atomic_order_acq_rel, false, 300, OCL_C_30) OPENCL_OPTIONALCOREFEATURE(__opencl_c_atomic_order_seq_cst, false, 300, OCL_C_30) +OPENCL_OPTIONALCOREFEATURE(__opencl_c_atomic_scope_device, false, 300, OCL_C_30) +OPENCL_OPTIONALCOREFEATURE(__opencl_c_atomic_scope_all_devices, false, 300, OCL_C_30) OPENCL_OPTIONALCOREFEATURE(__opencl_c_subgroups, false, 300, OCL_C_30) OPENCL_OPTIONALCOREFEATURE(__opencl_c_3d_image_writes, false, 300, OCL_C_30) OPENCL_OPTIONALCOREFEATURE(__opencl_c_device_enqueue, false, 300, OCL_C_30) diff --git a/clang/lib/Headers/opencl-c.h b/clang/lib/Headers/opencl-c.h --- a/clang/lib/Headers/opencl-c.h +++ b/clang/lib/Headers/opencl-c.h @@ -13378,7 +13378,7 @@ int __ovld atomic_fetch_xor(volatile __global atomic_int *object, int operand); int __ovld atomic_fetch_xor(volatile __local atomic_int *object, int operand); uint __ovld atomic_fetch_xor(volatile __global atomic_uint *object, uint operand); -uint __ovld atomic_fetch_xor(volatile __local atomic_uint *object, uint operand);i +uint __ovld atomic_fetch_xor(volatile __local atomic_uint *object, uint operand); int __ovld atomic_fetch_and(volatile __global atomic_int *object, int operand); int __ovld atomic_fetch_and(volatile __local atomic_int *object, int operand); uint __ovld atomic_fetch_and(volatile __global atomic_uint *object, uint operand); diff --git a/clang/test/SemaOpenCL/features.cl b/clang/test/SemaOpenCL/features.cl --- a/clang/test/SemaOpenCL/features.cl +++ b/clang/test/SemaOpenCL/features.cl @@ -24,6 +24,8 @@ // FEATURES: #define __opencl_c_3d_image_writes 1 // FEATURES: #define __opencl_c_atomic_order_acq_rel 1 // FEATURES: #define __opencl_c_atomic_order_seq_cst 1 +// FEATURES: #define __opencl_c_atomic_scope_all_devices 1 +// FEATURES: #define __opencl_c_atomic_scope_device 1 // FEATURES: #define __opencl_c_device_enqueue 1 // FEATURES: #define __opencl_c_fp64 1 // FEATURES: #define __opencl_c_generic_address_space 1 @@ -38,6 +40,8 @@ // NO-FEATURES-NOT: __opencl_c_3d_image_writes // NO-FEATURES-NOT: __opencl_c_atomic_order_acq_rel // NO-FEATURES-NOT: __opencl_c_atomic_order_seq_cst +// NO-FEATURES-NOT: __opencl_c_atomic_scope_all_devices +// NO-FEATURES-NOT: __opencl_c_atomic_scope_device // NO-FEATURES-NOT: __opencl_c_device_enqueue // NO-FEATURES-NOT: __opencl_c_fp64 // NO-FEATURES-NOT: __opencl_c_generic_address_space