<div dir="ltr">Were we going to abandon this one in favor of the write up you're doing or is this something else?<br><br>-eric<br></div><br><div class="gmail_quote">On Thu, Mar 19, 2015 at 2:28 PM Artem Belevich <<a href="mailto:tra@google.com">tra@google.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi eliben, echristo,<br>
<br>
These are preliminary driver changes to build and combine host and device-side CUDA code.<br>
Current patch relies on external ptxwrap tool (<a href="http://reviews.llvm.org/D8397" target="_blank">http://reviews.llvm.org/D8397</a><u></u>) to generate glue<br>
code for incorporation of device-side PTX into host-side object file. This part will be replaced.<br>
<br>
Basic flow for CUDA compilation:<br>
  - create new InputAction(TY_CUDA_DEVICE, <a href="http://input.cu" target="_blank">input.cu</a>) for each unique --gpu-architecture <GPU> flag<br>
  - run BuildActions() on them<br>
  - for each action chain, create CudaDeviceAction to associate it with the <GPU> parameter.<br>
<br>
  During BuildJobsForActions CudaDeviceAction is handles similarly to BindArchAction -- it picks device-specific<br>
  toolchain and then proceeds with BuildJobsForActions() for the rest of the action chain.<br>
  CudaHostAction adds flags to include device-side outputs and proceeds with BuildJobsForActions() normally otherwise.<br>
<br>
Added a test to verify driver pipeline construction.<br>
<br>
Depends on: <a href="http://reviews.llvm.org/D8397" target="_blank">http://reviews.llvm.org/D8397</a> (ptxwrap tool).<br>
<br>
<a href="http://reviews.llvm.org/D8463" target="_blank">http://reviews.llvm.org/D8463</a><br>
<br>
Files:<br>
  include/clang/Driver/Action.h<br>
  include/clang/Driver/Driver.h<br>
  include/clang/Driver/Options.<u></u>td<br>
  include/clang/Driver/Types.def<br>
  include/clang/Driver/Types.h<br>
  lib/Driver/Action.cpp<br>
  lib/Driver/Driver.cpp<br>
  lib/Driver/ToolChain.cpp<br>
  lib/Driver/ToolChains.cpp<br>
  lib/Driver/ToolChains.h<br>
  lib/Driver/Tools.cpp<br>
  lib/Driver/Tools.h<br>
  lib/Driver/Types.cpp<br>
  test/Driver/<a href="http://cuda-options.cu" target="_blank">cuda-options.cu</a><br>
  test/Index/<a href="http://attributes-cuda.cu" target="_blank">attributes-cuda.cu</a><br>
  tools/libclang/CIndex.cpp<br>
  unittests/ASTMatchers/<u></u>ASTMatchersTest.h<br>
<br>
EMAIL PREFERENCES<br>
  <a href="http://reviews.llvm.org/settings/panel/emailpreferences/" target="_blank">http://reviews.llvm.org/<u></u>settings/panel/<u></u>emailpreferences/</a><br>
</blockquote></div>