Is it legal to cast global memory into a pointer to global memory?

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;
}

Yes. We do this in some of our kernels. It is legal.