I noticed that the new IL spec says that Virtual Function / Interface support is available on Evergreen and future GPUs. Is there currently any backdoor/proprietary way to mix a little bit of IL into OpenCL kernel code so that kernels written in OpenCL can take advantage of that?
I'm sure there are many potential uses of mixing IL blocks into OpenCL. But interface is particularly useful because of the huge performance advantage over big switch-case blocks. This is especially true if the code is ported from say an existing C++ or Java program.
A workaround idea: is the IL/microcode dump of OpenCL from the new profiler fairly close to something that the CAL compiler will take as source code? (Actually, will it still be called CAL? Or is there going to be a new IL compiler going forward?)
What I am thinking about is to dump my OpenCL-written kernel into IL, merge it with hand coded IL code that takes advantage of Evergreen features not exposed in the current OpenCL implementation, and compile it using CAL (or whatever it is called going forward). I don't mind doing some parsing etc. to get it working. But is it even technically possible?
The IL output from the profiler should be compatible with calclCompile (the output should be identical compare to the output of using the GPU_DUMP_DEVICE_KERNEL environment variable).