[clang] [compiler-rt] [Driver][SYCL] Add compile-time device library linking for SPIR-V targets (PR #196656)
Srividya Sundaram via cfe-commits
cfe-commits at lists.llvm.org
Sun Jul 26 20:12:51 PDT 2026
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 <srividya.sundaram at intel.com>
Date: Fri, 8 May 2026 15:23:44 -0700
Subject: [PATCH 01/18] [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 at q)y9Dn7Y*KOrpAt-daJA0#BnmFgJbkK5bLfZ|yh_S={fkv~oV;xgm3REae
zmzLHYQ=*+|mi{pl>WrCxm at 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 at Ds{n!^SJzC=Us5Yjrj=6O0hJc2 at Qq`{4T=x9rxTvn!@rk)T
z=DHKF*z0NytF_#flJ<<MLT_nm9 at N}a7%O8c;|cc(-L>(i=I)4EYrIHZdETh6(H_Ib
z_UX3nI9J;o-=|?3gPEaE;@pvo!=*+OLYH(1sQ}Ynf2rnM$KWwdD=hJ at 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 at 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 at s3qGr0qz6Y0l?`J`vRi&=3TtbQ-wUf*F at bLfwxEsqUSmZTuvq-Dzd`C
zIj}Mkvs>~KNM{45vQ5(?%xsFu+u6l5?bn~;aY6Q%f+5SilZ(DrL-x4DlOy8$VR-gN
zLSY at 2tO?0H=WK*HWkE5ui+jf5WdZ7~G}9WX^0%Df at 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- at 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 at 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 at 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+ at 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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at 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 <srividya.sundaram at intel.com>
Date: Fri, 8 May 2026 16:47:53 -0700
Subject: [PATCH 02/18] 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 <srividya.sundaram at intel.com>
Date: Mon, 11 May 2026 14:46:14 -0700
Subject: [PATCH 03/18] 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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at 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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at 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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at 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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at 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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at 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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at 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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at 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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at 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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at 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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at 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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at 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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at 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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at 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"
>From 8e7c883f1aae8f19b3205118023ff6643d9d7d92 Mon Sep 17 00:00:00 2001
From: srividya sundaram <srividya.sundaram at intel.com>
Date: Mon, 11 May 2026 15:43:52 -0700
Subject: [PATCH 04/18] Fix tests.
---
.../Driver/Inputs/SYCL/lib/libsycl-msvc-math.bc | Bin 0 -> 1988 bytes
.../test/Driver/sycl-device-library-linking.cpp | 2 +-
clang/test/Driver/sycl.cpp | 2 +-
3 files changed, 2 insertions(+), 2 deletions(-)
create mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-msvc-math.bc
diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-msvc-math.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-msvc-math.bc
new file mode 100644
index 0000000000000000000000000000000000000000..dd45d07a3a74db785926c7fc5dc6e8f6bcf19500
GIT binary patch
literal 1988
zcmYjSZ%kX)6 at RwD*MRfhYep7a-g|kkWD#4J>|wgjj%^A1k=E__;B=kDq)xVRaA7IV
z!~adD&BjcRXx8LJe6X}kve$g*G-)DfCgnp^VLz6+)XQizRVYKq9)^&KCTL|<q*dC^
zH9^{y&bfciz2}}kzjLokTH5$-H$k)$1Tkh5Prmu1kAi>s&mVu at bv`|!fi=NM5Vv5^
zr4<M*%#Q=1Oy5;!we1Z(ZMI(1%o)GYZZL6ezZ^>&&uLxPx?C4%bGOCN^Zib<dEPBA
z3w^^!l^pH7roB)#-0bG1*XH?;HD>eND4D-14ChO;ztx&l^vSUfbIy2$Cx}kC<E3C5
zeakibG5r>>{B*_R?(8 at v-D`K5PZ>I2)bu;`+HJ!UL7eX)2oCo5jtS5H3r!;v9sRlr
z(-fG8CFUW)Z3ygohFfuRY1xP3gdvesUM- at O0VUH)R8}Gr*|-7C452jFEO9Fuemlce
z{LE*iBXuXY0SEoePJ?Zhjx3kBTA2Yo4}IJN=ZO`~k`AsV-hlgYoW3>-^oJDa%%jVT
zy0a768Ci+RO5zSm{Qr23 at 7h|`KlY($5ygkll#iPBp&1&*SM^`=crn7`Mc^|c3d7<M
zN*?Y^wRVQnty6gvE~2pK`N0^7cmy2I#%L_U9FEgSZmFFnP<RNvC>T?8ZP5RbctiUw
z|1pBcF0|SQ#FZo3b5r2ctsy<En7M+{^ukC!*Kz9gdu`HKN4Lw`4UXOff6E{rG^Cm3
z1{3VoIOZkGoSJi`Q7VZdg=yn9L48h>`)P8}=;A76_I`;8itVj!+1{GYQI#Ayouih_
zMP+o^fKqNnmeGu?izgMCS4_1R$lW~I5UG$zZSIkK9&(UgW;X<8O<*g2E+}5H-Obuo
zCF^aS{chGir?b`ey5l}{c>;ZJLJ0#;D{@}J+3rX2XYHUikygA0Wx7WR7nD>X^X(^l
z<dZu2?<I0q)Qwe3OtZw)T72EltO(3<hF$UNKg&zjs$?y+_#M@<AX(;hwgvS&aOqdG
zw!i6Yi>mR at lZrg5gyn2>0wsM)v`2{+71RA6P)`WzUmmiVCpU+v22bvS7kodvUgj!J
z?t#DnB-iUqv%&sT!v%ZJTNb6W*R!^o=j3xod`cpTl7;gl`*{jSfcr at ci2}P(W`Cvu
zs4_Ky-Sg|;{zcYOQ*Dcq0|N3@#om-`^DtF&f9eEJl?2!W=<Y}1Lgt-Kn%rF?w>;z*
zVqf`zlWR7PuQk{WFu-lHEoL3Jv%PbwB_~;Hs{KycT2;YEd(C}&+JL~SX$at`V*2|%
za at R+FUf1vO)RstX at zj?dGDMS`A_>zk>iWlZvgsk8iGBar^)r<WyVf|qE3n%FyDYGf
z!5!g5kpGSCuH?9*vo2(<wb8qfeQ<UL>~t#$SuuU`h<qwijXL>wh<aRvTU3oM@&N*0
zyaj*?j&O7pQkj`^TI(u=&H<UK4J{Yhl at g1qw#)=i21K%f^Gkt}Em0D(u^tq0E8e2=
z(=?pDxuCJ<RQrNzS(VNLoN5p;qgy!U@^fJ7{WAMjraL(Du1G%Rsi$@QQxCO|RgqhD
z{WecER>>`>ffP>=FGC;Z+`KezG<Af{ZoV&*yL$E0;Ue9C!9HMi{VFfKZ=p-Xn*lwM
z2u%3H-pJ(4crfgr8b2*xnhZt9!#^C0g`zP&@SZ>PE*~EcM<y?Y_yNnAfinP^fmlmA
z at J+a<&oC^`4jK9k%h1t-#$iuQ?5PY$V%6=NHID^8ycn6h-1qyy%aMUVm+jZR=PdcR
z*Vc9)zVo2EvcB_L$5GJnJE-5&(06r)`=Kt-%&1&|T;MQTSJl~V=3eQ at juV$H#9^m}
zx39ml=_4O`0LD}kgPD5dA@>*48I<a8RasI2gkX$~%GXuPZH?_l*0G>!FG9gG>kVd|
zXPSP at cUmv&YKf^H0K;F_Q2P)}h;5qenm<TT`(G`Pjx{Jc72sh5G{Rd^)!D#g;!~O+
z at Y{rH_8VE-btp!iqnNcrVdho*2K)KvZ*f~$I}Ky}K$}VWr8(lm)>{ozVjTXn6VM;k
zE$rbr790b at dPjh;o>3s&aF6FQo<Qpb!vCKc2m#@9xE;#z81Fx9hjQHGzlk_`Ao(%a
zfO7#hr0|N at 8%YJ;^G-$L0q>MQI^m5(V`B#Zh{%)S_^Yp+j)g9UE+s;T{rHp|O`QoG
Hs3ZOd4E34`
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 c19103eb88d97..a6404bcc21470 100644
--- a/clang/test/Driver/sycl-device-library-linking.cpp
+++ b/clang/test/Driver/sycl-device-library-linking.cpp
@@ -13,7 +13,7 @@
// 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-{{(msvc-math|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"
diff --git a/clang/test/Driver/sycl.cpp b/clang/test/Driver/sycl.cpp
index b58af28c38301..334b1be9b6081 100644
--- a/clang/test/Driver/sycl.cpp
+++ b/clang/test/Driver/sycl.cpp
@@ -22,7 +22,7 @@
// 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
+// RUN: %clang_cl -### -fsycl --sysroot=%S/Inputs/SYCL -- %s 2>&1 | FileCheck %s --check-prefix=DEFAULT
// DEFAULT: "-sycl-std=2020"
>From 7794a72519aa0d3498f9d5bfb6d7cb50b2d810c7 Mon Sep 17 00:00:00 2001
From: srividya sundaram <srividya.sundaram at intel.com>
Date: Mon, 11 May 2026 17:28:08 -0700
Subject: [PATCH 05/18] Add remaning functionalities.
---
clang/include/clang/Options/Options.td | 4 +
clang/lib/Driver/ToolChains/SYCL.cpp | 121 ++++++++++++++----
.../Driver/Inputs/SYCL/lib/libsycl-asan.bc | Bin 0 -> 1624 bytes
.../SYCL/lib/libsycl-fallback-bfloat16.bc | Bin 0 -> 1624 bytes
.../SYCL/lib/libsycl-itt-compiler-wrappers.bc | Bin 0 -> 1624 bytes
.../Inputs/SYCL/lib/libsycl-itt-stubs.bc | Bin 0 -> 1624 bytes
.../SYCL/lib/libsycl-itt-user-wrappers.bc | Bin 0 -> 1624 bytes
.../Driver/Inputs/SYCL/lib/libsycl-msan.bc | Bin 0 -> 1624 bytes
.../Driver/Inputs/SYCL/lib/libsycl-tsan.bc | Bin 0 -> 1624 bytes
.../Driver/sycl-device-library-linking.cpp | 26 ++++
clang/test/Driver/sycl-offload-jit-unix.cpp | 2 +
clang/test/Driver/sycl.cpp | 6 +-
12 files changed, 128 insertions(+), 31 deletions(-)
create mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-asan.bc
create mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-bfloat16.bc
create mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-itt-compiler-wrappers.bc
create mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-itt-stubs.bc
create mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-itt-user-wrappers.bc
create mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-msan.bc
create mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-tsan.bc
diff --git a/clang/include/clang/Options/Options.td b/clang/include/clang/Options/Options.td
index 5fdc60adc8986..65b94e9edb5c2 100644
--- a/clang/include/clang/Options/Options.td
+++ b/clang/include/clang/Options/Options.td
@@ -7464,6 +7464,10 @@ def fsycl_device_only : Flag<["-"], "fsycl-device-only">,
def fsycl_host_only : Flag<["-"], "fsycl-host-only">,
Alias<offload_host_only>, HelpText<"Compile SYCL code for host only. Has no "
"effect on non-SYCL compilations">;
+def fsycl_instrument_device_code : Flag<["-"], "fsycl-instrument-device-code">,
+ HelpText<"Enable instrumentation of SYCL device code for profiling">;
+def fno_sycl_instrument_device_code : Flag<["-"], "fno-sycl-instrument-device-code">,
+ HelpText<"Disable instrumentation of SYCL device code (default)">;
def sycl_link : Flag<["--"], "sycl-link">, Flags<[HelpHidden]>,
HelpText<"Perform link through clang-sycl-linker via the target "
"offloading toolchain.">;
diff --git a/clang/lib/Driver/ToolChains/SYCL.cpp b/clang/lib/Driver/ToolChains/SYCL.cpp
index b827dd32d3b77..0aa78fb4a66cb 100644
--- a/clang/lib/Driver/ToolChains/SYCL.cpp
+++ b/clang/lib/Driver/ToolChains/SYCL.cpp
@@ -229,49 +229,114 @@ void SYCLToolChain::AddClangCXXStdlibIncludeArgs(const ArgList &Args,
HostTC.AddClangCXXStdlibIncludeArgs(Args, CC1Args);
}
+#if !defined(_WIN32)
+static void addSYCLDeviceSanitizerLibs(
+ const llvm::opt::ArgList &Args,
+ SmallVector<ToolChain::BitCodeLibraryInfo, 8> &LibraryList) {
+ // Default internalization to 'false' for these libraries, as they are
+ // expected to link with -mlink-bitcode-file, which does not link with
+ // only-needed.
+ auto addSingleLibrary = [&](StringRef DeviceLibName,
+ bool Internalize = false) {
+ std::string FullLibName(Args.MakeArgString(DeviceLibName + ".bc"));
+ ToolChain::BitCodeLibraryInfo BitCodeLibrary({FullLibName, Internalize});
+ LibraryList.push_back(BitCodeLibrary);
+ };
+
+ std::string SanitizeVal;
+ if (Arg *A = Args.getLastArg(options::OPT_fsanitize_EQ,
+ options::OPT_fno_sanitize_EQ)) {
+ if (A->getOption().matches(options::OPT_fsanitize_EQ) &&
+ A->getValues().size() == 1) {
+ SanitizeVal = A->getValue();
+ }
+ }
+
+ // For SPIR/SPIRV targets in community LLVM, we use the basic sanitizer
+ // libraries. The full AOT optimization (with device-specific libraries)
+ // requires Intel-specific backend support not available in community LLVM.
+ if (SanitizeVal == "address")
+ addSingleLibrary("libsycl-asan");
+ else if (SanitizeVal == "memory")
+ addSingleLibrary("libsycl-msan");
+ else if (SanitizeVal == "thread")
+ addSingleLibrary("libsycl-tsan");
+}
+#endif
+
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).
+ // Default internalization to 'true' for these libraries, as they are
+ // expected to link with -mlink-builtin-bitcode.
auto addLibToList = [&LibraryList](StringRef LibName,
bool Internalize = true) {
- BitCodeLibraryInfo BitCodeLibrary(LibName, Internalize);
+ BitCodeLibraryInfo BitCodeLibrary({LibName, Internalize});
LibraryList.emplace_back(BitCodeLibrary);
};
- // Add all SYCL device libraries for SPIR/SPIRV targets.
+ // For SPIR/SPIRV targets, add SYCL device libraries.
if (TargetTriple.isSPIROrSPIRV()) {
- // 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");
+ using SYCLDeviceLibsList = SmallVector<StringRef>;
+ const SYCLDeviceLibsList SYCLDeviceLibs = {"libsycl-crt",
+ "libsycl-complex",
+ "libsycl-complex-fp64",
+ "libsycl-cmath",
+ "libsycl-cmath-fp64",
#if defined(_WIN32)
- addLibToList("libsycl-msvc-math.bc");
+ "libsycl-msvc-math",
+#endif
+ "libsycl-imf",
+ "libsycl-imf-fp64",
+ "libsycl-imf-bf16",
+ "libsycl-fallback-cstring",
+ "libsycl-fallback-complex",
+ "libsycl-fallback-complex-fp64",
+ "libsycl-fallback-cmath",
+ "libsycl-fallback-cmath-fp64",
+ "libsycl-fallback-imf",
+ "libsycl-fallback-imf-fp64",
+ "libsycl-fallback-imf-bf16"};
+ auto addLibraries = [&](const SYCLDeviceLibsList &LibsList) {
+ for (const StringRef &Lib : LibsList)
+ addLibToList(Args.MakeArgString(Lib + ".bc"));
+ };
+
+ if (!NoOffloadLib)
+ addLibraries(SYCLDeviceLibs);
+
+ // ITT annotation libraries are linked in separately whenever the device
+ // code instrumentation is enabled. This is an Intel-specific extension
+ // and the option may not be available in all LLVM builds.
+ // The default is true to match Intel's downstream behavior when the
+ // options are available.
+ const SYCLDeviceLibsList SYCLDeviceAnnotationLibs = {
+ "libsycl-itt-user-wrappers", "libsycl-itt-compiler-wrappers",
+ "libsycl-itt-stubs"};
+ if (!NoOffloadLib &&
+ Args.hasFlag(options::OPT_fsycl_instrument_device_code,
+ options::OPT_fno_sycl_instrument_device_code, true))
+ addLibraries(SYCLDeviceAnnotationLibs);
+
+ // For bfloat16 support, we use fallback library in community LLVM.
+ // Native bfloat16 selection requires Intel GPU-specific backend analysis
+ // not available in upstream LLVM.
+ const SYCLDeviceLibsList SYCLDeviceBfloat16FallbackLib = {
+ "libsycl-fallback-bfloat16"};
+ // Only add bfloat16 library for AOT compilation (when subarch is specified)
+ if (TargetTriple.getSubArch() != llvm::Triple::NoSubArch && !NoOffloadLib)
+ addLibraries(SYCLDeviceBfloat16FallbackLib);
+
+ // Currently, device sanitizer support is required by some developers on
+ // Linux platform only, so compiler only provides device sanitizer libraries
+ // on Linux platform.
+#if !defined(_WIN32)
+ addSYCLDeviceSanitizerLibs(Args, LibraryList);
#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-asan.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-asan.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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at v)pxez#j~OC(T)ze$A3;CWIF%=
literal 0
HcmV?d00001
diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-bfloat16.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-bfloat16.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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at v)pxez#j~OC(T)ze$A3;CWIF%=
literal 0
HcmV?d00001
diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-itt-compiler-wrappers.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-itt-compiler-wrappers.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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at v)pxez#j~OC(T)ze$A3;CWIF%=
literal 0
HcmV?d00001
diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-itt-stubs.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-itt-stubs.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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at v)pxez#j~OC(T)ze$A3;CWIF%=
literal 0
HcmV?d00001
diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-itt-user-wrappers.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-itt-user-wrappers.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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at v)pxez#j~OC(T)ze$A3;CWIF%=
literal 0
HcmV?d00001
diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-msan.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-msan.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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at v)pxez#j~OC(T)ze$A3;CWIF%=
literal 0
HcmV?d00001
diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-tsan.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-tsan.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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at 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 a6404bcc21470..bf79e479b68ba 100644
--- a/clang/test/Driver/sycl-device-library-linking.cpp
+++ b/clang/test/Driver/sycl-device-library-linking.cpp
@@ -6,6 +6,14 @@
// RUN: %clangxx -fsycl --no-offloadlib %s -### 2>&1 | \
// RUN: FileCheck %s --check-prefix=CHECK-NO-DEVICE-LIBS
+// Test ITT instrumentation libraries (enabled by default)
+// RUN: %clangxx -fsycl %s --sysroot=%S/Inputs/SYCL -### 2>&1 | \
+// RUN: FileCheck %s --check-prefix=CHECK-ITT-DEFAULT
+// RUN: %clangxx -fsycl -fsycl-instrument-device-code %s --sysroot=%S/Inputs/SYCL -### 2>&1 | \
+// RUN: FileCheck %s --check-prefix=CHECK-ITT-ENABLED
+// RUN: %clangxx -fsycl -fno-sycl-instrument-device-code %s --sysroot=%S/Inputs/SYCL -### 2>&1 | \
+// RUN: FileCheck %s --check-prefix=CHECK-ITT-DISABLED
+
// 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"
@@ -32,4 +40,22 @@
// CHECK-NO-DEVICE-LIBS-NOT: "-mlink-builtin-bitcode"
// CHECK-NO-DEVICE-LIBS-NOT: "libsycl-crt.bc"
+// CHECK-ITT-DEFAULT: "-cc1" "-triple" "spirv64-unknown-unknown"
+// CHECK-ITT-DEFAULT-SAME: "-fsycl-is-device"
+// CHECK-ITT-DEFAULT-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-itt-user-wrappers.bc"
+// CHECK-ITT-DEFAULT-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-itt-compiler-wrappers.bc"
+// CHECK-ITT-DEFAULT-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-itt-stubs.bc"
+
+// CHECK-ITT-ENABLED: "-cc1" "-triple" "spirv64-unknown-unknown"
+// CHECK-ITT-ENABLED-SAME: "-fsycl-is-device"
+// CHECK-ITT-ENABLED-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-itt-user-wrappers.bc"
+// CHECK-ITT-ENABLED-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-itt-compiler-wrappers.bc"
+// CHECK-ITT-ENABLED-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-itt-stubs.bc"
+
+// CHECK-ITT-DISABLED: "-cc1" "-triple" "spirv64-unknown-unknown"
+// CHECK-ITT-DISABLED-SAME: "-fsycl-is-device"
+// CHECK-ITT-DISABLED-NOT: "libsycl-itt-user-wrappers.bc"
+// CHECK-ITT-DISABLED-NOT: "libsycl-itt-compiler-wrappers.bc"
+// CHECK-ITT-DISABLED-NOT: "libsycl-itt-stubs.bc"
+
void foo() {}
diff --git a/clang/test/Driver/sycl-offload-jit-unix.cpp b/clang/test/Driver/sycl-offload-jit-unix.cpp
index 5bd25049fdbb1..632e432e1aefd 100644
--- a/clang/test/Driver/sycl-offload-jit-unix.cpp
+++ b/clang/test/Driver/sycl-offload-jit-unix.cpp
@@ -13,6 +13,7 @@
// 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: touch %t/lib/libsycl-itt-user-wrappers.bc %t/lib/libsycl-itt-compiler-wrappers.bc %t/lib/libsycl-itt-stubs.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
@@ -27,6 +28,7 @@
// 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: touch %t/lib/libsycl-itt-user-wrappers.bc %t/lib/libsycl-itt-compiler-wrappers.bc %t/lib/libsycl-itt-stubs.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.cpp b/clang/test/Driver/sycl.cpp
index 334b1be9b6081..670d07c5fddbf 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 --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 -### -fsycl -sycl-std=2017 --no-offloadlib -- %s 2>&1 | FileCheck %s --check-prefix=ENABLED
+// RUN: %clang_cl -### -fsycl --no-offloadlib -- %s 2>&1 | FileCheck %s --check-prefix=ENABLED
// RUN: %clang_cl -### -- %s 2>&1 | FileCheck %s --check-prefix=DISABLED
// ENABLED: "-cc1"{{.*}} "-fsycl-is-device"
@@ -22,7 +22,7 @@
// 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 --sysroot=%S/Inputs/SYCL -- %s 2>&1 | FileCheck %s --check-prefix=DEFAULT
+// RUN: %clang_cl -### -fsycl --no-offloadlib -- %s 2>&1 | FileCheck %s --check-prefix=DEFAULT
// DEFAULT: "-sycl-std=2020"
>From 153314f6fac65cf5cc2e48927e9bf6f9cff5792a Mon Sep 17 00:00:00 2001
From: srividya sundaram <srividya.sundaram at intel.com>
Date: Mon, 11 May 2026 17:41:10 -0700
Subject: [PATCH 06/18] Update tests.
---
clang/lib/Driver/ToolChains/SYCL.cpp | 42 ++++++++++---------
.../Driver/sycl-device-library-linking.cpp | 24 +++++++++++
clang/test/Driver/sycl.cpp | 6 +++
3 files changed, 53 insertions(+), 19 deletions(-)
diff --git a/clang/lib/Driver/ToolChains/SYCL.cpp b/clang/lib/Driver/ToolChains/SYCL.cpp
index 0aa78fb4a66cb..270507358e3d9 100644
--- a/clang/lib/Driver/ToolChains/SYCL.cpp
+++ b/clang/lib/Driver/ToolChains/SYCL.cpp
@@ -282,25 +282,29 @@ SYCLToolChain::getDeviceLibNames(const Driver &D,
// For SPIR/SPIRV targets, add SYCL device libraries.
if (TargetTriple.isSPIROrSPIRV()) {
using SYCLDeviceLibsList = SmallVector<StringRef>;
- const SYCLDeviceLibsList SYCLDeviceLibs = {"libsycl-crt",
- "libsycl-complex",
- "libsycl-complex-fp64",
- "libsycl-cmath",
- "libsycl-cmath-fp64",
-#if defined(_WIN32)
- "libsycl-msvc-math",
-#endif
- "libsycl-imf",
- "libsycl-imf-fp64",
- "libsycl-imf-bf16",
- "libsycl-fallback-cstring",
- "libsycl-fallback-complex",
- "libsycl-fallback-complex-fp64",
- "libsycl-fallback-cmath",
- "libsycl-fallback-cmath-fp64",
- "libsycl-fallback-imf",
- "libsycl-fallback-imf-fp64",
- "libsycl-fallback-imf-bf16"};
+ SYCLDeviceLibsList SYCLDeviceLibs = {"libsycl-crt",
+ "libsycl-complex",
+ "libsycl-complex-fp64",
+ "libsycl-cmath",
+ "libsycl-cmath-fp64"};
+
+ // Add Windows-specific math library when targeting Windows hosts
+ if (HostTC.getTriple().isOSWindows())
+ SYCLDeviceLibs.push_back("libsycl-msvc-math");
+
+ SYCLDeviceLibsList SYCLDeviceLibs2 = {"libsycl-imf",
+ "libsycl-imf-fp64",
+ "libsycl-imf-bf16",
+ "libsycl-fallback-cstring",
+ "libsycl-fallback-complex",
+ "libsycl-fallback-complex-fp64",
+ "libsycl-fallback-cmath",
+ "libsycl-fallback-cmath-fp64",
+ "libsycl-fallback-imf",
+ "libsycl-fallback-imf-fp64",
+ "libsycl-fallback-imf-bf16"};
+ SYCLDeviceLibs.append(SYCLDeviceLibs2.begin(), SYCLDeviceLibs2.end());
+
auto addLibraries = [&](const SYCLDeviceLibsList &LibsList) {
for (const StringRef &Lib : LibsList)
addLibToList(Args.MakeArgString(Lib + ".bc"));
diff --git a/clang/test/Driver/sycl-device-library-linking.cpp b/clang/test/Driver/sycl-device-library-linking.cpp
index bf79e479b68ba..dbc4e8b604d8d 100644
--- a/clang/test/Driver/sycl-device-library-linking.cpp
+++ b/clang/test/Driver/sycl-device-library-linking.cpp
@@ -6,6 +6,14 @@
// RUN: %clangxx -fsycl --no-offloadlib %s -### 2>&1 | \
// RUN: FileCheck %s --check-prefix=CHECK-NO-DEVICE-LIBS
+// Test Windows target includes libsycl-msvc-math.bc
+// RUN: %clangxx --target=x86_64-pc-windows-msvc -fsycl %s --sysroot=%S/Inputs/SYCL -### 2>&1 | \
+// RUN: FileCheck %s --check-prefix=CHECK-DEVICE-LIBS-WIN
+
+// Test non-Windows target does not include libsycl-msvc-math.bc
+// RUN: %clangxx --target=x86_64-unknown-linux-gnu -fsycl %s --sysroot=%S/Inputs/SYCL -### 2>&1 | \
+// RUN: FileCheck %s --check-prefix=CHECK-DEVICE-LIBS-LINUX
+
// Test ITT instrumentation libraries (enabled by default)
// RUN: %clangxx -fsycl %s --sysroot=%S/Inputs/SYCL -### 2>&1 | \
// RUN: FileCheck %s --check-prefix=CHECK-ITT-DEFAULT
@@ -58,4 +66,20 @@
// CHECK-ITT-DISABLED-NOT: "libsycl-itt-compiler-wrappers.bc"
// CHECK-ITT-DISABLED-NOT: "libsycl-itt-stubs.bc"
+// Windows target should include libsycl-msvc-math.bc
+// CHECK-DEVICE-LIBS-WIN: "-cc1" "-triple" "spirv64-unknown-unknown"
+// CHECK-DEVICE-LIBS-WIN-SAME: "-aux-triple" "x86_64-pc-windows-msvc"
+// CHECK-DEVICE-LIBS-WIN-SAME: "-fsycl-is-device"
+// CHECK-DEVICE-LIBS-WIN-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-cmath-fp64.bc"
+// CHECK-DEVICE-LIBS-WIN-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-msvc-math.bc"
+// CHECK-DEVICE-LIBS-WIN-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-imf.bc"
+
+// Linux target should NOT include libsycl-msvc-math.bc
+// CHECK-DEVICE-LIBS-LINUX: "-cc1" "-triple" "spirv64-unknown-unknown"
+// CHECK-DEVICE-LIBS-LINUX-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
+// CHECK-DEVICE-LIBS-LINUX-SAME: "-fsycl-is-device"
+// CHECK-DEVICE-LIBS-LINUX-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-cmath-fp64.bc"
+// CHECK-DEVICE-LIBS-LINUX-NOT: "libsycl-msvc-math.bc"
+// CHECK-DEVICE-LIBS-LINUX-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-imf.bc"
+
void foo() {}
diff --git a/clang/test/Driver/sycl.cpp b/clang/test/Driver/sycl.cpp
index 670d07c5fddbf..34f2845c4b00e 100644
--- a/clang/test/Driver/sycl.cpp
+++ b/clang/test/Driver/sycl.cpp
@@ -11,10 +11,16 @@
// 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
+// Test clang-cl mode (without device libraries to avoid sysroot issues)
// RUN: %clang_cl -### -fsycl -sycl-std=2017 --no-offloadlib -- %s 2>&1 | FileCheck %s --check-prefix=ENABLED
// RUN: %clang_cl -### -fsycl --no-offloadlib -- %s 2>&1 | FileCheck %s --check-prefix=ENABLED
// RUN: %clang_cl -### -- %s 2>&1 | FileCheck %s --check-prefix=DISABLED
+// Test Windows target (with device libraries via --target and sysroot)
+// RUN: %clang --target=x86_64-pc-windows-msvc -### -fsycl %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck %s --check-prefix=ENABLED-WIN
+// ENABLED-WIN: "-cc1"{{.*}} "-fsycl-is-device"
+// ENABLED-WIN-SAME: "-sycl-std={{[-.sycl0-9]+}}"
+
// ENABLED: "-cc1"{{.*}} "-fsycl-is-device"
// ENABLED-SAME: "-sycl-std={{[-.sycl0-9]+}}"
// DISABLED-NOT: "-fsycl-is-device"
>From eedd5d3afaebf4bedba1edcdd70660b61a920bc2 Mon Sep 17 00:00:00 2001
From: srividya sundaram <srividya.sundaram at intel.com>
Date: Wed, 13 May 2026 11:42:09 -0700
Subject: [PATCH 07/18] Fix clang-format.
---
clang/lib/Driver/ToolChains/SYCL.cpp | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/clang/lib/Driver/ToolChains/SYCL.cpp b/clang/lib/Driver/ToolChains/SYCL.cpp
index 270507358e3d9..5505db753ac38 100644
--- a/clang/lib/Driver/ToolChains/SYCL.cpp
+++ b/clang/lib/Driver/ToolChains/SYCL.cpp
@@ -282,11 +282,9 @@ SYCLToolChain::getDeviceLibNames(const Driver &D,
// For SPIR/SPIRV targets, add SYCL device libraries.
if (TargetTriple.isSPIROrSPIRV()) {
using SYCLDeviceLibsList = SmallVector<StringRef>;
- SYCLDeviceLibsList SYCLDeviceLibs = {"libsycl-crt",
- "libsycl-complex",
+ SYCLDeviceLibsList SYCLDeviceLibs = {"libsycl-crt", "libsycl-complex",
"libsycl-complex-fp64",
- "libsycl-cmath",
- "libsycl-cmath-fp64"};
+ "libsycl-cmath", "libsycl-cmath-fp64"};
// Add Windows-specific math library when targeting Windows hosts
if (HostTC.getTriple().isOSWindows())
>From 1ad9ee2225953281ebb9c63ab3480c7504078199 Mon Sep 17 00:00:00 2001
From: srividya sundaram <srividya.sundaram at intel.com>
Date: Wed, 13 May 2026 14:22:39 -0700
Subject: [PATCH 08/18] Add only a single device lib for basic driver infra.
---
clang/lib/Driver/ToolChains/SYCL.cpp | 99 ++-----------------
.../Driver/sycl-device-library-linking.cpp | 65 ------------
clang/test/Driver/sycl-offload-jit-unix.cpp | 12 +--
3 files changed, 8 insertions(+), 168 deletions(-)
diff --git a/clang/lib/Driver/ToolChains/SYCL.cpp b/clang/lib/Driver/ToolChains/SYCL.cpp
index 5505db753ac38..c9060f532f3ca 100644
--- a/clang/lib/Driver/ToolChains/SYCL.cpp
+++ b/clang/lib/Driver/ToolChains/SYCL.cpp
@@ -229,41 +229,6 @@ void SYCLToolChain::AddClangCXXStdlibIncludeArgs(const ArgList &Args,
HostTC.AddClangCXXStdlibIncludeArgs(Args, CC1Args);
}
-#if !defined(_WIN32)
-static void addSYCLDeviceSanitizerLibs(
- const llvm::opt::ArgList &Args,
- SmallVector<ToolChain::BitCodeLibraryInfo, 8> &LibraryList) {
- // Default internalization to 'false' for these libraries, as they are
- // expected to link with -mlink-bitcode-file, which does not link with
- // only-needed.
- auto addSingleLibrary = [&](StringRef DeviceLibName,
- bool Internalize = false) {
- std::string FullLibName(Args.MakeArgString(DeviceLibName + ".bc"));
- ToolChain::BitCodeLibraryInfo BitCodeLibrary({FullLibName, Internalize});
- LibraryList.push_back(BitCodeLibrary);
- };
-
- std::string SanitizeVal;
- if (Arg *A = Args.getLastArg(options::OPT_fsanitize_EQ,
- options::OPT_fno_sanitize_EQ)) {
- if (A->getOption().matches(options::OPT_fsanitize_EQ) &&
- A->getValues().size() == 1) {
- SanitizeVal = A->getValue();
- }
- }
-
- // For SPIR/SPIRV targets in community LLVM, we use the basic sanitizer
- // libraries. The full AOT optimization (with device-specific libraries)
- // requires Intel-specific backend support not available in community LLVM.
- if (SanitizeVal == "address")
- addSingleLibrary("libsycl-asan");
- else if (SanitizeVal == "memory")
- addSingleLibrary("libsycl-msan");
- else if (SanitizeVal == "thread")
- addSingleLibrary("libsycl-tsan");
-}
-#endif
-
SmallVector<ToolChain::BitCodeLibraryInfo, 8>
SYCLToolChain::getDeviceLibNames(const Driver &D,
const llvm::opt::ArgList &Args,
@@ -281,64 +246,12 @@ SYCLToolChain::getDeviceLibNames(const Driver &D,
// For SPIR/SPIRV targets, add SYCL device libraries.
if (TargetTriple.isSPIROrSPIRV()) {
- using SYCLDeviceLibsList = SmallVector<StringRef>;
- SYCLDeviceLibsList SYCLDeviceLibs = {"libsycl-crt", "libsycl-complex",
- "libsycl-complex-fp64",
- "libsycl-cmath", "libsycl-cmath-fp64"};
-
- // Add Windows-specific math library when targeting Windows hosts
- if (HostTC.getTriple().isOSWindows())
- SYCLDeviceLibs.push_back("libsycl-msvc-math");
-
- SYCLDeviceLibsList SYCLDeviceLibs2 = {"libsycl-imf",
- "libsycl-imf-fp64",
- "libsycl-imf-bf16",
- "libsycl-fallback-cstring",
- "libsycl-fallback-complex",
- "libsycl-fallback-complex-fp64",
- "libsycl-fallback-cmath",
- "libsycl-fallback-cmath-fp64",
- "libsycl-fallback-imf",
- "libsycl-fallback-imf-fp64",
- "libsycl-fallback-imf-bf16"};
- SYCLDeviceLibs.append(SYCLDeviceLibs2.begin(), SYCLDeviceLibs2.end());
-
- auto addLibraries = [&](const SYCLDeviceLibsList &LibsList) {
- for (const StringRef &Lib : LibsList)
- addLibToList(Args.MakeArgString(Lib + ".bc"));
- };
-
- if (!NoOffloadLib)
- addLibraries(SYCLDeviceLibs);
-
- // ITT annotation libraries are linked in separately whenever the device
- // code instrumentation is enabled. This is an Intel-specific extension
- // and the option may not be available in all LLVM builds.
- // The default is true to match Intel's downstream behavior when the
- // options are available.
- const SYCLDeviceLibsList SYCLDeviceAnnotationLibs = {
- "libsycl-itt-user-wrappers", "libsycl-itt-compiler-wrappers",
- "libsycl-itt-stubs"};
- if (!NoOffloadLib &&
- Args.hasFlag(options::OPT_fsycl_instrument_device_code,
- options::OPT_fno_sycl_instrument_device_code, true))
- addLibraries(SYCLDeviceAnnotationLibs);
-
- // For bfloat16 support, we use fallback library in community LLVM.
- // Native bfloat16 selection requires Intel GPU-specific backend analysis
- // not available in upstream LLVM.
- const SYCLDeviceLibsList SYCLDeviceBfloat16FallbackLib = {
- "libsycl-fallback-bfloat16"};
- // Only add bfloat16 library for AOT compilation (when subarch is specified)
- if (TargetTriple.getSubArch() != llvm::Triple::NoSubArch && !NoOffloadLib)
- addLibraries(SYCLDeviceBfloat16FallbackLib);
-
- // Currently, device sanitizer support is required by some developers on
- // Linux platform only, so compiler only provides device sanitizer libraries
- // on Linux platform.
-#if !defined(_WIN32)
- addSYCLDeviceSanitizerLibs(Args, LibraryList);
-#endif
+ // TODO: Update this list when SYCL device libraries are added to
+ // compiler-rt/libc. This placeholder demonstrates the infrastructure for
+ // linking device libraries at compile time.
+ if (!NoOffloadLib) {
+ addLibToList("libsycl-crt.bc");
+ }
}
return LibraryList;
diff --git a/clang/test/Driver/sycl-device-library-linking.cpp b/clang/test/Driver/sycl-device-library-linking.cpp
index dbc4e8b604d8d..ce567d10eea41 100644
--- a/clang/test/Driver/sycl-device-library-linking.cpp
+++ b/clang/test/Driver/sycl-device-library-linking.cpp
@@ -6,40 +6,9 @@
// RUN: %clangxx -fsycl --no-offloadlib %s -### 2>&1 | \
// RUN: FileCheck %s --check-prefix=CHECK-NO-DEVICE-LIBS
-// Test Windows target includes libsycl-msvc-math.bc
-// RUN: %clangxx --target=x86_64-pc-windows-msvc -fsycl %s --sysroot=%S/Inputs/SYCL -### 2>&1 | \
-// RUN: FileCheck %s --check-prefix=CHECK-DEVICE-LIBS-WIN
-
-// Test non-Windows target does not include libsycl-msvc-math.bc
-// RUN: %clangxx --target=x86_64-unknown-linux-gnu -fsycl %s --sysroot=%S/Inputs/SYCL -### 2>&1 | \
-// RUN: FileCheck %s --check-prefix=CHECK-DEVICE-LIBS-LINUX
-
-// Test ITT instrumentation libraries (enabled by default)
-// RUN: %clangxx -fsycl %s --sysroot=%S/Inputs/SYCL -### 2>&1 | \
-// RUN: FileCheck %s --check-prefix=CHECK-ITT-DEFAULT
-// RUN: %clangxx -fsycl -fsycl-instrument-device-code %s --sysroot=%S/Inputs/SYCL -### 2>&1 | \
-// RUN: FileCheck %s --check-prefix=CHECK-ITT-ENABLED
-// RUN: %clangxx -fsycl -fno-sycl-instrument-device-code %s --sysroot=%S/Inputs/SYCL -### 2>&1 | \
-// RUN: FileCheck %s --check-prefix=CHECK-ITT-DISABLED
-
// 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-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-{{(msvc-math|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"
@@ -48,38 +17,4 @@
// CHECK-NO-DEVICE-LIBS-NOT: "-mlink-builtin-bitcode"
// CHECK-NO-DEVICE-LIBS-NOT: "libsycl-crt.bc"
-// CHECK-ITT-DEFAULT: "-cc1" "-triple" "spirv64-unknown-unknown"
-// CHECK-ITT-DEFAULT-SAME: "-fsycl-is-device"
-// CHECK-ITT-DEFAULT-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-itt-user-wrappers.bc"
-// CHECK-ITT-DEFAULT-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-itt-compiler-wrappers.bc"
-// CHECK-ITT-DEFAULT-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-itt-stubs.bc"
-
-// CHECK-ITT-ENABLED: "-cc1" "-triple" "spirv64-unknown-unknown"
-// CHECK-ITT-ENABLED-SAME: "-fsycl-is-device"
-// CHECK-ITT-ENABLED-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-itt-user-wrappers.bc"
-// CHECK-ITT-ENABLED-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-itt-compiler-wrappers.bc"
-// CHECK-ITT-ENABLED-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-itt-stubs.bc"
-
-// CHECK-ITT-DISABLED: "-cc1" "-triple" "spirv64-unknown-unknown"
-// CHECK-ITT-DISABLED-SAME: "-fsycl-is-device"
-// CHECK-ITT-DISABLED-NOT: "libsycl-itt-user-wrappers.bc"
-// CHECK-ITT-DISABLED-NOT: "libsycl-itt-compiler-wrappers.bc"
-// CHECK-ITT-DISABLED-NOT: "libsycl-itt-stubs.bc"
-
-// Windows target should include libsycl-msvc-math.bc
-// CHECK-DEVICE-LIBS-WIN: "-cc1" "-triple" "spirv64-unknown-unknown"
-// CHECK-DEVICE-LIBS-WIN-SAME: "-aux-triple" "x86_64-pc-windows-msvc"
-// CHECK-DEVICE-LIBS-WIN-SAME: "-fsycl-is-device"
-// CHECK-DEVICE-LIBS-WIN-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-cmath-fp64.bc"
-// CHECK-DEVICE-LIBS-WIN-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-msvc-math.bc"
-// CHECK-DEVICE-LIBS-WIN-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-imf.bc"
-
-// Linux target should NOT include libsycl-msvc-math.bc
-// CHECK-DEVICE-LIBS-LINUX: "-cc1" "-triple" "spirv64-unknown-unknown"
-// CHECK-DEVICE-LIBS-LINUX-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
-// CHECK-DEVICE-LIBS-LINUX-SAME: "-fsycl-is-device"
-// CHECK-DEVICE-LIBS-LINUX-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-cmath-fp64.bc"
-// CHECK-DEVICE-LIBS-LINUX-NOT: "libsycl-msvc-math.bc"
-// CHECK-DEVICE-LIBS-LINUX-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-imf.bc"
-
void foo() {}
diff --git a/clang/test/Driver/sycl-offload-jit-unix.cpp b/clang/test/Driver/sycl-offload-jit-unix.cpp
index 632e432e1aefd..66ca863a4b5a2 100644
--- a/clang/test/Driver/sycl-offload-jit-unix.cpp
+++ b/clang/test/Driver/sycl-offload-jit-unix.cpp
@@ -9,11 +9,7 @@
// 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-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: touch %t/lib/libsycl-itt-user-wrappers.bc %t/lib/libsycl-itt-compiler-wrappers.bc %t/lib/libsycl-itt-stubs.bc
+// RUN: touch %t/lib/libsycl-crt.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
@@ -24,11 +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-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: touch %t/lib/libsycl-itt-user-wrappers.bc %t/lib/libsycl-itt-compiler-wrappers.bc %t/lib/libsycl-itt-stubs.bc
+// RUN: touch %t/lib/libsycl-crt.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
>From 6a5851cc31c23d92111268c2a42fabe636df4d96 Mon Sep 17 00:00:00 2001
From: srividya sundaram <srividya.sundaram at intel.com>
Date: Wed, 13 May 2026 14:26:33 -0700
Subject: [PATCH 09/18] Remove unused SYCL device library test fixtures.
Only libsycl-crt.bc is needed as a placeholder until device libraries
are added to compiler-rt/libc.
---
.../test/Driver/Inputs/SYCL/lib/libsycl-asan.bc | Bin 1624 -> 0 bytes
.../Driver/Inputs/SYCL/lib/libsycl-cmath-fp64.bc | Bin 1624 -> 0 bytes
.../test/Driver/Inputs/SYCL/lib/libsycl-cmath.bc | Bin 1632 -> 0 bytes
.../Inputs/SYCL/lib/libsycl-complex-fp64.bc | Bin 1624 -> 0 bytes
.../Driver/Inputs/SYCL/lib/libsycl-complex.bc | Bin 1632 -> 0 bytes
.../Inputs/SYCL/lib/libsycl-fallback-bfloat16.bc | Bin 1624 -> 0 bytes
.../SYCL/lib/libsycl-fallback-cmath-fp64.bc | Bin 1624 -> 0 bytes
.../Inputs/SYCL/lib/libsycl-fallback-cmath.bc | Bin 1624 -> 0 bytes
.../SYCL/lib/libsycl-fallback-complex-fp64.bc | Bin 1624 -> 0 bytes
.../Inputs/SYCL/lib/libsycl-fallback-complex.bc | Bin 1624 -> 0 bytes
.../Inputs/SYCL/lib/libsycl-fallback-cstring.bc | Bin 1624 -> 0 bytes
.../Inputs/SYCL/lib/libsycl-fallback-imf-bf16.bc | Bin 1624 -> 0 bytes
.../Inputs/SYCL/lib/libsycl-fallback-imf-fp64.bc | Bin 1624 -> 0 bytes
.../Inputs/SYCL/lib/libsycl-fallback-imf.bc | Bin 1624 -> 0 bytes
.../Driver/Inputs/SYCL/lib/libsycl-imf-bf16.bc | Bin 1624 -> 0 bytes
.../Driver/Inputs/SYCL/lib/libsycl-imf-fp64.bc | Bin 1624 -> 0 bytes
clang/test/Driver/Inputs/SYCL/lib/libsycl-imf.bc | Bin 1624 -> 0 bytes
.../SYCL/lib/libsycl-itt-compiler-wrappers.bc | Bin 1624 -> 0 bytes
.../Driver/Inputs/SYCL/lib/libsycl-itt-stubs.bc | Bin 1624 -> 0 bytes
.../Inputs/SYCL/lib/libsycl-itt-user-wrappers.bc | Bin 1624 -> 0 bytes
.../test/Driver/Inputs/SYCL/lib/libsycl-msan.bc | Bin 1624 -> 0 bytes
.../Driver/Inputs/SYCL/lib/libsycl-msvc-math.bc | Bin 1988 -> 0 bytes
.../test/Driver/Inputs/SYCL/lib/libsycl-tsan.bc | Bin 1624 -> 0 bytes
23 files changed, 0 insertions(+), 0 deletions(-)
delete mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-asan.bc
delete mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-cmath-fp64.bc
delete mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-cmath.bc
delete mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-complex-fp64.bc
delete mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-complex.bc
delete mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-bfloat16.bc
delete mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-cmath-fp64.bc
delete mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-cmath.bc
delete mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-complex-fp64.bc
delete mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-complex.bc
delete mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-cstring.bc
delete mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-imf-bf16.bc
delete mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-imf-fp64.bc
delete mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-imf.bc
delete mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-imf-bf16.bc
delete mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-imf-fp64.bc
delete mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-imf.bc
delete mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-itt-compiler-wrappers.bc
delete mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-itt-stubs.bc
delete mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-itt-user-wrappers.bc
delete mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-msan.bc
delete mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-msvc-math.bc
delete mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-tsan.bc
diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-asan.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-asan.bc
deleted file mode 100644
index 85a261bc54ad705009f58a8a205227f5e2e814ef..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at v)pxez#j~OC(T)ze$A3;CWIF%=
diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-cmath-fp64.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-cmath-fp64.bc
deleted file mode 100644
index 85a261bc54ad705009f58a8a205227f5e2e814ef..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at v)pxez#j~OC(T)ze$A3;CWIF%=
diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-cmath.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-cmath.bc
deleted file mode 100644
index e8f235db18e8af0536386c3abc254010a68685ab..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 1632
zcmXX{e at q)y9Dn7Y*KOrpAt-daJA0#BnmFgJbkK5bLfZ|yh_S={fkv~oV;xgm3REae
zmzLHYQ=*+|mi{pl>WrCxm at 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 at Ds{n!^SJzC=Us5Yjrj=6O0hJc2 at Qq`{4T=x9rxTvn!@rk)T
z=DHKF*z0NytF_#flJ<<MLT_nm9 at N}a7%O8c;|cc(-L>(i=I)4EYrIHZdETh6(H_Ib
z_UX3nI9J;o-=|?3gPEaE;@pvo!=*+OLYH(1sQ}Ynf2rnM$KWwdD=hJ at 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 at 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 at s3qGr0qz6Y0l?`J`vRi&=3TtbQ-wUf*F at bLfwxEsqUSmZTuvq-Dzd`C
zIj}Mkvs>~KNM{45vQ5(?%xsFu+u6l5?bn~;aY6Q%f+5SilZ(DrL-x4DlOy8$VR-gN
zLSY at 2tO?0H=WK*HWkE5ui+jf5WdZ7~G}9WX^0%Df at 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- at 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
diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-complex-fp64.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-complex-fp64.bc
deleted file mode 100644
index 85a261bc54ad705009f58a8a205227f5e2e814ef..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at v)pxez#j~OC(T)ze$A3;CWIF%=
diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-complex.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-complex.bc
deleted file mode 100644
index 6b17649f29a43da5d3bc49c6a96f37a1ed2b8874..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 1632
zcmXX{Z%i9y7=KHl*KOs!LQv>-clJiNG;!itI%sK|&~}n8&e-8T;J>WxSjQA+`6Cpj
zOOLA at 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 at 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+ at vZaMF6v9IS)eR#V_$9oHIcKON}mJJJ5ai4WcnwVw>vw71KB{sY`!XY&96
diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-bfloat16.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-bfloat16.bc
deleted file mode 100644
index 85a261bc54ad705009f58a8a205227f5e2e814ef..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at v)pxez#j~OC(T)ze$A3;CWIF%=
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
deleted file mode 100644
index 85a261bc54ad705009f58a8a205227f5e2e814ef..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at v)pxez#j~OC(T)ze$A3;CWIF%=
diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-cmath.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-cmath.bc
deleted file mode 100644
index 85a261bc54ad705009f58a8a205227f5e2e814ef..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at v)pxez#j~OC(T)ze$A3;CWIF%=
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
deleted file mode 100644
index 85a261bc54ad705009f58a8a205227f5e2e814ef..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at v)pxez#j~OC(T)ze$A3;CWIF%=
diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-complex.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-complex.bc
deleted file mode 100644
index 85a261bc54ad705009f58a8a205227f5e2e814ef..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at v)pxez#j~OC(T)ze$A3;CWIF%=
diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-cstring.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-cstring.bc
deleted file mode 100644
index 85a261bc54ad705009f58a8a205227f5e2e814ef..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at v)pxez#j~OC(T)ze$A3;CWIF%=
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
deleted file mode 100644
index 85a261bc54ad705009f58a8a205227f5e2e814ef..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at v)pxez#j~OC(T)ze$A3;CWIF%=
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
deleted file mode 100644
index 85a261bc54ad705009f58a8a205227f5e2e814ef..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at v)pxez#j~OC(T)ze$A3;CWIF%=
diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-imf.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-imf.bc
deleted file mode 100644
index 85a261bc54ad705009f58a8a205227f5e2e814ef..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at v)pxez#j~OC(T)ze$A3;CWIF%=
diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-imf-bf16.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-imf-bf16.bc
deleted file mode 100644
index 85a261bc54ad705009f58a8a205227f5e2e814ef..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at v)pxez#j~OC(T)ze$A3;CWIF%=
diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-imf-fp64.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-imf-fp64.bc
deleted file mode 100644
index 85a261bc54ad705009f58a8a205227f5e2e814ef..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at v)pxez#j~OC(T)ze$A3;CWIF%=
diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-imf.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-imf.bc
deleted file mode 100644
index 85a261bc54ad705009f58a8a205227f5e2e814ef..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at v)pxez#j~OC(T)ze$A3;CWIF%=
diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-itt-compiler-wrappers.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-itt-compiler-wrappers.bc
deleted file mode 100644
index 85a261bc54ad705009f58a8a205227f5e2e814ef..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at v)pxez#j~OC(T)ze$A3;CWIF%=
diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-itt-stubs.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-itt-stubs.bc
deleted file mode 100644
index 85a261bc54ad705009f58a8a205227f5e2e814ef..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at v)pxez#j~OC(T)ze$A3;CWIF%=
diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-itt-user-wrappers.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-itt-user-wrappers.bc
deleted file mode 100644
index 85a261bc54ad705009f58a8a205227f5e2e814ef..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at v)pxez#j~OC(T)ze$A3;CWIF%=
diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-msan.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-msan.bc
deleted file mode 100644
index 85a261bc54ad705009f58a8a205227f5e2e814ef..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at v)pxez#j~OC(T)ze$A3;CWIF%=
diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-msvc-math.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-msvc-math.bc
deleted file mode 100644
index dd45d07a3a74db785926c7fc5dc6e8f6bcf19500..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 1988
zcmYjSZ%kX)6 at RwD*MRfhYep7a-g|kkWD#4J>|wgjj%^A1k=E__;B=kDq)xVRaA7IV
z!~adD&BjcRXx8LJe6X}kve$g*G-)DfCgnp^VLz6+)XQizRVYKq9)^&KCTL|<q*dC^
zH9^{y&bfciz2}}kzjLokTH5$-H$k)$1Tkh5Prmu1kAi>s&mVu at bv`|!fi=NM5Vv5^
zr4<M*%#Q=1Oy5;!we1Z(ZMI(1%o)GYZZL6ezZ^>&&uLxPx?C4%bGOCN^Zib<dEPBA
z3w^^!l^pH7roB)#-0bG1*XH?;HD>eND4D-14ChO;ztx&l^vSUfbIy2$Cx}kC<E3C5
zeakibG5r>>{B*_R?(8 at v-D`K5PZ>I2)bu;`+HJ!UL7eX)2oCo5jtS5H3r!;v9sRlr
z(-fG8CFUW)Z3ygohFfuRY1xP3gdvesUM- at O0VUH)R8}Gr*|-7C452jFEO9Fuemlce
z{LE*iBXuXY0SEoePJ?Zhjx3kBTA2Yo4}IJN=ZO`~k`AsV-hlgYoW3>-^oJDa%%jVT
zy0a768Ci+RO5zSm{Qr23 at 7h|`KlY($5ygkll#iPBp&1&*SM^`=crn7`Mc^|c3d7<M
zN*?Y^wRVQnty6gvE~2pK`N0^7cmy2I#%L_U9FEgSZmFFnP<RNvC>T?8ZP5RbctiUw
z|1pBcF0|SQ#FZo3b5r2ctsy<En7M+{^ukC!*Kz9gdu`HKN4Lw`4UXOff6E{rG^Cm3
z1{3VoIOZkGoSJi`Q7VZdg=yn9L48h>`)P8}=;A76_I`;8itVj!+1{GYQI#Ayouih_
zMP+o^fKqNnmeGu?izgMCS4_1R$lW~I5UG$zZSIkK9&(UgW;X<8O<*g2E+}5H-Obuo
zCF^aS{chGir?b`ey5l}{c>;ZJLJ0#;D{@}J+3rX2XYHUikygA0Wx7WR7nD>X^X(^l
z<dZu2?<I0q)Qwe3OtZw)T72EltO(3<hF$UNKg&zjs$?y+_#M@<AX(;hwgvS&aOqdG
zw!i6Yi>mR at lZrg5gyn2>0wsM)v`2{+71RA6P)`WzUmmiVCpU+v22bvS7kodvUgj!J
z?t#DnB-iUqv%&sT!v%ZJTNb6W*R!^o=j3xod`cpTl7;gl`*{jSfcr at ci2}P(W`Cvu
zs4_Ky-Sg|;{zcYOQ*Dcq0|N3@#om-`^DtF&f9eEJl?2!W=<Y}1Lgt-Kn%rF?w>;z*
zVqf`zlWR7PuQk{WFu-lHEoL3Jv%PbwB_~;Hs{KycT2;YEd(C}&+JL~SX$at`V*2|%
za at R+FUf1vO)RstX at zj?dGDMS`A_>zk>iWlZvgsk8iGBar^)r<WyVf|qE3n%FyDYGf
z!5!g5kpGSCuH?9*vo2(<wb8qfeQ<UL>~t#$SuuU`h<qwijXL>wh<aRvTU3oM@&N*0
zyaj*?j&O7pQkj`^TI(u=&H<UK4J{Yhl at g1qw#)=i21K%f^Gkt}Em0D(u^tq0E8e2=
z(=?pDxuCJ<RQrNzS(VNLoN5p;qgy!U@^fJ7{WAMjraL(Du1G%Rsi$@QQxCO|RgqhD
z{WecER>>`>ffP>=FGC;Z+`KezG<Af{ZoV&*yL$E0;Ue9C!9HMi{VFfKZ=p-Xn*lwM
z2u%3H-pJ(4crfgr8b2*xnhZt9!#^C0g`zP&@SZ>PE*~EcM<y?Y_yNnAfinP^fmlmA
z at J+a<&oC^`4jK9k%h1t-#$iuQ?5PY$V%6=NHID^8ycn6h-1qyy%aMUVm+jZR=PdcR
z*Vc9)zVo2EvcB_L$5GJnJE-5&(06r)`=Kt-%&1&|T;MQTSJl~V=3eQ at juV$H#9^m}
zx39ml=_4O`0LD}kgPD5dA@>*48I<a8RasI2gkX$~%GXuPZH?_l*0G>!FG9gG>kVd|
zXPSP at cUmv&YKf^H0K;F_Q2P)}h;5qenm<TT`(G`Pjx{Jc72sh5G{Rd^)!D#g;!~O+
z at Y{rH_8VE-btp!iqnNcrVdho*2K)KvZ*f~$I}Ky}K$}VWr8(lm)>{ozVjTXn6VM;k
zE$rbr790b at dPjh;o>3s&aF6FQo<Qpb!vCKc2m#@9xE;#z81Fx9hjQHGzlk_`Ao(%a
zfO7#hr0|N at 8%YJ;^G-$L0q>MQI^m5(V`B#Zh{%)S_^Yp+j)g9UE+s;T{rHp|O`QoG
Hs3ZOd4E34`
diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-tsan.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-tsan.bc
deleted file mode 100644
index 85a261bc54ad705009f58a8a205227f5e2e814ef..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at v)pxez#j~OC(T)ze$A3;CWIF%=
>From 178691400e6d89aacfedb539972cc438f74a8358 Mon Sep 17 00:00:00 2001
From: srividya sundaram <srividya.sundaram at intel.com>
Date: Thu, 14 May 2026 15:17:23 -0700
Subject: [PATCH 10/18] [Driver] Merge getDeviceLibNames into getDeviceLibs for
SYCLToolChain
Remove the separate getDeviceLibNames helper and inline its logic
directly into getDeviceLibs, matching the pattern used by other
toolchains (HIPAMDToolChain, AMDGPUOpenMPToolChain). Library name
selection and path resolution now happen in a single function via
an addLib lambda, eliminating an unnecessary intermediate vector
and a public method that was not part of the intended API.
---
clang/lib/Driver/ToolChains/SYCL.cpp | 73 ++++++++++------------------
clang/lib/Driver/ToolChains/SYCL.h | 5 --
2 files changed, 25 insertions(+), 53 deletions(-)
diff --git a/clang/lib/Driver/ToolChains/SYCL.cpp b/clang/lib/Driver/ToolChains/SYCL.cpp
index c9060f532f3ca..ce7343d49cd3a 100644
--- a/clang/lib/Driver/ToolChains/SYCL.cpp
+++ b/clang/lib/Driver/ToolChains/SYCL.cpp
@@ -144,9 +144,8 @@ void SYCLToolChain::addClangTargetOptions(
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.
+ // Link device libraries after middle-end optimization passes so their
+ // symbols are preserved and not eliminated by the optimizer.
if (!BCLibs.empty()) {
CC1Args.push_back("-mlink-builtin-bitcode-postopt");
// Suppress linker warnings that may occur due to library/target
@@ -229,66 +228,44 @@ void SYCLToolChain::AddClangCXXStdlibIncludeArgs(const ArgList &Args,
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;
- bool NoOffloadLib =
- !Args.hasFlag(options::OPT_offloadlib, options::OPT_no_offloadlib, true);
- // Default internalization to 'true' for these libraries, as they are
- // expected to link with -mlink-builtin-bitcode.
- auto addLibToList = [&LibraryList](StringRef LibName,
- bool Internalize = true) {
- BitCodeLibraryInfo BitCodeLibrary({LibName, Internalize});
- LibraryList.emplace_back(BitCodeLibrary);
- };
-
- // For SPIR/SPIRV targets, add SYCL device libraries.
- if (TargetTriple.isSPIROrSPIRV()) {
- // TODO: Update this list when SYCL device libraries are added to
- // compiler-rt/libc. This placeholder demonstrates the infrastructure for
- // linking device libraries at compile time.
- if (!NoOffloadLib) {
- addLibToList("libsycl-crt.bc");
- }
- }
-
- return LibraryList;
-}
-
llvm::SmallVector<ToolChain::BitCodeLibraryInfo, 12>
SYCLToolChain::getDeviceLibs(
const llvm::opt::ArgList &DriverArgs,
- const Action::OffloadKind DeviceOffloadingKind) const {
+ const Action::OffloadKind /*DeviceOffloadingKind*/) const {
llvm::SmallVector<ToolChain::BitCodeLibraryInfo, 12> BCLibs;
+ if (!DriverArgs.hasFlag(options::OPT_offloadlib, options::OPT_no_offloadlib,
+ true))
+ return 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;
+ // Resolve a library name to its full path and append it to BCLibs.
+ // Emits an error if the library is not found in any candidate path.
+ // Default internalization to 'true' for these libraries, as they are
+ // expected to link with -mlink-builtin-bitcode.
+ auto addLib = [&](StringRef LibName, bool Internalize = true) {
for (const auto &LibraryPath : LibraryPaths) {
SmallString<128> FullLibName(LibraryPath);
- llvm::sys::path::append(FullLibName, DeviceLib.Path);
+ llvm::sys::path::append(FullLibName, LibName);
if (llvm::sys::fs::exists(FullLibName)) {
- BitCodeLibraryInfo BitCodeLibrary(FullLibName,
- DeviceLib.ShouldInternalize);
- BCLibs.emplace_back(BitCodeLibrary);
- DeviceLibFound = true;
- break;
+ BCLibs.emplace_back(FullLibName.str(), Internalize);
+ return;
}
}
// 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;
+ // The user can pass '--no-offloadlib' to build without device libraries.
+ getDriver().Diag(diag::err_drv_no_sycl_device_lib) << LibName;
+ };
+
+ // For SPIR/SPIRV targets, add SYCL device libraries.
+ if (getTriple().isSPIROrSPIRV()) {
+ // TODO: Update this list when SYCL device libraries are added to
+ // compiler-rt/libc. This placeholder demonstrates the infrastructure for
+ // linking device libraries at compile time.
+ addLib("libsycl-crt.bc");
}
return BCLibs;
diff --git a/clang/lib/Driver/ToolChains/SYCL.h b/clang/lib/Driver/ToolChains/SYCL.h
index c31a043eed356..df2945dee0139 100644
--- a/clang/lib/Driver/ToolChains/SYCL.h
+++ b/clang/lib/Driver/ToolChains/SYCL.h
@@ -55,11 +55,6 @@ 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,
>From 0eb866a614d480df2176adb2a52db5c862ed10b2 Mon Sep 17 00:00:00 2001
From: srividya sundaram <srividya.sundaram at intel.com>
Date: Thu, 14 May 2026 15:35:28 -0700
Subject: [PATCH 11/18] Address review comments.
---
clang/include/clang/Options/Options.td | 4 ----
clang/lib/Driver/ToolChains/SYCL.cpp | 5 ++---
clang/test/Driver/sycl-device-library-linking.cpp | 2 --
clang/test/Driver/sycl-offload-jit-unix.cpp | 4 ++++
4 files changed, 6 insertions(+), 9 deletions(-)
diff --git a/clang/include/clang/Options/Options.td b/clang/include/clang/Options/Options.td
index 65b94e9edb5c2..5fdc60adc8986 100644
--- a/clang/include/clang/Options/Options.td
+++ b/clang/include/clang/Options/Options.td
@@ -7464,10 +7464,6 @@ def fsycl_device_only : Flag<["-"], "fsycl-device-only">,
def fsycl_host_only : Flag<["-"], "fsycl-host-only">,
Alias<offload_host_only>, HelpText<"Compile SYCL code for host only. Has no "
"effect on non-SYCL compilations">;
-def fsycl_instrument_device_code : Flag<["-"], "fsycl-instrument-device-code">,
- HelpText<"Enable instrumentation of SYCL device code for profiling">;
-def fno_sycl_instrument_device_code : Flag<["-"], "fno-sycl-instrument-device-code">,
- HelpText<"Disable instrumentation of SYCL device code (default)">;
def sycl_link : Flag<["--"], "sycl-link">, Flags<[HelpHidden]>,
HelpText<"Perform link through clang-sycl-linker via the target "
"offloading toolchain.">;
diff --git a/clang/lib/Driver/ToolChains/SYCL.cpp b/clang/lib/Driver/ToolChains/SYCL.cpp
index ce7343d49cd3a..b6765007b294f 100644
--- a/clang/lib/Driver/ToolChains/SYCL.cpp
+++ b/clang/lib/Driver/ToolChains/SYCL.cpp
@@ -136,9 +136,8 @@ void SYCLToolChain::addClangTargetOptions(
// 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)
+ // Use -mlink-builtin-bitcode for internalized libraries and
+ // -mlink-bitcode-file for non-internalized libraries.
CC1Args.push_back(BCFile.ShouldInternalize ? "-mlink-builtin-bitcode"
: "-mlink-bitcode-file");
CC1Args.push_back(DriverArgs.MakeArgString(BCFile.Path));
diff --git a/clang/test/Driver/sycl-device-library-linking.cpp b/clang/test/Driver/sycl-device-library-linking.cpp
index ce567d10eea41..fe4120a60905f 100644
--- a/clang/test/Driver/sycl-device-library-linking.cpp
+++ b/clang/test/Driver/sycl-device-library-linking.cpp
@@ -16,5 +16,3 @@
// 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() {}
diff --git a/clang/test/Driver/sycl-offload-jit-unix.cpp b/clang/test/Driver/sycl-offload-jit-unix.cpp
index 66ca863a4b5a2..945b0cad22a05 100644
--- a/clang/test/Driver/sycl-offload-jit-unix.cpp
+++ b/clang/test/Driver/sycl-offload-jit-unix.cpp
@@ -9,6 +9,8 @@
// 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
+// Dummy device lib required: test uses full -fsycl (not --no-offloadlib) to verify RT lib
+// detection; --no-offloadlib also suppresses SYCLRTLibPath detection, which this test checks.
// RUN: touch %t/lib/libsycl-crt.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 \
@@ -20,6 +22,8 @@
// 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
+// Dummy device lib required: test uses full -fsycl (not --no-offloadlib) to verify RT lib
+// detection; --no-offloadlib also suppresses SYCLRTLibPath detection, which this test checks.
// RUN: touch %t/lib/libsycl-crt.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 \
>From 951c53fded0b529dae179fd1d76845fd09627a1f Mon Sep 17 00:00:00 2001
From: srividya sundaram <srividya.sundaram at intel.com>
Date: Tue, 21 Jul 2026 14:00:09 -0700
Subject: [PATCH 12/18] [Driver][SYCL] Add compile-time device library linking
infrastructure for SPIR-V targets
Adds driver infrastructure to link SYCL device libraries at compile time
for SPIR/SPIR-V targets, following the same pattern used by the AMDGPU
and HIPSPV toolchains.
SYCLToolChain now overrides getDeviceLibs() and addClangTargetOptions()
to support linking bitcode device libraries via -mlink-builtin-bitcode
(internalized) or -mlink-bitcode-file (non-internalized) at compile
time. The --offloadlib/--no-offloadlib flag gates this behavior,
consistent with other GPU toolchains.
The getDeviceLibs() override currently returns an empty list. The
intended libraries are upstream compiler-rt builtins for spirv64
(libclang_rt.builtins-spirv64.a, added in #192897), but the mechanism
for consuming a compiler-rt static archive at compile time via
-mlink-builtin-bitcode is still under discussion with upstream
reviewers. The infrastructure is in place and will be wired up once
that is resolved.
This avoids introducing SYCL-specific device library names or a
SYCL-specific diagnostic for missing libraries. Instead, the design
is aligned with how AMDGPU and HIPSPV locate and link upstream
bitcode libraries through the common getDeviceLibs() virtual.
---
.../clang/Basic/DiagnosticDriverKinds.td | 4 --
.../clang/Driver/SyclInstallationDetector.h | 3 -
clang/lib/Driver/ToolChains/SYCL.cpp | 57 ++----------------
.../Driver/Inputs/SYCL/lib/libsycl-crt.bc | Bin 1624 -> 0 bytes
.../Driver/sycl-device-library-linking.cpp | 18 ------
clang/test/Driver/sycl-offload-jit-unix.cpp | 8 +--
clang/test/Driver/sycl-offload-jit-xarch.cpp | 4 +-
clang/test/Driver/sycl-offload-jit.cpp | 18 +++---
clang/test/Driver/sycl-std-default.cpp | 22 +++----
clang/test/Driver/sycl.cpp | 34 +++++------
10 files changed, 41 insertions(+), 127 deletions(-)
delete mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-crt.bc
delete 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 36c8a091c0f1e..ae3eecc60fc78 100644
--- a/clang/include/clang/Basic/DiagnosticDriverKinds.td
+++ b/clang/include/clang/Basic/DiagnosticDriverKinds.td
@@ -100,10 +100,6 @@ def err_drv_sycl_requires_dynamic_crt : Error<
"SYCL requires dynamic C++ runtime (/MD or /MDd); "
"static C++ runtime (/MT or /MTd) is not supported">;
-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 474a197696e7e..070b543e50149 100644
--- a/clang/include/clang/Driver/SyclInstallationDetector.h
+++ b/clang/include/clang/Driver/SyclInstallationDetector.h
@@ -25,9 +25,6 @@ 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 4e4d585c13b2b..efef8e42ac70f 100644
--- a/clang/lib/Driver/ToolChains/SYCL.cpp
+++ b/clang/lib/Driver/ToolChains/SYCL.cpp
@@ -82,25 +82,6 @@ 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[] = {
@@ -254,41 +235,11 @@ llvm::SmallVector<ToolChain::BitCodeLibraryInfo, 12>
SYCLToolChain::getDeviceLibs(
const llvm::opt::ArgList &DriverArgs, BoundArch /*BA*/,
const Action::OffloadKind /*DeviceOffloadingKind*/) const {
- llvm::SmallVector<ToolChain::BitCodeLibraryInfo, 12> BCLibs;
-
if (!DriverArgs.hasFlag(options::OPT_offloadlib, options::OPT_no_offloadlib,
true))
- return BCLibs;
-
- // Get candidate paths where device libraries may be located.
- SmallVector<SmallString<128>, 4> LibraryPaths;
- SYCLInstallation.getSYCLDeviceLibPath(LibraryPaths);
-
- // Resolve a library name to its full path and append it to BCLibs.
- // Emits an error if the library is not found in any candidate path.
- // Default internalization to 'true' for these libraries, as they are
- // expected to link with -mlink-builtin-bitcode.
- auto addLib = [&](StringRef LibName, bool Internalize = true) {
- for (const auto &LibraryPath : LibraryPaths) {
- SmallString<128> FullLibName(LibraryPath);
- llvm::sys::path::append(FullLibName, LibName);
- if (llvm::sys::fs::exists(FullLibName)) {
- BCLibs.emplace_back(FullLibName.str(), Internalize);
- return;
- }
- }
- // 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.
- getDriver().Diag(diag::err_drv_no_sycl_device_lib) << LibName;
- };
-
- // For SPIR/SPIRV targets, add SYCL device libraries.
- if (getTriple().isSPIROrSPIRV()) {
- // TODO: Update this list when SYCL device libraries are added to
- // compiler-rt/libc. This placeholder demonstrates the infrastructure for
- // linking device libraries at compile time.
- addLib("libsycl-crt.bc");
- }
+ return {};
- return BCLibs;
+ // TODO: Link libclang_rt.builtins for spirv64 once the mechanism for
+ // consuming the compiler-rt static archive at compile time is settled.
+ return {};
}
diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-crt.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-crt.bc
deleted file mode 100644
index 85a261bc54ad705009f58a8a205227f5e2e814ef..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
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 at 8#a-
ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm
ztIka636<7l{ag{#94b at mn9@)Dk<wR6Tp!oQ4An8WzReiaa at VTb4BD&SA6<i*ianoN
z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC
zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0 at 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 at _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 at 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 at 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 at szdNoDO
zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh
z*;8*mXI}Q=`yQ}7S(J at W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow
zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4*
z-F)fecm=!(KJt<UsF3 at 4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf
zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An
lo&TKmm^n}nudOEkv3jm8&~d at v)pxez#j~OC(T)ze$A3;CWIF%=
diff --git a/clang/test/Driver/sycl-device-library-linking.cpp b/clang/test/Driver/sycl-device-library-linking.cpp
deleted file mode 100644
index fe4120a60905f..0000000000000
--- a/clang/test/Driver/sycl-device-library-linking.cpp
+++ /dev/null
@@ -1,18 +0,0 @@
-// 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 -### 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-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"
diff --git a/clang/test/Driver/sycl-offload-jit-unix.cpp b/clang/test/Driver/sycl-offload-jit-unix.cpp
index ce4b0223b529e..34812576f7874 100644
--- a/clang/test/Driver/sycl-offload-jit-unix.cpp
+++ b/clang/test/Driver/sycl-offload-jit-unix.cpp
@@ -7,11 +7,8 @@
// 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 %t/lib
+// RUN: rm -rf %t && mkdir -p %t/bin %t/lib/x86_64-unknown-linux-gnu
// RUN: touch %t/lib/x86_64-unknown-linux-gnu/libLLVMSYCL.so
-// Dummy device lib required: test uses full -fsycl (not --no-offloadlib) to verify RT lib
-// detection; --no-offloadlib also suppresses SYCLRTLibPath detection, which this test checks.
-// RUN: touch %t/lib/libsycl-crt.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
@@ -22,9 +19,6 @@
// 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
-// Dummy device lib required: test uses full -fsycl (not --no-offloadlib) to verify RT lib
-// detection; --no-offloadlib also suppresses SYCLRTLibPath detection, which this test checks.
-// RUN: touch %t/lib/libsycl-crt.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 37f49fa99e107..53af2b16a33f1 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 --no-offloadlib 2>&1 \
+// RUN: %clang -fsycl --offload-targets=spirv64-unknown-unknown -Xarch_spirv64 -O3 -### %s 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 --no-offloadlib -Xarch_spirv64 -Wl,-lfoo -### %s 2>&1 \
+// RUN: %clang -fsycl --offload-targets=spirv64-unknown-unknown -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 0555e5701485f..c8eff1a4dd28f 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 --no-offloadlib 2>&1 \
+// RUN: %clang -ccc-print-phases --target=x86_64-unknown-linux-gnu -fsycl %s 2>&1 \
// RUN: | FileCheck -check-prefixes=CHK-PHASES %s
-// RUN: %clang_cl -ccc-print-phases --target=x86_64-pc-windows-msvc -fsycl --no-offloadlib -- %s 2>&1 \
+// RUN: %clang_cl -ccc-print-phases --target=x86_64-pc-windows-msvc -fsycl -- %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 --no-offloadlib 2>&1 \
+// RUN: %clang -### -fsycl -c --target=x86_64-unknown-linux-gnu %s 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,13 +36,13 @@
/// 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 --no-offloadlib 2>&1 \
+// RUN: %clang -### -fsycl -c %s 2>&1 \
// RUN: | FileCheck -check-prefixes=CHK-FSYCL-IS-DEVICE,CHK-FSYCL-IS-HOST %s
-// RUN: %clang -### -fsycl -fsycl-device-only %s --no-offloadlib 2>&1 \
+// RUN: %clang -### -fsycl -fsycl-device-only %s 2>&1 \
// RUN: | FileCheck -check-prefix=CHK-FSYCL-IS-DEVICE %s
-// RUN: %clang_cl -### -fsycl --no-offloadlib -c -- %s 2>&1 \
+// RUN: %clang_cl -### -fsycl -c -- %s 2>&1 \
// RUN: | FileCheck -check-prefixes=CHK-FSYCL-IS-DEVICE,CHK-FSYCL-IS-HOST %s
-// RUN: %clang -### -fsycl --no-offloadlib -fsycl-host-only %s 2>&1 \
+// RUN: %clang -### -fsycl -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"
@@ -86,8 +86,8 @@
// CHK-SPLIT-UNUSED: warning: argument unused during compilation: '-fsycl-device-image-split=kernel'
/// Check for option incompatibility with -fsycl
-// RUN: not %clang -### -fsycl -ffreestanding %s --no-offloadlib 2>&1 \
+// RUN: not %clang -### -fsycl -ffreestanding %s 2>&1 \
// RUN: | FileCheck -check-prefix=CHK-INCOMPATIBILITY %s -DINCOMPATOPT=-ffreestanding
-// RUN: not %clang -### -fsycl --offload-new-driver -static-libstdc++ %s --no-offloadlib 2>&1 \
+// RUN: not %clang -### -fsycl --offload-new-driver -static-libstdc++ %s 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 51fbfe7bd5dd0..df377169a3944 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 --no-offloadlib 2>&1 | FileCheck %s --check-prefixes=CHECK-DEVICE,CHECK-HOST
+// RUN: %clangxx -### -fsycl -c %s 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 --no-offloadlib 2>&1 | FileCheck %s --check-prefixes=CHECK-OVERRIDE-DEVICE,CHECK-OVERRIDE-HOST
+// RUN: %clangxx -### -fsycl -std=c++20 -c %s 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 --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
+// 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
// 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 --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
+// 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
// 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 --no-offloadlib --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 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 --no-offloadlib -- %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 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 --no-offloadlib -- %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 -- %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 --no-offloadlib -- %s 2>&1 | FileCheck %s --check-prefix=CHECK-MSVC-C-ERROR
+// RUN: not %clang_cl --target=x86_64-pc-windows-msvc -fsycl /std:c11 -- %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 16c3e0d2c6ece..e78b2a7593323 100644
--- a/clang/test/Driver/sycl.cpp
+++ b/clang/test/Driver/sycl.cpp
@@ -1,34 +1,28 @@
-// 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 -### -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 -### -sycl-std=2017 %s 2>&1 | FileCheck %s --check-prefix=DISABLED
-// RUN: %clangxx -### -fsycl %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck %s --check-prefix=ENABLED
+// RUN: %clangxx -### -fsycl %s 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
-// Test clang-cl mode (without device libraries to avoid sysroot issues)
-// RUN: %clang_cl -### -fsycl -sycl-std=2017 --no-offloadlib -- %s 2>&1 | FileCheck %s --check-prefix=ENABLED
-// RUN: %clang_cl -### -fsycl --no-offloadlib -- %s 2>&1 | FileCheck %s --check-prefix=ENABLED
+// 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 -### -- %s 2>&1 | FileCheck %s --check-prefix=DISABLED
-// Test Windows target (with device libraries via --target and sysroot)
-// RUN: %clang --target=x86_64-pc-windows-msvc -### -fsycl %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck %s --check-prefix=ENABLED-WIN
-// ENABLED-WIN: "-cc1"{{.*}} "-fsycl-is-device"
-// ENABLED-WIN-SAME: "-sycl-std={{[-.sycl0-9]+}}"
-
// ENABLED: "-cc1"{{.*}} "-fsycl-is-device"
// ENABLED-SAME: "-sycl-std={{[-.sycl0-9]+}}"
// DISABLED-NOT: "-fsycl-is-device"
// DISABLED-NOT: "-sycl-std="
-// 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 --no-offloadlib -- %s 2>&1 | FileCheck %s --check-prefix=DEFAULT
+// 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
// DEFAULT: "-sycl-std=2020"
>From 9130b12699d10a27fc0649abba0e21751d32d3e6 Mon Sep 17 00:00:00 2001
From: srividya sundaram <srividya.sundaram at intel.com>
Date: Tue, 21 Jul 2026 17:04:23 -0700
Subject: [PATCH 13/18] [compiler-rt] Produce libclang_rt.builtins-spirv64.bc
alongside the static archive
For spirv64-unknown-unknown, use llvm-link to merge the bitcode members
of the static archive into a combined .bc file at build and install time.
This is needed because -mlink-builtin-bitcode expects raw LLVM IR and
cannot unpack a static archive directly.
---
clang/lib/Driver/ToolChains/SYCL.cpp | 32 ++++++-------------------
compiler-rt/lib/builtins/CMakeLists.txt | 22 +++++++++++++++++
2 files changed, 29 insertions(+), 25 deletions(-)
diff --git a/clang/lib/Driver/ToolChains/SYCL.cpp b/clang/lib/Driver/ToolChains/SYCL.cpp
index efef8e42ac70f..c1989c65f64a9 100644
--- a/clang/lib/Driver/ToolChains/SYCL.cpp
+++ b/clang/lib/Driver/ToolChains/SYCL.cpp
@@ -131,31 +131,11 @@ void SYCLToolChain::addClangTargetOptions(
BoundArch BA, Action::OffloadKind DeviceOffloadingKind) const {
HostTC.addClangTargetOptions(DriverArgs, CC1Args, BA, DeviceOffloadingKind);
- // Link SYCL device libraries at compile time 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.
- llvm::SmallVector<BitCodeLibraryInfo, 12> BCLibs =
- getDeviceLibs(DriverArgs, BA, DeviceOffloadingKind);
-
- // Add each device library with the appropriate linking flag.
- for (const auto &BCFile : BCLibs) {
- // Use -mlink-builtin-bitcode for internalized libraries and
- // -mlink-bitcode-file for non-internalized libraries.
- CC1Args.push_back(BCFile.ShouldInternalize ? "-mlink-builtin-bitcode"
- : "-mlink-bitcode-file");
- CC1Args.push_back(DriverArgs.MakeArgString(BCFile.Path));
- }
-
- // Link device libraries after middle-end optimization passes so their
- // symbols are preserved and not eliminated by the optimizer.
- 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");
- }
+ for (const auto &BCFile :
+ getDeviceLibs(DriverArgs, BA, DeviceOffloadingKind)) {
+ CC1Args.push_back(BCFile.ShouldInternalize ? "-mlink-builtin-bitcode"
+ : "-mlink-bitcode-file");
+ CC1Args.push_back(DriverArgs.MakeArgString(BCFile.Path));
}
}
@@ -235,6 +215,8 @@ llvm::SmallVector<ToolChain::BitCodeLibraryInfo, 12>
SYCLToolChain::getDeviceLibs(
const llvm::opt::ArgList &DriverArgs, BoundArch /*BA*/,
const Action::OffloadKind /*DeviceOffloadingKind*/) const {
+ if (!getTriple().isSPIROrSPIRV())
+ return {};
if (!DriverArgs.hasFlag(options::OPT_offloadlib, options::OPT_no_offloadlib,
true))
return {};
diff --git a/compiler-rt/lib/builtins/CMakeLists.txt b/compiler-rt/lib/builtins/CMakeLists.txt
index ea21c36d3d31f..99593352b0f32 100644
--- a/compiler-rt/lib/builtins/CMakeLists.txt
+++ b/compiler-rt/lib/builtins/CMakeLists.txt
@@ -1147,6 +1147,28 @@ else ()
get_compiler_rt_output_dir(${arch} BUILTIN_LIB_OUTPUT_DIR)
set_output_name(BUILTIN_LIB_OUTPUT_NAME clang_rt.builtins ${arch})
file(WRITE "${BUILTIN_LIB_OUTPUT_DIR}/${BUILTIN_LIB_OUTPUT_NAME}.sources.txt" "${${arch}_SOURCES}")
+
+ # For spirv64, produce a combined bitcode file alongside the static archive.
+ # -mlink-builtin-bitcode expects raw LLVM IR and cannot unpack a static archive,
+ # so we use llvm-link to merge the archive members into a single .bc file.
+ if("${arch}" STREQUAL "spirv64")
+ set(SPIRV64_BC_OUTPUT "${BUILTIN_LIB_OUTPUT_DIR}/${BUILTIN_LIB_OUTPUT_NAME}.bc")
+ add_custom_command(
+ OUTPUT "${SPIRV64_BC_OUTPUT}"
+ COMMAND "${LLVM_TOOLS_BINARY_DIR}/llvm-link"
+ "$<TARGET_FILE:clang_rt.builtins-spirv64>"
+ -o "${SPIRV64_BC_OUTPUT}"
+ DEPENDS clang_rt.builtins-spirv64
+ COMMENT "Linking ${BUILTIN_LIB_OUTPUT_NAME}.bc")
+ add_custom_target(clang_rt.builtins-spirv64-bc ALL
+ DEPENDS "${SPIRV64_BC_OUTPUT}")
+ add_dependencies(builtins clang_rt.builtins-spirv64-bc)
+ get_compiler_rt_install_dir(${arch} BUILTIN_INSTALL_DIR)
+ install(FILES "${SPIRV64_BC_OUTPUT}"
+ DESTINATION "${BUILTIN_INSTALL_DIR}"
+ COMPONENT builtins)
+ endif()
+
cmake_pop_check_state()
endif ()
endforeach ()
>From 617f7aa00f5a10fc830347c8ab10faed2b2d7630 Mon Sep 17 00:00:00 2001
From: srividya sundaram <srividya.sundaram at intel.com>
Date: Tue, 21 Jul 2026 17:09:15 -0700
Subject: [PATCH 14/18] Update the .bc name to align with .a name.
---
compiler-rt/lib/builtins/CMakeLists.txt | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/compiler-rt/lib/builtins/CMakeLists.txt b/compiler-rt/lib/builtins/CMakeLists.txt
index 99593352b0f32..17674884544b9 100644
--- a/compiler-rt/lib/builtins/CMakeLists.txt
+++ b/compiler-rt/lib/builtins/CMakeLists.txt
@@ -1152,14 +1152,14 @@ else ()
# -mlink-builtin-bitcode expects raw LLVM IR and cannot unpack a static archive,
# so we use llvm-link to merge the archive members into a single .bc file.
if("${arch}" STREQUAL "spirv64")
- set(SPIRV64_BC_OUTPUT "${BUILTIN_LIB_OUTPUT_DIR}/${BUILTIN_LIB_OUTPUT_NAME}.bc")
+ set(SPIRV64_BC_OUTPUT "${BUILTIN_LIB_OUTPUT_DIR}/lib${BUILTIN_LIB_OUTPUT_NAME}.bc")
add_custom_command(
OUTPUT "${SPIRV64_BC_OUTPUT}"
COMMAND "${LLVM_TOOLS_BINARY_DIR}/llvm-link"
"$<TARGET_FILE:clang_rt.builtins-spirv64>"
-o "${SPIRV64_BC_OUTPUT}"
DEPENDS clang_rt.builtins-spirv64
- COMMENT "Linking ${BUILTIN_LIB_OUTPUT_NAME}.bc")
+ COMMENT "Linking lib${BUILTIN_LIB_OUTPUT_NAME}.bc")
add_custom_target(clang_rt.builtins-spirv64-bc ALL
DEPENDS "${SPIRV64_BC_OUTPUT}")
add_dependencies(builtins clang_rt.builtins-spirv64-bc)
>From 2e44ee47c8118ad4adc51deebfde2b03c2657c88 Mon Sep 17 00:00:00 2001
From: srividya sundaram <srividya.sundaram at intel.com>
Date: Wed, 22 Jul 2026 14:06:46 -0700
Subject: [PATCH 15/18] [Driver][SYCL] Link libclang_rt.builtins.bc for spirv64
at compile time
Wire up SYCLToolChain::getDeviceLibs() to locate and pass
libclang_rt.builtins.bc via -mlink-builtin-bitcode for SPIR-V targets,
following the libclc pattern. Emit a specific diagnostic if the file is
missing from the clang resource directory.
---
.../clang/Basic/DiagnosticDriverKinds.td | 5 +++++
clang/lib/Driver/ToolChains/SYCL.cpp | 13 ++++++++++---
.../libclang_rt.builtins.bc | 0
clang/test/Driver/sycl-device-lib-spirv64.cpp | 18 ++++++++++++++++++
clang/test/Driver/sycl-offload-jit-unix.cpp | 9 ++++++---
5 files changed, 39 insertions(+), 6 deletions(-)
create mode 100644 clang/test/Driver/Inputs/spirv64-sycl/lib/spirv64-unknown-unknown/libclang_rt.builtins.bc
create mode 100644 clang/test/Driver/sycl-device-lib-spirv64.cpp
diff --git a/clang/include/clang/Basic/DiagnosticDriverKinds.td b/clang/include/clang/Basic/DiagnosticDriverKinds.td
index ae3eecc60fc78..eeefc838bda1d 100644
--- a/clang/include/clang/Basic/DiagnosticDriverKinds.td
+++ b/clang/include/clang/Basic/DiagnosticDriverKinds.td
@@ -441,6 +441,11 @@ def warn_drv_fraw_string_literals_in_cxx11 : Warning<
def err_drv_libclc_not_found : Error<"no libclc library '%0' found in the clang resource directory">;
+def err_drv_no_compiler_rt_builtins_bc : Error<
+ "no compiler-rt builtins bitcode library '%0' found in the clang resource "
+ "directory; build compiler-rt with SPIR-V support or pass '--no-offloadlib' "
+ "to compile without it">;
+
def err_drv_invalid_malign_branch_EQ : Error<
"invalid argument '%0' to -malign-branch=; each element must be one of: %1">;
diff --git a/clang/lib/Driver/ToolChains/SYCL.cpp b/clang/lib/Driver/ToolChains/SYCL.cpp
index c1989c65f64a9..b816aaecf2ae4 100644
--- a/clang/lib/Driver/ToolChains/SYCL.cpp
+++ b/clang/lib/Driver/ToolChains/SYCL.cpp
@@ -7,6 +7,8 @@
//===----------------------------------------------------------------------===//
#include "SYCL.h"
#include "clang/Driver/CommonArgs.h"
+#include "llvm/Support/FileSystem.h"
+#include "llvm/Support/Path.h"
#include "llvm/Support/VirtualFileSystem.h"
using namespace clang::driver;
@@ -221,7 +223,12 @@ SYCLToolChain::getDeviceLibs(
true))
return {};
- // TODO: Link libclang_rt.builtins for spirv64 once the mechanism for
- // consuming the compiler-rt static archive at compile time is settled.
- return {};
+ SmallString<128> BCPath(getDriver().ResourceDir);
+ llvm::sys::path::append(BCPath, "lib", getTriple().str(),
+ "libclang_rt.builtins.bc");
+ if (!llvm::sys::fs::exists(BCPath)) {
+ getDriver().Diag(clang::diag::err_drv_no_compiler_rt_builtins_bc) << BCPath;
+ return {};
+ }
+ return {{std::string(BCPath), /*ShouldInternalize=*/true}};
}
diff --git a/clang/test/Driver/Inputs/spirv64-sycl/lib/spirv64-unknown-unknown/libclang_rt.builtins.bc b/clang/test/Driver/Inputs/spirv64-sycl/lib/spirv64-unknown-unknown/libclang_rt.builtins.bc
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/clang/test/Driver/sycl-device-lib-spirv64.cpp b/clang/test/Driver/sycl-device-lib-spirv64.cpp
new file mode 100644
index 0000000000000..b89871a65153b
--- /dev/null
+++ b/clang/test/Driver/sycl-device-lib-spirv64.cpp
@@ -0,0 +1,18 @@
+// Tests that the SYCL toolchain links libclang_rt.builtins.bc for spirv64
+// via -mlink-builtin-bitcode, and that --no-offloadlib suppresses it.
+
+// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fsycl \
+// RUN: -resource-dir=%S/Inputs/spirv64-sycl %s 2>&1 \
+// RUN: | FileCheck %s --check-prefix=CHECK-BUILTIN-BC
+// CHECK-BUILTIN-BC: "-cc1" "-triple" "spirv64-unknown-unknown"{{.*}}"-mlink-builtin-bitcode" "{{.*}}spirv64-unknown-unknown{{/|\\}}libclang_rt.builtins.bc"
+
+// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fsycl --no-offloadlib \
+// RUN: -resource-dir=%S/Inputs/spirv64-sycl %s 2>&1 \
+// RUN: | FileCheck %s --check-prefix=CHECK-NO-OFFLOADLIB
+// CHECK-NO-OFFLOADLIB: "-cc1" "-triple" "spirv64-unknown-unknown"
+// CHECK-NO-OFFLOADLIB-NOT: "-mlink-builtin-bitcode"
+
+// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \
+// RUN: -resource-dir=%T/nonexistent %s 2>&1 \
+// RUN: | FileCheck %s --check-prefix=CHECK-MISSING
+// CHECK-MISSING: error: no compiler-rt builtins bitcode library '{{.*}}libclang_rt.builtins.bc' found in the clang resource directory
diff --git a/clang/test/Driver/sycl-offload-jit-unix.cpp b/clang/test/Driver/sycl-offload-jit-unix.cpp
index 34812576f7874..c6d78a189ac56 100644
--- a/clang/test/Driver/sycl-offload-jit-unix.cpp
+++ b/clang/test/Driver/sycl-offload-jit-unix.cpp
@@ -10,7 +10,8 @@
// RUN: rm -rf %t && mkdir -p %t/bin %t/lib/x86_64-unknown-linux-gnu
// RUN: touch %t/lib/x86_64-unknown-linux-gnu/libLLVMSYCL.so
// 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: %t/bin/clang -### -no-canonical-prefixes --target=x86_64-unknown-linux-gnu -fsycl \
+// RUN: -resource-dir=%S/Inputs/spirv64-sycl %s 2>&1 \
// RUN: | FileCheck -check-prefixes=CHECK-LSYCL,CHECK-SYCL-HEADERS-HOST,CHECK-SYCL-HEADERS-DEVICE %s
// CHECK-SYCL-HEADERS-DEVICE: "-fsycl-is-device"{{.*}} "-internal-isystem" "{{.*}}bin{{[/\\]+}}..{{[/\\]+}}include"
// CHECK-SYCL-HEADERS-HOST: "-fsycl-is-host"{{.*}} "-internal-isystem" "{{.*}}bin{{[/\\]+}}..{{[/\\]+}}include"
@@ -20,7 +21,8 @@
// RUN: rm -rf %t && mkdir -p %t/bin %t/lib
// RUN: touch %t/lib/libLLVMSYCL.so
// 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: %t/bin/clang -### -no-canonical-prefixes --target=x86_64-unknown-linux-gnu -fsycl \
+// RUN: -resource-dir=%S/Inputs/spirv64-sycl %s 2>&1 \
// RUN: | FileCheck -check-prefix=CHECK-LSYCL-FLAT %s
// CHECK-LSYCL-FLAT: clang-linker-wrapper{{.*}} "{{.*}}bin{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}libLLVMSYCL.so"
@@ -28,6 +30,7 @@
// RUN: rm -rf %t && mkdir -p %t/bin %t/lib/x86_64-unknown-linux-gnu
// RUN: touch %t/lib/x86_64-unknown-linux-gnu/libLLVMSYCL.so
// RUN: ln -s %clang %t/bin/clang
-// RUN: %t/bin/clang -### -no-canonical-prefixes --target=x86_64-unknown-linux-gnu -fsycl -nolibsycl %s 2>&1 \
+// RUN: %t/bin/clang -### -no-canonical-prefixes --target=x86_64-unknown-linux-gnu -fsycl -nolibsycl \
+// RUN: -resource-dir=%S/Inputs/spirv64-sycl %s 2>&1 \
// RUN: | FileCheck -check-prefix=CHECK-NOLIBSYCL %s
// CHECK-NOLIBSYCL-NOT: libLLVMSYCL.so
>From 1b4b6bfb4d9d068f65d34072521da789b9ad9760 Mon Sep 17 00:00:00 2001
From: srividya sundaram <srividya.sundaram at intel.com>
Date: Thu, 23 Jul 2026 14:36:51 -0700
Subject: [PATCH 16/18] Add -resource-dir pointing to Inputs/spirv64-sycl in
all -fsycl RUN lines so tests do not probe the installed clang resource
directory on CI runners.
---
clang/test/Driver/sycl-offload-jit-xarch.cpp | 6 ++--
clang/test/Driver/sycl-offload-jit.cpp | 30 +++++++++-------
.../Driver/sycl-print-internal-defines.cpp | 4 +--
clang/test/Driver/sycl-std-default.cpp | 8 ++---
clang/test/Driver/sycl-windows.cpp | 34 ++++++++++++-------
clang/test/Driver/sycl.cpp | 28 +++++++--------
6 files changed, 64 insertions(+), 46 deletions(-)
diff --git a/clang/test/Driver/sycl-offload-jit-xarch.cpp b/clang/test/Driver/sycl-offload-jit-xarch.cpp
index 53af2b16a33f1..9c5fe394c7130 100644
--- a/clang/test/Driver/sycl-offload-jit-xarch.cpp
+++ b/clang/test/Driver/sycl-offload-jit-xarch.cpp
@@ -2,12 +2,14 @@
// 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 -resource-dir %S/Inputs/spirv64-sycl \
+// RUN: --offload-targets=spirv64-unknown-unknown -Xarch_spirv64 -O3 -### %s 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 -resource-dir %S/Inputs/spirv64-sycl \
+// RUN: --offload-targets=spirv64-unknown-unknown -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 c8eff1a4dd28f..c1be938ba8fc4 100644
--- a/clang/test/Driver/sycl-offload-jit.cpp
+++ b/clang/test/Driver/sycl-offload-jit.cpp
@@ -21,7 +21,8 @@
/// 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 -resource-dir %S/Inputs/spirv64-sycl \
+// RUN: -c --target=x86_64-unknown-linux-gnu %s 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,42 +37,46 @@
/// 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 -resource-dir %S/Inputs/spirv64-sycl -c %s 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 -resource-dir %S/Inputs/spirv64-sycl -fsycl-device-only %s 2>&1 \
// RUN: | FileCheck -check-prefix=CHK-FSYCL-IS-DEVICE %s
-// RUN: %clang_cl -### -fsycl -c -- %s 2>&1 \
+// RUN: %clang_cl -### -fsycl -resource-dir %S/Inputs/spirv64-sycl -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 -resource-dir %S/Inputs/spirv64-sycl -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 that --allow-partial-linkage and --create-library are not passed to
// clang-linker-wrapper for SYCL (they are spirv-link flags, not clang-sycl-linker flags).
-// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fsycl %s 2>&1 \
+// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fsycl -resource-dir %S/Inputs/spirv64-sycl %s 2>&1 \
// RUN: | FileCheck -check-prefix=CHECK-NO-SPIRVLINK-FLAGS %s
// CHECK-NO-SPIRVLINK-FLAGS-NOT: --device-linker=spirv64-unknown-unknown=--allow-partial-linkage
// CHECK-NO-SPIRVLINK-FLAGS-NOT: --device-linker=spirv64-unknown-unknown=--create-library
/// Check -fsycl-device-image-split= is forwarded to clang-sycl-linker as the
/// corresponding --module-split-mode= value.
-// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fsycl -fsycl-device-image-split=kernel %s 2>&1 \
+// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fsycl -resource-dir %S/Inputs/spirv64-sycl \
+// RUN: -fsycl-device-image-split=kernel %s 2>&1 \
// RUN: | FileCheck -check-prefix=CHK-SPLIT-KERNEL %s
// CHK-SPLIT-KERNEL: clang-linker-wrapper{{.*}}"--device-linker=spirv64-unknown-unknown=--module-split-mode=kernel"
-// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fsycl -fsycl-device-image-split=translation_unit %s 2>&1 \
+// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fsycl -resource-dir %S/Inputs/spirv64-sycl \
+// RUN: -fsycl-device-image-split=translation_unit %s 2>&1 \
// RUN: | FileCheck -check-prefix=CHK-SPLIT-TU %s
// CHK-SPLIT-TU: clang-linker-wrapper{{.*}}"--device-linker=spirv64-unknown-unknown=--module-split-mode=translation_unit"
-// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fsycl -fsycl-device-image-split=link_unit %s 2>&1 \
+// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fsycl -resource-dir %S/Inputs/spirv64-sycl \
+// RUN: -fsycl-device-image-split=link_unit %s 2>&1 \
// RUN: | FileCheck -check-prefix=CHK-SPLIT-LU %s
// CHK-SPLIT-LU: clang-linker-wrapper{{.*}}"--device-linker=spirv64-unknown-unknown=--module-split-mode=link_unit"
/// Check the bare -fsycl-device-image-split flag aliases to 'translation_unit'.
-// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fsycl -fsycl-device-image-split %s 2>&1 \
+// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fsycl -resource-dir %S/Inputs/spirv64-sycl \
+// RUN: -fsycl-device-image-split %s 2>&1 \
// RUN: | FileCheck -check-prefix=CHK-SPLIT-TU %s
/// Check that without -fsycl-device-image-split, no --module-split-mode= is passed.
-// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fsycl %s 2>&1 \
+// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fsycl -resource-dir %S/Inputs/spirv64-sycl %s 2>&1 \
// RUN: | FileCheck -check-prefix=CHK-NO-SPLIT %s
// CHK-NO-SPLIT-NOT: --module-split-mode=
@@ -81,7 +86,8 @@
// CHK-SPLIT-INVALID: error: invalid value 'bogus' in '-fsycl-device-image-split='
/// Check -fsycl-device-image-split is unused when not linking (e.g. -c).
-// RUN: %clang -### -c --target=x86_64-unknown-linux-gnu -fsycl -fsycl-device-image-split=kernel %s 2>&1 \
+// RUN: %clang -### -c --target=x86_64-unknown-linux-gnu -fsycl -resource-dir %S/Inputs/spirv64-sycl \
+// RUN: -fsycl-device-image-split=kernel %s 2>&1 \
// RUN: | FileCheck -check-prefix=CHK-SPLIT-UNUSED %s
// CHK-SPLIT-UNUSED: warning: argument unused during compilation: '-fsycl-device-image-split=kernel'
diff --git a/clang/test/Driver/sycl-print-internal-defines.cpp b/clang/test/Driver/sycl-print-internal-defines.cpp
index 389aaf25608c6..8666e39cf4021 100644
--- a/clang/test/Driver/sycl-print-internal-defines.cpp
+++ b/clang/test/Driver/sycl-print-internal-defines.cpp
@@ -1,8 +1,8 @@
// Test that clang can print defines in SYCL mode.
-// RUN: %clangxx -fsycl -dM -E %s 2>&1 | FileCheck --check-prefix CHECK-PRINT-INTERNAL-DEFINES %s
+// RUN: %clangxx -fsycl -resource-dir %S/Inputs/spirv64-sycl -dM -E %s 2>&1 | FileCheck --check-prefix CHECK-PRINT-INTERNAL-DEFINES %s
// CHECK-PRINT-INTERNAL-DEFINES: #define
// Printing defines also works when input is stdin.
-// RUN: %clangxx -fsycl -dM -E - < /dev/null 2>&1 | FileCheck --check-prefixes=CHECK-PRINT-INTERNAL-DEFINES,CHECK-NO-ERROR %s
+// RUN: %clangxx -fsycl -resource-dir %S/Inputs/spirv64-sycl -dM -E - < /dev/null 2>&1 | FileCheck --check-prefixes=CHECK-PRINT-INTERNAL-DEFINES,CHECK-NO-ERROR %s
// CHECK-NO-ERROR-NOT: error:
diff --git a/clang/test/Driver/sycl-std-default.cpp b/clang/test/Driver/sycl-std-default.cpp
index df377169a3944..8a510a7df98d2 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 -resource-dir %S/Inputs/spirv64-sycl -c %s 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 -resource-dir %S/Inputs/spirv64-sycl -std=c++20 -c %s 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 -resource-dir %S/Inputs/spirv64-sycl -- %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 2>&1 | FileCheck %s --check-prefixes=CHECK-MSVC-OVERRIDE-DEVICE,CHECK-MSVC-OVERRIDE-HOST
+// RUN: %clang_cl --target=x86_64-pc-windows-msvc -### -fsycl -resource-dir %S/Inputs/spirv64-sycl /std:c++20 -- %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"
diff --git a/clang/test/Driver/sycl-windows.cpp b/clang/test/Driver/sycl-windows.cpp
index f07c05e74c3c7..9e108db31d4e3 100644
--- a/clang/test/Driver/sycl-windows.cpp
+++ b/clang/test/Driver/sycl-windows.cpp
@@ -6,7 +6,8 @@
// -libpath: in linker output.
/// Test 1: /MD (explicit) and release library dependency
-// RUN: %clang_cl -### -fsycl /MD --target=x86_64-pc-windows-msvc -- %s 2>&1 \
+// RUN: %clang_cl -### -fsycl -resource-dir %S/Inputs/spirv64-sycl \
+// RUN: /MD --target=x86_64-pc-windows-msvc -- %s 2>&1 \
// RUN: | FileCheck -check-prefix=CHECK-MD %s
// CHECK-MD: "-cc1"
// CHECK-MD: "--dependent-lib=LLVMSYCL"
@@ -24,14 +25,16 @@
// CHECK-MTD-ERROR: error: SYCL requires dynamic C++ runtime
/// Test 4: /MD uses release library
-// RUN: %clang_cl -### -fsycl /MD --target=x86_64-pc-windows-msvc -- %s 2>&1 \
+// RUN: %clang_cl -### -fsycl -resource-dir %S/Inputs/spirv64-sycl \
+// RUN: /MD --target=x86_64-pc-windows-msvc -- %s 2>&1 \
// RUN: | FileCheck -check-prefix=CHECK-RELEASE %s
// CHECK-RELEASE: "-cc1"
// CHECK-RELEASE: "--dependent-lib=LLVMSYCL"
// CHECK-RELEASE-NOT: LLVMSYCLd
/// Test 5: /MDd uses debug library
-// RUN: %clang_cl -### -fsycl /MDd --target=x86_64-pc-windows-msvc -- %s 2>&1 \
+// RUN: %clang_cl -### -fsycl -resource-dir %S/Inputs/spirv64-sycl \
+// RUN: /MDd --target=x86_64-pc-windows-msvc -- %s 2>&1 \
// RUN: | FileCheck -check-prefix=CHECK-DEBUG %s
// CHECK-DEBUG: "-cc1"
// CHECK-DEBUG: "--dependent-lib=LLVMSYCLd"
@@ -44,14 +47,15 @@
// CHECK-STATIC-ERROR: error: SYCL requires dynamic C++ runtime
/// Test 7: -fms-runtime-lib=dll_dbg uses debug library
-// RUN: %clang_cl -### -fsycl -fms-runtime-lib=dll_dbg \
-// RUN: --target=x86_64-pc-windows-msvc -- %s 2>&1 \
+// RUN: %clang_cl -### -fsycl -resource-dir %S/Inputs/spirv64-sycl \
+// RUN: -fms-runtime-lib=dll_dbg --target=x86_64-pc-windows-msvc -- %s 2>&1 \
// RUN: | FileCheck -check-prefix=CHECK-FLAG-DEBUG %s
// CHECK-FLAG-DEBUG: "-cc1"
// CHECK-FLAG-DEBUG: "--dependent-lib=LLVMSYCLd"
/// Test 8: LNK4078 warning is suppressed
-// RUN: %clang_cl -### -fsycl --target=x86_64-pc-windows-msvc -- %s 2>&1 \
+// RUN: %clang_cl -### -fsycl -resource-dir %S/Inputs/spirv64-sycl \
+// RUN: --target=x86_64-pc-windows-msvc -- %s 2>&1 \
// RUN: | FileCheck -check-prefix=CHECK-IGNORE %s
// CHECK-IGNORE: clang-linker-wrapper"
// CHECK-IGNORE: "/IGNORE:4078"
@@ -64,39 +68,45 @@
// CHECK-NOLIBSYCL-NOT: "--dependent-lib=LLVMSYCL"
/// Test 10: Explicit /MD results in correct library
-// RUN: %clang_cl -### -fsycl /MD --target=x86_64-pc-windows-msvc -- %s 2>&1 \
+// RUN: %clang_cl -### -fsycl -resource-dir %S/Inputs/spirv64-sycl \
+// RUN: /MD --target=x86_64-pc-windows-msvc -- %s 2>&1 \
// RUN: | FileCheck -check-prefix=CHECK-EXPLICIT-MD %s
// CHECK-EXPLICIT-MD: "-cc1"
// CHECK-EXPLICIT-MD: "--dependent-lib=LLVMSYCL"
/// Test 11: Library search path is added at linker stage
-// RUN: %clang_cl -### -fsycl /MD --target=x86_64-pc-windows-msvc -- %s 2>&1 \
+// RUN: %clang_cl -### -fsycl -resource-dir %S/Inputs/spirv64-sycl \
+// RUN: /MD --target=x86_64-pc-windows-msvc -- %s 2>&1 \
// RUN: | FileCheck -check-prefix=CHECK-LIBPATH %s
// CHECK-LIBPATH: clang-linker-wrapper"
// CHECK-LIBPATH: "-libpath:{{.*}}{{[/\\]+}}lib"
/// Test 12: clang (non-clang-cl) with MSVC target uses -defaultlib:
-// RUN: %clang -### -fsycl -fms-runtime-lib=dll --target=x86_64-pc-windows-msvc -- %s 2>&1 \
+// RUN: %clang -### -fsycl -resource-dir %S/Inputs/spirv64-sycl \
+// RUN: -fms-runtime-lib=dll --target=x86_64-pc-windows-msvc -- %s 2>&1 \
// RUN: | FileCheck -check-prefix=CHECK-CLANG-DEFAULTLIB %s
// CHECK-CLANG-DEFAULTLIB: clang-linker-wrapper"
// CHECK-CLANG-DEFAULTLIB: "-libpath:{{.*}}{{[/\\]+}}lib"
// CHECK-CLANG-DEFAULTLIB: "-defaultlib:LLVMSYCL"
/// Test 13: clang with -fms-runtime-lib=dll_dbg uses debug library via -defaultlib:
-// RUN: %clang -### -fsycl -fms-runtime-lib=dll_dbg --target=x86_64-pc-windows-msvc -- %s 2>&1 \
+// RUN: %clang -### -fsycl -resource-dir %S/Inputs/spirv64-sycl \
+// RUN: -fms-runtime-lib=dll_dbg --target=x86_64-pc-windows-msvc -- %s 2>&1 \
// RUN: | FileCheck -check-prefix=CHECK-CLANG-DEBUG %s
// CHECK-CLANG-DEBUG: clang-linker-wrapper"
// CHECK-CLANG-DEBUG: "-defaultlib:LLVMSYCLd"
/// Test 14: Default CRT behavior - release library when no CRT flag specified
-// RUN: %clang -### -fsycl -fms-runtime-lib=dll --target=x86_64-pc-windows-msvc -- %s 2>&1 \
+// RUN: %clang -### -fsycl -resource-dir %S/Inputs/spirv64-sycl \
+// RUN: -fms-runtime-lib=dll --target=x86_64-pc-windows-msvc -- %s 2>&1 \
// RUN: | FileCheck -check-prefix=CHECK-DEFAULT-CRT %s
// CHECK-DEFAULT-CRT: "-cc1"
// CHECK-DEFAULT-CRT: "--dependent-lib=LLVMSYCL"
// CHECK-DEFAULT-CRT-NOT: LLVMSYCLd
/// Test 15: Separate compilation - compile step embeds --dependent-lib in object
-// RUN: %clang -### -fsycl -c -fms-runtime-lib=dll --target=x86_64-pc-windows-msvc -- %s 2>&1 \
+// RUN: %clang -### -fsycl -resource-dir %S/Inputs/spirv64-sycl \
+// RUN: -c -fms-runtime-lib=dll --target=x86_64-pc-windows-msvc -- %s 2>&1 \
// RUN: | FileCheck -check-prefix=CHECK-SEP-COMPILE %s
// CHECK-SEP-COMPILE: "--dependent-lib=LLVMSYCL"
diff --git a/clang/test/Driver/sycl.cpp b/clang/test/Driver/sycl.cpp
index e78b2a7593323..dc13029d0e5f5 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 -resource-dir %S/Inputs/spirv64-sycl -c %s 2>&1 | FileCheck %s --check-prefix=ENABLED
+// RUN: %clang -### -fsycl -resource-dir %S/Inputs/spirv64-sycl %s 2>&1 | FileCheck %s --check-prefix=ENABLED
+// RUN: %clang -### -fsycl -resource-dir %S/Inputs/spirv64-sycl -sycl-std=1.2.1 %s 2>&1 | FileCheck %s --check-prefix=ENABLED
+// RUN: %clang -### -fsycl -resource-dir %S/Inputs/spirv64-sycl -sycl-std=121 %s 2>&1 | FileCheck %s --check-prefix=ENABLED
+// RUN: %clang -### -fsycl -resource-dir %S/Inputs/spirv64-sycl -sycl-std=2017 %s 2>&1 | FileCheck %s --check-prefix=ENABLED
+// RUN: %clang -### -fsycl -resource-dir %S/Inputs/spirv64-sycl -sycl-std=2020 %s 2>&1 | FileCheck %s --check-prefix=ENABLED
+// RUN: %clang -### -fsycl -resource-dir %S/Inputs/spirv64-sycl -sycl-std=sycl-1.2.1 %s 2>&1 | FileCheck %s --check-prefix=ENABLED
+// RUN: %clang -### -fno-sycl -fsycl -resource-dir %S/Inputs/spirv64-sycl %s 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 -resource-dir %S/Inputs/spirv64-sycl %s 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 -resource-dir %S/Inputs/spirv64-sycl -sycl-std=2017 -- %s 2>&1 | FileCheck %s --check-prefix=ENABLED
+// RUN: %clang_cl -### -fsycl -resource-dir %S/Inputs/spirv64-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"
@@ -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 -resource-dir %S/Inputs/spirv64-sycl %s 2>&1 | FileCheck %s --check-prefix=DEFAULT
+// RUN: %clangxx -### -fsycl -resource-dir %S/Inputs/spirv64-sycl %s 2>&1 | FileCheck %s --check-prefix=DEFAULT
+// RUN: %clang_cl -### -fsycl -resource-dir %S/Inputs/spirv64-sycl -- %s 2>&1 | FileCheck %s --check-prefix=DEFAULT
// DEFAULT: "-sycl-std=2020"
>From 8ac2d437b6e58dfc3bd21d0e77e424360330f988 Mon Sep 17 00:00:00 2001
From: srividya sundaram <srividya.sundaram at intel.com>
Date: Thu, 23 Jul 2026 15:43:07 -0700
Subject: [PATCH 17/18] Fix test failures.
---
clang/lib/Driver/ToolChains/SYCL.cpp | 3 +++
clang/test/Driver/sycl-device-lib-spirv64.cpp | 3 ++-
clang/test/Driver/sycl-windows.cpp | 2 +-
clang/test/Driver/sycl.cpp | 2 +-
4 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/clang/lib/Driver/ToolChains/SYCL.cpp b/clang/lib/Driver/ToolChains/SYCL.cpp
index b816aaecf2ae4..0071b4b723869 100644
--- a/clang/lib/Driver/ToolChains/SYCL.cpp
+++ b/clang/lib/Driver/ToolChains/SYCL.cpp
@@ -222,6 +222,9 @@ SYCLToolChain::getDeviceLibs(
if (!DriverArgs.hasFlag(options::OPT_offloadlib, options::OPT_no_offloadlib,
true))
return {};
+ // -nolibsycl suppresses all SYCL library injection including device libs.
+ if (DriverArgs.hasArg(options::OPT_nolibsycl))
+ return {};
SmallString<128> BCPath(getDriver().ResourceDir);
llvm::sys::path::append(BCPath, "lib", getTriple().str(),
diff --git a/clang/test/Driver/sycl-device-lib-spirv64.cpp b/clang/test/Driver/sycl-device-lib-spirv64.cpp
index b89871a65153b..17bdceb585466 100644
--- a/clang/test/Driver/sycl-device-lib-spirv64.cpp
+++ b/clang/test/Driver/sycl-device-lib-spirv64.cpp
@@ -4,7 +4,8 @@
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fsycl \
// RUN: -resource-dir=%S/Inputs/spirv64-sycl %s 2>&1 \
// RUN: | FileCheck %s --check-prefix=CHECK-BUILTIN-BC
-// CHECK-BUILTIN-BC: "-cc1" "-triple" "spirv64-unknown-unknown"{{.*}}"-mlink-builtin-bitcode" "{{.*}}spirv64-unknown-unknown{{/|\\}}libclang_rt.builtins.bc"
+// CHECK-BUILTIN-BC: "-triple" "spirv64-unknown-unknown"
+// CHECK-BUILTIN-BC: "-mlink-builtin-bitcode" "{{.*}}lib{{[/\\]+}}spirv64-unknown-unknown{{[/\\]+}}libclang_rt.builtins.bc"
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fsycl --no-offloadlib \
// RUN: -resource-dir=%S/Inputs/spirv64-sycl %s 2>&1 \
diff --git a/clang/test/Driver/sycl-windows.cpp b/clang/test/Driver/sycl-windows.cpp
index 9e108db31d4e3..707fede119e67 100644
--- a/clang/test/Driver/sycl-windows.cpp
+++ b/clang/test/Driver/sycl-windows.cpp
@@ -61,7 +61,7 @@
// CHECK-IGNORE: "/IGNORE:4078"
/// Test 9: -nolibsycl skips library dependency and CRT check
-// RUN: %clang_cl -### -fsycl -nolibsycl /MT \
+// RUN: %clang_cl -### -fsycl -nolibsycl -resource-dir %S/Inputs/spirv64-sycl /MT \
// RUN: --target=x86_64-pc-windows-msvc -- %s 2>&1 \
// RUN: | FileCheck -check-prefix=CHECK-NOLIBSYCL %s
// CHECK-NOLIBSYCL-NOT: error:
diff --git a/clang/test/Driver/sycl.cpp b/clang/test/Driver/sycl.cpp
index dc13029d0e5f5..179b528870a6c 100644
--- a/clang/test/Driver/sycl.cpp
+++ b/clang/test/Driver/sycl.cpp
@@ -32,5 +32,5 @@
// CHECK-NO-OFFLOADLIB-NOT: warning: unknown argument ignored in clang-cl: '--no-offloadlib'
// Verify that -fsycl with a C input is an error (enforced in the frontend).
-// RUN: not %clang -fsycl -x c %s 2>&1 | FileCheck %s --check-prefix=CHECK-C-INPUT
+// RUN: not %clang -fsycl -resource-dir %S/Inputs/spirv64-sycl -x c %s 2>&1 | FileCheck %s --check-prefix=CHECK-C-INPUT
// CHECK-C-INPUT: error: invalid argument 'C' not allowed with '-fsycl'
>From 0701f6d6867f7a58f11089a5fcf5757ac4c9bb9f Mon Sep 17 00:00:00 2001
From: srividya sundaram <srividya.sundaram at intel.com>
Date: Fri, 24 Jul 2026 13:58:25 -0700
Subject: [PATCH 18/18] Update CMAKE file.
---
compiler-rt/lib/builtins/CMakeLists.txt | 40 +++++++++++++++----------
1 file changed, 25 insertions(+), 15 deletions(-)
diff --git a/compiler-rt/lib/builtins/CMakeLists.txt b/compiler-rt/lib/builtins/CMakeLists.txt
index 17674884544b9..ff0bc7c66d276 100644
--- a/compiler-rt/lib/builtins/CMakeLists.txt
+++ b/compiler-rt/lib/builtins/CMakeLists.txt
@@ -1152,21 +1152,31 @@ else ()
# -mlink-builtin-bitcode expects raw LLVM IR and cannot unpack a static archive,
# so we use llvm-link to merge the archive members into a single .bc file.
if("${arch}" STREQUAL "spirv64")
- set(SPIRV64_BC_OUTPUT "${BUILTIN_LIB_OUTPUT_DIR}/lib${BUILTIN_LIB_OUTPUT_NAME}.bc")
- add_custom_command(
- OUTPUT "${SPIRV64_BC_OUTPUT}"
- COMMAND "${LLVM_TOOLS_BINARY_DIR}/llvm-link"
- "$<TARGET_FILE:clang_rt.builtins-spirv64>"
- -o "${SPIRV64_BC_OUTPUT}"
- DEPENDS clang_rt.builtins-spirv64
- COMMENT "Linking lib${BUILTIN_LIB_OUTPUT_NAME}.bc")
- add_custom_target(clang_rt.builtins-spirv64-bc ALL
- DEPENDS "${SPIRV64_BC_OUTPUT}")
- add_dependencies(builtins clang_rt.builtins-spirv64-bc)
- get_compiler_rt_install_dir(${arch} BUILTIN_INSTALL_DIR)
- install(FILES "${SPIRV64_BC_OUTPUT}"
- DESTINATION "${BUILTIN_INSTALL_DIR}"
- COMPONENT builtins)
+ find_program(LLVM_LINK llvm-link
+ PATHS ${LLVM_TOOLS_BINARY_DIR}
+ NO_DEFAULT_PATH)
+ if(LLVM_LINK)
+ set(SPIRV64_BC_OUTPUT "${BUILTIN_LIB_OUTPUT_DIR}/lib${BUILTIN_LIB_OUTPUT_NAME}.bc")
+ add_custom_command(
+ OUTPUT "${SPIRV64_BC_OUTPUT}"
+ COMMAND "${LLVM_LINK}"
+ "$<TARGET_FILE:clang_rt.builtins-spirv64>"
+ -o "${SPIRV64_BC_OUTPUT}"
+ DEPENDS clang_rt.builtins-spirv64
+ COMMENT "Linking lib${BUILTIN_LIB_OUTPUT_NAME}.bc"
+ VERBATIM)
+ add_custom_target(clang_rt.builtins-spirv64-bc ALL
+ DEPENDS "${SPIRV64_BC_OUTPUT}")
+ add_dependencies(builtins clang_rt.builtins-spirv64-bc)
+ get_compiler_rt_install_dir(${arch} BUILTIN_INSTALL_DIR)
+ install(FILES "${SPIRV64_BC_OUTPUT}"
+ DESTINATION "${BUILTIN_INSTALL_DIR}"
+ COMPONENT builtins)
+ else()
+ message(WARNING
+ "llvm-link not found (LLVM_TOOLS_BINARY_DIR='${LLVM_TOOLS_BINARY_DIR}'); "
+ "skipping libclang_rt.builtins.bc for spirv64")
+ endif()
endif()
cmake_pop_check_state()
More information about the cfe-commits
mailing list