https://github.com/srividya-sundaram updated 
https://github.com/llvm/llvm-project/pull/196656

>From 685b66f1df0f4b62d62cd867f574eb2e39f6c715 Mon Sep 17 00:00:00 2001
From: srividya sundaram <[email protected]>
Date: Fri, 8 May 2026 15:23:44 -0700
Subject: [PATCH 1/3] [Driver][SYCL] Add compile-time device library linking
 for SPIR-V targets

This patch implements compile-time device library linking for SYCL
offloading to SPIR-V targets.
---
 .../clang/Basic/DiagnosticDriverKinds.td      |   4 +
 .../clang/Driver/SyclInstallationDetector.h   |   3 +
 clang/lib/Driver/ToolChains/SYCL.cpp          | 119 ++++++++++++++++++
 clang/lib/Driver/ToolChains/SYCL.h            |  10 ++
 .../Driver/Inputs/SYCL/lib/libsycl-cmath.bc   | Bin 0 -> 1632 bytes
 .../Driver/Inputs/SYCL/lib/libsycl-complex.bc | Bin 0 -> 1632 bytes
 .../Driver/Inputs/SYCL/lib/libsycl-crt.bc     | Bin 0 -> 1624 bytes
 .../Driver/sycl-device-library-linking.cpp    |  22 ++++
 8 files changed, 158 insertions(+)
 create mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-cmath.bc
 create mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-complex.bc
 create mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-crt.bc
 create mode 100644 clang/test/Driver/sycl-device-library-linking.cpp

diff --git a/clang/include/clang/Basic/DiagnosticDriverKinds.td 
b/clang/include/clang/Basic/DiagnosticDriverKinds.td
index 114ee475c371f..7272ad6ed5ccc 100644
--- a/clang/include/clang/Basic/DiagnosticDriverKinds.td
+++ b/clang/include/clang/Basic/DiagnosticDriverKinds.td
@@ -93,6 +93,10 @@ def err_drv_hipspv_no_hip_path : Error<
   "'--hip-path' must be specified when offloading to SPIR-V unless '-nogpuinc' 
"
   "is given">;
 
+def err_drv_no_sycl_device_lib : Error<
+  "cannot find expected SYCL device library '%0'; pass '--no-offloadlib' to "
+  "build without the SYCL device libraries">;
+
 def err_drv_no_spv_tools : Error<"cannot find SPIR-V Tools binary '%0', which "
                                  "is required for SPIR-V compilation. "
                                  "It can be obtained from your system package "
