Add the memory_scope_all_devices enum value, which is restricted to
OpenCL 3.0 or newer and the __opencl_c_atomic_scope_all_devices
feature. Also guard memory_scope_all_svm_devices accordingly, which
is already available in OpenCL 2.0.
The __opencl_c_atomic_scope_all_devices feature is header-only, so
set its define to 1 in opencl-c-base.h. This is done
unconditionally at the moment, as the mechanism for disabling
header-only options hasn't been decided yet.
This patch only adds a negative test for now. Ideally adding a CL3.0
run line to atomic-ops.cl should suffice as a positive test, but we
cannot do that yet until (at least) generic address spaces and program
scope variables are supported in OpenCL 3.0 mode.
This feature is header only. We had a lot of discussions on that and the main idea was not to declare header only features/extensions in OpenCLExtensions.def and use -D__opencl_c_atomic_scope_all_devices=1 instead, @Anastasia can comment on this.
I personally would like to introduce new flag for OpenCL options in OpenCLExtensions.def which will indicate that feature/extension is header-only, and thus all of such options can be declared in OpenCLExtensions.def: if flag is set to true it can be stripped out from the parser. What do you think about this?