The instructions how to build SPIR-V generator/Clang can be found here: https://github.com/KhronosGroup/SPIR/tree/spirv-1.1
To clone the OpenCL C++ standard libary use the following cmdline:
git clone https://github.com/KhronosGroup/libclcxx.git master
To create a SPIR-V binary from a valid OpenCL-C file (.cl), use the following command lines:
clang -cc1 -emit-spirv -triple <triple> -cl-std=c++ -I <libclcxx dir> -x cl -o <output> <input>
Notes:
<triple>
: for 32 bit SPIR-V use spir-unknown-unknown, for 64 bit SPIR-V use spir64-unknown-unknown.- -D: to enable support for extension. e.g. -Dcl_khr_mipmap_image compile option will enable mipmap support.
- -cl-fp16-enable: to enable half support and define cl_khr_fp16
- -cl-fp64-enable: to enable double support and define cl_khr_fp64
- -O: -O0 (default) is the only tested option value at the moment. It's assumed by design that all optimizations are executed by SPIR-V consumer
<libclcxx dir>
: path to include directory from libclcxx (https://github.com/KhronosGroup/libclcxx) .
clang -cc1 -emit-spirv -triple=spir-unknown-unknown -cl-std=c++ -I include kernel.cl -o kernel.spir
Bugs/feature requests can be filed via github or Khronos Bugzilla bug tracker.