yaxunl marked 21 inline comments as done.
yaxunl added inline comments.

================
Comment at: include/clang/Driver/Options.td:552-553
+def : Joined<["--"], "offload-arch=">, Alias<cuda_gpu_arch_EQ>;
+def offload_archs : Joined<["--"], "offload-archs=">, Flags<[DriverOption]>,
+  HelpText<"List of offload architectures for CUDA/HIP/OpenMP (e.g. 
sm_35,gfx803).">;
 def no_cuda_gpu_arch_EQ : Joined<["--"], "no-cuda-gpu-arch=">, 
Flags<[DriverOption]>,
----------------
tra wrote:
> The discussion you've mentioned appears to be unfinished. @jlebar has raised 
> a valid point regarding -no-offload-arch[s] and his email went unanswered 
> AFAICT.
> 
> If you propose to generalize a way to specify offload targets, it should 
> probably be done in a separate patch.
> 
> I'd just stick with `--cuda-gpu-arch` for the time being until we figure out 
> how we're going to handle target specification in general. It works well 
> enough for the moment and the new options are not required for the 
> functionality implemented by this patch.
Will use `--cuda-gpu-arch` for this patch.


================
Comment at: lib/Driver/Driver.cpp:2333-2339
+      if (HostTC->getTriple().isNVPTX() ||
+          HostTC->getTriple().getArch() == llvm::Triple::amdgcn) {
         // We do not support targeting NVPTX for host compilation. Throw
         // an error and abort pipeline construction early so we don't trip
         // asserts that assume device-side compilation.
         C.getDriver().Diag(diag::err_drv_cuda_nvptx_host);
         return true;
----------------
tra wrote:
> You really want to either have your own error message or change existing one 
> to something more generic. `unsupported use of NVPTX for host compilation.` 
> will sound very confusing tof someone who tries to compile for AMD GPU.
Will generalise this error message.


================
Comment at: lib/Driver/Driver.cpp:3319
+  static bool isAMDGPUCUDAOffloading(const Action *A, llvm::Triple T) {
+    return A->isOffloading(Action::OFK_Cuda) &&
+           (StringRef(A->getOffloadingArch()).startswith("gfx") ||
----------------
tra wrote:
> Would it make sense for HIP to have its own offloading kind? You seem to be 
> adding similar checks in few other places.
Yes it makes sense to let HIP have its own offloading kind. Will do.


================
Comment at: lib/Driver/Driver.cpp:3472-3474
+        const char *Value = A->getValue();
+        if (const char *Ext = strrchr(Value, '.'))
+          InputType = TC.LookupTypeForExtension(Ext + 1);
----------------
tra wrote:
> `llvm::sys::path::extension` ?
will do


================
Comment at: lib/Driver/Driver.cpp:3905-3912
+    SmallString<128> fname(Split.first.str().c_str());
+    if (!BoundArch.empty()) {
+      fname += "-";
+      fname.append(BoundArch);
+    }
     std::string TmpName = GetTemporaryPath(
+        fname, types::getTypeTempSuffix(JA.getType(), IsCLMode()));
----------------
tra wrote:
> I'm not sure why we do this here. Nor does it seem relevant to HIP. 
will remove it


================
Comment at: lib/Driver/Driver.cpp:3982-3985
+    if (((StringRef)BaseInput).endswith(".a"))
+      Suffixed += "a";
+    else
+      Suffixed += Suffix;
----------------
tra wrote:
> Same here -- I'm not sure why we need this nor how it's related to HIP.
will remove


================
Comment at: lib/Driver/ToolChains/Cuda.cpp:352
+  CmdArgs.push_back("-o");
+  std::string TmpName = C.getDriver().GetTemporaryPath("LC_OUTPUT", "o");
+  const char *llcOutputFile =
----------------
tra wrote:
> `L*L*C_OUTPUT` ?
will change to LLC_OUTPUT


================
Comment at: lib/Driver/ToolChains/Cuda.cpp:356
+  CmdArgs.push_back(llcOutputFile);
+  const char *Exec = Args.MakeArgString(C.getDriver().Dir + "/llc");
+  C.addCommand(llvm::make_unique<Command>(JA, *this, Exec, CmdArgs, Inputs));
----------------
tra wrote:
> Please use routines in`llvm::sys::path` here and in other places where you 
> manipulate paths.
will do


================
Comment at: lib/Driver/ToolChains/Cuda.cpp:360-363
+  CmdArgs2.push_back("-flavor");
+  CmdArgs2.push_back("gnu");
+  CmdArgs2.push_back("--no-undefined");
+  CmdArgs2.push_back("-shared");
----------------
tra wrote:
> You could use .append({...})
> ```
> CmdArgs2.append({"foo","bar","buz"});
> ```
will do


================
Comment at: lib/Driver/ToolChains/Cuda.cpp:436-439
+    if (Arg->getSpelling() == "-L") {
+      LibraryPaths.push_back(Args.MakeArgString(
+          std::string(Arg->getValue()) + "/libdevice/" + 
std::string(GFXNAME)));
+      LibraryPaths.push_back(Args.MakeArgString(Arg->getValue()));
----------------
tra wrote:
> This is rather awkward -- you're looking for /libdevice under all paths 
> specified by -L, but there's no way to explicitly point to the directory with 
> the bitcode library. If device library may be in a non-canonical location, 
> I'd rather there was an explicit option to specify it. Furthermore, my 
> understanding is that you will need to find these bitcode libraries during 
> `-c` compilation. Using `-L` to derive bitcode search path during compilation 
> looks wrong to me.
Will use `--hip-device-lib-path=` and drop /libdevice.


================
Comment at: lib/Driver/ToolChains/Cuda.cpp:445
+  LibraryPaths.push_back(Args.MakeArgString(
+      C.getDriver().Dir + "/../lib/libdevice/" + std::string(GFXNAME)));
+
----------------
tra wrote:
> This (and other places where you're calculating libdevice path relative to 
> driver dir) should probably be derived from the resource dir.  Driver's path 
> may not be the 'root' the compiler has been told to use.
will remove this


================
Comment at: lib/Driver/ToolChains/Cuda.cpp:447
+
+  addDirectoryList(Args, LibraryPaths, "-L", "LIBRARY_PATH");
+
----------------
tra wrote:
> LIBRARY_PATH sounds rather generic. Perhaps it should have HIP somewhere in 
> its name.
will use HIP_DEVICE_LIB_PATH


================
Comment at: lib/Driver/ToolChains/Cuda.cpp:462
+
+  CmdArgs.push_back("-suppress-warnings");
+
----------------
tra wrote:
> Why do we need to silence the warnings?
will remove this


================
Comment at: lib/Driver/ToolChains/Cuda.cpp:498-501
+    OptArgs.push_back(mcpustr);
+    OptArgs.push_back("-dce");
+    OptArgs.push_back("-sroa");
+    OptArgs.push_back("-globaldce");
----------------
tra wrote:
> This does not look like the right place to disable particular passes. 
> Shouldn't it be done somewhere in LLVM?
These are not disabling the passes but adding these passes. They are some 
optimizations which are usually improving performance for amdgcn.


https://reviews.llvm.org/D45212



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to