The patch exposes the LLVM lowering options of the GPU to LLVM conversion pass. Additionally, it introduces the logic needed to cast index type parameters passed to the GPU runtime wrapper if the bitwidth of the index type is set to less than the 64-bits used by the GPU runtime wrapper.
For the review: This is a rather intrusive change and it may interfere with the entire data layout refactoring. If you prefer I can maintain this as a local change.
You're adding many options that I don't find tests for at the moment?