OpenCL has large number of "builtin" functions ("builtin" in the sense of OpenCL spec) which are defined in header files. To compile OpenCL kernels using these builtin functions, the header files are needed. There are different implementations of OpenCL header files. The Khronos implementation can be found at this link:
https://github.com/KhronosGroup/SPIR/blob/spirv-1.0/lib/Headers/opencl.h
This patch is an effort to elicit further discussions about upstreaming OpenCL header file to clang.