vload and vstore vs. vload_half and vstore_half confusion
The current spec does not clearly differentiate between the vload and vstore functions, which require the cl_khr_fp16 extension, and the vload_half and vstore_half, which are supported by all OpenCL implementations, leading to confusion. We should try to fix this.
For example, section 6.15.7 - Vector Data Load and Store Functions currently says:
All functions taking or returning half types are supported only when the cl_khr_fp16 extension macro is supported.
Strictly speaking, this is true, because the vload_half and vstore_half functions take a pointer-to half, but this detail is easy to miss.
We should clarify that there are two different "classes" of functions:
- The
vload_halfandvstore_halffunctions take pointers-to-half, but otherwise take or returnfloatdata. These are supported by all OpenCL devices, even those that do not support cl_khr_fp16. - The
vloadandvstorefunctions that take pointer-to-halfand take or returnhalfdata. These require cl_khr_fp16.
This issue is debatably a small part of #1044, but filing it separately to ensure it is addressed.