Is it legal to cast global memory into a pointer to global memory? In other words, can I do? :
kernel void foo(global long *data, global float *floats0) {
global float *global*data_as_ppfloat = (global float *global*)data;
data_as_ppfloat[0] = floats0;
}