The specification currently states:
The OpenCL device type. Currently supported
values are:
CL_DEVICE_TYPE_CPU, CL_DEVICE_TYPE_GPU, CL_
DEVICE_TYPE_ACCELERATOR, CL_DEVICE_TYPE_DEFAULT,
a combination of the above types, or CL_DEVICE_
TYPE_CUSTOM.
This means that an implementation could return CL_DEVICE_TYPE_CPU|CL_DEVICE_TYPE_GPU, CL_DEVICE_TYPE_ACCELERATOR|CL_DEVICE_TYPE_DEFAULT. What is the rationale for allowing CPU|GPU for example?
Note that the spec currently doesn't describe anything CPU- or GPU-specific.