diff --git a/clang/include/clang/Driver/SyclInstallationDetector.h 
b/clang/include/clang/Driver/SyclInstallationDetector.h
index 070b543e50149..474a197696e7e 100644
--- a/clang/include/clang/Driver/SyclInstallationDetector.h
+++ b/clang/include/clang/Driver/SyclInstallationDetector.h
@@ -25,6 +25,9 @@ class SYCLInstallationDetector {
   // Return the filesystem path to the detected SYCL runtime library.
   StringRef getSYCLRTLibPath() const { return SYCLRTLibPath; }
 
+  // Get candidate paths where SYCL device libraries may be located.
+  void getSYCLDeviceLibPath(SmallVectorImpl<SmallString<128>> &LibPaths) const;
+
 private:
   const Driver &D;
   SmallString<0> SYCLRTLibPath;
diff --git a/clang/lib/Driver/ToolChains/SYCL.cpp 
b/clang/lib/Driver/ToolChains/SYCL.cpp
index 55a697df5081e..7cf9075ee656f 100644
--- a/clang/lib/Driver/ToolChains/SYCL.cpp
+++ b/clang/lib/Driver/ToolChains/SYCL.cpp
@@ -58,6 +58,25 @@ void SYCLInstallationDetector::addSYCLIncludeArgs(
   CC1Args.push_back(DriverArgs.MakeArgString(IncludePath));
 }
 
+void SYCLInstallationDetector::getSYCLDeviceLibPath(
+    SmallVectorImpl<SmallString<128>> &LibPaths) const {
+  // Device libraries can be located in:
+  // 1. Sysroot lib/ directory (for testing with --sysroot)
+  // 2. Driver lib/ directory (for normal installation)
+
+  // If a sysroot is specified, check there first
+  if (!D.SysRoot.empty()) {
+    SmallString<128> SysRootLibPath(D.SysRoot);
+    llvm::sys::path::append(SysRootLibPath, "lib");
+    LibPaths.push_back(SysRootLibPath);
+  }
+
+  // Also check relative to the driver directory
+  SmallString<128> DriverLibPath(D.Dir);
+  llvm::sys::path::append(DriverLibPath, "..", "lib");
+  LibPaths.push_back(DriverLibPath);
+}
+
 // Unsupported options for SYCL device compilation.
 static ArrayRef<options::ID> getUnsupportedOpts() {
   static constexpr options::ID UnsupportedOpts[] = {
@@ -106,6 +125,36 @@ void SYCLToolChain::addClangTargetOptions(
     const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args,
     Action::OffloadKind DeviceOffloadingKind) const {
   HostTC.addClangTargetOptions(DriverArgs, CC1Args, DeviceOffloadingKind);
+
+  // Link SYCL device libraries at compile time for SPIR/SPIRV targets.
+  // The new offloading driver is the default in upstream LLVM, so we always
+  // perform compile-time linking for SPIR/SPIRV targets.
+  // Other targets (like NVPTX, AMD) would link at link time.
+  if (getTriple().isSPIROrSPIRV()) {
+    // Get the device libraries for this offloading kind.
+    llvm::SmallVector<BitCodeLibraryInfo, 12> BCLibs =
+        getDeviceLibs(DriverArgs, DeviceOffloadingKind);
+
+    // Add each device library with the appropriate linking flag.
+    for (const auto &BCFile : BCLibs) {
+      // Use -mlink-builtin-bitcode for internalized libraries (standard libs)
+      // Use -mlink-bitcode-file for non-internalized libraries (e.g.,
+      // sanitizers)
+      CC1Args.push_back(BCFile.ShouldInternalize ? "-mlink-builtin-bitcode"
+                                                 : "-mlink-bitcode-file");
+      CC1Args.push_back(DriverArgs.MakeArgString(BCFile.Path));
+    }
+
+    // If we linked any device libraries, add the flag to link them after
+    // the middle-end optimization passes. This ensures that device library
+    // functions are available after user code has been instrumented.
+    if (!BCLibs.empty()) {
+      CC1Args.push_back("-mlink-builtin-bitcode-postopt");
+      // Suppress linker warnings that may occur due to library/target
+      // mismatches
+      CC1Args.push_back("-Wno-linker-warnings");
+    }
+  }
 }
 
 llvm::opt::DerivedArgList *
@@ -180,3 +229,73 @@ void SYCLToolChain::AddClangCXXStdlibIncludeArgs(const 
ArgList &Args,
                                                  ArgStringList &CC1Args) const 
{
   HostTC.AddClangCXXStdlibIncludeArgs(Args, CC1Args);
 }
+
+SmallVector<ToolChain::BitCodeLibraryInfo, 8>
+SYCLToolChain::getDeviceLibNames(const Driver &D,
+                                 const llvm::opt::ArgList &Args,
+                                 const llvm::Triple &TargetTriple) const {
+  SmallVector<ToolChain::BitCodeLibraryInfo, 8> LibraryList;
+
+  // Check if device libraries should be linked.
+  bool NoOffloadLib =
+      !Args.hasFlag(options::OPT_offloadlib, options::OPT_no_offloadlib, true);
+
+  if (NoOffloadLib)
+    return LibraryList;
+
+  // Helper to add libraries with internalization flag.
+  // By default, standard libraries are internalized (linked with only-needed).
+  auto addLibToList = [&LibraryList](StringRef LibName,
+                                     bool Internalize = true) {
+    BitCodeLibraryInfo BitCodeLibrary(LibName, Internalize);
+    LibraryList.emplace_back(BitCodeLibrary);
+  };
+
+  // For now, support only SPIR/SPIRV targets with a minimal set of libraries.
+  // This is a starting point that can be expanded later.
+  if (TargetTriple.isSPIROrSPIRV()) {
+    // Core SYCL device libraries - start with the essential ones
+    addLibToList("libsycl-crt.bc");
+    addLibToList("libsycl-complex.bc");
+    addLibToList("libsycl-cmath.bc");
+  }
+
+  return LibraryList;
+}
+
+llvm::SmallVector<ToolChain::BitCodeLibraryInfo, 12>
+SYCLToolChain::getDeviceLibs(
+    const llvm::opt::ArgList &DriverArgs,
+    const Action::OffloadKind DeviceOffloadingKind) const {
+  llvm::SmallVector<ToolChain::BitCodeLibraryInfo, 12> BCLibs;
+
+  // Get candidate paths where device libraries may be located.
+  SmallVector<SmallString<128>, 4> LibraryPaths;
+  SYCLInstallation.getSYCLDeviceLibPath(LibraryPaths);
+
+  // Get the list of device library names for this target.
+  SmallVector<BitCodeLibraryInfo, 8> DeviceLibs =
+      getDeviceLibNames(getDriver(), DriverArgs, getTriple());
+
+  // Resolve full paths and validate that each library exists.
+  for (const auto &DeviceLib : DeviceLibs) {
+    bool DeviceLibFound = false;
+    for (const auto &LibraryPath : LibraryPaths) {
+      SmallString<128> FullLibName(LibraryPath);
+      llvm::sys::path::append(FullLibName, DeviceLib.Path);
+      if (llvm::sys::fs::exists(FullLibName)) {
+        BitCodeLibraryInfo BitCodeLibrary(FullLibName,
+                                          DeviceLib.ShouldInternalize);
+        BCLibs.emplace_back(BitCodeLibrary);
+        DeviceLibFound = true;
+        break;
+      }
+    }
+    // If a device library is not found, emit an error with a helpful message.
+    // The user can pass --no-offloadlib to build without device libraries.
+    if (!DeviceLibFound)
+      getDriver().Diag(diag::err_drv_no_sycl_device_lib) << DeviceLib.Path;
+  }
+
+  return BCLibs;
+}
diff --git a/clang/lib/Driver/ToolChains/SYCL.h 
b/clang/lib/Driver/ToolChains/SYCL.h
index be4ba47cb3d52..c31a043eed356 100644
--- a/clang/lib/Driver/ToolChains/SYCL.h
+++ b/clang/lib/Driver/ToolChains/SYCL.h
@@ -55,6 +55,16 @@ class LLVM_LIBRARY_VISIBILITY SYCLToolChain : public 
ToolChain {
       const llvm::opt::ArgList &Args,
       llvm::opt::ArgStringList &CC1Args) const override;
 
+  // Get the list of SYCL device library names for the given triple.
+  SmallVector<ToolChain::BitCodeLibraryInfo, 8>
+  getDeviceLibNames(const Driver &D, const llvm::opt::ArgList &Args,
+                    const llvm::Triple &TargetTriple) const;
+
+  // Override to provide SYCL device libraries.
+  llvm::SmallVector<BitCodeLibraryInfo, 12>
+  getDeviceLibs(const llvm::opt::ArgList &Args,
+                const Action::OffloadKind DeviceOffloadingKind) const override;
+
 private:
   const ToolChain &HostTC;
   SYCLInstallationDetector SYCLInstallation;
diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-cmath.bc 
b/clang/test/Driver/Inputs/SYCL/lib/libsycl-cmath.bc
new file mode 100644
index 
0000000000000000000000000000000000000000..e8f235db18e8af0536386c3abc254010a68685ab
GIT binary patch
literal 1632
zcmXX{e@q)y9Dn7Y*KOrpAt-daJA0#BnmFgJbkK5bLfZ|yh_S={fkv~oV;xgm3REae
zmzLHYQ=*+|mi{pl>WrCxm@va1Boae8#LAiti7}`RX-8qquz>^3%=U-hV>Y?hyyotE
zpP#P|=j7tyDul`qLOwOGf93V>zxv?u*sFUo`XdTs8RFCkg%k+wD&bHG+*1n|8L7Q&
z&y*fhYK)f86fyO_GL@Ds{n!^SJzC=Us5Yjrj=6O0hJc2@Qq`{4T=x9rxTvn!@rk)T
z=DHKF*z0NytF_#flJ<<MLT_nm9@N}a7%O8c;|cc(-L>(i=I)4EYrIHZdETh6(H_Ib
z_UX3nI9J;o-=|?3gPEaE;@pvo!=*+OLYH(1sQ}Ynf2rnM$KWwdD=hJ@DYt9qj{WwT
zGDqcp)nEjn-CPUidf%|#{`9wRx`dXOzFX+LR9<rQF>vx7g6IE*t4<ZBrwg>dN?{vv
znq$(iBTV*($ev`EdIeGUHFztG>(mZ*D$U$V(SE*c`?lzwEMdzyZNr2u8yXG<$nz?)
z-z5eD<UoMv4T%ArsLfX3wKy*D)H$A7+Q1ubT&J047CCx>W2U^UpT8tbM1?u0WsI;+
zM6EGG$Zk~iddTw~WJ8D84Qp5o#KnMz>@|?RkIG<dUsyb;61!@|?xfhCj2w8dfgj}Y
z-;;QaCw!R{T};v0?KS76XE}O0!pwS=zs8-GjMI|bUdJVK!f75NgoN}Wy!6SS@CzY~
zO6niaih(w<I}i<akRgv4tPz7FqW0En)B{94bmL+iFEvpG9bN+#Is=nSvr~3<o}+US
zHkYT11?Eo$>#sR(9(6WejS5+}{(mAKu`fi1lE+)N;*_ia`!+l4rB^v-G0j|1urgqd
z+3+e)d>A!nC1KQQ13{ilS&L3#2)5Gj4?BUW*avu2<bZ+fPDb8b(%`j8yzIuCd~JH(
z&K3*R3k7Bo0JyZmXw)_q-4m0{!%j<9vW}-M83{OAv#zl&6$z-iK)^Op`^OAk^HBHm
z$_*X0%u~xc>K`{gr@>1+hV5ovc`uKPZv2R^y|d<}ry|Tkp?ZyDRybywW5B^x?m55i
zb78`18z(G@s3qGr0qz6Y0l?`J`vRi&=3TtbQ-wUf*F@bLfwxEsqUSmZTuvq-Dzd`C
zIj}Mkvs>~KNM{45vQ5(?%xsFu+u6l5?bn~;aY6Q%f+5SilZ(DrL-x4DlOy8$VR-gN
zLSY@2tO?0H=WK*HWkE5ui+jf5WdZ7~G}9WX^0%Df@w$#$&nws6)RsI7FXxpjI;t=S
zWUn<vdppQ}m8fmqJuV55!!MoYENDnr;!$gsu!5KgN!?sN1JQ*<rRWP0_MrlNoVlTd
z1i~EfqOP*OMht|>f$L<y0W3?8+0CPbFd><rl-MSu#spyN$my8h6)dPX0|KVYW%s=o
zA8rpp)Y7C}mQ6kyiEcY3bA<f&7|4O-U(@!+aR3&Tb35W}g!Vyti_-ARcs9ah3)L$r
zdM3io7noe3T9yvr*;$C$td~XT>l%a_pzFJKb{n8W<Um^>3BJjaTjr#}6?!IBzG{~%
z4w^m9=Ch_H55DV$$Wui*_|#oD-Wm-@WO8yNLn2_5^Vk-+Dw)R=0L_+=O5TBT)42kj
z)6qq*ysk#rDK9;jqBBoJ<V`E6Ef5}j2;*HtPt7d5Z3gQWpr8^&Nr2?SxsoA-0|v<5
zJWTVZkKkp<CgjLN6<~$l&nY+K)O{UZpTs~7{j5Pq3EyPa3MyTNf)lops1?c{m*6Nz
zT{^UVmK(8VZz=5M&s%WL!`}d^Bobf9dt==}{vdzmY*5FaHkle4eDw_te%{n>vNZ5s
r)1f-wY0F`gzaD<J7=4H9`F4NjSzk~8sm>Qpz3UBj9PI3rry%qnHSc7u

literal 0
HcmV?d00001

diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-complex.bc 
b/clang/test/Driver/Inputs/SYCL/lib/libsycl-complex.bc
new file mode 100644
index 
0000000000000000000000000000000000000000..6b17649f29a43da5d3bc49c6a96f37a1ed2b8874
GIT binary patch
literal 1632
zcmXX{Z%i9y7=KHl*KOs!LQv>-clJiNG;!itI%sK|&~}n8&e-8T;J>WxSjQA+`6Cpj
zOOLA@Dw&;WW<Sh?W{a60Oqk&ViDaQ1Vr9+7h%u-QX-8qqu)zkJ8TY~Gn3vphc`tX*
z{hr^S_gwDD#e)?Hl^}!y8qV<Q8`r=2_}{VD_M{Dm6s8iyY7h!55ZYD5q9S;v8cu?*
zzTiw3A698i)-M%N&At+~jw${;5Gj7S$n{xu)KD4q=v$2;EqAe^)u6rL``I<9Dcf=0
z(i-*LiIwg3G)FW#_F_?MT3u$aHZ~1tZzxRVQMKuq_n7|jcw<v1uhE$X$&1gM3{|?r
z*wi}R(ivl`n_~O4bVGM~=zNSlG&o#rG9&b<9w9Yg+8Zp^e(xGMtZjx8>zML-cJA2k
zoGEdY?^h4-2<>K%;C(%B+HZaF+jkFtC_VMn!<xFc0z%{M>j*_!H0U4bQLBzn(|Iab
zp>PbjEm3LM6(Rb<L|39ivx3O`TD%p(wHg;Qm7;GZsUTOf{g|*PqjaR*j$x%E6CUmk
z5ogszpGORZi2jhWCoG2aqApX0*J3!&k!Lt^X#;O~ajkZmUSz2SmY(u6LGDxAgkYO<
zTgR043Bev!+A<pzJwD=W8&TgTc0!Gap_mx*5j{qt=Wz+N?Tv`X)nZ4L*qIRf68wP&
z8~8yE|22u%IAtK6qzXwYvt6@(YL=y@d3x5b`ZeaZrrp-Wb{&^2akphiX^TrQ!bhJB
z*nUykMkUQpr^Qf<*clSK+la7F?5+~KM?~Gt*U1NneB{N27+z{5^Lo4nQ|OI!HpNUi
znR%AV@=P{I74r0-3MN=})H3RBxFpyzUc>)`_{82Y5l$REvK1p`2AFr5SwFSP(u*nj
zoPv=7v-E~vb?g(tl96nqZU+$ZWXfJ}+lF8%4ga_kCKY=DkDBN=5}gVD?IkT<o5agr
zyvbFk=ABF-U%8N{7Xg4rXB!n9W5S-OWEpl_Gm?EgWlc*kqdnsp>rfMbssjjY5p{pe
z;58q4Kd0Kzlgk{rtSA5W;xk&j#9>%&=2Z7`xZuT)x#~M>erk%R7xI;BEWN_g(<}`N
zuCmVs^<Ud2+>UXjH7-~)Efb(V4BHPlJz{T2)ZMs?*Euqu!}l7=dn51_NulhzO290~
z6JQmY;qEz*l8-vAISHt9fKr*p=@EK1N#~r*Vu}hHPH;Fc>q|nDWzNkCA65}v9`X2y
z_)!Gjy%ty4hb4Plvdp;~z)l%pOygmnarqg5dNV~g^A*7(r#QT>C)abTbuYOkx5CRg
z)ry|X&%v;l8-<=WqE9XAns<*&Ht^vUw<QA{Dy=cWo>AI?%($d!DxCrAf}@huIi7i>
z03Bzpslb8I2ehayud5P65u*Pp(Psq7Qe#fbsM0neS)LR*CZvWqU~9|j>E9I$ur~t)
zrb=b?{ezFTn;>#&QVz=|C-B0yQu2)8|1KlZpLjU!Y#0Y%g6!K7cLSsk+*^=_U%|6H
zoyk|OB&ivmna|VNe5Fhsz;iNSvspib(6?0x)kD^I?d&u{hKT-_Py%$5DYwo^11r=_
zvUJrcM;thN>dj}(OFn$p3zjDfvhm5gUc5CL;pO4vM21DcDEqM`bV;&|DFB)yE)~58
z;ij^ADyydoez~sl%#@#+OH%2lCi15g<Q5PQIz;fUp{HV&+_Hdl3lLBVtYib{!oHGL
z+71}Ock|HApE`t>!JFVCADM>=xt~*Q#>o46ygrFxG;~{wkP5Cu#ttl9f`BU>BZ3{m
z9+O}zM;&^!y_cJ?c5gAP<>MXL=ixVi%9Zge^4e5e!_{!7PIv3MlV)>$eW0$sKFFC{
x&DMI(Z+@vZaMF6v9IS)eR#V_$9oHIcKON}mJJJ5ai4WcnwVw>vw71KB{sY`!XY&96

literal 0
HcmV?d00001

diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-crt.bc 
b/clang/test/Driver/Inputs/SYCL/lib/libsycl-crt.bc
new file mode 100644
index 
0000000000000000000000000000000000000000..85a261bc54ad705009f58a8a205227f5e2e814ef
GIT binary patch
literal 1624
zcmXX`Z%i9y7=KHl*NyJIf+%#mJA0#BnmFfKI%sK|(B33noUy}wK%-gPv5qNON~!#t
zE-hC%rbIi_Ed789&5W5JOqlY455!Q8VP(yR#2D0uw4*R)7~nuN<39Kt^OAcm@8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b@mn9@)Dk<wR6Tp!oQ4An8WzReiaa@VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0@Ti3t|Z3~om=d{PYch6zx
zY?-U_uzDbh(0=wLrn}#=-~H^@Z*Gok_`f?;udZ4tM`-94`Um#csUy@(feKV997DV%
zCJnnHL|-q_mF(24BJ!aY??iB&#>Gsh={qSZz?JQOCLG8r9U0y+taN01hr>bQlA7pq
zi@_k#A5?btib1`o%U0m^I4*GHMUGtF!do6(r=6jfSZa}_r+rL-yJDLZZ1cQzTxp*a
z>@lS+yH(ZgB`&oS4eeqGYD5gi#h{nyHWJ;B%b;yfL_DJwJ8Q&HQtV4ck8Et=jXeHq
z3a@iYe<np0Q&e`h=6uu~OU*>-IiKp6IB(7H*5q!TkSqz_GNiO6q?h2QPX=s1D{W(v
z=7$SnuvH8Ng>XC3>lMQ_Vt7>4-FbuDK;$D2F2?b46IsyXb(lhLq;qLz+Q}@iR4&To
z@>H=v|Dj+4HK#0NeB+2<%X$p|58@SjdWqiTsgpZ#Qf7d8mzncXYb?E#rY|cP88Az4
z`BbMr5-eHCHpV-EkSEjjB5xalr8InNFH9=-03J2bZzMv==-bO$ygr3jJb0U{O)of^
zVxfAmKraCRx6U>uIL3toG08H_TeFgVB5ln`Frz)|9`95WfT|M+Y!!9C&*F72`7p2A
z(vvG3xuPfk_TY<Jyv$)(Zs%1G^0?^1kGa}=>pp5aN-q|w*I9a%rDs?g6kKDU59q(J
zP4bQjr8OZ~v#pb$J`CFrINf4TP}JSNk2g88kjD?2$OohF7fGS)x<SA!XOdtQnc?s}
zNEwYet$7KkbAVFWrkPQCE=A{^%u<>P7|wFIAnQv)lNF9<h4*WSF1L7QRQw<Udv7Kb
z_F>7MkSz0jBiJbmjA`8Lvo0S4Q17JamS|Pr<arKn>dDQ#YSTmR$gS{7UbU(x3-d7S
z^(LXao#<1Gx|aPDk_~+LC2z?Bhe~T)uxFKaATuFpn)l6ub-__7>T;BMqyQafZ>qq7
z&<C`rtE{gPgAt<t2GM5($<pIa%b3zODOsMBI3}gW1Ym2=>FM7T46ru~1g7`N>iY&C
z?KVN=@{}BwZBB>^yGqG3g8#dWM1S(n8E4}J025^2j`EF=K5%bQ8h#beMd@szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J@W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3@4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d@v)pxez#j~OC(T)ze$A3;CWIF%=

literal 0
HcmV?d00001

diff --git a/clang/test/Driver/sycl-device-library-linking.cpp 
b/clang/test/Driver/sycl-device-library-linking.cpp
new file mode 100644
index 0000000000000..40f261dce9462
--- /dev/null
+++ b/clang/test/Driver/sycl-device-library-linking.cpp
@@ -0,0 +1,22 @@
+// Test that SYCL device libraries are linked at compile-time for SPIR/SPIRV 
targets
+
+// RUN: %clangxx -fsycl %s --sysroot=%S/Inputs/SYCL -### 2>&1 | \
+// RUN:   FileCheck %s --check-prefix=CHECK-DEVICE-LIBS
+
+// RUN: %clangxx -fsycl --no-offloadlib %s --sysroot=%S/Inputs/SYCL -### 2>&1 
| \
+// RUN:   FileCheck %s --check-prefix=CHECK-NO-DEVICE-LIBS
+
+// CHECK-DEVICE-LIBS: "-cc1" "-triple" "spirv64-unknown-unknown"
+// CHECK-DEVICE-LIBS-SAME: "-fsycl-is-device"
+// CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-crt.bc"
+// CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-complex.bc"
+// CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-cmath.bc"
+// CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode-postopt"
+// CHECK-DEVICE-LIBS-SAME: "-Wno-linker-warnings"
+
+// CHECK-NO-DEVICE-LIBS: "-cc1" "-triple" "spirv64-unknown-unknown"
+// CHECK-NO-DEVICE-LIBS-SAME: "-fsycl-is-device"
+// CHECK-NO-DEVICE-LIBS-NOT: "-mlink-builtin-bitcode"
+// CHECK-NO-DEVICE-LIBS-NOT: "libsycl-crt.bc"
+
+void foo() {}

>From 9b22e2821fad04df65dd26d121e6d05cc2ed495a Mon Sep 17 00:00:00 2001
From: srividya sundaram <[email protected]>
Date: Fri, 8 May 2026 16:47:53 -0700
Subject: [PATCH 2/3] Fix test failures.

---
 .../Driver/sycl-device-library-linking.cpp    |  2 +-
 clang/test/Driver/sycl-offload-jit-unix.cpp   |  4 ++-
 clang/test/Driver/sycl-offload-jit-xarch.cpp  |  2 +-
 clang/test/Driver/sycl-offload-jit.cpp        |  6 ++--
 clang/test/Driver/sycl-std-default.cpp        |  8 +++---
 clang/test/Driver/sycl.cpp                    | 28 +++++++++----------
 6 files changed, 26 insertions(+), 24 deletions(-)

diff --git a/clang/test/Driver/sycl-device-library-linking.cpp 
b/clang/test/Driver/sycl-device-library-linking.cpp
index 40f261dce9462..baea3ae895d6d 100644
--- a/clang/test/Driver/sycl-device-library-linking.cpp
+++ b/clang/test/Driver/sycl-device-library-linking.cpp
@@ -3,7 +3,7 @@
 // RUN: %clangxx -fsycl %s --sysroot=%S/Inputs/SYCL -### 2>&1 | \
 // RUN:   FileCheck %s --check-prefix=CHECK-DEVICE-LIBS
 
-// RUN: %clangxx -fsycl --no-offloadlib %s --sysroot=%S/Inputs/SYCL -### 2>&1 
| \
+// RUN: %clangxx -fsycl --no-offloadlib %s -### 2>&1 | \
 // RUN:   FileCheck %s --check-prefix=CHECK-NO-DEVICE-LIBS
 
 // CHECK-DEVICE-LIBS: "-cc1" "-triple" "spirv64-unknown-unknown"
diff --git a/clang/test/Driver/sycl-offload-jit-unix.cpp 
b/clang/test/Driver/sycl-offload-jit-unix.cpp
index f12af94159342..67339c6fa8627 100644
--- a/clang/test/Driver/sycl-offload-jit-unix.cpp
+++ b/clang/test/Driver/sycl-offload-jit-unix.cpp
@@ -7,8 +7,9 @@
 // The test also checks if SYCL header include paths are added to the SYCL 
host and device compilation.
 
 // Check LLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON case: library is in 
lib/<triple>/
-// RUN: rm -rf %t && mkdir -p %t/bin %t/lib/x86_64-unknown-linux-gnu
+// RUN: rm -rf %t && mkdir -p %t/bin %t/lib/x86_64-unknown-linux-gnu %t/lib
 // RUN: touch %t/lib/x86_64-unknown-linux-gnu/libLLVMSYCL.so
+// RUN: touch %t/lib/libsycl-crt.bc %t/lib/libsycl-complex.bc 
%t/lib/libsycl-cmath.bc
 // RUN: ln -s %clang %t/bin/clang
 // RUN: %t/bin/clang -### -no-canonical-prefixes 
--target=x86_64-unknown-linux-gnu -fsycl %s 2>&1 \
 // RUN:   | FileCheck 
-check-prefixes=CHECK-LSYCL,CHECK-SYCL-HEADERS-HOST,CHECK-SYCL-HEADERS-DEVICE %s
@@ -19,6 +20,7 @@
 // Check LLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF case: library is in lib/ (no 
triple subdir)
 // RUN: rm -rf %t && mkdir -p %t/bin %t/lib
 // RUN: touch %t/lib/libLLVMSYCL.so
+// RUN: touch %t/lib/libsycl-crt.bc %t/lib/libsycl-complex.bc 
%t/lib/libsycl-cmath.bc
 // RUN: ln -s %clang %t/bin/clang
 // RUN: %t/bin/clang -### -no-canonical-prefixes 
--target=x86_64-unknown-linux-gnu -fsycl %s 2>&1 \
 // RUN:   | FileCheck -check-prefix=CHECK-LSYCL-FLAT %s
diff --git a/clang/test/Driver/sycl-offload-jit-xarch.cpp 
b/clang/test/Driver/sycl-offload-jit-xarch.cpp
index 53af2b16a33f1..98bf86033214f 100644
--- a/clang/test/Driver/sycl-offload-jit-xarch.cpp
+++ b/clang/test/Driver/sycl-offload-jit-xarch.cpp
@@ -2,7 +2,7 @@
 
 // Verify that -Xarch_spirv64 forwards options to the SYCL device compilation
 // and clang-linker-wrapper call.
-// RUN: %clang -fsycl --offload-targets=spirv64-unknown-unknown -Xarch_spirv64 
-O3 -### %s 2>&1 \
+// RUN: %clang -fsycl --offload-targets=spirv64-unknown-unknown -Xarch_spirv64 
-O3 -### %s --sysroot=%S/Inputs/SYCL 2>&1 \
 // RUN: | FileCheck -check-prefix=SYCL-DEVICE-O3 %s
 // SYCL-DEVICE-O3: "-triple" "spirv64-unknown-unknown" "-aux-triple" "{{.*}}" 
"-O3"{{.*}} "-fsycl-is-device"
 // SYCL-DEVICE-O3: {{"[^"]*clang-linker-wrapper[^"]*".* 
"--device-compiler=spirv64-unknown-unknown=-O3"}}
diff --git a/clang/test/Driver/sycl-offload-jit.cpp 
b/clang/test/Driver/sycl-offload-jit.cpp
index 58401653a6e4b..7716b6e3a552f 100644
--- a/clang/test/Driver/sycl-offload-jit.cpp
+++ b/clang/test/Driver/sycl-offload-jit.cpp
@@ -1,9 +1,9 @@
 /// Perform several driver tests for SYCL offloading for JIT
 
 /// Check the phases graph with -fsycl. Use of -fsycl enables offload
-// RUN: %clang -ccc-print-phases --target=x86_64-unknown-linux-gnu -fsycl %s 
2>&1 \
+// RUN: %clang -ccc-print-phases --target=x86_64-unknown-linux-gnu -fsycl %s 
--no-offloadlib 2>&1 \
 // RUN:   | FileCheck -check-prefixes=CHK-PHASES %s
-// RUN: %clang_cl -ccc-print-phases --target=x86_64-pc-windows-msvc -fsycl -- 
%s 2>&1 \
+// RUN: %clang_cl -ccc-print-phases --target=x86_64-pc-windows-msvc -fsycl 
--no-offloadlib -- %s 2>&1 \
 // RUN:   | FileCheck -check-prefixes=CHK-PHASES %s
 // CHK-PHASES: 0: input, "[[INPUT:.+\.cpp]]", c++, (host-sycl)
 // CHK-PHASES-NEXT: 1: preprocessor, {0}, c++-cpp-output, (host-sycl)
@@ -21,7 +21,7 @@
 
 /// Check expected default values for device compilation when using -fsycl as
 /// well as llvm-offload-binary inputs.
-// RUN: %clang -### -fsycl -c --target=x86_64-unknown-linux-gnu %s 2>&1 \
+// RUN: %clang -### -fsycl -c --target=x86_64-unknown-linux-gnu %s 
--sysroot=%S/Inputs/SYCL 2>&1 \
 // RUN:   | FileCheck -check-prefix=CHK-DEVICE-TRIPLE %s
 // CHK-DEVICE-TRIPLE: "-cc1"{{.*}} "-triple" "spirv64-unknown-unknown"
 // CHK-DEVICE-TRIPLE-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
diff --git a/clang/test/Driver/sycl-std-default.cpp 
b/clang/test/Driver/sycl-std-default.cpp
index df377169a3944..99fcc513696e6 100644
--- a/clang/test/Driver/sycl-std-default.cpp
+++ b/clang/test/Driver/sycl-std-default.cpp
@@ -1,6 +1,6 @@
 // Tests that SYCL defaults to C++17 when no -std= is specified
 
-// RUN: %clangxx -### -fsycl -c %s 2>&1 | FileCheck %s 
--check-prefixes=CHECK-DEVICE,CHECK-HOST
+// RUN: %clangxx -### -fsycl -c %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck 
%s --check-prefixes=CHECK-DEVICE,CHECK-HOST
 
 // CHECK-DEVICE: "-cc1"{{.*}} "-fsycl-is-device"
 // CHECK-DEVICE-SAME: "-std=c++17"
@@ -8,7 +8,7 @@
 // CHECK-HOST-SAME: "-std=c++17"
 
 // Test that explicit -std= overrides the default
-// RUN: %clangxx -### -fsycl -std=c++20 -c %s 2>&1 | FileCheck %s 
--check-prefixes=CHECK-OVERRIDE-DEVICE,CHECK-OVERRIDE-HOST
+// RUN: %clangxx -### -fsycl -std=c++20 -c %s --sysroot=%S/Inputs/SYCL 2>&1 | 
FileCheck %s --check-prefixes=CHECK-OVERRIDE-DEVICE,CHECK-OVERRIDE-HOST
 
 // CHECK-OVERRIDE-DEVICE: "-cc1"{{.*}} "-fsycl-is-device"
 // CHECK-OVERRIDE-DEVICE-SAME: "-std=c++20"
@@ -34,7 +34,7 @@
 // CHECK-C99-ERROR: error: invalid argument '-std=c99' not allowed with 
'-fsycl'
 
 // Test on Windows with clang-cl (MSVC mode)
-// RUN: %clang_cl --target=x86_64-pc-windows-msvc -### -fsycl -- %s 2>&1 | 
FileCheck %s --check-prefixes=CHECK-MSVC-DEVICE,CHECK-MSVC-HOST
+// RUN: %clang_cl --target=x86_64-pc-windows-msvc -### -fsycl -- %s 
--sysroot=%S/Inputs/SYCL 2>&1 | FileCheck %s 
--check-prefixes=CHECK-MSVC-DEVICE,CHECK-MSVC-HOST
 
 // CHECK-MSVC-DEVICE: "-cc1"{{.*}} "-fsycl-is-device"
 // CHECK-MSVC-DEVICE-SAME: "-std=c++17"
@@ -42,7 +42,7 @@
 // CHECK-MSVC-HOST-SAME: "-std=c++17"
 
 // Test that /std: override works on Windows
-// RUN: %clang_cl --target=x86_64-pc-windows-msvc -### -fsycl /std:c++20 -- %s 
2>&1 | FileCheck %s 
--check-prefixes=CHECK-MSVC-OVERRIDE-DEVICE,CHECK-MSVC-OVERRIDE-HOST
+// RUN: %clang_cl --target=x86_64-pc-windows-msvc -### -fsycl /std:c++20 -- %s 
--sysroot=%S/Inputs/SYCL 2>&1 | FileCheck %s 
--check-prefixes=CHECK-MSVC-OVERRIDE-DEVICE,CHECK-MSVC-OVERRIDE-HOST
 
 // CHECK-MSVC-OVERRIDE-DEVICE: "-cc1"{{.*}} "-fsycl-is-device"
 // CHECK-MSVC-OVERRIDE-DEVICE-SAME: "-std=c++20"
diff --git a/clang/test/Driver/sycl.cpp b/clang/test/Driver/sycl.cpp
index 5c210c8c181da..30fb05893a7aa 100644
--- a/clang/test/Driver/sycl.cpp
+++ b/clang/test/Driver/sycl.cpp
@@ -1,18 +1,18 @@
-// RUN: %clang -### -fsycl -c %s 2>&1 | FileCheck %s --check-prefix=ENABLED
-// RUN: %clang -### -fsycl %s 2>&1 | FileCheck %s --check-prefix=ENABLED
-// RUN: %clang -### -fsycl -sycl-std=1.2.1 %s 2>&1 | FileCheck %s 
--check-prefix=ENABLED
-// RUN: %clang -### -fsycl -sycl-std=121 %s 2>&1 | FileCheck %s 
--check-prefix=ENABLED
-// RUN: %clang -### -fsycl -sycl-std=2017 %s 2>&1 | FileCheck %s 
--check-prefix=ENABLED
-// RUN: %clang -### -fsycl -sycl-std=2020 %s 2>&1 | FileCheck %s 
--check-prefix=ENABLED
-// RUN: %clang -### -fsycl -sycl-std=sycl-1.2.1 %s 2>&1 | FileCheck %s 
--check-prefix=ENABLED
-// RUN: %clang -### -fno-sycl -fsycl %s 2>&1 | FileCheck %s 
--check-prefix=ENABLED
+// RUN: %clang -### -fsycl -c %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck %s 
--check-prefix=ENABLED
+// RUN: %clang -### -fsycl %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck %s 
--check-prefix=ENABLED
+// RUN: %clang -### -fsycl -sycl-std=1.2.1 %s --sysroot=%S/Inputs/SYCL 2>&1 | 
FileCheck %s --check-prefix=ENABLED
+// RUN: %clang -### -fsycl -sycl-std=121 %s --sysroot=%S/Inputs/SYCL 2>&1 | 
FileCheck %s --check-prefix=ENABLED
+// RUN: %clang -### -fsycl -sycl-std=2017 %s --sysroot=%S/Inputs/SYCL 2>&1 | 
FileCheck %s --check-prefix=ENABLED
+// RUN: %clang -### -fsycl -sycl-std=2020 %s --sysroot=%S/Inputs/SYCL 2>&1 | 
FileCheck %s --check-prefix=ENABLED
+// RUN: %clang -### -fsycl -sycl-std=sycl-1.2.1 %s --sysroot=%S/Inputs/SYCL 
2>&1 | FileCheck %s --check-prefix=ENABLED
+// RUN: %clang -### -fno-sycl -fsycl %s --sysroot=%S/Inputs/SYCL 2>&1 | 
FileCheck %s --check-prefix=ENABLED
 // RUN: %clang -### -sycl-std=2017 %s 2>&1 | FileCheck %s 
--check-prefix=DISABLED
-// RUN: %clangxx -### -fsycl %s 2>&1 | FileCheck %s --check-prefix=ENABLED
+// RUN: %clangxx -### -fsycl %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck %s 
--check-prefix=ENABLED
 // RUN: %clangxx -### -fno-sycl %s 2>&1 | FileCheck %s --check-prefix=DISABLED
 // RUN: %clangxx -### -fsycl -fno-sycl %s 2>&1 | FileCheck %s 
--check-prefix=DISABLED
 // RUN: %clangxx -### %s 2>&1 | FileCheck %s --check-prefix=DISABLED
-// RUN: %clang_cl -### -fsycl -sycl-std=2017 -- %s 2>&1 | FileCheck %s 
--check-prefix=ENABLED
-// RUN: %clang_cl -### -fsycl -- %s 2>&1 | FileCheck %s --check-prefix=ENABLED
+// RUN: %clang_cl -### -fsycl -sycl-std=2017 -- %s --sysroot=%S/Inputs/SYCL 
2>&1 | FileCheck %s --check-prefix=ENABLED
+// RUN: %clang_cl -### -fsycl -- %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck 
%s --check-prefix=ENABLED
 // RUN: %clang_cl -### -- %s 2>&1 | FileCheck %s --check-prefix=DISABLED
 
 // ENABLED: "-cc1"{{.*}} "-fsycl-is-device"
@@ -20,9 +20,9 @@
 // DISABLED-NOT: "-fsycl-is-device"
 // DISABLED-NOT: "-sycl-std="
 
-// RUN: %clang -### -fsycl  %s 2>&1 | FileCheck %s --check-prefix=DEFAULT
-// RUN: %clangxx -### -fsycl %s 2>&1 | FileCheck %s --check-prefix=DEFAULT
-// RUN: %clang_cl -### -fsycl -- %s 2>&1 | FileCheck %s --check-prefix=DEFAULT
+// RUN: %clang -### -fsycl  %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck %s 
--check-prefix=DEFAULT
+// RUN: %clangxx -### -fsycl %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck %s 
--check-prefix=DEFAULT
+// RUN: %clang_cl -### -fsycl -- %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck 
%s --check-prefix=DEFAULT
 
 // DEFAULT: "-sycl-std=2020"
 

>From 3b985cc1424d4a9ea2b83147c5878998939b4696 Mon Sep 17 00:00:00 2001
From: srividya sundaram <[email protected]>
Date: Mon, 11 May 2026 14:46:14 -0700
Subject: [PATCH 3/3] Fix tests and add all SYCL device libs.

---
 clang/lib/Driver/ToolChains/SYCL.cpp          |  24 ++++++++++++++----
 .../Inputs/SYCL/lib/libsycl-cmath-fp64.bc     | Bin 0 -> 1624 bytes
 .../Inputs/SYCL/lib/libsycl-complex-fp64.bc   | Bin 0 -> 1624 bytes
 .../SYCL/lib/libsycl-fallback-cmath-fp64.bc   | Bin 0 -> 1624 bytes
 .../Inputs/SYCL/lib/libsycl-fallback-cmath.bc | Bin 0 -> 1624 bytes
 .../SYCL/lib/libsycl-fallback-complex-fp64.bc | Bin 0 -> 1624 bytes
 .../SYCL/lib/libsycl-fallback-complex.bc      | Bin 0 -> 1624 bytes
 .../SYCL/lib/libsycl-fallback-cstring.bc      | Bin 0 -> 1624 bytes
 .../SYCL/lib/libsycl-fallback-imf-bf16.bc     | Bin 0 -> 1624 bytes
 .../SYCL/lib/libsycl-fallback-imf-fp64.bc     | Bin 0 -> 1624 bytes
 .../Inputs/SYCL/lib/libsycl-fallback-imf.bc   | Bin 0 -> 1624 bytes
 .../Inputs/SYCL/lib/libsycl-imf-bf16.bc       | Bin 0 -> 1624 bytes
 .../Inputs/SYCL/lib/libsycl-imf-fp64.bc       | Bin 0 -> 1624 bytes
 .../Driver/Inputs/SYCL/lib/libsycl-imf.bc     | Bin 0 -> 1624 bytes
 .../Driver/sycl-device-library-linking.cpp    |  13 ++++++++++
 clang/test/Driver/sycl-offload-jit-unix.cpp   |  10 ++++++--
 clang/test/Driver/sycl-offload-jit-xarch.cpp  |   4 +--
 clang/test/Driver/sycl-offload-jit.cpp        |  14 +++++-----
 clang/test/Driver/sycl-std-default.cpp        |  22 ++++++++--------
 clang/test/Driver/sycl.cpp                    |   4 +--
 20 files changed, 62 insertions(+), 29 deletions(-)
 create mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-cmath-fp64.bc
 create mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-complex-fp64.bc
 create mode 100644 
clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-cmath-fp64.bc
 create mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-cmath.bc
 create mode 100644 
clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-complex-fp64.bc
 create mode 100644 
clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-complex.bc
 create mode 100644 
clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-cstring.bc
 create mode 100644 
clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-imf-bf16.bc
 create mode 100644 
clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-imf-fp64.bc
 create mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-imf.bc
 create mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-imf-bf16.bc
 create mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-imf-fp64.bc
 create mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-imf.bc

diff --git a/clang/lib/Driver/ToolChains/SYCL.cpp 
b/clang/lib/Driver/ToolChains/SYCL.cpp
index 7cf9075ee656f..b827dd32d3b77 100644
--- a/clang/lib/Driver/ToolChains/SYCL.cpp
+++ b/clang/lib/Driver/ToolChains/SYCL.cpp
@@ -127,8 +127,7 @@ void SYCLToolChain::addClangTargetOptions(
   HostTC.addClangTargetOptions(DriverArgs, CC1Args, DeviceOffloadingKind);
 
   // Link SYCL device libraries at compile time for SPIR/SPIRV targets.
-  // The new offloading driver is the default in upstream LLVM, so we always
-  // perform compile-time linking for SPIR/SPIRV targets.
+  // We perform compile-time linking for SPIR/SPIRV targets.
   // Other targets (like NVPTX, AMD) would link at link time.
   if (getTriple().isSPIROrSPIRV()) {
     // Get the device libraries for this offloading kind.
@@ -251,13 +250,28 @@ SYCLToolChain::getDeviceLibNames(const Driver &D,
     LibraryList.emplace_back(BitCodeLibrary);
   };
 
-  // For now, support only SPIR/SPIRV targets with a minimal set of libraries.
-  // This is a starting point that can be expanded later.
+  // Add all SYCL device libraries for SPIR/SPIRV targets.
   if (TargetTriple.isSPIROrSPIRV()) {
-    // Core SYCL device libraries - start with the essential ones
+    // Core SYCL device libraries
     addLibToList("libsycl-crt.bc");
     addLibToList("libsycl-complex.bc");
+    addLibToList("libsycl-complex-fp64.bc");
     addLibToList("libsycl-cmath.bc");
+    addLibToList("libsycl-cmath-fp64.bc");
+#if defined(_WIN32)
+    addLibToList("libsycl-msvc-math.bc");
+#endif
+    addLibToList("libsycl-imf.bc");
+    addLibToList("libsycl-imf-fp64.bc");
+    addLibToList("libsycl-imf-bf16.bc");
+    addLibToList("libsycl-fallback-cstring.bc");
+    addLibToList("libsycl-fallback-complex.bc");
+    addLibToList("libsycl-fallback-complex-fp64.bc");
+    addLibToList("libsycl-fallback-cmath.bc");
+    addLibToList("libsycl-fallback-cmath-fp64.bc");
+    addLibToList("libsycl-fallback-imf.bc");
+    addLibToList("libsycl-fallback-imf-fp64.bc");
+    addLibToList("libsycl-fallback-imf-bf16.bc");
   }
 
   return LibraryList;
diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-cmath-fp64.bc 
b/clang/test/Driver/Inputs/SYCL/lib/libsycl-cmath-fp64.bc
new file mode 100644
index 
0000000000000000000000000000000000000000..85a261bc54ad705009f58a8a205227f5e2e814ef
GIT binary patch
literal 1624
zcmXX`Z%i9y7=KHl*NyJIf+%#mJA0#BnmFfKI%sK|(B33noUy}wK%-gPv5qNON~!#t
zE-hC%rbIi_Ed789&5W5JOqlY455!Q8VP(yR#2D0uw4*R)7~nuN<39Kt^OAcm@8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b@mn9@)Dk<wR6Tp!oQ4An8WzReiaa@VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0@Ti3t|Z3~om=d{PYch6zx
zY?-U_uzDbh(0=wLrn}#=-~H^@Z*Gok_`f?;udZ4tM`-94`Um#csUy@(feKV997DV%
zCJnnHL|-q_mF(24BJ!aY??iB&#>Gsh={qSZz?JQOCLG8r9U0y+taN01hr>bQlA7pq
zi@_k#A5?btib1`o%U0m^I4*GHMUGtF!do6(r=6jfSZa}_r+rL-yJDLZZ1cQzTxp*a
z>@lS+yH(ZgB`&oS4eeqGYD5gi#h{nyHWJ;B%b;yfL_DJwJ8Q&HQtV4ck8Et=jXeHq
z3a@iYe<np0Q&e`h=6uu~OU*>-IiKp6IB(7H*5q!TkSqz_GNiO6q?h2QPX=s1D{W(v
z=7$SnuvH8Ng>XC3>lMQ_Vt7>4-FbuDK;$D2F2?b46IsyXb(lhLq;qLz+Q}@iR4&To
z@>H=v|Dj+4HK#0NeB+2<%X$p|58@SjdWqiTsgpZ#Qf7d8mzncXYb?E#rY|cP88Az4
z`BbMr5-eHCHpV-EkSEjjB5xalr8InNFH9=-03J2bZzMv==-bO$ygr3jJb0U{O)of^
zVxfAmKraCRx6U>uIL3toG08H_TeFgVB5ln`Frz)|9`95WfT|M+Y!!9C&*F72`7p2A
z(vvG3xuPfk_TY<Jyv$)(Zs%1G^0?^1kGa}=>pp5aN-q|w*I9a%rDs?g6kKDU59q(J
zP4bQjr8OZ~v#pb$J`CFrINf4TP}JSNk2g88kjD?2$OohF7fGS)x<SA!XOdtQnc?s}
zNEwYet$7KkbAVFWrkPQCE=A{^%u<>P7|wFIAnQv)lNF9<h4*WSF1L7QRQw<Udv7Kb
z_F>7MkSz0jBiJbmjA`8Lvo0S4Q17JamS|Pr<arKn>dDQ#YSTmR$gS{7UbU(x3-d7S
z^(LXao#<1Gx|aPDk_~+LC2z?Bhe~T)uxFKaATuFpn)l6ub-__7>T;BMqyQafZ>qq7
z&<C`rtE{gPgAt<t2GM5($<pIa%b3zODOsMBI3}gW1Ym2=>FM7T46ru~1g7`N>iY&C
z?KVN=@{}BwZBB>^yGqG3g8#dWM1S(n8E4}J025^2j`EF=K5%bQ8h#beMd@szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J@W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3@4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d@v)pxez#j~OC(T)ze$A3;CWIF%=

literal 0
HcmV?d00001

diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-complex-fp64.bc 
b/clang/test/Driver/Inputs/SYCL/lib/libsycl-complex-fp64.bc
new file mode 100644
index 
0000000000000000000000000000000000000000..85a261bc54ad705009f58a8a205227f5e2e814ef
GIT binary patch
literal 1624
zcmXX`Z%i9y7=KHl*NyJIf+%#mJA0#BnmFfKI%sK|(B33noUy}wK%-gPv5qNON~!#t
zE-hC%rbIi_Ed789&5W5JOqlY455!Q8VP(yR#2D0uw4*R)7~nuN<39Kt^OAcm@8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b@mn9@)Dk<wR6Tp!oQ4An8WzReiaa@VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0@Ti3t|Z3~om=d{PYch6zx
zY?-U_uzDbh(0=wLrn}#=-~H^@Z*Gok_`f?;udZ4tM`-94`Um#csUy@(feKV997DV%
zCJnnHL|-q_mF(24BJ!aY??iB&#>Gsh={qSZz?JQOCLG8r9U0y+taN01hr>bQlA7pq
zi@_k#A5?btib1`o%U0m^I4*GHMUGtF!do6(r=6jfSZa}_r+rL-yJDLZZ1cQzTxp*a
z>@lS+yH(ZgB`&oS4eeqGYD5gi#h{nyHWJ;B%b;yfL_DJwJ8Q&HQtV4ck8Et=jXeHq
z3a@iYe<np0Q&e`h=6uu~OU*>-IiKp6IB(7H*5q!TkSqz_GNiO6q?h2QPX=s1D{W(v
z=7$SnuvH8Ng>XC3>lMQ_Vt7>4-FbuDK;$D2F2?b46IsyXb(lhLq;qLz+Q}@iR4&To
z@>H=v|Dj+4HK#0NeB+2<%X$p|58@SjdWqiTsgpZ#Qf7d8mzncXYb?E#rY|cP88Az4
z`BbMr5-eHCHpV-EkSEjjB5xalr8InNFH9=-03J2bZzMv==-bO$ygr3jJb0U{O)of^
zVxfAmKraCRx6U>uIL3toG08H_TeFgVB5ln`Frz)|9`95WfT|M+Y!!9C&*F72`7p2A
z(vvG3xuPfk_TY<Jyv$)(Zs%1G^0?^1kGa}=>pp5aN-q|w*I9a%rDs?g6kKDU59q(J
zP4bQjr8OZ~v#pb$J`CFrINf4TP}JSNk2g88kjD?2$OohF7fGS)x<SA!XOdtQnc?s}
zNEwYet$7KkbAVFWrkPQCE=A{^%u<>P7|wFIAnQv)lNF9<h4*WSF1L7QRQw<Udv7Kb
z_F>7MkSz0jBiJbmjA`8Lvo0S4Q17JamS|Pr<arKn>dDQ#YSTmR$gS{7UbU(x3-d7S
z^(LXao#<1Gx|aPDk_~+LC2z?Bhe~T)uxFKaATuFpn)l6ub-__7>T;BMqyQafZ>qq7
z&<C`rtE{gPgAt<t2GM5($<pIa%b3zODOsMBI3}gW1Ym2=>FM7T46ru~1g7`N>iY&C
z?KVN=@{}BwZBB>^yGqG3g8#dWM1S(n8E4}J025^2j`EF=K5%bQ8h#beMd@szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J@W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3@4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d@v)pxez#j~OC(T)ze$A3;CWIF%=

literal 0
HcmV?d00001

diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-cmath-fp64.bc 
b/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-cmath-fp64.bc
new file mode 100644
index 
0000000000000000000000000000000000000000..85a261bc54ad705009f58a8a205227f5e2e814ef
GIT binary patch
literal 1624
zcmXX`Z%i9y7=KHl*NyJIf+%#mJA0#BnmFfKI%sK|(B33noUy}wK%-gPv5qNON~!#t
zE-hC%rbIi_Ed789&5W5JOqlY455!Q8VP(yR#2D0uw4*R)7~nuN<39Kt^OAcm@8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b@mn9@)Dk<wR6Tp!oQ4An8WzReiaa@VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0@Ti3t|Z3~om=d{PYch6zx
zY?-U_uzDbh(0=wLrn}#=-~H^@Z*Gok_`f?;udZ4tM`-94`Um#csUy@(feKV997DV%
zCJnnHL|-q_mF(24BJ!aY??iB&#>Gsh={qSZz?JQOCLG8r9U0y+taN01hr>bQlA7pq
zi@_k#A5?btib1`o%U0m^I4*GHMUGtF!do6(r=6jfSZa}_r+rL-yJDLZZ1cQzTxp*a
z>@lS+yH(ZgB`&oS4eeqGYD5gi#h{nyHWJ;B%b;yfL_DJwJ8Q&HQtV4ck8Et=jXeHq
z3a@iYe<np0Q&e`h=6uu~OU*>-IiKp6IB(7H*5q!TkSqz_GNiO6q?h2QPX=s1D{W(v
z=7$SnuvH8Ng>XC3>lMQ_Vt7>4-FbuDK;$D2F2?b46IsyXb(lhLq;qLz+Q}@iR4&To
z@>H=v|Dj+4HK#0NeB+2<%X$p|58@SjdWqiTsgpZ#Qf7d8mzncXYb?E#rY|cP88Az4
z`BbMr5-eHCHpV-EkSEjjB5xalr8InNFH9=-03J2bZzMv==-bO$ygr3jJb0U{O)of^
zVxfAmKraCRx6U>uIL3toG08H_TeFgVB5ln`Frz)|9`95WfT|M+Y!!9C&*F72`7p2A
z(vvG3xuPfk_TY<Jyv$)(Zs%1G^0?^1kGa}=>pp5aN-q|w*I9a%rDs?g6kKDU59q(J
zP4bQjr8OZ~v#pb$J`CFrINf4TP}JSNk2g88kjD?2$OohF7fGS)x<SA!XOdtQnc?s}
zNEwYet$7KkbAVFWrkPQCE=A{^%u<>P7|wFIAnQv)lNF9<h4*WSF1L7QRQw<Udv7Kb
z_F>7MkSz0jBiJbmjA`8Lvo0S4Q17JamS|Pr<arKn>dDQ#YSTmR$gS{7UbU(x3-d7S
z^(LXao#<1Gx|aPDk_~+LC2z?Bhe~T)uxFKaATuFpn)l6ub-__7>T;BMqyQafZ>qq7
z&<C`rtE{gPgAt<t2GM5($<pIa%b3zODOsMBI3}gW1Ym2=>FM7T46ru~1g7`N>iY&C
z?KVN=@{}BwZBB>^yGqG3g8#dWM1S(n8E4}J025^2j`EF=K5%bQ8h#beMd@szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J@W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3@4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d@v)pxez#j~OC(T)ze$A3;CWIF%=

literal 0
HcmV?d00001

diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-cmath.bc 
b/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-cmath.bc
new file mode 100644
index 
0000000000000000000000000000000000000000..85a261bc54ad705009f58a8a205227f5e2e814ef
GIT binary patch
literal 1624
zcmXX`Z%i9y7=KHl*NyJIf+%#mJA0#BnmFfKI%sK|(B33noUy}wK%-gPv5qNON~!#t
zE-hC%rbIi_Ed789&5W5JOqlY455!Q8VP(yR#2D0uw4*R)7~nuN<39Kt^OAcm@8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b@mn9@)Dk<wR6Tp!oQ4An8WzReiaa@VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0@Ti3t|Z3~om=d{PYch6zx
zY?-U_uzDbh(0=wLrn}#=-~H^@Z*Gok_`f?;udZ4tM`-94`Um#csUy@(feKV997DV%
zCJnnHL|-q_mF(24BJ!aY??iB&#>Gsh={qSZz?JQOCLG8r9U0y+taN01hr>bQlA7pq
zi@_k#A5?btib1`o%U0m^I4*GHMUGtF!do6(r=6jfSZa}_r+rL-yJDLZZ1cQzTxp*a
z>@lS+yH(ZgB`&oS4eeqGYD5gi#h{nyHWJ;B%b;yfL_DJwJ8Q&HQtV4ck8Et=jXeHq
z3a@iYe<np0Q&e`h=6uu~OU*>-IiKp6IB(7H*5q!TkSqz_GNiO6q?h2QPX=s1D{W(v
z=7$SnuvH8Ng>XC3>lMQ_Vt7>4-FbuDK;$D2F2?b46IsyXb(lhLq;qLz+Q}@iR4&To
z@>H=v|Dj+4HK#0NeB+2<%X$p|58@SjdWqiTsgpZ#Qf7d8mzncXYb?E#rY|cP88Az4
z`BbMr5-eHCHpV-EkSEjjB5xalr8InNFH9=-03J2bZzMv==-bO$ygr3jJb0U{O)of^
zVxfAmKraCRx6U>uIL3toG08H_TeFgVB5ln`Frz)|9`95WfT|M+Y!!9C&*F72`7p2A
z(vvG3xuPfk_TY<Jyv$)(Zs%1G^0?^1kGa}=>pp5aN-q|w*I9a%rDs?g6kKDU59q(J
zP4bQjr8OZ~v#pb$J`CFrINf4TP}JSNk2g88kjD?2$OohF7fGS)x<SA!XOdtQnc?s}
zNEwYet$7KkbAVFWrkPQCE=A{^%u<>P7|wFIAnQv)lNF9<h4*WSF1L7QRQw<Udv7Kb
z_F>7MkSz0jBiJbmjA`8Lvo0S4Q17JamS|Pr<arKn>dDQ#YSTmR$gS{7UbU(x3-d7S
z^(LXao#<1Gx|aPDk_~+LC2z?Bhe~T)uxFKaATuFpn)l6ub-__7>T;BMqyQafZ>qq7
z&<C`rtE{gPgAt<t2GM5($<pIa%b3zODOsMBI3}gW1Ym2=>FM7T46ru~1g7`N>iY&C
z?KVN=@{}BwZBB>^yGqG3g8#dWM1S(n8E4}J025^2j`EF=K5%bQ8h#beMd@szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J@W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3@4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d@v)pxez#j~OC(T)ze$A3;CWIF%=

literal 0
HcmV?d00001

diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-complex-fp64.bc 
b/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-complex-fp64.bc
new file mode 100644
index 
0000000000000000000000000000000000000000..85a261bc54ad705009f58a8a205227f5e2e814ef
GIT binary patch
literal 1624
zcmXX`Z%i9y7=KHl*NyJIf+%#mJA0#BnmFfKI%sK|(B33noUy}wK%-gPv5qNON~!#t
zE-hC%rbIi_Ed789&5W5JOqlY455!Q8VP(yR#2D0uw4*R)7~nuN<39Kt^OAcm@8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b@mn9@)Dk<wR6Tp!oQ4An8WzReiaa@VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0@Ti3t|Z3~om=d{PYch6zx
zY?-U_uzDbh(0=wLrn}#=-~H^@Z*Gok_`f?;udZ4tM`-94`Um#csUy@(feKV997DV%
zCJnnHL|-q_mF(24BJ!aY??iB&#>Gsh={qSZz?JQOCLG8r9U0y+taN01hr>bQlA7pq
zi@_k#A5?btib1`o%U0m^I4*GHMUGtF!do6(r=6jfSZa}_r+rL-yJDLZZ1cQzTxp*a
z>@lS+yH(ZgB`&oS4eeqGYD5gi#h{nyHWJ;B%b;yfL_DJwJ8Q&HQtV4ck8Et=jXeHq
z3a@iYe<np0Q&e`h=6uu~OU*>-IiKp6IB(7H*5q!TkSqz_GNiO6q?h2QPX=s1D{W(v
z=7$SnuvH8Ng>XC3>lMQ_Vt7>4-FbuDK;$D2F2?b46IsyXb(lhLq;qLz+Q}@iR4&To
z@>H=v|Dj+4HK#0NeB+2<%X$p|58@SjdWqiTsgpZ#Qf7d8mzncXYb?E#rY|cP88Az4
z`BbMr5-eHCHpV-EkSEjjB5xalr8InNFH9=-03J2bZzMv==-bO$ygr3jJb0U{O)of^
zVxfAmKraCRx6U>uIL3toG08H_TeFgVB5ln`Frz)|9`95WfT|M+Y!!9C&*F72`7p2A
z(vvG3xuPfk_TY<Jyv$)(Zs%1G^0?^1kGa}=>pp5aN-q|w*I9a%rDs?g6kKDU59q(J
zP4bQjr8OZ~v#pb$J`CFrINf4TP}JSNk2g88kjD?2$OohF7fGS)x<SA!XOdtQnc?s}
zNEwYet$7KkbAVFWrkPQCE=A{^%u<>P7|wFIAnQv)lNF9<h4*WSF1L7QRQw<Udv7Kb
z_F>7MkSz0jBiJbmjA`8Lvo0S4Q17JamS|Pr<arKn>dDQ#YSTmR$gS{7UbU(x3-d7S
z^(LXao#<1Gx|aPDk_~+LC2z?Bhe~T)uxFKaATuFpn)l6ub-__7>T;BMqyQafZ>qq7
z&<C`rtE{gPgAt<t2GM5($<pIa%b3zODOsMBI3}gW1Ym2=>FM7T46ru~1g7`N>iY&C
z?KVN=@{}BwZBB>^yGqG3g8#dWM1S(n8E4}J025^2j`EF=K5%bQ8h#beMd@szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J@W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3@4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d@v)pxez#j~OC(T)ze$A3;CWIF%=

literal 0
HcmV?d00001

diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-complex.bc 
b/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-complex.bc
new file mode 100644
index 
0000000000000000000000000000000000000000..85a261bc54ad705009f58a8a205227f5e2e814ef
GIT binary patch
literal 1624
zcmXX`Z%i9y7=KHl*NyJIf+%#mJA0#BnmFfKI%sK|(B33noUy}wK%-gPv5qNON~!#t
zE-hC%rbIi_Ed789&5W5JOqlY455!Q8VP(yR#2D0uw4*R)7~nuN<39Kt^OAcm@8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b@mn9@)Dk<wR6Tp!oQ4An8WzReiaa@VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0@Ti3t|Z3~om=d{PYch6zx
zY?-U_uzDbh(0=wLrn}#=-~H^@Z*Gok_`f?;udZ4tM`-94`Um#csUy@(feKV997DV%
zCJnnHL|-q_mF(24BJ!aY??iB&#>Gsh={qSZz?JQOCLG8r9U0y+taN01hr>bQlA7pq
zi@_k#A5?btib1`o%U0m^I4*GHMUGtF!do6(r=6jfSZa}_r+rL-yJDLZZ1cQzTxp*a
z>@lS+yH(ZgB`&oS4eeqGYD5gi#h{nyHWJ;B%b;yfL_DJwJ8Q&HQtV4ck8Et=jXeHq
z3a@iYe<np0Q&e`h=6uu~OU*>-IiKp6IB(7H*5q!TkSqz_GNiO6q?h2QPX=s1D{W(v
z=7$SnuvH8Ng>XC3>lMQ_Vt7>4-FbuDK;$D2F2?b46IsyXb(lhLq;qLz+Q}@iR4&To
z@>H=v|Dj+4HK#0NeB+2<%X$p|58@SjdWqiTsgpZ#Qf7d8mzncXYb?E#rY|cP88Az4
z`BbMr5-eHCHpV-EkSEjjB5xalr8InNFH9=-03J2bZzMv==-bO$ygr3jJb0U{O)of^
zVxfAmKraCRx6U>uIL3toG08H_TeFgVB5ln`Frz)|9`95WfT|M+Y!!9C&*F72`7p2A
z(vvG3xuPfk_TY<Jyv$)(Zs%1G^0?^1kGa}=>pp5aN-q|w*I9a%rDs?g6kKDU59q(J
zP4bQjr8OZ~v#pb$J`CFrINf4TP}JSNk2g88kjD?2$OohF7fGS)x<SA!XOdtQnc?s}
zNEwYet$7KkbAVFWrkPQCE=A{^%u<>P7|wFIAnQv)lNF9<h4*WSF1L7QRQw<Udv7Kb
z_F>7MkSz0jBiJbmjA`8Lvo0S4Q17JamS|Pr<arKn>dDQ#YSTmR$gS{7UbU(x3-d7S
z^(LXao#<1Gx|aPDk_~+LC2z?Bhe~T)uxFKaATuFpn)l6ub-__7>T;BMqyQafZ>qq7
z&<C`rtE{gPgAt<t2GM5($<pIa%b3zODOsMBI3}gW1Ym2=>FM7T46ru~1g7`N>iY&C
z?KVN=@{}BwZBB>^yGqG3g8#dWM1S(n8E4}J025^2j`EF=K5%bQ8h#beMd@szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J@W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3@4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d@v)pxez#j~OC(T)ze$A3;CWIF%=

literal 0
HcmV?d00001

diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-cstring.bc 
b/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-cstring.bc
new file mode 100644
index 
0000000000000000000000000000000000000000..85a261bc54ad705009f58a8a205227f5e2e814ef
GIT binary patch
literal 1624
zcmXX`Z%i9y7=KHl*NyJIf+%#mJA0#BnmFfKI%sK|(B33noUy}wK%-gPv5qNON~!#t
zE-hC%rbIi_Ed789&5W5JOqlY455!Q8VP(yR#2D0uw4*R)7~nuN<39Kt^OAcm@8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b@mn9@)Dk<wR6Tp!oQ4An8WzReiaa@VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0@Ti3t|Z3~om=d{PYch6zx
zY?-U_uzDbh(0=wLrn}#=-~H^@Z*Gok_`f?;udZ4tM`-94`Um#csUy@(feKV997DV%
zCJnnHL|-q_mF(24BJ!aY??iB&#>Gsh={qSZz?JQOCLG8r9U0y+taN01hr>bQlA7pq
zi@_k#A5?btib1`o%U0m^I4*GHMUGtF!do6(r=6jfSZa}_r+rL-yJDLZZ1cQzTxp*a
z>@lS+yH(ZgB`&oS4eeqGYD5gi#h{nyHWJ;B%b;yfL_DJwJ8Q&HQtV4ck8Et=jXeHq
z3a@iYe<np0Q&e`h=6uu~OU*>-IiKp6IB(7H*5q!TkSqz_GNiO6q?h2QPX=s1D{W(v
z=7$SnuvH8Ng>XC3>lMQ_Vt7>4-FbuDK;$D2F2?b46IsyXb(lhLq;qLz+Q}@iR4&To
z@>H=v|Dj+4HK#0NeB+2<%X$p|58@SjdWqiTsgpZ#Qf7d8mzncXYb?E#rY|cP88Az4
z`BbMr5-eHCHpV-EkSEjjB5xalr8InNFH9=-03J2bZzMv==-bO$ygr3jJb0U{O)of^
zVxfAmKraCRx6U>uIL3toG08H_TeFgVB5ln`Frz)|9`95WfT|M+Y!!9C&*F72`7p2A
z(vvG3xuPfk_TY<Jyv$)(Zs%1G^0?^1kGa}=>pp5aN-q|w*I9a%rDs?g6kKDU59q(J
zP4bQjr8OZ~v#pb$J`CFrINf4TP}JSNk2g88kjD?2$OohF7fGS)x<SA!XOdtQnc?s}
zNEwYet$7KkbAVFWrkPQCE=A{^%u<>P7|wFIAnQv)lNF9<h4*WSF1L7QRQw<Udv7Kb
z_F>7MkSz0jBiJbmjA`8Lvo0S4Q17JamS|Pr<arKn>dDQ#YSTmR$gS{7UbU(x3-d7S
z^(LXao#<1Gx|aPDk_~+LC2z?Bhe~T)uxFKaATuFpn)l6ub-__7>T;BMqyQafZ>qq7
z&<C`rtE{gPgAt<t2GM5($<pIa%b3zODOsMBI3}gW1Ym2=>FM7T46ru~1g7`N>iY&C
z?KVN=@{}BwZBB>^yGqG3g8#dWM1S(n8E4}J025^2j`EF=K5%bQ8h#beMd@szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J@W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3@4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d@v)pxez#j~OC(T)ze$A3;CWIF%=

literal 0
HcmV?d00001

diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-imf-bf16.bc 
b/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-imf-bf16.bc
new file mode 100644
index 
0000000000000000000000000000000000000000..85a261bc54ad705009f58a8a205227f5e2e814ef
GIT binary patch
literal 1624
zcmXX`Z%i9y7=KHl*NyJIf+%#mJA0#BnmFfKI%sK|(B33noUy}wK%-gPv5qNON~!#t
zE-hC%rbIi_Ed789&5W5JOqlY455!Q8VP(yR#2D0uw4*R)7~nuN<39Kt^OAcm@8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b@mn9@)Dk<wR6Tp!oQ4An8WzReiaa@VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0@Ti3t|Z3~om=d{PYch6zx
zY?-U_uzDbh(0=wLrn}#=-~H^@Z*Gok_`f?;udZ4tM`-94`Um#csUy@(feKV997DV%
zCJnnHL|-q_mF(24BJ!aY??iB&#>Gsh={qSZz?JQOCLG8r9U0y+taN01hr>bQlA7pq
zi@_k#A5?btib1`o%U0m^I4*GHMUGtF!do6(r=6jfSZa}_r+rL-yJDLZZ1cQzTxp*a
z>@lS+yH(ZgB`&oS4eeqGYD5gi#h{nyHWJ;B%b;yfL_DJwJ8Q&HQtV4ck8Et=jXeHq
z3a@iYe<np0Q&e`h=6uu~OU*>-IiKp6IB(7H*5q!TkSqz_GNiO6q?h2QPX=s1D{W(v
z=7$SnuvH8Ng>XC3>lMQ_Vt7>4-FbuDK;$D2F2?b46IsyXb(lhLq;qLz+Q}@iR4&To
z@>H=v|Dj+4HK#0NeB+2<%X$p|58@SjdWqiTsgpZ#Qf7d8mzncXYb?E#rY|cP88Az4
z`BbMr5-eHCHpV-EkSEjjB5xalr8InNFH9=-03J2bZzMv==-bO$ygr3jJb0U{O)of^
zVxfAmKraCRx6U>uIL3toG08H_TeFgVB5ln`Frz)|9`95WfT|M+Y!!9C&*F72`7p2A
z(vvG3xuPfk_TY<Jyv$)(Zs%1G^0?^1kGa}=>pp5aN-q|w*I9a%rDs?g6kKDU59q(J
zP4bQjr8OZ~v#pb$J`CFrINf4TP}JSNk2g88kjD?2$OohF7fGS)x<SA!XOdtQnc?s}
zNEwYet$7KkbAVFWrkPQCE=A{^%u<>P7|wFIAnQv)lNF9<h4*WSF1L7QRQw<Udv7Kb
z_F>7MkSz0jBiJbmjA`8Lvo0S4Q17JamS|Pr<arKn>dDQ#YSTmR$gS{7UbU(x3-d7S
z^(LXao#<1Gx|aPDk_~+LC2z?Bhe~T)uxFKaATuFpn)l6ub-__7>T;BMqyQafZ>qq7
z&<C`rtE{gPgAt<t2GM5($<pIa%b3zODOsMBI3}gW1Ym2=>FM7T46ru~1g7`N>iY&C
z?KVN=@{}BwZBB>^yGqG3g8#dWM1S(n8E4}J025^2j`EF=K5%bQ8h#beMd@szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J@W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3@4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d@v)pxez#j~OC(T)ze$A3;CWIF%=

literal 0
HcmV?d00001

diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-imf-fp64.bc 
b/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-imf-fp64.bc
new file mode 100644
index 
0000000000000000000000000000000000000000..85a261bc54ad705009f58a8a205227f5e2e814ef
GIT binary patch
literal 1624
zcmXX`Z%i9y7=KHl*NyJIf+%#mJA0#BnmFfKI%sK|(B33noUy}wK%-gPv5qNON~!#t
zE-hC%rbIi_Ed789&5W5JOqlY455!Q8VP(yR#2D0uw4*R)7~nuN<39Kt^OAcm@8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b@mn9@)Dk<wR6Tp!oQ4An8WzReiaa@VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0@Ti3t|Z3~om=d{PYch6zx
zY?-U_uzDbh(0=wLrn}#=-~H^@Z*Gok_`f?;udZ4tM`-94`Um#csUy@(feKV997DV%
zCJnnHL|-q_mF(24BJ!aY??iB&#>Gsh={qSZz?JQOCLG8r9U0y+taN01hr>bQlA7pq
zi@_k#A5?btib1`o%U0m^I4*GHMUGtF!do6(r=6jfSZa}_r+rL-yJDLZZ1cQzTxp*a
z>@lS+yH(ZgB`&oS4eeqGYD5gi#h{nyHWJ;B%b;yfL_DJwJ8Q&HQtV4ck8Et=jXeHq
z3a@iYe<np0Q&e`h=6uu~OU*>-IiKp6IB(7H*5q!TkSqz_GNiO6q?h2QPX=s1D{W(v
z=7$SnuvH8Ng>XC3>lMQ_Vt7>4-FbuDK;$D2F2?b46IsyXb(lhLq;qLz+Q}@iR4&To
z@>H=v|Dj+4HK#0NeB+2<%X$p|58@SjdWqiTsgpZ#Qf7d8mzncXYb?E#rY|cP88Az4
z`BbMr5-eHCHpV-EkSEjjB5xalr8InNFH9=-03J2bZzMv==-bO$ygr3jJb0U{O)of^
zVxfAmKraCRx6U>uIL3toG08H_TeFgVB5ln`Frz)|9`95WfT|M+Y!!9C&*F72`7p2A
z(vvG3xuPfk_TY<Jyv$)(Zs%1G^0?^1kGa}=>pp5aN-q|w*I9a%rDs?g6kKDU59q(J
zP4bQjr8OZ~v#pb$J`CFrINf4TP}JSNk2g88kjD?2$OohF7fGS)x<SA!XOdtQnc?s}
zNEwYet$7KkbAVFWrkPQCE=A{^%u<>P7|wFIAnQv)lNF9<h4*WSF1L7QRQw<Udv7Kb
z_F>7MkSz0jBiJbmjA`8Lvo0S4Q17JamS|Pr<arKn>dDQ#YSTmR$gS{7UbU(x3-d7S
z^(LXao#<1Gx|aPDk_~+LC2z?Bhe~T)uxFKaATuFpn)l6ub-__7>T;BMqyQafZ>qq7
z&<C`rtE{gPgAt<t2GM5($<pIa%b3zODOsMBI3}gW1Ym2=>FM7T46ru~1g7`N>iY&C
z?KVN=@{}BwZBB>^yGqG3g8#dWM1S(n8E4}J025^2j`EF=K5%bQ8h#beMd@szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J@W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3@4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d@v)pxez#j~OC(T)ze$A3;CWIF%=

literal 0
HcmV?d00001

diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-imf.bc 
b/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-imf.bc
new file mode 100644
index 
0000000000000000000000000000000000000000..85a261bc54ad705009f58a8a205227f5e2e814ef
GIT binary patch
literal 1624
zcmXX`Z%i9y7=KHl*NyJIf+%#mJA0#BnmFfKI%sK|(B33noUy}wK%-gPv5qNON~!#t
zE-hC%rbIi_Ed789&5W5JOqlY455!Q8VP(yR#2D0uw4*R)7~nuN<39Kt^OAcm@8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b@mn9@)Dk<wR6Tp!oQ4An8WzReiaa@VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0@Ti3t|Z3~om=d{PYch6zx
zY?-U_uzDbh(0=wLrn}#=-~H^@Z*Gok_`f?;udZ4tM`-94`Um#csUy@(feKV997DV%
zCJnnHL|-q_mF(24BJ!aY??iB&#>Gsh={qSZz?JQOCLG8r9U0y+taN01hr>bQlA7pq
zi@_k#A5?btib1`o%U0m^I4*GHMUGtF!do6(r=6jfSZa}_r+rL-yJDLZZ1cQzTxp*a
z>@lS+yH(ZgB`&oS4eeqGYD5gi#h{nyHWJ;B%b;yfL_DJwJ8Q&HQtV4ck8Et=jXeHq
z3a@iYe<np0Q&e`h=6uu~OU*>-IiKp6IB(7H*5q!TkSqz_GNiO6q?h2QPX=s1D{W(v
z=7$SnuvH8Ng>XC3>lMQ_Vt7>4-FbuDK;$D2F2?b46IsyXb(lhLq;qLz+Q}@iR4&To
z@>H=v|Dj+4HK#0NeB+2<%X$p|58@SjdWqiTsgpZ#Qf7d8mzncXYb?E#rY|cP88Az4
z`BbMr5-eHCHpV-EkSEjjB5xalr8InNFH9=-03J2bZzMv==-bO$ygr3jJb0U{O)of^
zVxfAmKraCRx6U>uIL3toG08H_TeFgVB5ln`Frz)|9`95WfT|M+Y!!9C&*F72`7p2A
z(vvG3xuPfk_TY<Jyv$)(Zs%1G^0?^1kGa}=>pp5aN-q|w*I9a%rDs?g6kKDU59q(J
zP4bQjr8OZ~v#pb$J`CFrINf4TP}JSNk2g88kjD?2$OohF7fGS)x<SA!XOdtQnc?s}
zNEwYet$7KkbAVFWrkPQCE=A{^%u<>P7|wFIAnQv)lNF9<h4*WSF1L7QRQw<Udv7Kb
z_F>7MkSz0jBiJbmjA`8Lvo0S4Q17JamS|Pr<arKn>dDQ#YSTmR$gS{7UbU(x3-d7S
z^(LXao#<1Gx|aPDk_~+LC2z?Bhe~T)uxFKaATuFpn)l6ub-__7>T;BMqyQafZ>qq7
z&<C`rtE{gPgAt<t2GM5($<pIa%b3zODOsMBI3}gW1Ym2=>FM7T46ru~1g7`N>iY&C
z?KVN=@{}BwZBB>^yGqG3g8#dWM1S(n8E4}J025^2j`EF=K5%bQ8h#beMd@szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J@W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3@4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d@v)pxez#j~OC(T)ze$A3;CWIF%=

literal 0
HcmV?d00001

diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-imf-bf16.bc 
b/clang/test/Driver/Inputs/SYCL/lib/libsycl-imf-bf16.bc
new file mode 100644
index 
0000000000000000000000000000000000000000..85a261bc54ad705009f58a8a205227f5e2e814ef
GIT binary patch
literal 1624
zcmXX`Z%i9y7=KHl*NyJIf+%#mJA0#BnmFfKI%sK|(B33noUy}wK%-gPv5qNON~!#t
zE-hC%rbIi_Ed789&5W5JOqlY455!Q8VP(yR#2D0uw4*R)7~nuN<39Kt^OAcm@8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b@mn9@)Dk<wR6Tp!oQ4An8WzReiaa@VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0@Ti3t|Z3~om=d{PYch6zx
zY?-U_uzDbh(0=wLrn}#=-~H^@Z*Gok_`f?;udZ4tM`-94`Um#csUy@(feKV997DV%
zCJnnHL|-q_mF(24BJ!aY??iB&#>Gsh={qSZz?JQOCLG8r9U0y+taN01hr>bQlA7pq
zi@_k#A5?btib1`o%U0m^I4*GHMUGtF!do6(r=6jfSZa}_r+rL-yJDLZZ1cQzTxp*a
z>@lS+yH(ZgB`&oS4eeqGYD5gi#h{nyHWJ;B%b;yfL_DJwJ8Q&HQtV4ck8Et=jXeHq
z3a@iYe<np0Q&e`h=6uu~OU*>-IiKp6IB(7H*5q!TkSqz_GNiO6q?h2QPX=s1D{W(v
z=7$SnuvH8Ng>XC3>lMQ_Vt7>4-FbuDK;$D2F2?b46IsyXb(lhLq;qLz+Q}@iR4&To
z@>H=v|Dj+4HK#0NeB+2<%X$p|58@SjdWqiTsgpZ#Qf7d8mzncXYb?E#rY|cP88Az4
z`BbMr5-eHCHpV-EkSEjjB5xalr8InNFH9=-03J2bZzMv==-bO$ygr3jJb0U{O)of^
zVxfAmKraCRx6U>uIL3toG08H_TeFgVB5ln`Frz)|9`95WfT|M+Y!!9C&*F72`7p2A
z(vvG3xuPfk_TY<Jyv$)(Zs%1G^0?^1kGa}=>pp5aN-q|w*I9a%rDs?g6kKDU59q(J
zP4bQjr8OZ~v#pb$J`CFrINf4TP}JSNk2g88kjD?2$OohF7fGS)x<SA!XOdtQnc?s}
zNEwYet$7KkbAVFWrkPQCE=A{^%u<>P7|wFIAnQv)lNF9<h4*WSF1L7QRQw<Udv7Kb
z_F>7MkSz0jBiJbmjA`8Lvo0S4Q17JamS|Pr<arKn>dDQ#YSTmR$gS{7UbU(x3-d7S
z^(LXao#<1Gx|aPDk_~+LC2z?Bhe~T)uxFKaATuFpn)l6ub-__7>T;BMqyQafZ>qq7
z&<C`rtE{gPgAt<t2GM5($<pIa%b3zODOsMBI3}gW1Ym2=>FM7T46ru~1g7`N>iY&C
z?KVN=@{}BwZBB>^yGqG3g8#dWM1S(n8E4}J025^2j`EF=K5%bQ8h#beMd@szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J@W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3@4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d@v)pxez#j~OC(T)ze$A3;CWIF%=

literal 0
HcmV?d00001

diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-imf-fp64.bc 
b/clang/test/Driver/Inputs/SYCL/lib/libsycl-imf-fp64.bc
new file mode 100644
index 
0000000000000000000000000000000000000000..85a261bc54ad705009f58a8a205227f5e2e814ef
GIT binary patch
literal 1624
zcmXX`Z%i9y7=KHl*NyJIf+%#mJA0#BnmFfKI%sK|(B33noUy}wK%-gPv5qNON~!#t
zE-hC%rbIi_Ed789&5W5JOqlY455!Q8VP(yR#2D0uw4*R)7~nuN<39Kt^OAcm@8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b@mn9@)Dk<wR6Tp!oQ4An8WzReiaa@VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0@Ti3t|Z3~om=d{PYch6zx
zY?-U_uzDbh(0=wLrn}#=-~H^@Z*Gok_`f?;udZ4tM`-94`Um#csUy@(feKV997DV%
zCJnnHL|-q_mF(24BJ!aY??iB&#>Gsh={qSZz?JQOCLG8r9U0y+taN01hr>bQlA7pq
zi@_k#A5?btib1`o%U0m^I4*GHMUGtF!do6(r=6jfSZa}_r+rL-yJDLZZ1cQzTxp*a
z>@lS+yH(ZgB`&oS4eeqGYD5gi#h{nyHWJ;B%b;yfL_DJwJ8Q&HQtV4ck8Et=jXeHq
z3a@iYe<np0Q&e`h=6uu~OU*>-IiKp6IB(7H*5q!TkSqz_GNiO6q?h2QPX=s1D{W(v
z=7$SnuvH8Ng>XC3>lMQ_Vt7>4-FbuDK;$D2F2?b46IsyXb(lhLq;qLz+Q}@iR4&To
z@>H=v|Dj+4HK#0NeB+2<%X$p|58@SjdWqiTsgpZ#Qf7d8mzncXYb?E#rY|cP88Az4
z`BbMr5-eHCHpV-EkSEjjB5xalr8InNFH9=-03J2bZzMv==-bO$ygr3jJb0U{O)of^
zVxfAmKraCRx6U>uIL3toG08H_TeFgVB5ln`Frz)|9`95WfT|M+Y!!9C&*F72`7p2A
z(vvG3xuPfk_TY<Jyv$)(Zs%1G^0?^1kGa}=>pp5aN-q|w*I9a%rDs?g6kKDU59q(J
zP4bQjr8OZ~v#pb$J`CFrINf4TP}JSNk2g88kjD?2$OohF7fGS)x<SA!XOdtQnc?s}
zNEwYet$7KkbAVFWrkPQCE=A{^%u<>P7|wFIAnQv)lNF9<h4*WSF1L7QRQw<Udv7Kb
z_F>7MkSz0jBiJbmjA`8Lvo0S4Q17JamS|Pr<arKn>dDQ#YSTmR$gS{7UbU(x3-d7S
z^(LXao#<1Gx|aPDk_~+LC2z?Bhe~T)uxFKaATuFpn)l6ub-__7>T;BMqyQafZ>qq7
z&<C`rtE{gPgAt<t2GM5($<pIa%b3zODOsMBI3}gW1Ym2=>FM7T46ru~1g7`N>iY&C
z?KVN=@{}BwZBB>^yGqG3g8#dWM1S(n8E4}J025^2j`EF=K5%bQ8h#beMd@szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J@W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3@4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d@v)pxez#j~OC(T)ze$A3;CWIF%=

literal 0
HcmV?d00001

diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-imf.bc 
b/clang/test/Driver/Inputs/SYCL/lib/libsycl-imf.bc
new file mode 100644
index 
0000000000000000000000000000000000000000..85a261bc54ad705009f58a8a205227f5e2e814ef
GIT binary patch
literal 1624
zcmXX`Z%i9y7=KHl*NyJIf+%#mJA0#BnmFfKI%sK|(B33noUy}wK%-gPv5qNON~!#t
zE-hC%rbIi_Ed789&5W5JOqlY455!Q8VP(yR#2D0uw4*R)7~nuN<39Kt^OAcm@8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b@mn9@)Dk<wR6Tp!oQ4An8WzReiaa@VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0@Ti3t|Z3~om=d{PYch6zx
zY?-U_uzDbh(0=wLrn}#=-~H^@Z*Gok_`f?;udZ4tM`-94`Um#csUy@(feKV997DV%
zCJnnHL|-q_mF(24BJ!aY??iB&#>Gsh={qSZz?JQOCLG8r9U0y+taN01hr>bQlA7pq
zi@_k#A5?btib1`o%U0m^I4*GHMUGtF!do6(r=6jfSZa}_r+rL-yJDLZZ1cQzTxp*a
z>@lS+yH(ZgB`&oS4eeqGYD5gi#h{nyHWJ;B%b;yfL_DJwJ8Q&HQtV4ck8Et=jXeHq
z3a@iYe<np0Q&e`h=6uu~OU*>-IiKp6IB(7H*5q!TkSqz_GNiO6q?h2QPX=s1D{W(v
z=7$SnuvH8Ng>XC3>lMQ_Vt7>4-FbuDK;$D2F2?b46IsyXb(lhLq;qLz+Q}@iR4&To
z@>H=v|Dj+4HK#0NeB+2<%X$p|58@SjdWqiTsgpZ#Qf7d8mzncXYb?E#rY|cP88Az4
z`BbMr5-eHCHpV-EkSEjjB5xalr8InNFH9=-03J2bZzMv==-bO$ygr3jJb0U{O)of^
zVxfAmKraCRx6U>uIL3toG08H_TeFgVB5ln`Frz)|9`95WfT|M+Y!!9C&*F72`7p2A
z(vvG3xuPfk_TY<Jyv$)(Zs%1G^0?^1kGa}=>pp5aN-q|w*I9a%rDs?g6kKDU59q(J
zP4bQjr8OZ~v#pb$J`CFrINf4TP}JSNk2g88kjD?2$OohF7fGS)x<SA!XOdtQnc?s}
zNEwYet$7KkbAVFWrkPQCE=A{^%u<>P7|wFIAnQv)lNF9<h4*WSF1L7QRQw<Udv7Kb
z_F>7MkSz0jBiJbmjA`8Lvo0S4Q17JamS|Pr<arKn>dDQ#YSTmR$gS{7UbU(x3-d7S
z^(LXao#<1Gx|aPDk_~+LC2z?Bhe~T)uxFKaATuFpn)l6ub-__7>T;BMqyQafZ>qq7
z&<C`rtE{gPgAt<t2GM5($<pIa%b3zODOsMBI3}gW1Ym2=>FM7T46ru~1g7`N>iY&C
z?KVN=@{}BwZBB>^yGqG3g8#dWM1S(n8E4}J025^2j`EF=K5%bQ8h#beMd@szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J@W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3@4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d@v)pxez#j~OC(T)ze$A3;CWIF%=

literal 0
HcmV?d00001

diff --git a/clang/test/Driver/sycl-device-library-linking.cpp 
b/clang/test/Driver/sycl-device-library-linking.cpp
index baea3ae895d6d..c19103eb88d97 100644
--- a/clang/test/Driver/sycl-device-library-linking.cpp
+++ b/clang/test/Driver/sycl-device-library-linking.cpp
@@ -10,7 +10,20 @@
 // CHECK-DEVICE-LIBS-SAME: "-fsycl-is-device"
 // CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-crt.bc"
 // CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-complex.bc"
+// CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" 
"{{.*}}libsycl-complex-fp64.bc"
 // CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-cmath.bc"
+// CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" 
"{{.*}}libsycl-cmath-fp64.bc"
+// CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-imf.bc"
+// CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-imf-fp64.bc"
+// CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-imf-bf16.bc"
+// CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" 
"{{.*}}libsycl-fallback-cstring.bc"
+// CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" 
"{{.*}}libsycl-fallback-complex.bc"
+// CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" 
"{{.*}}libsycl-fallback-complex-fp64.bc"
+// CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" 
"{{.*}}libsycl-fallback-cmath.bc"
+// CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" 
"{{.*}}libsycl-fallback-cmath-fp64.bc"
+// CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" 
"{{.*}}libsycl-fallback-imf.bc"
+// CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" 
"{{.*}}libsycl-fallback-imf-fp64.bc"
+// CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" 
"{{.*}}libsycl-fallback-imf-bf16.bc"
 // CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode-postopt"
 // CHECK-DEVICE-LIBS-SAME: "-Wno-linker-warnings"
 
diff --git a/clang/test/Driver/sycl-offload-jit-unix.cpp 
b/clang/test/Driver/sycl-offload-jit-unix.cpp
index 67339c6fa8627..5bd25049fdbb1 100644
--- a/clang/test/Driver/sycl-offload-jit-unix.cpp
+++ b/clang/test/Driver/sycl-offload-jit-unix.cpp
@@ -9,7 +9,10 @@
 // Check LLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON case: library is in 
lib/<triple>/
 // RUN: rm -rf %t && mkdir -p %t/bin %t/lib/x86_64-unknown-linux-gnu %t/lib
 // RUN: touch %t/lib/x86_64-unknown-linux-gnu/libLLVMSYCL.so
-// RUN: touch %t/lib/libsycl-crt.bc %t/lib/libsycl-complex.bc 
%t/lib/libsycl-cmath.bc
+// RUN: touch %t/lib/libsycl-crt.bc %t/lib/libsycl-complex.bc 
%t/lib/libsycl-complex-fp64.bc %t/lib/libsycl-cmath.bc 
%t/lib/libsycl-cmath-fp64.bc
+// RUN: touch %t/lib/libsycl-imf.bc %t/lib/libsycl-imf-fp64.bc 
%t/lib/libsycl-imf-bf16.bc
+// RUN: touch %t/lib/libsycl-fallback-cstring.bc 
%t/lib/libsycl-fallback-complex.bc %t/lib/libsycl-fallback-complex-fp64.bc
+// RUN: touch %t/lib/libsycl-fallback-cmath.bc 
%t/lib/libsycl-fallback-cmath-fp64.bc %t/lib/libsycl-fallback-imf.bc 
%t/lib/libsycl-fallback-imf-fp64.bc %t/lib/libsycl-fallback-imf-bf16.bc
 // RUN: ln -s %clang %t/bin/clang
 // RUN: %t/bin/clang -### -no-canonical-prefixes 
--target=x86_64-unknown-linux-gnu -fsycl %s 2>&1 \
 // RUN:   | FileCheck 
-check-prefixes=CHECK-LSYCL,CHECK-SYCL-HEADERS-HOST,CHECK-SYCL-HEADERS-DEVICE %s
@@ -20,7 +23,10 @@
 // Check LLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF case: library is in lib/ (no 
triple subdir)
 // RUN: rm -rf %t && mkdir -p %t/bin %t/lib
 // RUN: touch %t/lib/libLLVMSYCL.so
-// RUN: touch %t/lib/libsycl-crt.bc %t/lib/libsycl-complex.bc 
%t/lib/libsycl-cmath.bc
+// RUN: touch %t/lib/libsycl-crt.bc %t/lib/libsycl-complex.bc 
%t/lib/libsycl-complex-fp64.bc %t/lib/libsycl-cmath.bc 
%t/lib/libsycl-cmath-fp64.bc
+// RUN: touch %t/lib/libsycl-imf.bc %t/lib/libsycl-imf-fp64.bc 
%t/lib/libsycl-imf-bf16.bc
+// RUN: touch %t/lib/libsycl-fallback-cstring.bc 
%t/lib/libsycl-fallback-complex.bc %t/lib/libsycl-fallback-complex-fp64.bc
+// RUN: touch %t/lib/libsycl-fallback-cmath.bc 
%t/lib/libsycl-fallback-cmath-fp64.bc %t/lib/libsycl-fallback-imf.bc 
%t/lib/libsycl-fallback-imf-fp64.bc %t/lib/libsycl-fallback-imf-bf16.bc
 // RUN: ln -s %clang %t/bin/clang
 // RUN: %t/bin/clang -### -no-canonical-prefixes 
--target=x86_64-unknown-linux-gnu -fsycl %s 2>&1 \
 // RUN:   | FileCheck -check-prefix=CHECK-LSYCL-FLAT %s
diff --git a/clang/test/Driver/sycl-offload-jit-xarch.cpp 
b/clang/test/Driver/sycl-offload-jit-xarch.cpp
index 98bf86033214f..37f49fa99e107 100644
--- a/clang/test/Driver/sycl-offload-jit-xarch.cpp
+++ b/clang/test/Driver/sycl-offload-jit-xarch.cpp
@@ -2,12 +2,12 @@
 
 // Verify that -Xarch_spirv64 forwards options to the SYCL device compilation
 // and clang-linker-wrapper call.
-// RUN: %clang -fsycl --offload-targets=spirv64-unknown-unknown -Xarch_spirv64 
-O3 -### %s --sysroot=%S/Inputs/SYCL 2>&1 \
+// RUN: %clang -fsycl --offload-targets=spirv64-unknown-unknown -Xarch_spirv64 
-O3 -### %s --no-offloadlib 2>&1 \
 // RUN: | FileCheck -check-prefix=SYCL-DEVICE-O3 %s
 // SYCL-DEVICE-O3: "-triple" "spirv64-unknown-unknown" "-aux-triple" "{{.*}}" 
"-O3"{{.*}} "-fsycl-is-device"
 // SYCL-DEVICE-O3: {{"[^"]*clang-linker-wrapper[^"]*".* 
"--device-compiler=spirv64-unknown-unknown=-O3"}}
 
 // Verify that `-Xarch_spirv64` forwards libraries to the device linker.
-// RUN: %clang -fsycl --offload-targets=spirv64-unknown-unknown -Xarch_spirv64 
-Wl,-lfoo -### %s 2>&1 \
+// RUN: %clang -fsycl --offload-targets=spirv64-unknown-unknown 
--no-offloadlib -Xarch_spirv64 -Wl,-lfoo -### %s 2>&1 \
 // RUN: | FileCheck -check-prefix=DEVICE-LINKER %s
 // DEVICE-LINKER: {{"[^"]*clang-linker-wrapper[^"]*".* 
"--device-linker=spirv64-unknown-unknown=-lfoo"}}
diff --git a/clang/test/Driver/sycl-offload-jit.cpp 
b/clang/test/Driver/sycl-offload-jit.cpp
index 7716b6e3a552f..603812c6133d6 100644
--- a/clang/test/Driver/sycl-offload-jit.cpp
+++ b/clang/test/Driver/sycl-offload-jit.cpp
@@ -21,7 +21,7 @@
 
 /// Check expected default values for device compilation when using -fsycl as
 /// well as llvm-offload-binary inputs.
-// RUN: %clang -### -fsycl -c --target=x86_64-unknown-linux-gnu %s 
--sysroot=%S/Inputs/SYCL 2>&1 \
+// RUN: %clang -### -fsycl -c --target=x86_64-unknown-linux-gnu %s 
--no-offloadlib 2>&1 \
 // RUN:   | FileCheck -check-prefix=CHK-DEVICE-TRIPLE %s
 // CHK-DEVICE-TRIPLE: "-cc1"{{.*}} "-triple" "spirv64-unknown-unknown"
 // CHK-DEVICE-TRIPLE-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
@@ -36,20 +36,20 @@
 
 /// Check -fsycl-is-device is passed when compiling for the device.
 /// Check -fsycl-is-host is passed when compiling for host.
-// RUN: %clang -### -fsycl -c %s 2>&1 \
+// RUN: %clang -### -fsycl -c %s --no-offloadlib 2>&1 \
 // RUN:   | FileCheck -check-prefixes=CHK-FSYCL-IS-DEVICE,CHK-FSYCL-IS-HOST %s
-// RUN: %clang -### -fsycl -fsycl-device-only %s 2>&1 \
+// RUN: %clang -### -fsycl -fsycl-device-only %s --no-offloadlib 2>&1 \
 // RUN:   | FileCheck -check-prefix=CHK-FSYCL-IS-DEVICE %s
-// RUN: %clang_cl -### -fsycl -c -- %s 2>&1 \
+// RUN: %clang_cl -### -fsycl --no-offloadlib -c -- %s 2>&1 \
 // RUN:   | FileCheck -check-prefixes=CHK-FSYCL-IS-DEVICE,CHK-FSYCL-IS-HOST %s
-// RUN: %clang -### -fsycl -fsycl-host-only %s 2>&1 \
+// RUN: %clang -### -fsycl --no-offloadlib -fsycl-host-only %s 2>&1 \
 // RUN:   | FileCheck -check-prefix=CHK-FSYCL-IS-HOST %s
 // CHK-FSYCL-IS-DEVICE: "-cc1"{{.*}} "-fsycl-is-device" {{.*}} "-emit-llvm-bc"
 // CHK-FSYCL-IS-HOST: "-cc1"{{.*}} "-fsycl-is-host"
 
 /// Check for option incompatibility with -fsycl
-// RUN: not %clang -### -fsycl -ffreestanding %s 2>&1 \
+// RUN: not %clang -### -fsycl -ffreestanding %s --no-offloadlib 2>&1 \
 // RUN:   | FileCheck -check-prefix=CHK-INCOMPATIBILITY %s 
-DINCOMPATOPT=-ffreestanding
-// RUN: not %clang -### -fsycl --offload-new-driver -static-libstdc++ %s 2>&1 \
+// RUN: not %clang -### -fsycl --offload-new-driver -static-libstdc++ %s 
--no-offloadlib 2>&1 \
 // RUN:   | FileCheck -check-prefix=CHK-INCOMPATIBILITY %s 
-DINCOMPATOPT=-static-libstdc++
 // CHK-INCOMPATIBILITY: error: invalid argument '[[INCOMPATOPT]]' not allowed 
with '-fsycl'
diff --git a/clang/test/Driver/sycl-std-default.cpp 
b/clang/test/Driver/sycl-std-default.cpp
index 99fcc513696e6..51fbfe7bd5dd0 100644
--- a/clang/test/Driver/sycl-std-default.cpp
+++ b/clang/test/Driver/sycl-std-default.cpp
@@ -1,6 +1,6 @@
 // Tests that SYCL defaults to C++17 when no -std= is specified
 
-// RUN: %clangxx -### -fsycl -c %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck 
%s --check-prefixes=CHECK-DEVICE,CHECK-HOST
+// RUN: %clangxx -### -fsycl -c %s --no-offloadlib 2>&1 | FileCheck %s 
--check-prefixes=CHECK-DEVICE,CHECK-HOST
 
 // CHECK-DEVICE: "-cc1"{{.*}} "-fsycl-is-device"
 // CHECK-DEVICE-SAME: "-std=c++17"
@@ -8,7 +8,7 @@
 // CHECK-HOST-SAME: "-std=c++17"
 
 // Test that explicit -std= overrides the default
-// RUN: %clangxx -### -fsycl -std=c++20 -c %s --sysroot=%S/Inputs/SYCL 2>&1 | 
FileCheck %s --check-prefixes=CHECK-OVERRIDE-DEVICE,CHECK-OVERRIDE-HOST
+// RUN: %clangxx -### -fsycl -std=c++20 -c %s --no-offloadlib 2>&1 | FileCheck 
%s --check-prefixes=CHECK-OVERRIDE-DEVICE,CHECK-OVERRIDE-HOST
 
 // CHECK-OVERRIDE-DEVICE: "-cc1"{{.*}} "-fsycl-is-device"
 // CHECK-OVERRIDE-DEVICE-SAME: "-std=c++20"
@@ -18,23 +18,23 @@
 // CHECK-OVERRIDE-HOST-NOT: "-std=c++17"
 
 // Test that -std=c++14 or earlier produces an error
-// RUN: not %clangxx -fsycl -std=c++14 -c %s 2>&1 | FileCheck %s 
--check-prefix=CHECK-CXX14-ERROR
-// RUN: not %clangxx -fsycl -std=c++11 -c %s 2>&1 | FileCheck %s 
--check-prefix=CHECK-CXX11-ERROR
-// RUN: not %clangxx -fsycl -std=c++98 -c %s 2>&1 | FileCheck %s 
--check-prefix=CHECK-CXX98-ERROR
+// RUN: not %clangxx -fsycl -std=c++14 -c %s --no-offloadlib 2>&1 | FileCheck 
%s --check-prefix=CHECK-CXX14-ERROR
+// RUN: not %clangxx -fsycl -std=c++11 -c %s --no-offloadlib 2>&1 | FileCheck 
%s --check-prefix=CHECK-CXX11-ERROR
+// RUN: not %clangxx -fsycl -std=c++98 -c %s --no-offloadlib 2>&1 | FileCheck 
%s --check-prefix=CHECK-CXX98-ERROR
 
 // CHECK-CXX14-ERROR: error: SYCL requires C++17 or later; '-std=c++14' is not 
supported
 // CHECK-CXX11-ERROR: error: SYCL requires C++17 or later; '-std=c++11' is not 
supported
 // CHECK-CXX98-ERROR: error: SYCL requires C++17 or later; '-std=c++98' is not 
supported
 
 // Test that C standards produce an error with SYCL
-// RUN: not %clangxx -fsycl -std=c11 -c %s 2>&1 | FileCheck %s 
--check-prefix=CHECK-C11-ERROR
-// RUN: not %clangxx -fsycl -std=c99 -c %s 2>&1 | FileCheck %s 
--check-prefix=CHECK-C99-ERROR
+// RUN: not %clangxx -fsycl -std=c11 -c %s --no-offloadlib 2>&1 | FileCheck %s 
--check-prefix=CHECK-C11-ERROR
+// RUN: not %clangxx -fsycl -std=c99 -c %s --no-offloadlib 2>&1 | FileCheck %s 
--check-prefix=CHECK-C99-ERROR
 
 // CHECK-C11-ERROR: error: invalid argument '-std=c11' not allowed with 
'-fsycl'
 // CHECK-C99-ERROR: error: invalid argument '-std=c99' not allowed with 
'-fsycl'
 
 // Test on Windows with clang-cl (MSVC mode)
-// RUN: %clang_cl --target=x86_64-pc-windows-msvc -### -fsycl -- %s 
--sysroot=%S/Inputs/SYCL 2>&1 | FileCheck %s 
--check-prefixes=CHECK-MSVC-DEVICE,CHECK-MSVC-HOST
+// RUN: %clang_cl --no-offloadlib --target=x86_64-pc-windows-msvc -### -fsycl 
-- %s 2>&1 | FileCheck %s --check-prefixes=CHECK-MSVC-DEVICE,CHECK-MSVC-HOST
 
 // CHECK-MSVC-DEVICE: "-cc1"{{.*}} "-fsycl-is-device"
 // CHECK-MSVC-DEVICE-SAME: "-std=c++17"
@@ -42,7 +42,7 @@
 // CHECK-MSVC-HOST-SAME: "-std=c++17"
 
 // Test that /std: override works on Windows
-// RUN: %clang_cl --target=x86_64-pc-windows-msvc -### -fsycl /std:c++20 -- %s 
--sysroot=%S/Inputs/SYCL 2>&1 | FileCheck %s 
--check-prefixes=CHECK-MSVC-OVERRIDE-DEVICE,CHECK-MSVC-OVERRIDE-HOST
+// RUN: %clang_cl --target=x86_64-pc-windows-msvc -### -fsycl /std:c++20 
--no-offloadlib -- %s 2>&1 | FileCheck %s 
--check-prefixes=CHECK-MSVC-OVERRIDE-DEVICE,CHECK-MSVC-OVERRIDE-HOST
 
 // CHECK-MSVC-OVERRIDE-DEVICE: "-cc1"{{.*}} "-fsycl-is-device"
 // CHECK-MSVC-OVERRIDE-DEVICE-SAME: "-std=c++20"
@@ -52,12 +52,12 @@
 // CHECK-MSVC-OVERRIDE-HOST-NOT: "-std=c++17"
 
 // Test that /std:c++14 produces an error on Windows
-// RUN: not %clang_cl --target=x86_64-pc-windows-msvc -fsycl /std:c++14 -- %s 
2>&1 | FileCheck %s --check-prefix=CHECK-MSVC-CXX14-ERROR
+// RUN: not %clang_cl --target=x86_64-pc-windows-msvc -fsycl /std:c++14 
--no-offloadlib -- %s 2>&1 | FileCheck %s --check-prefix=CHECK-MSVC-CXX14-ERROR
 
 // CHECK-MSVC-CXX14-ERROR: error: SYCL requires C++17 or later; '/std:c++14' 
is not supported
 
 // Test that C standards produce an error on Windows with clang-cl
-// RUN: not %clang_cl --target=x86_64-pc-windows-msvc -fsycl /std:c11 -- %s 
2>&1 | FileCheck %s --check-prefix=CHECK-MSVC-C-ERROR
+// RUN: not %clang_cl --target=x86_64-pc-windows-msvc -fsycl /std:c11 
--no-offloadlib -- %s 2>&1 | FileCheck %s --check-prefix=CHECK-MSVC-C-ERROR
 
 // CHECK-MSVC-C-ERROR: error: invalid argument '/std:c11' not allowed with 
'-fsycl'
 
diff --git a/clang/test/Driver/sycl.cpp b/clang/test/Driver/sycl.cpp
index 30fb05893a7aa..b58af28c38301 100644
--- a/clang/test/Driver/sycl.cpp
+++ b/clang/test/Driver/sycl.cpp
@@ -11,8 +11,8 @@
 // RUN: %clangxx -### -fno-sycl %s 2>&1 | FileCheck %s --check-prefix=DISABLED
 // RUN: %clangxx -### -fsycl -fno-sycl %s 2>&1 | FileCheck %s 
--check-prefix=DISABLED
 // RUN: %clangxx -### %s 2>&1 | FileCheck %s --check-prefix=DISABLED
-// RUN: %clang_cl -### -fsycl -sycl-std=2017 -- %s --sysroot=%S/Inputs/SYCL 
2>&1 | FileCheck %s --check-prefix=ENABLED
-// RUN: %clang_cl -### -fsycl -- %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck 
%s --check-prefix=ENABLED
+// RUN: %clang_cl -### -fsycl -sycl-std=2017 --sysroot=%S/Inputs/SYCL -- %s 
2>&1 | FileCheck %s --check-prefix=ENABLED
+// RUN: %clang_cl -### -fsycl --sysroot=%S/Inputs/SYCL -- %s 2>&1 | FileCheck 
%s --check-prefix=ENABLED
 // RUN: %clang_cl -### -- %s 2>&1 | FileCheck %s --check-prefix=DISABLED
 
 // ENABLED: "-cc1"{{.*}} "-fsycl-is-device"

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to