================
@@ -3061,6 +3061,61 @@ void tools::addHIPRuntimeLibArgs(const ToolChain &TC,
Compilation &C,
}
}
+void tools::addOpenCLBuiltinsLib(const Driver &D,
+ const llvm::opt::ArgList &DriverArgs,
+ llvm::opt::ArgStringList &CC1Args) {
+ const Arg *A = DriverArgs.getLastArg(options::OPT_libclc_lib_EQ);
+ if (!A)
+ return;
+
+ // If the namespec is of the form :filename we use it exactly.
+ StringRef LibclcNamespec(A->getValue());
+ bool FilenameSearch = LibclcNamespec.consume_front(":");
+ if (FilenameSearch) {
+ SmallString<128> LibclcFile(LibclcNamespec);
+ if (llvm::sys::fs::exists(LibclcFile)) {
+ CC1Args.push_back("-mlink-builtin-bitcode");
+ CC1Args.push_back(DriverArgs.MakeArgString(LibclcFile));
+ return;
+ }
+ D.Diag(diag::err_drv_libclc_not_found) << LibclcFile;
+ return;
+ }
+
+ // The OpenCL libraries are stored in <ResourceDir>/lib/<triple>.
+ SmallString<128> BasePath(D.ResourceDir);
+ llvm::sys::path::append(BasePath, "lib");
+ llvm::sys::path::append(BasePath, D.getTargetTriple());
+
+ // First check for a CPU-specific library in
<ResourceDir>/lib/<triple>/<CPU>.
+ // TODO: Factor this into common logic that checks for valid subtargets.
+ if (const Arg *CPUArg =
+ DriverArgs.getLastArg(options::OPT_mcpu_EQ, options::OPT_march_EQ)) {
+ StringRef CPU = CPUArg->getValue();
+ if (!CPU.empty()) {
+ SmallString<128> CPUPath(BasePath);
+ llvm::sys::path::append(CPUPath, CPU, "libclc.bc");
+ if (llvm::sys::fs::exists(CPUPath)) {
+ CC1Args.push_back("-mlink-builtin-bitcode");
+ CC1Args.push_back(DriverArgs.MakeArgString(CPUPath));
+ return;
+ }
+ }
+ }
+
+ // Fall back to the generic library for the triple.
+ SmallString<128> GenericPath(BasePath);
+ llvm::sys::path::append(GenericPath, "libclc.bc");
+ if (llvm::sys::fs::exists(GenericPath)) {
+ CC1Args.push_back("-mlink-builtin-bitcode");
+ CC1Args.push_back(DriverArgs.MakeArgString(GenericPath));
+ return;
+ }
+
+ D.Diag(diag::err_drv_libclc_not_found) << "libclc.bc";
+}
+
+#if 0
----------------
arsenm wrote:
If 0'd code
https://github.com/llvm/llvm-project/pull/177465
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits