LLVM implementation of Thread Coarsening compiler pass for OpenCL