https://github.com/srividya-sundaram updated https://github.com/llvm/llvm-project/pull/196656
>From 685b66f1df0f4b62d62cd867f574eb2e39f6c715 Mon Sep 17 00:00:00 2001 From: srividya sundaram <[email protected]> Date: Fri, 8 May 2026 15:23:44 -0700 Subject: [PATCH 1/3] [Driver][SYCL] Add compile-time device library linking for SPIR-V targets This patch implements compile-time device library linking for SYCL offloading to SPIR-V targets. --- .../clang/Basic/DiagnosticDriverKinds.td | 4 + .../clang/Driver/SyclInstallationDetector.h | 3 + clang/lib/Driver/ToolChains/SYCL.cpp | 119 ++++++++++++++++++ clang/lib/Driver/ToolChains/SYCL.h | 10 ++ .../Driver/Inputs/SYCL/lib/libsycl-cmath.bc | Bin 0 -> 1632 bytes .../Driver/Inputs/SYCL/lib/libsycl-complex.bc | Bin 0 -> 1632 bytes .../Driver/Inputs/SYCL/lib/libsycl-crt.bc | Bin 0 -> 1624 bytes .../Driver/sycl-device-library-linking.cpp | 22 ++++ 8 files changed, 158 insertions(+) create mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-cmath.bc create mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-complex.bc create mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-crt.bc create mode 100644 clang/test/Driver/sycl-device-library-linking.cpp diff --git a/clang/include/clang/Basic/DiagnosticDriverKinds.td b/clang/include/clang/Basic/DiagnosticDriverKinds.td index 114ee475c371f..7272ad6ed5ccc 100644 --- a/clang/include/clang/Basic/DiagnosticDriverKinds.td +++ b/clang/include/clang/Basic/DiagnosticDriverKinds.td @@ -93,6 +93,10 @@ def err_drv_hipspv_no_hip_path : Error< "'--hip-path' must be specified when offloading to SPIR-V unless '-nogpuinc' " "is given">; +def err_drv_no_sycl_device_lib : Error< + "cannot find expected SYCL device library '%0'; pass '--no-offloadlib' to " + "build without the SYCL device libraries">; + def err_drv_no_spv_tools : Error<"cannot find SPIR-V Tools binary '%0', which " "is required for SPIR-V compilation. " "It can be obtained from your system package " diff --git a/clang/include/clang/Driver/SyclInstallationDetector.h b/clang/include/clang/Driver/SyclInstallationDetector.h index 070b543e50149..474a197696e7e 100644 --- a/clang/include/clang/Driver/SyclInstallationDetector.h +++ b/clang/include/clang/Driver/SyclInstallationDetector.h @@ -25,6 +25,9 @@ class SYCLInstallationDetector { // Return the filesystem path to the detected SYCL runtime library. StringRef getSYCLRTLibPath() const { return SYCLRTLibPath; } + // Get candidate paths where SYCL device libraries may be located. + void getSYCLDeviceLibPath(SmallVectorImpl<SmallString<128>> &LibPaths) const; + private: const Driver &D; SmallString<0> SYCLRTLibPath; diff --git a/clang/lib/Driver/ToolChains/SYCL.cpp b/clang/lib/Driver/ToolChains/SYCL.cpp index 55a697df5081e..7cf9075ee656f 100644 --- a/clang/lib/Driver/ToolChains/SYCL.cpp +++ b/clang/lib/Driver/ToolChains/SYCL.cpp @@ -58,6 +58,25 @@ void SYCLInstallationDetector::addSYCLIncludeArgs( CC1Args.push_back(DriverArgs.MakeArgString(IncludePath)); } +void SYCLInstallationDetector::getSYCLDeviceLibPath( + SmallVectorImpl<SmallString<128>> &LibPaths) const { + // Device libraries can be located in: + // 1. Sysroot lib/ directory (for testing with --sysroot) + // 2. Driver lib/ directory (for normal installation) + + // If a sysroot is specified, check there first + if (!D.SysRoot.empty()) { + SmallString<128> SysRootLibPath(D.SysRoot); + llvm::sys::path::append(SysRootLibPath, "lib"); + LibPaths.push_back(SysRootLibPath); + } + + // Also check relative to the driver directory + SmallString<128> DriverLibPath(D.Dir); + llvm::sys::path::append(DriverLibPath, "..", "lib"); + LibPaths.push_back(DriverLibPath); +} + // Unsupported options for SYCL device compilation. static ArrayRef<options::ID> getUnsupportedOpts() { static constexpr options::ID UnsupportedOpts[] = { @@ -106,6 +125,36 @@ void SYCLToolChain::addClangTargetOptions( const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, Action::OffloadKind DeviceOffloadingKind) const { HostTC.addClangTargetOptions(DriverArgs, CC1Args, DeviceOffloadingKind); + + // Link SYCL device libraries at compile time for SPIR/SPIRV targets. + // The new offloading driver is the default in upstream LLVM, so we always + // perform compile-time linking for SPIR/SPIRV targets. + // Other targets (like NVPTX, AMD) would link at link time. + if (getTriple().isSPIROrSPIRV()) { + // Get the device libraries for this offloading kind. + llvm::SmallVector<BitCodeLibraryInfo, 12> BCLibs = + getDeviceLibs(DriverArgs, DeviceOffloadingKind); + + // Add each device library with the appropriate linking flag. + for (const auto &BCFile : BCLibs) { + // Use -mlink-builtin-bitcode for internalized libraries (standard libs) + // Use -mlink-bitcode-file for non-internalized libraries (e.g., + // sanitizers) + CC1Args.push_back(BCFile.ShouldInternalize ? "-mlink-builtin-bitcode" + : "-mlink-bitcode-file"); + CC1Args.push_back(DriverArgs.MakeArgString(BCFile.Path)); + } + + // If we linked any device libraries, add the flag to link them after + // the middle-end optimization passes. This ensures that device library + // functions are available after user code has been instrumented. + if (!BCLibs.empty()) { + CC1Args.push_back("-mlink-builtin-bitcode-postopt"); + // Suppress linker warnings that may occur due to library/target + // mismatches + CC1Args.push_back("-Wno-linker-warnings"); + } + } } llvm::opt::DerivedArgList * @@ -180,3 +229,73 @@ void SYCLToolChain::AddClangCXXStdlibIncludeArgs(const ArgList &Args, ArgStringList &CC1Args) const { HostTC.AddClangCXXStdlibIncludeArgs(Args, CC1Args); } + +SmallVector<ToolChain::BitCodeLibraryInfo, 8> +SYCLToolChain::getDeviceLibNames(const Driver &D, + const llvm::opt::ArgList &Args, + const llvm::Triple &TargetTriple) const { + SmallVector<ToolChain::BitCodeLibraryInfo, 8> LibraryList; + + // Check if device libraries should be linked. + bool NoOffloadLib = + !Args.hasFlag(options::OPT_offloadlib, options::OPT_no_offloadlib, true); + + if (NoOffloadLib) + return LibraryList; + + // Helper to add libraries with internalization flag. + // By default, standard libraries are internalized (linked with only-needed). + auto addLibToList = [&LibraryList](StringRef LibName, + bool Internalize = true) { + BitCodeLibraryInfo BitCodeLibrary(LibName, Internalize); + LibraryList.emplace_back(BitCodeLibrary); + }; + + // For now, support only SPIR/SPIRV targets with a minimal set of libraries. + // This is a starting point that can be expanded later. + if (TargetTriple.isSPIROrSPIRV()) { + // Core SYCL device libraries - start with the essential ones + addLibToList("libsycl-crt.bc"); + addLibToList("libsycl-complex.bc"); + addLibToList("libsycl-cmath.bc"); + } + + return LibraryList; +} + +llvm::SmallVector<ToolChain::BitCodeLibraryInfo, 12> +SYCLToolChain::getDeviceLibs( + const llvm::opt::ArgList &DriverArgs, + const Action::OffloadKind DeviceOffloadingKind) const { + llvm::SmallVector<ToolChain::BitCodeLibraryInfo, 12> BCLibs; + + // Get candidate paths where device libraries may be located. + SmallVector<SmallString<128>, 4> LibraryPaths; + SYCLInstallation.getSYCLDeviceLibPath(LibraryPaths); + + // Get the list of device library names for this target. + SmallVector<BitCodeLibraryInfo, 8> DeviceLibs = + getDeviceLibNames(getDriver(), DriverArgs, getTriple()); + + // Resolve full paths and validate that each library exists. + for (const auto &DeviceLib : DeviceLibs) { + bool DeviceLibFound = false; + for (const auto &LibraryPath : LibraryPaths) { + SmallString<128> FullLibName(LibraryPath); + llvm::sys::path::append(FullLibName, DeviceLib.Path); + if (llvm::sys::fs::exists(FullLibName)) { + BitCodeLibraryInfo BitCodeLibrary(FullLibName, + DeviceLib.ShouldInternalize); + BCLibs.emplace_back(BitCodeLibrary); + DeviceLibFound = true; + break; + } + } + // If a device library is not found, emit an error with a helpful message. + // The user can pass --no-offloadlib to build without device libraries. + if (!DeviceLibFound) + getDriver().Diag(diag::err_drv_no_sycl_device_lib) << DeviceLib.Path; + } + + return BCLibs; +} diff --git a/clang/lib/Driver/ToolChains/SYCL.h b/clang/lib/Driver/ToolChains/SYCL.h index be4ba47cb3d52..c31a043eed356 100644 --- a/clang/lib/Driver/ToolChains/SYCL.h +++ b/clang/lib/Driver/ToolChains/SYCL.h @@ -55,6 +55,16 @@ class LLVM_LIBRARY_VISIBILITY SYCLToolChain : public ToolChain { const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CC1Args) const override; + // Get the list of SYCL device library names for the given triple. + SmallVector<ToolChain::BitCodeLibraryInfo, 8> + getDeviceLibNames(const Driver &D, const llvm::opt::ArgList &Args, + const llvm::Triple &TargetTriple) const; + + // Override to provide SYCL device libraries. + llvm::SmallVector<BitCodeLibraryInfo, 12> + getDeviceLibs(const llvm::opt::ArgList &Args, + const Action::OffloadKind DeviceOffloadingKind) const override; + private: const ToolChain &HostTC; SYCLInstallationDetector SYCLInstallation; diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-cmath.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-cmath.bc new file mode 100644 index 0000000000000000000000000000000000000000..e8f235db18e8af0536386c3abc254010a68685ab GIT binary patch literal 1632 zcmXX{e@q)y9Dn7Y*KOrpAt-daJA0#BnmFgJbkK5bLfZ|yh_S={fkv~oV;xgm3REae zmzLHYQ=*+|mi{pl>WrCxm@va1Boae8#LAiti7}`RX-8qquz>^3%=U-hV>Y?hyyotE zpP#P|=j7tyDul`qLOwOGf93V>zxv?u*sFUo`XdTs8RFCkg%k+wD&bHG+*1n|8L7Q& z&y*fhYK)f86fyO_GL@Ds{n!^SJzC=Us5Yjrj=6O0hJc2@Qq`{4T=x9rxTvn!@rk)T z=DHKF*z0NytF_#flJ<<MLT_nm9@N}a7%O8c;|cc(-L>(i=I)4EYrIHZdETh6(H_Ib z_UX3nI9J;o-=|?3gPEaE;@pvo!=*+OLYH(1sQ}Ynf2rnM$KWwdD=hJ@DYt9qj{WwT zGDqcp)nEjn-CPUidf%|#{`9wRx`dXOzFX+LR9<rQF>vx7g6IE*t4<ZBrwg>dN?{vv znq$(iBTV*($ev`EdIeGUHFztG>(mZ*D$U$V(SE*c`?lzwEMdzyZNr2u8yXG<$nz?) z-z5eD<UoMv4T%ArsLfX3wKy*D)H$A7+Q1ubT&J047CCx>W2U^UpT8tbM1?u0WsI;+ zM6EGG$Zk~iddTw~WJ8D84Qp5o#KnMz>@|?RkIG<dUsyb;61!@|?xfhCj2w8dfgj}Y z-;;QaCw!R{T};v0?KS76XE}O0!pwS=zs8-GjMI|bUdJVK!f75NgoN}Wy!6SS@CzY~ zO6niaih(w<I}i<akRgv4tPz7FqW0En)B{94bmL+iFEvpG9bN+#Is=nSvr~3<o}+US zHkYT11?Eo$>#sR(9(6WejS5+}{(mAKu`fi1lE+)N;*_ia`!+l4rB^v-G0j|1urgqd z+3+e)d>A!nC1KQQ13{ilS&L3#2)5Gj4?BUW*avu2<bZ+fPDb8b(%`j8yzIuCd~JH( z&K3*R3k7Bo0JyZmXw)_q-4m0{!%j<9vW}-M83{OAv#zl&6$z-iK)^Op`^OAk^HBHm z$_*X0%u~xc>K`{gr@>1+hV5ovc`uKPZv2R^y|d<}ry|Tkp?ZyDRybywW5B^x?m55i zb78`18z(G@s3qGr0qz6Y0l?`J`vRi&=3TtbQ-wUf*F@bLfwxEsqUSmZTuvq-Dzd`C zIj}Mkvs>~KNM{45vQ5(?%xsFu+u6l5?bn~;aY6Q%f+5SilZ(DrL-x4DlOy8$VR-gN zLSY@2tO?0H=WK*HWkE5ui+jf5WdZ7~G}9WX^0%Df@w$#$&nws6)RsI7FXxpjI;t=S zWUn<vdppQ}m8fmqJuV55!!MoYENDnr;!$gsu!5KgN!?sN1JQ*<rRWP0_MrlNoVlTd z1i~EfqOP*OMht|>f$L<y0W3?8+0CPbFd><rl-MSu#spyN$my8h6)dPX0|KVYW%s=o zA8rpp)Y7C}mQ6kyiEcY3bA<f&7|4O-U(@!+aR3&Tb35W}g!Vyti_-ARcs9ah3)L$r zdM3io7noe3T9yvr*;$C$td~XT>l%a_pzFJKb{n8W<Um^>3BJjaTjr#}6?!IBzG{~% z4w^m9=Ch_H55DV$$Wui*_|#oD-Wm-@WO8yNLn2_5^Vk-+Dw)R=0L_+=O5TBT)42kj z)6qq*ysk#rDK9;jqBBoJ<V`E6Ef5}j2;*HtPt7d5Z3gQWpr8^&Nr2?SxsoA-0|v<5 zJWTVZkKkp<CgjLN6<~$l&nY+K)O{UZpTs~7{j5Pq3EyPa3MyTNf)lops1?c{m*6Nz zT{^UVmK(8VZz=5M&s%WL!`}d^Bobf9dt==}{vdzmY*5FaHkle4eDw_te%{n>vNZ5s r)1f-wY0F`gzaD<J7=4H9`F4NjSzk~8sm>Qpz3UBj9PI3rry%qnHSc7u literal 0 HcmV?d00001 diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-complex.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-complex.bc new file mode 100644 index 0000000000000000000000000000000000000000..6b17649f29a43da5d3bc49c6a96f37a1ed2b8874 GIT binary patch literal 1632 zcmXX{Z%i9y7=KHl*KOs!LQv>-clJiNG;!itI%sK|&~}n8&e-8T;J>WxSjQA+`6Cpj zOOLA@Dw&;WW<Sh?W{a60Oqk&ViDaQ1Vr9+7h%u-QX-8qqu)zkJ8TY~Gn3vphc`tX* z{hr^S_gwDD#e)?Hl^}!y8qV<Q8`r=2_}{VD_M{Dm6s8iyY7h!55ZYD5q9S;v8cu?* zzTiw3A698i)-M%N&At+~jw${;5Gj7S$n{xu)KD4q=v$2;EqAe^)u6rL``I<9Dcf=0 z(i-*LiIwg3G)FW#_F_?MT3u$aHZ~1tZzxRVQMKuq_n7|jcw<v1uhE$X$&1gM3{|?r z*wi}R(ivl`n_~O4bVGM~=zNSlG&o#rG9&b<9w9Yg+8Zp^e(xGMtZjx8>zML-cJA2k zoGEdY?^h4-2<>K%;C(%B+HZaF+jkFtC_VMn!<xFc0z%{M>j*_!H0U4bQLBzn(|Iab zp>PbjEm3LM6(Rb<L|39ivx3O`TD%p(wHg;Qm7;GZsUTOf{g|*PqjaR*j$x%E6CUmk z5ogszpGORZi2jhWCoG2aqApX0*J3!&k!Lt^X#;O~ajkZmUSz2SmY(u6LGDxAgkYO< zTgR043Bev!+A<pzJwD=W8&TgTc0!Gap_mx*5j{qt=Wz+N?Tv`X)nZ4L*qIRf68wP& z8~8yE|22u%IAtK6qzXwYvt6@(YL=y@d3x5b`ZeaZrrp-Wb{&^2akphiX^TrQ!bhJB z*nUykMkUQpr^Qf<*clSK+la7F?5+~KM?~Gt*U1NneB{N27+z{5^Lo4nQ|OI!HpNUi znR%AV@=P{I74r0-3MN=})H3RBxFpyzUc>)`_{82Y5l$REvK1p`2AFr5SwFSP(u*nj zoPv=7v-E~vb?g(tl96nqZU+$ZWXfJ}+lF8%4ga_kCKY=DkDBN=5}gVD?IkT<o5agr zyvbFk=ABF-U%8N{7Xg4rXB!n9W5S-OWEpl_Gm?EgWlc*kqdnsp>rfMbssjjY5p{pe z;58q4Kd0Kzlgk{rtSA5W;xk&j#9>%&=2Z7`xZuT)x#~M>erk%R7xI;BEWN_g(<}`N zuCmVs^<Ud2+>UXjH7-~)Efb(V4BHPlJz{T2)ZMs?*Euqu!}l7=dn51_NulhzO290~ z6JQmY;qEz*l8-vAISHt9fKr*p=@EK1N#~r*Vu}hHPH;Fc>q|nDWzNkCA65}v9`X2y z_)!Gjy%ty4hb4Plvdp;~z)l%pOygmnarqg5dNV~g^A*7(r#QT>C)abTbuYOkx5CRg z)ry|X&%v;l8-<=WqE9XAns<*&Ht^vUw<QA{Dy=cWo>AI?%($d!DxCrAf}@huIi7i> z03Bzpslb8I2ehayud5P65u*Pp(Psq7Qe#fbsM0neS)LR*CZvWqU~9|j>E9I$ur~t) zrb=b?{ezFTn;>#&QVz=|C-B0yQu2)8|1KlZpLjU!Y#0Y%g6!K7cLSsk+*^=_U%|6H zoyk|OB&ivmna|VNe5Fhsz;iNSvspib(6?0x)kD^I?d&u{hKT-_Py%$5DYwo^11r=_ zvUJrcM;thN>dj}(OFn$p3zjDfvhm5gUc5CL;pO4vM21DcDEqM`bV;&|DFB)yE)~58 z;ij^ADyydoez~sl%#@#+OH%2lCi15g<Q5PQIz;fUp{HV&+_Hdl3lLBVtYib{!oHGL z+71}Ock|HApE`t>!JFVCADM>=xt~*Q#>o46ygrFxG;~{wkP5Cu#ttl9f`BU>BZ3{m z9+O}zM;&^!y_cJ?c5gAP<>MXL=ixVi%9Zge^4e5e!_{!7PIv3MlV)>$eW0$sKFFC{ x&DMI(Z+@vZaMF6v9IS)eR#V_$9oHIcKON}mJJJ5ai4WcnwVw>vw71KB{sY`!XY&96 literal 0 HcmV?d00001 diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-crt.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-crt.bc new file mode 100644 index 0000000000000000000000000000000000000000..85a261bc54ad705009f58a8a205227f5e2e814ef GIT binary patch literal 1624 zcmXX`Z%i9y7=KHl*NyJIf+%#mJA0#BnmFfKI%sK|(B33noUy}wK%-gPv5qNON~!#t zE-hC%rbIi_Ed789&5W5JOqlY455!Q8VP(yR#2D0uw4*R)7~nuN<39Kt^OAcm@8#a- ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm ztIka636<7l{ag{#94b@mn9@)Dk<wR6Tp!oQ4An8WzReiaa@VTb4BD&SA6<i*ianoN z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0@Ti3t|Z3~om=d{PYch6zx zY?-U_uzDbh(0=wLrn}#=-~H^@Z*Gok_`f?;udZ4tM`-94`Um#csUy@(feKV997DV% zCJnnHL|-q_mF(24BJ!aY??iB&#>Gsh={qSZz?JQOCLG8r9U0y+taN01hr>bQlA7pq zi@_k#A5?btib1`o%U0m^I4*GHMUGtF!do6(r=6jfSZa}_r+rL-yJDLZZ1cQzTxp*a z>@lS+yH(ZgB`&oS4eeqGYD5gi#h{nyHWJ;B%b;yfL_DJwJ8Q&HQtV4ck8Et=jXeHq z3a@iYe<np0Q&e`h=6uu~OU*>-IiKp6IB(7H*5q!TkSqz_GNiO6q?h2QPX=s1D{W(v z=7$SnuvH8Ng>XC3>lMQ_Vt7>4-FbuDK;$D2F2?b46IsyXb(lhLq;qLz+Q}@iR4&To z@>H=v|Dj+4HK#0NeB+2<%X$p|58@SjdWqiTsgpZ#Qf7d8mzncXYb?E#rY|cP88Az4 z`BbMr5-eHCHpV-EkSEjjB5xalr8InNFH9=-03J2bZzMv==-bO$ygr3jJb0U{O)of^ zVxfAmKraCRx6U>uIL3toG08H_TeFgVB5ln`Frz)|9`95WfT|M+Y!!9C&*F72`7p2A z(vvG3xuPfk_TY<Jyv$)(Zs%1G^0?^1kGa}=>pp5aN-q|w*I9a%rDs?g6kKDU59q(J zP4bQjr8OZ~v#pb$J`CFrINf4TP}JSNk2g88kjD?2$OohF7fGS)x<SA!XOdtQnc?s} zNEwYet$7KkbAVFWrkPQCE=A{^%u<>P7|wFIAnQv)lNF9<h4*WSF1L7QRQw<Udv7Kb z_F>7MkSz0jBiJbmjA`8Lvo0S4Q17JamS|Pr<arKn>dDQ#YSTmR$gS{7UbU(x3-d7S z^(LXao#<1Gx|aPDk_~+LC2z?Bhe~T)uxFKaATuFpn)l6ub-__7>T;BMqyQafZ>qq7 z&<C`rtE{gPgAt<t2GM5($<pIa%b3zODOsMBI3}gW1Ym2=>FM7T46ru~1g7`N>iY&C z?KVN=@{}BwZBB>^yGqG3g8#dWM1S(n8E4}J025^2j`EF=K5%bQ8h#beMd@szdNoDO zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh z*;8*mXI}Q=`yQ}7S(J@W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4* z-F)fecm=!(KJt<UsF3@4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An lo&TKmm^n}nudOEkv3jm8&~d@v)pxez#j~OC(T)ze$A3;CWIF%= literal 0 HcmV?d00001 diff --git a/clang/test/Driver/sycl-device-library-linking.cpp b/clang/test/Driver/sycl-device-library-linking.cpp new file mode 100644 index 0000000000000..40f261dce9462 --- /dev/null +++ b/clang/test/Driver/sycl-device-library-linking.cpp @@ -0,0 +1,22 @@ +// Test that SYCL device libraries are linked at compile-time for SPIR/SPIRV targets + +// RUN: %clangxx -fsycl %s --sysroot=%S/Inputs/SYCL -### 2>&1 | \ +// RUN: FileCheck %s --check-prefix=CHECK-DEVICE-LIBS + +// RUN: %clangxx -fsycl --no-offloadlib %s --sysroot=%S/Inputs/SYCL -### 2>&1 | \ +// RUN: FileCheck %s --check-prefix=CHECK-NO-DEVICE-LIBS + +// CHECK-DEVICE-LIBS: "-cc1" "-triple" "spirv64-unknown-unknown" +// CHECK-DEVICE-LIBS-SAME: "-fsycl-is-device" +// CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-crt.bc" +// CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-complex.bc" +// CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-cmath.bc" +// CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode-postopt" +// CHECK-DEVICE-LIBS-SAME: "-Wno-linker-warnings" + +// CHECK-NO-DEVICE-LIBS: "-cc1" "-triple" "spirv64-unknown-unknown" +// CHECK-NO-DEVICE-LIBS-SAME: "-fsycl-is-device" +// CHECK-NO-DEVICE-LIBS-NOT: "-mlink-builtin-bitcode" +// CHECK-NO-DEVICE-LIBS-NOT: "libsycl-crt.bc" + +void foo() {} >From 9b22e2821fad04df65dd26d121e6d05cc2ed495a Mon Sep 17 00:00:00 2001 From: srividya sundaram <[email protected]> Date: Fri, 8 May 2026 16:47:53 -0700 Subject: [PATCH 2/3] Fix test failures. --- .../Driver/sycl-device-library-linking.cpp | 2 +- clang/test/Driver/sycl-offload-jit-unix.cpp | 4 ++- clang/test/Driver/sycl-offload-jit-xarch.cpp | 2 +- clang/test/Driver/sycl-offload-jit.cpp | 6 ++-- clang/test/Driver/sycl-std-default.cpp | 8 +++--- clang/test/Driver/sycl.cpp | 28 +++++++++---------- 6 files changed, 26 insertions(+), 24 deletions(-) diff --git a/clang/test/Driver/sycl-device-library-linking.cpp b/clang/test/Driver/sycl-device-library-linking.cpp index 40f261dce9462..baea3ae895d6d 100644 --- a/clang/test/Driver/sycl-device-library-linking.cpp +++ b/clang/test/Driver/sycl-device-library-linking.cpp @@ -3,7 +3,7 @@ // RUN: %clangxx -fsycl %s --sysroot=%S/Inputs/SYCL -### 2>&1 | \ // RUN: FileCheck %s --check-prefix=CHECK-DEVICE-LIBS -// RUN: %clangxx -fsycl --no-offloadlib %s --sysroot=%S/Inputs/SYCL -### 2>&1 | \ +// RUN: %clangxx -fsycl --no-offloadlib %s -### 2>&1 | \ // RUN: FileCheck %s --check-prefix=CHECK-NO-DEVICE-LIBS // CHECK-DEVICE-LIBS: "-cc1" "-triple" "spirv64-unknown-unknown" diff --git a/clang/test/Driver/sycl-offload-jit-unix.cpp b/clang/test/Driver/sycl-offload-jit-unix.cpp index f12af94159342..67339c6fa8627 100644 --- a/clang/test/Driver/sycl-offload-jit-unix.cpp +++ b/clang/test/Driver/sycl-offload-jit-unix.cpp @@ -7,8 +7,9 @@ // The test also checks if SYCL header include paths are added to the SYCL host and device compilation. // Check LLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON case: library is in lib/<triple>/ -// RUN: rm -rf %t && mkdir -p %t/bin %t/lib/x86_64-unknown-linux-gnu +// RUN: rm -rf %t && mkdir -p %t/bin %t/lib/x86_64-unknown-linux-gnu %t/lib // RUN: touch %t/lib/x86_64-unknown-linux-gnu/libLLVMSYCL.so +// RUN: touch %t/lib/libsycl-crt.bc %t/lib/libsycl-complex.bc %t/lib/libsycl-cmath.bc // RUN: ln -s %clang %t/bin/clang // RUN: %t/bin/clang -### -no-canonical-prefixes --target=x86_64-unknown-linux-gnu -fsycl %s 2>&1 \ // RUN: | FileCheck -check-prefixes=CHECK-LSYCL,CHECK-SYCL-HEADERS-HOST,CHECK-SYCL-HEADERS-DEVICE %s @@ -19,6 +20,7 @@ // Check LLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF case: library is in lib/ (no triple subdir) // RUN: rm -rf %t && mkdir -p %t/bin %t/lib // RUN: touch %t/lib/libLLVMSYCL.so +// RUN: touch %t/lib/libsycl-crt.bc %t/lib/libsycl-complex.bc %t/lib/libsycl-cmath.bc // RUN: ln -s %clang %t/bin/clang // RUN: %t/bin/clang -### -no-canonical-prefixes --target=x86_64-unknown-linux-gnu -fsycl %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK-LSYCL-FLAT %s diff --git a/clang/test/Driver/sycl-offload-jit-xarch.cpp b/clang/test/Driver/sycl-offload-jit-xarch.cpp index 53af2b16a33f1..98bf86033214f 100644 --- a/clang/test/Driver/sycl-offload-jit-xarch.cpp +++ b/clang/test/Driver/sycl-offload-jit-xarch.cpp @@ -2,7 +2,7 @@ // Verify that -Xarch_spirv64 forwards options to the SYCL device compilation // and clang-linker-wrapper call. -// RUN: %clang -fsycl --offload-targets=spirv64-unknown-unknown -Xarch_spirv64 -O3 -### %s 2>&1 \ +// RUN: %clang -fsycl --offload-targets=spirv64-unknown-unknown -Xarch_spirv64 -O3 -### %s --sysroot=%S/Inputs/SYCL 2>&1 \ // RUN: | FileCheck -check-prefix=SYCL-DEVICE-O3 %s // SYCL-DEVICE-O3: "-triple" "spirv64-unknown-unknown" "-aux-triple" "{{.*}}" "-O3"{{.*}} "-fsycl-is-device" // SYCL-DEVICE-O3: {{"[^"]*clang-linker-wrapper[^"]*".* "--device-compiler=spirv64-unknown-unknown=-O3"}} diff --git a/clang/test/Driver/sycl-offload-jit.cpp b/clang/test/Driver/sycl-offload-jit.cpp index 58401653a6e4b..7716b6e3a552f 100644 --- a/clang/test/Driver/sycl-offload-jit.cpp +++ b/clang/test/Driver/sycl-offload-jit.cpp @@ -1,9 +1,9 @@ /// Perform several driver tests for SYCL offloading for JIT /// Check the phases graph with -fsycl. Use of -fsycl enables offload -// RUN: %clang -ccc-print-phases --target=x86_64-unknown-linux-gnu -fsycl %s 2>&1 \ +// RUN: %clang -ccc-print-phases --target=x86_64-unknown-linux-gnu -fsycl %s --no-offloadlib 2>&1 \ // RUN: | FileCheck -check-prefixes=CHK-PHASES %s -// RUN: %clang_cl -ccc-print-phases --target=x86_64-pc-windows-msvc -fsycl -- %s 2>&1 \ +// RUN: %clang_cl -ccc-print-phases --target=x86_64-pc-windows-msvc -fsycl --no-offloadlib -- %s 2>&1 \ // RUN: | FileCheck -check-prefixes=CHK-PHASES %s // CHK-PHASES: 0: input, "[[INPUT:.+\.cpp]]", c++, (host-sycl) // CHK-PHASES-NEXT: 1: preprocessor, {0}, c++-cpp-output, (host-sycl) @@ -21,7 +21,7 @@ /// Check expected default values for device compilation when using -fsycl as /// well as llvm-offload-binary inputs. -// RUN: %clang -### -fsycl -c --target=x86_64-unknown-linux-gnu %s 2>&1 \ +// RUN: %clang -### -fsycl -c --target=x86_64-unknown-linux-gnu %s --sysroot=%S/Inputs/SYCL 2>&1 \ // RUN: | FileCheck -check-prefix=CHK-DEVICE-TRIPLE %s // CHK-DEVICE-TRIPLE: "-cc1"{{.*}} "-triple" "spirv64-unknown-unknown" // CHK-DEVICE-TRIPLE-SAME: "-aux-triple" "x86_64-unknown-linux-gnu" diff --git a/clang/test/Driver/sycl-std-default.cpp b/clang/test/Driver/sycl-std-default.cpp index df377169a3944..99fcc513696e6 100644 --- a/clang/test/Driver/sycl-std-default.cpp +++ b/clang/test/Driver/sycl-std-default.cpp @@ -1,6 +1,6 @@ // Tests that SYCL defaults to C++17 when no -std= is specified -// RUN: %clangxx -### -fsycl -c %s 2>&1 | FileCheck %s --check-prefixes=CHECK-DEVICE,CHECK-HOST +// RUN: %clangxx -### -fsycl -c %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck %s --check-prefixes=CHECK-DEVICE,CHECK-HOST // CHECK-DEVICE: "-cc1"{{.*}} "-fsycl-is-device" // CHECK-DEVICE-SAME: "-std=c++17" @@ -8,7 +8,7 @@ // CHECK-HOST-SAME: "-std=c++17" // Test that explicit -std= overrides the default -// RUN: %clangxx -### -fsycl -std=c++20 -c %s 2>&1 | FileCheck %s --check-prefixes=CHECK-OVERRIDE-DEVICE,CHECK-OVERRIDE-HOST +// RUN: %clangxx -### -fsycl -std=c++20 -c %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck %s --check-prefixes=CHECK-OVERRIDE-DEVICE,CHECK-OVERRIDE-HOST // CHECK-OVERRIDE-DEVICE: "-cc1"{{.*}} "-fsycl-is-device" // CHECK-OVERRIDE-DEVICE-SAME: "-std=c++20" @@ -34,7 +34,7 @@ // CHECK-C99-ERROR: error: invalid argument '-std=c99' not allowed with '-fsycl' // Test on Windows with clang-cl (MSVC mode) -// RUN: %clang_cl --target=x86_64-pc-windows-msvc -### -fsycl -- %s 2>&1 | FileCheck %s --check-prefixes=CHECK-MSVC-DEVICE,CHECK-MSVC-HOST +// RUN: %clang_cl --target=x86_64-pc-windows-msvc -### -fsycl -- %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck %s --check-prefixes=CHECK-MSVC-DEVICE,CHECK-MSVC-HOST // CHECK-MSVC-DEVICE: "-cc1"{{.*}} "-fsycl-is-device" // CHECK-MSVC-DEVICE-SAME: "-std=c++17" @@ -42,7 +42,7 @@ // CHECK-MSVC-HOST-SAME: "-std=c++17" // Test that /std: override works on Windows -// RUN: %clang_cl --target=x86_64-pc-windows-msvc -### -fsycl /std:c++20 -- %s 2>&1 | FileCheck %s --check-prefixes=CHECK-MSVC-OVERRIDE-DEVICE,CHECK-MSVC-OVERRIDE-HOST +// RUN: %clang_cl --target=x86_64-pc-windows-msvc -### -fsycl /std:c++20 -- %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck %s --check-prefixes=CHECK-MSVC-OVERRIDE-DEVICE,CHECK-MSVC-OVERRIDE-HOST // CHECK-MSVC-OVERRIDE-DEVICE: "-cc1"{{.*}} "-fsycl-is-device" // CHECK-MSVC-OVERRIDE-DEVICE-SAME: "-std=c++20" diff --git a/clang/test/Driver/sycl.cpp b/clang/test/Driver/sycl.cpp index 5c210c8c181da..30fb05893a7aa 100644 --- a/clang/test/Driver/sycl.cpp +++ b/clang/test/Driver/sycl.cpp @@ -1,18 +1,18 @@ -// RUN: %clang -### -fsycl -c %s 2>&1 | FileCheck %s --check-prefix=ENABLED -// RUN: %clang -### -fsycl %s 2>&1 | FileCheck %s --check-prefix=ENABLED -// RUN: %clang -### -fsycl -sycl-std=1.2.1 %s 2>&1 | FileCheck %s --check-prefix=ENABLED -// RUN: %clang -### -fsycl -sycl-std=121 %s 2>&1 | FileCheck %s --check-prefix=ENABLED -// RUN: %clang -### -fsycl -sycl-std=2017 %s 2>&1 | FileCheck %s --check-prefix=ENABLED -// RUN: %clang -### -fsycl -sycl-std=2020 %s 2>&1 | FileCheck %s --check-prefix=ENABLED -// RUN: %clang -### -fsycl -sycl-std=sycl-1.2.1 %s 2>&1 | FileCheck %s --check-prefix=ENABLED -// RUN: %clang -### -fno-sycl -fsycl %s 2>&1 | FileCheck %s --check-prefix=ENABLED +// RUN: %clang -### -fsycl -c %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck %s --check-prefix=ENABLED +// RUN: %clang -### -fsycl %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck %s --check-prefix=ENABLED +// RUN: %clang -### -fsycl -sycl-std=1.2.1 %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck %s --check-prefix=ENABLED +// RUN: %clang -### -fsycl -sycl-std=121 %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck %s --check-prefix=ENABLED +// RUN: %clang -### -fsycl -sycl-std=2017 %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck %s --check-prefix=ENABLED +// RUN: %clang -### -fsycl -sycl-std=2020 %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck %s --check-prefix=ENABLED +// RUN: %clang -### -fsycl -sycl-std=sycl-1.2.1 %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck %s --check-prefix=ENABLED +// RUN: %clang -### -fno-sycl -fsycl %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck %s --check-prefix=ENABLED // RUN: %clang -### -sycl-std=2017 %s 2>&1 | FileCheck %s --check-prefix=DISABLED -// RUN: %clangxx -### -fsycl %s 2>&1 | FileCheck %s --check-prefix=ENABLED +// RUN: %clangxx -### -fsycl %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck %s --check-prefix=ENABLED // RUN: %clangxx -### -fno-sycl %s 2>&1 | FileCheck %s --check-prefix=DISABLED // RUN: %clangxx -### -fsycl -fno-sycl %s 2>&1 | FileCheck %s --check-prefix=DISABLED // RUN: %clangxx -### %s 2>&1 | FileCheck %s --check-prefix=DISABLED -// RUN: %clang_cl -### -fsycl -sycl-std=2017 -- %s 2>&1 | FileCheck %s --check-prefix=ENABLED -// RUN: %clang_cl -### -fsycl -- %s 2>&1 | FileCheck %s --check-prefix=ENABLED +// RUN: %clang_cl -### -fsycl -sycl-std=2017 -- %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck %s --check-prefix=ENABLED +// RUN: %clang_cl -### -fsycl -- %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck %s --check-prefix=ENABLED // RUN: %clang_cl -### -- %s 2>&1 | FileCheck %s --check-prefix=DISABLED // ENABLED: "-cc1"{{.*}} "-fsycl-is-device" @@ -20,9 +20,9 @@ // DISABLED-NOT: "-fsycl-is-device" // DISABLED-NOT: "-sycl-std=" -// RUN: %clang -### -fsycl %s 2>&1 | FileCheck %s --check-prefix=DEFAULT -// RUN: %clangxx -### -fsycl %s 2>&1 | FileCheck %s --check-prefix=DEFAULT -// RUN: %clang_cl -### -fsycl -- %s 2>&1 | FileCheck %s --check-prefix=DEFAULT +// RUN: %clang -### -fsycl %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck %s --check-prefix=DEFAULT +// RUN: %clangxx -### -fsycl %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck %s --check-prefix=DEFAULT +// RUN: %clang_cl -### -fsycl -- %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck %s --check-prefix=DEFAULT // DEFAULT: "-sycl-std=2020" >From 3b985cc1424d4a9ea2b83147c5878998939b4696 Mon Sep 17 00:00:00 2001 From: srividya sundaram <[email protected]> Date: Mon, 11 May 2026 14:46:14 -0700 Subject: [PATCH 3/3] Fix tests and add all SYCL device libs. --- clang/lib/Driver/ToolChains/SYCL.cpp | 24 ++++++++++++++---- .../Inputs/SYCL/lib/libsycl-cmath-fp64.bc | Bin 0 -> 1624 bytes .../Inputs/SYCL/lib/libsycl-complex-fp64.bc | Bin 0 -> 1624 bytes .../SYCL/lib/libsycl-fallback-cmath-fp64.bc | Bin 0 -> 1624 bytes .../Inputs/SYCL/lib/libsycl-fallback-cmath.bc | Bin 0 -> 1624 bytes .../SYCL/lib/libsycl-fallback-complex-fp64.bc | Bin 0 -> 1624 bytes .../SYCL/lib/libsycl-fallback-complex.bc | Bin 0 -> 1624 bytes .../SYCL/lib/libsycl-fallback-cstring.bc | Bin 0 -> 1624 bytes .../SYCL/lib/libsycl-fallback-imf-bf16.bc | Bin 0 -> 1624 bytes .../SYCL/lib/libsycl-fallback-imf-fp64.bc | Bin 0 -> 1624 bytes .../Inputs/SYCL/lib/libsycl-fallback-imf.bc | Bin 0 -> 1624 bytes .../Inputs/SYCL/lib/libsycl-imf-bf16.bc | Bin 0 -> 1624 bytes .../Inputs/SYCL/lib/libsycl-imf-fp64.bc | Bin 0 -> 1624 bytes .../Driver/Inputs/SYCL/lib/libsycl-imf.bc | Bin 0 -> 1624 bytes .../Driver/sycl-device-library-linking.cpp | 13 ++++++++++ clang/test/Driver/sycl-offload-jit-unix.cpp | 10 ++++++-- clang/test/Driver/sycl-offload-jit-xarch.cpp | 4 +-- clang/test/Driver/sycl-offload-jit.cpp | 14 +++++----- clang/test/Driver/sycl-std-default.cpp | 22 ++++++++-------- clang/test/Driver/sycl.cpp | 4 +-- 20 files changed, 62 insertions(+), 29 deletions(-) create mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-cmath-fp64.bc create mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-complex-fp64.bc create mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-cmath-fp64.bc create mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-cmath.bc create mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-complex-fp64.bc create mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-complex.bc create mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-cstring.bc create mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-imf-bf16.bc create mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-imf-fp64.bc create mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-imf.bc create mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-imf-bf16.bc create mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-imf-fp64.bc create mode 100644 clang/test/Driver/Inputs/SYCL/lib/libsycl-imf.bc diff --git a/clang/lib/Driver/ToolChains/SYCL.cpp b/clang/lib/Driver/ToolChains/SYCL.cpp index 7cf9075ee656f..b827dd32d3b77 100644 --- a/clang/lib/Driver/ToolChains/SYCL.cpp +++ b/clang/lib/Driver/ToolChains/SYCL.cpp @@ -127,8 +127,7 @@ void SYCLToolChain::addClangTargetOptions( HostTC.addClangTargetOptions(DriverArgs, CC1Args, DeviceOffloadingKind); // Link SYCL device libraries at compile time for SPIR/SPIRV targets. - // The new offloading driver is the default in upstream LLVM, so we always - // perform compile-time linking for SPIR/SPIRV targets. + // We perform compile-time linking for SPIR/SPIRV targets. // Other targets (like NVPTX, AMD) would link at link time. if (getTriple().isSPIROrSPIRV()) { // Get the device libraries for this offloading kind. @@ -251,13 +250,28 @@ SYCLToolChain::getDeviceLibNames(const Driver &D, LibraryList.emplace_back(BitCodeLibrary); }; - // For now, support only SPIR/SPIRV targets with a minimal set of libraries. - // This is a starting point that can be expanded later. + // Add all SYCL device libraries for SPIR/SPIRV targets. if (TargetTriple.isSPIROrSPIRV()) { - // Core SYCL device libraries - start with the essential ones + // Core SYCL device libraries addLibToList("libsycl-crt.bc"); addLibToList("libsycl-complex.bc"); + addLibToList("libsycl-complex-fp64.bc"); addLibToList("libsycl-cmath.bc"); + addLibToList("libsycl-cmath-fp64.bc"); +#if defined(_WIN32) + addLibToList("libsycl-msvc-math.bc"); +#endif + addLibToList("libsycl-imf.bc"); + addLibToList("libsycl-imf-fp64.bc"); + addLibToList("libsycl-imf-bf16.bc"); + addLibToList("libsycl-fallback-cstring.bc"); + addLibToList("libsycl-fallback-complex.bc"); + addLibToList("libsycl-fallback-complex-fp64.bc"); + addLibToList("libsycl-fallback-cmath.bc"); + addLibToList("libsycl-fallback-cmath-fp64.bc"); + addLibToList("libsycl-fallback-imf.bc"); + addLibToList("libsycl-fallback-imf-fp64.bc"); + addLibToList("libsycl-fallback-imf-bf16.bc"); } return LibraryList; diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-cmath-fp64.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-cmath-fp64.bc new file mode 100644 index 0000000000000000000000000000000000000000..85a261bc54ad705009f58a8a205227f5e2e814ef GIT binary patch literal 1624 zcmXX`Z%i9y7=KHl*NyJIf+%#mJA0#BnmFfKI%sK|(B33noUy}wK%-gPv5qNON~!#t zE-hC%rbIi_Ed789&5W5JOqlY455!Q8VP(yR#2D0uw4*R)7~nuN<39Kt^OAcm@8#a- ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm ztIka636<7l{ag{#94b@mn9@)Dk<wR6Tp!oQ4An8WzReiaa@VTb4BD&SA6<i*ianoN z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0@Ti3t|Z3~om=d{PYch6zx zY?-U_uzDbh(0=wLrn}#=-~H^@Z*Gok_`f?;udZ4tM`-94`Um#csUy@(feKV997DV% zCJnnHL|-q_mF(24BJ!aY??iB&#>Gsh={qSZz?JQOCLG8r9U0y+taN01hr>bQlA7pq zi@_k#A5?btib1`o%U0m^I4*GHMUGtF!do6(r=6jfSZa}_r+rL-yJDLZZ1cQzTxp*a z>@lS+yH(ZgB`&oS4eeqGYD5gi#h{nyHWJ;B%b;yfL_DJwJ8Q&HQtV4ck8Et=jXeHq z3a@iYe<np0Q&e`h=6uu~OU*>-IiKp6IB(7H*5q!TkSqz_GNiO6q?h2QPX=s1D{W(v z=7$SnuvH8Ng>XC3>lMQ_Vt7>4-FbuDK;$D2F2?b46IsyXb(lhLq;qLz+Q}@iR4&To z@>H=v|Dj+4HK#0NeB+2<%X$p|58@SjdWqiTsgpZ#Qf7d8mzncXYb?E#rY|cP88Az4 z`BbMr5-eHCHpV-EkSEjjB5xalr8InNFH9=-03J2bZzMv==-bO$ygr3jJb0U{O)of^ zVxfAmKraCRx6U>uIL3toG08H_TeFgVB5ln`Frz)|9`95WfT|M+Y!!9C&*F72`7p2A z(vvG3xuPfk_TY<Jyv$)(Zs%1G^0?^1kGa}=>pp5aN-q|w*I9a%rDs?g6kKDU59q(J zP4bQjr8OZ~v#pb$J`CFrINf4TP}JSNk2g88kjD?2$OohF7fGS)x<SA!XOdtQnc?s} zNEwYet$7KkbAVFWrkPQCE=A{^%u<>P7|wFIAnQv)lNF9<h4*WSF1L7QRQw<Udv7Kb z_F>7MkSz0jBiJbmjA`8Lvo0S4Q17JamS|Pr<arKn>dDQ#YSTmR$gS{7UbU(x3-d7S z^(LXao#<1Gx|aPDk_~+LC2z?Bhe~T)uxFKaATuFpn)l6ub-__7>T;BMqyQafZ>qq7 z&<C`rtE{gPgAt<t2GM5($<pIa%b3zODOsMBI3}gW1Ym2=>FM7T46ru~1g7`N>iY&C z?KVN=@{}BwZBB>^yGqG3g8#dWM1S(n8E4}J025^2j`EF=K5%bQ8h#beMd@szdNoDO zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh z*;8*mXI}Q=`yQ}7S(J@W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4* z-F)fecm=!(KJt<UsF3@4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An lo&TKmm^n}nudOEkv3jm8&~d@v)pxez#j~OC(T)ze$A3;CWIF%= literal 0 HcmV?d00001 diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-complex-fp64.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-complex-fp64.bc new file mode 100644 index 0000000000000000000000000000000000000000..85a261bc54ad705009f58a8a205227f5e2e814ef GIT binary patch literal 1624 zcmXX`Z%i9y7=KHl*NyJIf+%#mJA0#BnmFfKI%sK|(B33noUy}wK%-gPv5qNON~!#t zE-hC%rbIi_Ed789&5W5JOqlY455!Q8VP(yR#2D0uw4*R)7~nuN<39Kt^OAcm@8#a- ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm ztIka636<7l{ag{#94b@mn9@)Dk<wR6Tp!oQ4An8WzReiaa@VTb4BD&SA6<i*ianoN z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0@Ti3t|Z3~om=d{PYch6zx zY?-U_uzDbh(0=wLrn}#=-~H^@Z*Gok_`f?;udZ4tM`-94`Um#csUy@(feKV997DV% zCJnnHL|-q_mF(24BJ!aY??iB&#>Gsh={qSZz?JQOCLG8r9U0y+taN01hr>bQlA7pq zi@_k#A5?btib1`o%U0m^I4*GHMUGtF!do6(r=6jfSZa}_r+rL-yJDLZZ1cQzTxp*a z>@lS+yH(ZgB`&oS4eeqGYD5gi#h{nyHWJ;B%b;yfL_DJwJ8Q&HQtV4ck8Et=jXeHq z3a@iYe<np0Q&e`h=6uu~OU*>-IiKp6IB(7H*5q!TkSqz_GNiO6q?h2QPX=s1D{W(v z=7$SnuvH8Ng>XC3>lMQ_Vt7>4-FbuDK;$D2F2?b46IsyXb(lhLq;qLz+Q}@iR4&To z@>H=v|Dj+4HK#0NeB+2<%X$p|58@SjdWqiTsgpZ#Qf7d8mzncXYb?E#rY|cP88Az4 z`BbMr5-eHCHpV-EkSEjjB5xalr8InNFH9=-03J2bZzMv==-bO$ygr3jJb0U{O)of^ zVxfAmKraCRx6U>uIL3toG08H_TeFgVB5ln`Frz)|9`95WfT|M+Y!!9C&*F72`7p2A z(vvG3xuPfk_TY<Jyv$)(Zs%1G^0?^1kGa}=>pp5aN-q|w*I9a%rDs?g6kKDU59q(J zP4bQjr8OZ~v#pb$J`CFrINf4TP}JSNk2g88kjD?2$OohF7fGS)x<SA!XOdtQnc?s} zNEwYet$7KkbAVFWrkPQCE=A{^%u<>P7|wFIAnQv)lNF9<h4*WSF1L7QRQw<Udv7Kb z_F>7MkSz0jBiJbmjA`8Lvo0S4Q17JamS|Pr<arKn>dDQ#YSTmR$gS{7UbU(x3-d7S z^(LXao#<1Gx|aPDk_~+LC2z?Bhe~T)uxFKaATuFpn)l6ub-__7>T;BMqyQafZ>qq7 z&<C`rtE{gPgAt<t2GM5($<pIa%b3zODOsMBI3}gW1Ym2=>FM7T46ru~1g7`N>iY&C z?KVN=@{}BwZBB>^yGqG3g8#dWM1S(n8E4}J025^2j`EF=K5%bQ8h#beMd@szdNoDO zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh z*;8*mXI}Q=`yQ}7S(J@W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4* z-F)fecm=!(KJt<UsF3@4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An lo&TKmm^n}nudOEkv3jm8&~d@v)pxez#j~OC(T)ze$A3;CWIF%= literal 0 HcmV?d00001 diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-cmath-fp64.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-cmath-fp64.bc new file mode 100644 index 0000000000000000000000000000000000000000..85a261bc54ad705009f58a8a205227f5e2e814ef GIT binary patch literal 1624 zcmXX`Z%i9y7=KHl*NyJIf+%#mJA0#BnmFfKI%sK|(B33noUy}wK%-gPv5qNON~!#t zE-hC%rbIi_Ed789&5W5JOqlY455!Q8VP(yR#2D0uw4*R)7~nuN<39Kt^OAcm@8#a- ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm ztIka636<7l{ag{#94b@mn9@)Dk<wR6Tp!oQ4An8WzReiaa@VTb4BD&SA6<i*ianoN z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0@Ti3t|Z3~om=d{PYch6zx zY?-U_uzDbh(0=wLrn}#=-~H^@Z*Gok_`f?;udZ4tM`-94`Um#csUy@(feKV997DV% zCJnnHL|-q_mF(24BJ!aY??iB&#>Gsh={qSZz?JQOCLG8r9U0y+taN01hr>bQlA7pq zi@_k#A5?btib1`o%U0m^I4*GHMUGtF!do6(r=6jfSZa}_r+rL-yJDLZZ1cQzTxp*a z>@lS+yH(ZgB`&oS4eeqGYD5gi#h{nyHWJ;B%b;yfL_DJwJ8Q&HQtV4ck8Et=jXeHq z3a@iYe<np0Q&e`h=6uu~OU*>-IiKp6IB(7H*5q!TkSqz_GNiO6q?h2QPX=s1D{W(v z=7$SnuvH8Ng>XC3>lMQ_Vt7>4-FbuDK;$D2F2?b46IsyXb(lhLq;qLz+Q}@iR4&To z@>H=v|Dj+4HK#0NeB+2<%X$p|58@SjdWqiTsgpZ#Qf7d8mzncXYb?E#rY|cP88Az4 z`BbMr5-eHCHpV-EkSEjjB5xalr8InNFH9=-03J2bZzMv==-bO$ygr3jJb0U{O)of^ zVxfAmKraCRx6U>uIL3toG08H_TeFgVB5ln`Frz)|9`95WfT|M+Y!!9C&*F72`7p2A z(vvG3xuPfk_TY<Jyv$)(Zs%1G^0?^1kGa}=>pp5aN-q|w*I9a%rDs?g6kKDU59q(J zP4bQjr8OZ~v#pb$J`CFrINf4TP}JSNk2g88kjD?2$OohF7fGS)x<SA!XOdtQnc?s} zNEwYet$7KkbAVFWrkPQCE=A{^%u<>P7|wFIAnQv)lNF9<h4*WSF1L7QRQw<Udv7Kb z_F>7MkSz0jBiJbmjA`8Lvo0S4Q17JamS|Pr<arKn>dDQ#YSTmR$gS{7UbU(x3-d7S z^(LXao#<1Gx|aPDk_~+LC2z?Bhe~T)uxFKaATuFpn)l6ub-__7>T;BMqyQafZ>qq7 z&<C`rtE{gPgAt<t2GM5($<pIa%b3zODOsMBI3}gW1Ym2=>FM7T46ru~1g7`N>iY&C z?KVN=@{}BwZBB>^yGqG3g8#dWM1S(n8E4}J025^2j`EF=K5%bQ8h#beMd@szdNoDO zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh z*;8*mXI}Q=`yQ}7S(J@W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4* z-F)fecm=!(KJt<UsF3@4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An lo&TKmm^n}nudOEkv3jm8&~d@v)pxez#j~OC(T)ze$A3;CWIF%= literal 0 HcmV?d00001 diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-cmath.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-cmath.bc new file mode 100644 index 0000000000000000000000000000000000000000..85a261bc54ad705009f58a8a205227f5e2e814ef GIT binary patch literal 1624 zcmXX`Z%i9y7=KHl*NyJIf+%#mJA0#BnmFfKI%sK|(B33noUy}wK%-gPv5qNON~!#t zE-hC%rbIi_Ed789&5W5JOqlY455!Q8VP(yR#2D0uw4*R)7~nuN<39Kt^OAcm@8#a- ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm ztIka636<7l{ag{#94b@mn9@)Dk<wR6Tp!oQ4An8WzReiaa@VTb4BD&SA6<i*ianoN z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0@Ti3t|Z3~om=d{PYch6zx zY?-U_uzDbh(0=wLrn}#=-~H^@Z*Gok_`f?;udZ4tM`-94`Um#csUy@(feKV997DV% zCJnnHL|-q_mF(24BJ!aY??iB&#>Gsh={qSZz?JQOCLG8r9U0y+taN01hr>bQlA7pq zi@_k#A5?btib1`o%U0m^I4*GHMUGtF!do6(r=6jfSZa}_r+rL-yJDLZZ1cQzTxp*a z>@lS+yH(ZgB`&oS4eeqGYD5gi#h{nyHWJ;B%b;yfL_DJwJ8Q&HQtV4ck8Et=jXeHq z3a@iYe<np0Q&e`h=6uu~OU*>-IiKp6IB(7H*5q!TkSqz_GNiO6q?h2QPX=s1D{W(v z=7$SnuvH8Ng>XC3>lMQ_Vt7>4-FbuDK;$D2F2?b46IsyXb(lhLq;qLz+Q}@iR4&To z@>H=v|Dj+4HK#0NeB+2<%X$p|58@SjdWqiTsgpZ#Qf7d8mzncXYb?E#rY|cP88Az4 z`BbMr5-eHCHpV-EkSEjjB5xalr8InNFH9=-03J2bZzMv==-bO$ygr3jJb0U{O)of^ zVxfAmKraCRx6U>uIL3toG08H_TeFgVB5ln`Frz)|9`95WfT|M+Y!!9C&*F72`7p2A z(vvG3xuPfk_TY<Jyv$)(Zs%1G^0?^1kGa}=>pp5aN-q|w*I9a%rDs?g6kKDU59q(J zP4bQjr8OZ~v#pb$J`CFrINf4TP}JSNk2g88kjD?2$OohF7fGS)x<SA!XOdtQnc?s} zNEwYet$7KkbAVFWrkPQCE=A{^%u<>P7|wFIAnQv)lNF9<h4*WSF1L7QRQw<Udv7Kb z_F>7MkSz0jBiJbmjA`8Lvo0S4Q17JamS|Pr<arKn>dDQ#YSTmR$gS{7UbU(x3-d7S z^(LXao#<1Gx|aPDk_~+LC2z?Bhe~T)uxFKaATuFpn)l6ub-__7>T;BMqyQafZ>qq7 z&<C`rtE{gPgAt<t2GM5($<pIa%b3zODOsMBI3}gW1Ym2=>FM7T46ru~1g7`N>iY&C z?KVN=@{}BwZBB>^yGqG3g8#dWM1S(n8E4}J025^2j`EF=K5%bQ8h#beMd@szdNoDO zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh z*;8*mXI}Q=`yQ}7S(J@W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4* z-F)fecm=!(KJt<UsF3@4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An lo&TKmm^n}nudOEkv3jm8&~d@v)pxez#j~OC(T)ze$A3;CWIF%= literal 0 HcmV?d00001 diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-complex-fp64.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-complex-fp64.bc new file mode 100644 index 0000000000000000000000000000000000000000..85a261bc54ad705009f58a8a205227f5e2e814ef GIT binary patch literal 1624 zcmXX`Z%i9y7=KHl*NyJIf+%#mJA0#BnmFfKI%sK|(B33noUy}wK%-gPv5qNON~!#t zE-hC%rbIi_Ed789&5W5JOqlY455!Q8VP(yR#2D0uw4*R)7~nuN<39Kt^OAcm@8#a- ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm ztIka636<7l{ag{#94b@mn9@)Dk<wR6Tp!oQ4An8WzReiaa@VTb4BD&SA6<i*ianoN z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0@Ti3t|Z3~om=d{PYch6zx zY?-U_uzDbh(0=wLrn}#=-~H^@Z*Gok_`f?;udZ4tM`-94`Um#csUy@(feKV997DV% zCJnnHL|-q_mF(24BJ!aY??iB&#>Gsh={qSZz?JQOCLG8r9U0y+taN01hr>bQlA7pq zi@_k#A5?btib1`o%U0m^I4*GHMUGtF!do6(r=6jfSZa}_r+rL-yJDLZZ1cQzTxp*a z>@lS+yH(ZgB`&oS4eeqGYD5gi#h{nyHWJ;B%b;yfL_DJwJ8Q&HQtV4ck8Et=jXeHq z3a@iYe<np0Q&e`h=6uu~OU*>-IiKp6IB(7H*5q!TkSqz_GNiO6q?h2QPX=s1D{W(v z=7$SnuvH8Ng>XC3>lMQ_Vt7>4-FbuDK;$D2F2?b46IsyXb(lhLq;qLz+Q}@iR4&To z@>H=v|Dj+4HK#0NeB+2<%X$p|58@SjdWqiTsgpZ#Qf7d8mzncXYb?E#rY|cP88Az4 z`BbMr5-eHCHpV-EkSEjjB5xalr8InNFH9=-03J2bZzMv==-bO$ygr3jJb0U{O)of^ zVxfAmKraCRx6U>uIL3toG08H_TeFgVB5ln`Frz)|9`95WfT|M+Y!!9C&*F72`7p2A z(vvG3xuPfk_TY<Jyv$)(Zs%1G^0?^1kGa}=>pp5aN-q|w*I9a%rDs?g6kKDU59q(J zP4bQjr8OZ~v#pb$J`CFrINf4TP}JSNk2g88kjD?2$OohF7fGS)x<SA!XOdtQnc?s} zNEwYet$7KkbAVFWrkPQCE=A{^%u<>P7|wFIAnQv)lNF9<h4*WSF1L7QRQw<Udv7Kb z_F>7MkSz0jBiJbmjA`8Lvo0S4Q17JamS|Pr<arKn>dDQ#YSTmR$gS{7UbU(x3-d7S z^(LXao#<1Gx|aPDk_~+LC2z?Bhe~T)uxFKaATuFpn)l6ub-__7>T;BMqyQafZ>qq7 z&<C`rtE{gPgAt<t2GM5($<pIa%b3zODOsMBI3}gW1Ym2=>FM7T46ru~1g7`N>iY&C z?KVN=@{}BwZBB>^yGqG3g8#dWM1S(n8E4}J025^2j`EF=K5%bQ8h#beMd@szdNoDO zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh z*;8*mXI}Q=`yQ}7S(J@W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4* z-F)fecm=!(KJt<UsF3@4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An lo&TKmm^n}nudOEkv3jm8&~d@v)pxez#j~OC(T)ze$A3;CWIF%= literal 0 HcmV?d00001 diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-complex.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-complex.bc new file mode 100644 index 0000000000000000000000000000000000000000..85a261bc54ad705009f58a8a205227f5e2e814ef GIT binary patch literal 1624 zcmXX`Z%i9y7=KHl*NyJIf+%#mJA0#BnmFfKI%sK|(B33noUy}wK%-gPv5qNON~!#t zE-hC%rbIi_Ed789&5W5JOqlY455!Q8VP(yR#2D0uw4*R)7~nuN<39Kt^OAcm@8#a- ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm ztIka636<7l{ag{#94b@mn9@)Dk<wR6Tp!oQ4An8WzReiaa@VTb4BD&SA6<i*ianoN z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0@Ti3t|Z3~om=d{PYch6zx zY?-U_uzDbh(0=wLrn}#=-~H^@Z*Gok_`f?;udZ4tM`-94`Um#csUy@(feKV997DV% zCJnnHL|-q_mF(24BJ!aY??iB&#>Gsh={qSZz?JQOCLG8r9U0y+taN01hr>bQlA7pq zi@_k#A5?btib1`o%U0m^I4*GHMUGtF!do6(r=6jfSZa}_r+rL-yJDLZZ1cQzTxp*a z>@lS+yH(ZgB`&oS4eeqGYD5gi#h{nyHWJ;B%b;yfL_DJwJ8Q&HQtV4ck8Et=jXeHq z3a@iYe<np0Q&e`h=6uu~OU*>-IiKp6IB(7H*5q!TkSqz_GNiO6q?h2QPX=s1D{W(v z=7$SnuvH8Ng>XC3>lMQ_Vt7>4-FbuDK;$D2F2?b46IsyXb(lhLq;qLz+Q}@iR4&To z@>H=v|Dj+4HK#0NeB+2<%X$p|58@SjdWqiTsgpZ#Qf7d8mzncXYb?E#rY|cP88Az4 z`BbMr5-eHCHpV-EkSEjjB5xalr8InNFH9=-03J2bZzMv==-bO$ygr3jJb0U{O)of^ zVxfAmKraCRx6U>uIL3toG08H_TeFgVB5ln`Frz)|9`95WfT|M+Y!!9C&*F72`7p2A z(vvG3xuPfk_TY<Jyv$)(Zs%1G^0?^1kGa}=>pp5aN-q|w*I9a%rDs?g6kKDU59q(J zP4bQjr8OZ~v#pb$J`CFrINf4TP}JSNk2g88kjD?2$OohF7fGS)x<SA!XOdtQnc?s} zNEwYet$7KkbAVFWrkPQCE=A{^%u<>P7|wFIAnQv)lNF9<h4*WSF1L7QRQw<Udv7Kb z_F>7MkSz0jBiJbmjA`8Lvo0S4Q17JamS|Pr<arKn>dDQ#YSTmR$gS{7UbU(x3-d7S z^(LXao#<1Gx|aPDk_~+LC2z?Bhe~T)uxFKaATuFpn)l6ub-__7>T;BMqyQafZ>qq7 z&<C`rtE{gPgAt<t2GM5($<pIa%b3zODOsMBI3}gW1Ym2=>FM7T46ru~1g7`N>iY&C z?KVN=@{}BwZBB>^yGqG3g8#dWM1S(n8E4}J025^2j`EF=K5%bQ8h#beMd@szdNoDO zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh z*;8*mXI}Q=`yQ}7S(J@W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4* z-F)fecm=!(KJt<UsF3@4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An lo&TKmm^n}nudOEkv3jm8&~d@v)pxez#j~OC(T)ze$A3;CWIF%= literal 0 HcmV?d00001 diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-cstring.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-cstring.bc new file mode 100644 index 0000000000000000000000000000000000000000..85a261bc54ad705009f58a8a205227f5e2e814ef GIT binary patch literal 1624 zcmXX`Z%i9y7=KHl*NyJIf+%#mJA0#BnmFfKI%sK|(B33noUy}wK%-gPv5qNON~!#t zE-hC%rbIi_Ed789&5W5JOqlY455!Q8VP(yR#2D0uw4*R)7~nuN<39Kt^OAcm@8#a- ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm ztIka636<7l{ag{#94b@mn9@)Dk<wR6Tp!oQ4An8WzReiaa@VTb4BD&SA6<i*ianoN z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0@Ti3t|Z3~om=d{PYch6zx zY?-U_uzDbh(0=wLrn}#=-~H^@Z*Gok_`f?;udZ4tM`-94`Um#csUy@(feKV997DV% zCJnnHL|-q_mF(24BJ!aY??iB&#>Gsh={qSZz?JQOCLG8r9U0y+taN01hr>bQlA7pq zi@_k#A5?btib1`o%U0m^I4*GHMUGtF!do6(r=6jfSZa}_r+rL-yJDLZZ1cQzTxp*a z>@lS+yH(ZgB`&oS4eeqGYD5gi#h{nyHWJ;B%b;yfL_DJwJ8Q&HQtV4ck8Et=jXeHq z3a@iYe<np0Q&e`h=6uu~OU*>-IiKp6IB(7H*5q!TkSqz_GNiO6q?h2QPX=s1D{W(v z=7$SnuvH8Ng>XC3>lMQ_Vt7>4-FbuDK;$D2F2?b46IsyXb(lhLq;qLz+Q}@iR4&To z@>H=v|Dj+4HK#0NeB+2<%X$p|58@SjdWqiTsgpZ#Qf7d8mzncXYb?E#rY|cP88Az4 z`BbMr5-eHCHpV-EkSEjjB5xalr8InNFH9=-03J2bZzMv==-bO$ygr3jJb0U{O)of^ zVxfAmKraCRx6U>uIL3toG08H_TeFgVB5ln`Frz)|9`95WfT|M+Y!!9C&*F72`7p2A z(vvG3xuPfk_TY<Jyv$)(Zs%1G^0?^1kGa}=>pp5aN-q|w*I9a%rDs?g6kKDU59q(J zP4bQjr8OZ~v#pb$J`CFrINf4TP}JSNk2g88kjD?2$OohF7fGS)x<SA!XOdtQnc?s} zNEwYet$7KkbAVFWrkPQCE=A{^%u<>P7|wFIAnQv)lNF9<h4*WSF1L7QRQw<Udv7Kb z_F>7MkSz0jBiJbmjA`8Lvo0S4Q17JamS|Pr<arKn>dDQ#YSTmR$gS{7UbU(x3-d7S z^(LXao#<1Gx|aPDk_~+LC2z?Bhe~T)uxFKaATuFpn)l6ub-__7>T;BMqyQafZ>qq7 z&<C`rtE{gPgAt<t2GM5($<pIa%b3zODOsMBI3}gW1Ym2=>FM7T46ru~1g7`N>iY&C z?KVN=@{}BwZBB>^yGqG3g8#dWM1S(n8E4}J025^2j`EF=K5%bQ8h#beMd@szdNoDO zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh z*;8*mXI}Q=`yQ}7S(J@W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4* z-F)fecm=!(KJt<UsF3@4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An lo&TKmm^n}nudOEkv3jm8&~d@v)pxez#j~OC(T)ze$A3;CWIF%= literal 0 HcmV?d00001 diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-imf-bf16.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-imf-bf16.bc new file mode 100644 index 0000000000000000000000000000000000000000..85a261bc54ad705009f58a8a205227f5e2e814ef GIT binary patch literal 1624 zcmXX`Z%i9y7=KHl*NyJIf+%#mJA0#BnmFfKI%sK|(B33noUy}wK%-gPv5qNON~!#t zE-hC%rbIi_Ed789&5W5JOqlY455!Q8VP(yR#2D0uw4*R)7~nuN<39Kt^OAcm@8#a- ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm ztIka636<7l{ag{#94b@mn9@)Dk<wR6Tp!oQ4An8WzReiaa@VTb4BD&SA6<i*ianoN z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0@Ti3t|Z3~om=d{PYch6zx zY?-U_uzDbh(0=wLrn}#=-~H^@Z*Gok_`f?;udZ4tM`-94`Um#csUy@(feKV997DV% zCJnnHL|-q_mF(24BJ!aY??iB&#>Gsh={qSZz?JQOCLG8r9U0y+taN01hr>bQlA7pq zi@_k#A5?btib1`o%U0m^I4*GHMUGtF!do6(r=6jfSZa}_r+rL-yJDLZZ1cQzTxp*a z>@lS+yH(ZgB`&oS4eeqGYD5gi#h{nyHWJ;B%b;yfL_DJwJ8Q&HQtV4ck8Et=jXeHq z3a@iYe<np0Q&e`h=6uu~OU*>-IiKp6IB(7H*5q!TkSqz_GNiO6q?h2QPX=s1D{W(v z=7$SnuvH8Ng>XC3>lMQ_Vt7>4-FbuDK;$D2F2?b46IsyXb(lhLq;qLz+Q}@iR4&To z@>H=v|Dj+4HK#0NeB+2<%X$p|58@SjdWqiTsgpZ#Qf7d8mzncXYb?E#rY|cP88Az4 z`BbMr5-eHCHpV-EkSEjjB5xalr8InNFH9=-03J2bZzMv==-bO$ygr3jJb0U{O)of^ zVxfAmKraCRx6U>uIL3toG08H_TeFgVB5ln`Frz)|9`95WfT|M+Y!!9C&*F72`7p2A z(vvG3xuPfk_TY<Jyv$)(Zs%1G^0?^1kGa}=>pp5aN-q|w*I9a%rDs?g6kKDU59q(J zP4bQjr8OZ~v#pb$J`CFrINf4TP}JSNk2g88kjD?2$OohF7fGS)x<SA!XOdtQnc?s} zNEwYet$7KkbAVFWrkPQCE=A{^%u<>P7|wFIAnQv)lNF9<h4*WSF1L7QRQw<Udv7Kb z_F>7MkSz0jBiJbmjA`8Lvo0S4Q17JamS|Pr<arKn>dDQ#YSTmR$gS{7UbU(x3-d7S z^(LXao#<1Gx|aPDk_~+LC2z?Bhe~T)uxFKaATuFpn)l6ub-__7>T;BMqyQafZ>qq7 z&<C`rtE{gPgAt<t2GM5($<pIa%b3zODOsMBI3}gW1Ym2=>FM7T46ru~1g7`N>iY&C z?KVN=@{}BwZBB>^yGqG3g8#dWM1S(n8E4}J025^2j`EF=K5%bQ8h#beMd@szdNoDO zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh z*;8*mXI}Q=`yQ}7S(J@W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4* z-F)fecm=!(KJt<UsF3@4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An lo&TKmm^n}nudOEkv3jm8&~d@v)pxez#j~OC(T)ze$A3;CWIF%= literal 0 HcmV?d00001 diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-imf-fp64.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-imf-fp64.bc new file mode 100644 index 0000000000000000000000000000000000000000..85a261bc54ad705009f58a8a205227f5e2e814ef GIT binary patch literal 1624 zcmXX`Z%i9y7=KHl*NyJIf+%#mJA0#BnmFfKI%sK|(B33noUy}wK%-gPv5qNON~!#t zE-hC%rbIi_Ed789&5W5JOqlY455!Q8VP(yR#2D0uw4*R)7~nuN<39Kt^OAcm@8#a- ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm ztIka636<7l{ag{#94b@mn9@)Dk<wR6Tp!oQ4An8WzReiaa@VTb4BD&SA6<i*ianoN z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0@Ti3t|Z3~om=d{PYch6zx zY?-U_uzDbh(0=wLrn}#=-~H^@Z*Gok_`f?;udZ4tM`-94`Um#csUy@(feKV997DV% zCJnnHL|-q_mF(24BJ!aY??iB&#>Gsh={qSZz?JQOCLG8r9U0y+taN01hr>bQlA7pq zi@_k#A5?btib1`o%U0m^I4*GHMUGtF!do6(r=6jfSZa}_r+rL-yJDLZZ1cQzTxp*a z>@lS+yH(ZgB`&oS4eeqGYD5gi#h{nyHWJ;B%b;yfL_DJwJ8Q&HQtV4ck8Et=jXeHq z3a@iYe<np0Q&e`h=6uu~OU*>-IiKp6IB(7H*5q!TkSqz_GNiO6q?h2QPX=s1D{W(v z=7$SnuvH8Ng>XC3>lMQ_Vt7>4-FbuDK;$D2F2?b46IsyXb(lhLq;qLz+Q}@iR4&To z@>H=v|Dj+4HK#0NeB+2<%X$p|58@SjdWqiTsgpZ#Qf7d8mzncXYb?E#rY|cP88Az4 z`BbMr5-eHCHpV-EkSEjjB5xalr8InNFH9=-03J2bZzMv==-bO$ygr3jJb0U{O)of^ zVxfAmKraCRx6U>uIL3toG08H_TeFgVB5ln`Frz)|9`95WfT|M+Y!!9C&*F72`7p2A z(vvG3xuPfk_TY<Jyv$)(Zs%1G^0?^1kGa}=>pp5aN-q|w*I9a%rDs?g6kKDU59q(J zP4bQjr8OZ~v#pb$J`CFrINf4TP}JSNk2g88kjD?2$OohF7fGS)x<SA!XOdtQnc?s} zNEwYet$7KkbAVFWrkPQCE=A{^%u<>P7|wFIAnQv)lNF9<h4*WSF1L7QRQw<Udv7Kb z_F>7MkSz0jBiJbmjA`8Lvo0S4Q17JamS|Pr<arKn>dDQ#YSTmR$gS{7UbU(x3-d7S z^(LXao#<1Gx|aPDk_~+LC2z?Bhe~T)uxFKaATuFpn)l6ub-__7>T;BMqyQafZ>qq7 z&<C`rtE{gPgAt<t2GM5($<pIa%b3zODOsMBI3}gW1Ym2=>FM7T46ru~1g7`N>iY&C z?KVN=@{}BwZBB>^yGqG3g8#dWM1S(n8E4}J025^2j`EF=K5%bQ8h#beMd@szdNoDO zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh z*;8*mXI}Q=`yQ}7S(J@W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4* z-F)fecm=!(KJt<UsF3@4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An lo&TKmm^n}nudOEkv3jm8&~d@v)pxez#j~OC(T)ze$A3;CWIF%= literal 0 HcmV?d00001 diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-imf.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-fallback-imf.bc new file mode 100644 index 0000000000000000000000000000000000000000..85a261bc54ad705009f58a8a205227f5e2e814ef GIT binary patch literal 1624 zcmXX`Z%i9y7=KHl*NyJIf+%#mJA0#BnmFfKI%sK|(B33noUy}wK%-gPv5qNON~!#t zE-hC%rbIi_Ed789&5W5JOqlY455!Q8VP(yR#2D0uw4*R)7~nuN<39Kt^OAcm@8#a- ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm ztIka636<7l{ag{#94b@mn9@)Dk<wR6Tp!oQ4An8WzReiaa@VTb4BD&SA6<i*ianoN z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0@Ti3t|Z3~om=d{PYch6zx zY?-U_uzDbh(0=wLrn}#=-~H^@Z*Gok_`f?;udZ4tM`-94`Um#csUy@(feKV997DV% zCJnnHL|-q_mF(24BJ!aY??iB&#>Gsh={qSZz?JQOCLG8r9U0y+taN01hr>bQlA7pq zi@_k#A5?btib1`o%U0m^I4*GHMUGtF!do6(r=6jfSZa}_r+rL-yJDLZZ1cQzTxp*a z>@lS+yH(ZgB`&oS4eeqGYD5gi#h{nyHWJ;B%b;yfL_DJwJ8Q&HQtV4ck8Et=jXeHq z3a@iYe<np0Q&e`h=6uu~OU*>-IiKp6IB(7H*5q!TkSqz_GNiO6q?h2QPX=s1D{W(v z=7$SnuvH8Ng>XC3>lMQ_Vt7>4-FbuDK;$D2F2?b46IsyXb(lhLq;qLz+Q}@iR4&To z@>H=v|Dj+4HK#0NeB+2<%X$p|58@SjdWqiTsgpZ#Qf7d8mzncXYb?E#rY|cP88Az4 z`BbMr5-eHCHpV-EkSEjjB5xalr8InNFH9=-03J2bZzMv==-bO$ygr3jJb0U{O)of^ zVxfAmKraCRx6U>uIL3toG08H_TeFgVB5ln`Frz)|9`95WfT|M+Y!!9C&*F72`7p2A z(vvG3xuPfk_TY<Jyv$)(Zs%1G^0?^1kGa}=>pp5aN-q|w*I9a%rDs?g6kKDU59q(J zP4bQjr8OZ~v#pb$J`CFrINf4TP}JSNk2g88kjD?2$OohF7fGS)x<SA!XOdtQnc?s} zNEwYet$7KkbAVFWrkPQCE=A{^%u<>P7|wFIAnQv)lNF9<h4*WSF1L7QRQw<Udv7Kb z_F>7MkSz0jBiJbmjA`8Lvo0S4Q17JamS|Pr<arKn>dDQ#YSTmR$gS{7UbU(x3-d7S z^(LXao#<1Gx|aPDk_~+LC2z?Bhe~T)uxFKaATuFpn)l6ub-__7>T;BMqyQafZ>qq7 z&<C`rtE{gPgAt<t2GM5($<pIa%b3zODOsMBI3}gW1Ym2=>FM7T46ru~1g7`N>iY&C z?KVN=@{}BwZBB>^yGqG3g8#dWM1S(n8E4}J025^2j`EF=K5%bQ8h#beMd@szdNoDO zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh z*;8*mXI}Q=`yQ}7S(J@W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4* z-F)fecm=!(KJt<UsF3@4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An lo&TKmm^n}nudOEkv3jm8&~d@v)pxez#j~OC(T)ze$A3;CWIF%= literal 0 HcmV?d00001 diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-imf-bf16.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-imf-bf16.bc new file mode 100644 index 0000000000000000000000000000000000000000..85a261bc54ad705009f58a8a205227f5e2e814ef GIT binary patch literal 1624 zcmXX`Z%i9y7=KHl*NyJIf+%#mJA0#BnmFfKI%sK|(B33noUy}wK%-gPv5qNON~!#t zE-hC%rbIi_Ed789&5W5JOqlY455!Q8VP(yR#2D0uw4*R)7~nuN<39Kt^OAcm@8#a- ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm ztIka636<7l{ag{#94b@mn9@)Dk<wR6Tp!oQ4An8WzReiaa@VTb4BD&SA6<i*ianoN z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0@Ti3t|Z3~om=d{PYch6zx zY?-U_uzDbh(0=wLrn}#=-~H^@Z*Gok_`f?;udZ4tM`-94`Um#csUy@(feKV997DV% zCJnnHL|-q_mF(24BJ!aY??iB&#>Gsh={qSZz?JQOCLG8r9U0y+taN01hr>bQlA7pq zi@_k#A5?btib1`o%U0m^I4*GHMUGtF!do6(r=6jfSZa}_r+rL-yJDLZZ1cQzTxp*a z>@lS+yH(ZgB`&oS4eeqGYD5gi#h{nyHWJ;B%b;yfL_DJwJ8Q&HQtV4ck8Et=jXeHq z3a@iYe<np0Q&e`h=6uu~OU*>-IiKp6IB(7H*5q!TkSqz_GNiO6q?h2QPX=s1D{W(v z=7$SnuvH8Ng>XC3>lMQ_Vt7>4-FbuDK;$D2F2?b46IsyXb(lhLq;qLz+Q}@iR4&To z@>H=v|Dj+4HK#0NeB+2<%X$p|58@SjdWqiTsgpZ#Qf7d8mzncXYb?E#rY|cP88Az4 z`BbMr5-eHCHpV-EkSEjjB5xalr8InNFH9=-03J2bZzMv==-bO$ygr3jJb0U{O)of^ zVxfAmKraCRx6U>uIL3toG08H_TeFgVB5ln`Frz)|9`95WfT|M+Y!!9C&*F72`7p2A z(vvG3xuPfk_TY<Jyv$)(Zs%1G^0?^1kGa}=>pp5aN-q|w*I9a%rDs?g6kKDU59q(J zP4bQjr8OZ~v#pb$J`CFrINf4TP}JSNk2g88kjD?2$OohF7fGS)x<SA!XOdtQnc?s} zNEwYet$7KkbAVFWrkPQCE=A{^%u<>P7|wFIAnQv)lNF9<h4*WSF1L7QRQw<Udv7Kb z_F>7MkSz0jBiJbmjA`8Lvo0S4Q17JamS|Pr<arKn>dDQ#YSTmR$gS{7UbU(x3-d7S z^(LXao#<1Gx|aPDk_~+LC2z?Bhe~T)uxFKaATuFpn)l6ub-__7>T;BMqyQafZ>qq7 z&<C`rtE{gPgAt<t2GM5($<pIa%b3zODOsMBI3}gW1Ym2=>FM7T46ru~1g7`N>iY&C z?KVN=@{}BwZBB>^yGqG3g8#dWM1S(n8E4}J025^2j`EF=K5%bQ8h#beMd@szdNoDO zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh z*;8*mXI}Q=`yQ}7S(J@W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4* z-F)fecm=!(KJt<UsF3@4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An lo&TKmm^n}nudOEkv3jm8&~d@v)pxez#j~OC(T)ze$A3;CWIF%= literal 0 HcmV?d00001 diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-imf-fp64.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-imf-fp64.bc new file mode 100644 index 0000000000000000000000000000000000000000..85a261bc54ad705009f58a8a205227f5e2e814ef GIT binary patch literal 1624 zcmXX`Z%i9y7=KHl*NyJIf+%#mJA0#BnmFfKI%sK|(B33noUy}wK%-gPv5qNON~!#t zE-hC%rbIi_Ed789&5W5JOqlY455!Q8VP(yR#2D0uw4*R)7~nuN<39Kt^OAcm@8#a- ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm ztIka636<7l{ag{#94b@mn9@)Dk<wR6Tp!oQ4An8WzReiaa@VTb4BD&SA6<i*ianoN z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0@Ti3t|Z3~om=d{PYch6zx zY?-U_uzDbh(0=wLrn}#=-~H^@Z*Gok_`f?;udZ4tM`-94`Um#csUy@(feKV997DV% zCJnnHL|-q_mF(24BJ!aY??iB&#>Gsh={qSZz?JQOCLG8r9U0y+taN01hr>bQlA7pq zi@_k#A5?btib1`o%U0m^I4*GHMUGtF!do6(r=6jfSZa}_r+rL-yJDLZZ1cQzTxp*a z>@lS+yH(ZgB`&oS4eeqGYD5gi#h{nyHWJ;B%b;yfL_DJwJ8Q&HQtV4ck8Et=jXeHq z3a@iYe<np0Q&e`h=6uu~OU*>-IiKp6IB(7H*5q!TkSqz_GNiO6q?h2QPX=s1D{W(v z=7$SnuvH8Ng>XC3>lMQ_Vt7>4-FbuDK;$D2F2?b46IsyXb(lhLq;qLz+Q}@iR4&To z@>H=v|Dj+4HK#0NeB+2<%X$p|58@SjdWqiTsgpZ#Qf7d8mzncXYb?E#rY|cP88Az4 z`BbMr5-eHCHpV-EkSEjjB5xalr8InNFH9=-03J2bZzMv==-bO$ygr3jJb0U{O)of^ zVxfAmKraCRx6U>uIL3toG08H_TeFgVB5ln`Frz)|9`95WfT|M+Y!!9C&*F72`7p2A z(vvG3xuPfk_TY<Jyv$)(Zs%1G^0?^1kGa}=>pp5aN-q|w*I9a%rDs?g6kKDU59q(J zP4bQjr8OZ~v#pb$J`CFrINf4TP}JSNk2g88kjD?2$OohF7fGS)x<SA!XOdtQnc?s} zNEwYet$7KkbAVFWrkPQCE=A{^%u<>P7|wFIAnQv)lNF9<h4*WSF1L7QRQw<Udv7Kb z_F>7MkSz0jBiJbmjA`8Lvo0S4Q17JamS|Pr<arKn>dDQ#YSTmR$gS{7UbU(x3-d7S z^(LXao#<1Gx|aPDk_~+LC2z?Bhe~T)uxFKaATuFpn)l6ub-__7>T;BMqyQafZ>qq7 z&<C`rtE{gPgAt<t2GM5($<pIa%b3zODOsMBI3}gW1Ym2=>FM7T46ru~1g7`N>iY&C z?KVN=@{}BwZBB>^yGqG3g8#dWM1S(n8E4}J025^2j`EF=K5%bQ8h#beMd@szdNoDO zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh z*;8*mXI}Q=`yQ}7S(J@W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4* z-F)fecm=!(KJt<UsF3@4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An lo&TKmm^n}nudOEkv3jm8&~d@v)pxez#j~OC(T)ze$A3;CWIF%= literal 0 HcmV?d00001 diff --git a/clang/test/Driver/Inputs/SYCL/lib/libsycl-imf.bc b/clang/test/Driver/Inputs/SYCL/lib/libsycl-imf.bc new file mode 100644 index 0000000000000000000000000000000000000000..85a261bc54ad705009f58a8a205227f5e2e814ef GIT binary patch literal 1624 zcmXX`Z%i9y7=KHl*NyJIf+%#mJA0#BnmFfKI%sK|(B33noUy}wK%-gPv5qNON~!#t zE-hC%rbIi_Ed789&5W5JOqlY455!Q8VP(yR#2D0uw4*R)7~nuN<39Kt^OAcm@8#a- ze$VgE>*A-Dj#VL4h7j^=IKyjie*e{n|Bk<YAY(YLFqI)zgHVqGq4E+ImB2T(a1+tm ztIka636<7l{ag{#94b@mn9@)Dk<wR6Tp!oQ4An8WzReiaa@VTb4BD&SA6<i*ianoN z+G6f|@rr})mWW2jUMp$Ks4EQCrse_dZH1{arZ%1SoYr5TXlf2cH9FHEdF=(0p+<KC zo7!etLvgmYIeth>H-<AqpT^nagTtjJGeTGN2&n<n!9c0@Ti3t|Z3~om=d{PYch6zx zY?-U_uzDbh(0=wLrn}#=-~H^@Z*Gok_`f?;udZ4tM`-94`Um#csUy@(feKV997DV% zCJnnHL|-q_mF(24BJ!aY??iB&#>Gsh={qSZz?JQOCLG8r9U0y+taN01hr>bQlA7pq zi@_k#A5?btib1`o%U0m^I4*GHMUGtF!do6(r=6jfSZa}_r+rL-yJDLZZ1cQzTxp*a z>@lS+yH(ZgB`&oS4eeqGYD5gi#h{nyHWJ;B%b;yfL_DJwJ8Q&HQtV4ck8Et=jXeHq z3a@iYe<np0Q&e`h=6uu~OU*>-IiKp6IB(7H*5q!TkSqz_GNiO6q?h2QPX=s1D{W(v z=7$SnuvH8Ng>XC3>lMQ_Vt7>4-FbuDK;$D2F2?b46IsyXb(lhLq;qLz+Q}@iR4&To z@>H=v|Dj+4HK#0NeB+2<%X$p|58@SjdWqiTsgpZ#Qf7d8mzncXYb?E#rY|cP88Az4 z`BbMr5-eHCHpV-EkSEjjB5xalr8InNFH9=-03J2bZzMv==-bO$ygr3jJb0U{O)of^ zVxfAmKraCRx6U>uIL3toG08H_TeFgVB5ln`Frz)|9`95WfT|M+Y!!9C&*F72`7p2A z(vvG3xuPfk_TY<Jyv$)(Zs%1G^0?^1kGa}=>pp5aN-q|w*I9a%rDs?g6kKDU59q(J zP4bQjr8OZ~v#pb$J`CFrINf4TP}JSNk2g88kjD?2$OohF7fGS)x<SA!XOdtQnc?s} zNEwYet$7KkbAVFWrkPQCE=A{^%u<>P7|wFIAnQv)lNF9<h4*WSF1L7QRQw<Udv7Kb z_F>7MkSz0jBiJbmjA`8Lvo0S4Q17JamS|Pr<arKn>dDQ#YSTmR$gS{7UbU(x3-d7S z^(LXao#<1Gx|aPDk_~+LC2z?Bhe~T)uxFKaATuFpn)l6ub-__7>T;BMqyQafZ>qq7 z&<C`rtE{gPgAt<t2GM5($<pIa%b3zODOsMBI3}gW1Ym2=>FM7T46ru~1g7`N>iY&C z?KVN=@{}BwZBB>^yGqG3g8#dWM1S(n8E4}J025^2j`EF=K5%bQ8h#beMd@szdNoDO zMwx{Iohww!)B!vv12&uUF$jHKgHQuxy?k%T2pJ;!TZ2i^O{UyBFAc0xv#EV+PC4Sh z*;8*mXI}Q=`yQ}7S(J@W-uK|0u}D-NPEKU62pDBQwgyKe%eVrdITBLIdk}6aSD<ow zs_2vJT9ldgQS&J(^VCGXw1V6L;z5T9E+2X-X4zc}NVf<9mB30ia4wuH8Kv!r5q!4* z-F)fecm=!(KJt<UsF3@4)pneGsK=XA7)C=sX%SMvlgQeEr4b0Y(lIL7A?$Gpj&anf zN4w{^32P6Q!dkxGfiwOYcvdPCqw?BRca%HIoxc#)bLY(Fh6aCqLqmWwx0$UCoX`An lo&TKmm^n}nudOEkv3jm8&~d@v)pxez#j~OC(T)ze$A3;CWIF%= literal 0 HcmV?d00001 diff --git a/clang/test/Driver/sycl-device-library-linking.cpp b/clang/test/Driver/sycl-device-library-linking.cpp index baea3ae895d6d..c19103eb88d97 100644 --- a/clang/test/Driver/sycl-device-library-linking.cpp +++ b/clang/test/Driver/sycl-device-library-linking.cpp @@ -10,7 +10,20 @@ // CHECK-DEVICE-LIBS-SAME: "-fsycl-is-device" // CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-crt.bc" // CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-complex.bc" +// CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-complex-fp64.bc" // CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-cmath.bc" +// CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-cmath-fp64.bc" +// CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-imf.bc" +// CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-imf-fp64.bc" +// CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-imf-bf16.bc" +// CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-fallback-cstring.bc" +// CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-fallback-complex.bc" +// CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-fallback-complex-fp64.bc" +// CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-fallback-cmath.bc" +// CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-fallback-cmath-fp64.bc" +// CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-fallback-imf.bc" +// CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-fallback-imf-fp64.bc" +// CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode" "{{.*}}libsycl-fallback-imf-bf16.bc" // CHECK-DEVICE-LIBS-SAME: "-mlink-builtin-bitcode-postopt" // CHECK-DEVICE-LIBS-SAME: "-Wno-linker-warnings" diff --git a/clang/test/Driver/sycl-offload-jit-unix.cpp b/clang/test/Driver/sycl-offload-jit-unix.cpp index 67339c6fa8627..5bd25049fdbb1 100644 --- a/clang/test/Driver/sycl-offload-jit-unix.cpp +++ b/clang/test/Driver/sycl-offload-jit-unix.cpp @@ -9,7 +9,10 @@ // Check LLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON case: library is in lib/<triple>/ // RUN: rm -rf %t && mkdir -p %t/bin %t/lib/x86_64-unknown-linux-gnu %t/lib // RUN: touch %t/lib/x86_64-unknown-linux-gnu/libLLVMSYCL.so -// RUN: touch %t/lib/libsycl-crt.bc %t/lib/libsycl-complex.bc %t/lib/libsycl-cmath.bc +// RUN: touch %t/lib/libsycl-crt.bc %t/lib/libsycl-complex.bc %t/lib/libsycl-complex-fp64.bc %t/lib/libsycl-cmath.bc %t/lib/libsycl-cmath-fp64.bc +// RUN: touch %t/lib/libsycl-imf.bc %t/lib/libsycl-imf-fp64.bc %t/lib/libsycl-imf-bf16.bc +// RUN: touch %t/lib/libsycl-fallback-cstring.bc %t/lib/libsycl-fallback-complex.bc %t/lib/libsycl-fallback-complex-fp64.bc +// RUN: touch %t/lib/libsycl-fallback-cmath.bc %t/lib/libsycl-fallback-cmath-fp64.bc %t/lib/libsycl-fallback-imf.bc %t/lib/libsycl-fallback-imf-fp64.bc %t/lib/libsycl-fallback-imf-bf16.bc // RUN: ln -s %clang %t/bin/clang // RUN: %t/bin/clang -### -no-canonical-prefixes --target=x86_64-unknown-linux-gnu -fsycl %s 2>&1 \ // RUN: | FileCheck -check-prefixes=CHECK-LSYCL,CHECK-SYCL-HEADERS-HOST,CHECK-SYCL-HEADERS-DEVICE %s @@ -20,7 +23,10 @@ // Check LLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF case: library is in lib/ (no triple subdir) // RUN: rm -rf %t && mkdir -p %t/bin %t/lib // RUN: touch %t/lib/libLLVMSYCL.so -// RUN: touch %t/lib/libsycl-crt.bc %t/lib/libsycl-complex.bc %t/lib/libsycl-cmath.bc +// RUN: touch %t/lib/libsycl-crt.bc %t/lib/libsycl-complex.bc %t/lib/libsycl-complex-fp64.bc %t/lib/libsycl-cmath.bc %t/lib/libsycl-cmath-fp64.bc +// RUN: touch %t/lib/libsycl-imf.bc %t/lib/libsycl-imf-fp64.bc %t/lib/libsycl-imf-bf16.bc +// RUN: touch %t/lib/libsycl-fallback-cstring.bc %t/lib/libsycl-fallback-complex.bc %t/lib/libsycl-fallback-complex-fp64.bc +// RUN: touch %t/lib/libsycl-fallback-cmath.bc %t/lib/libsycl-fallback-cmath-fp64.bc %t/lib/libsycl-fallback-imf.bc %t/lib/libsycl-fallback-imf-fp64.bc %t/lib/libsycl-fallback-imf-bf16.bc // RUN: ln -s %clang %t/bin/clang // RUN: %t/bin/clang -### -no-canonical-prefixes --target=x86_64-unknown-linux-gnu -fsycl %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK-LSYCL-FLAT %s diff --git a/clang/test/Driver/sycl-offload-jit-xarch.cpp b/clang/test/Driver/sycl-offload-jit-xarch.cpp index 98bf86033214f..37f49fa99e107 100644 --- a/clang/test/Driver/sycl-offload-jit-xarch.cpp +++ b/clang/test/Driver/sycl-offload-jit-xarch.cpp @@ -2,12 +2,12 @@ // Verify that -Xarch_spirv64 forwards options to the SYCL device compilation // and clang-linker-wrapper call. -// RUN: %clang -fsycl --offload-targets=spirv64-unknown-unknown -Xarch_spirv64 -O3 -### %s --sysroot=%S/Inputs/SYCL 2>&1 \ +// RUN: %clang -fsycl --offload-targets=spirv64-unknown-unknown -Xarch_spirv64 -O3 -### %s --no-offloadlib 2>&1 \ // RUN: | FileCheck -check-prefix=SYCL-DEVICE-O3 %s // SYCL-DEVICE-O3: "-triple" "spirv64-unknown-unknown" "-aux-triple" "{{.*}}" "-O3"{{.*}} "-fsycl-is-device" // SYCL-DEVICE-O3: {{"[^"]*clang-linker-wrapper[^"]*".* "--device-compiler=spirv64-unknown-unknown=-O3"}} // Verify that `-Xarch_spirv64` forwards libraries to the device linker. -// RUN: %clang -fsycl --offload-targets=spirv64-unknown-unknown -Xarch_spirv64 -Wl,-lfoo -### %s 2>&1 \ +// RUN: %clang -fsycl --offload-targets=spirv64-unknown-unknown --no-offloadlib -Xarch_spirv64 -Wl,-lfoo -### %s 2>&1 \ // RUN: | FileCheck -check-prefix=DEVICE-LINKER %s // DEVICE-LINKER: {{"[^"]*clang-linker-wrapper[^"]*".* "--device-linker=spirv64-unknown-unknown=-lfoo"}} diff --git a/clang/test/Driver/sycl-offload-jit.cpp b/clang/test/Driver/sycl-offload-jit.cpp index 7716b6e3a552f..603812c6133d6 100644 --- a/clang/test/Driver/sycl-offload-jit.cpp +++ b/clang/test/Driver/sycl-offload-jit.cpp @@ -21,7 +21,7 @@ /// Check expected default values for device compilation when using -fsycl as /// well as llvm-offload-binary inputs. -// RUN: %clang -### -fsycl -c --target=x86_64-unknown-linux-gnu %s --sysroot=%S/Inputs/SYCL 2>&1 \ +// RUN: %clang -### -fsycl -c --target=x86_64-unknown-linux-gnu %s --no-offloadlib 2>&1 \ // RUN: | FileCheck -check-prefix=CHK-DEVICE-TRIPLE %s // CHK-DEVICE-TRIPLE: "-cc1"{{.*}} "-triple" "spirv64-unknown-unknown" // CHK-DEVICE-TRIPLE-SAME: "-aux-triple" "x86_64-unknown-linux-gnu" @@ -36,20 +36,20 @@ /// Check -fsycl-is-device is passed when compiling for the device. /// Check -fsycl-is-host is passed when compiling for host. -// RUN: %clang -### -fsycl -c %s 2>&1 \ +// RUN: %clang -### -fsycl -c %s --no-offloadlib 2>&1 \ // RUN: | FileCheck -check-prefixes=CHK-FSYCL-IS-DEVICE,CHK-FSYCL-IS-HOST %s -// RUN: %clang -### -fsycl -fsycl-device-only %s 2>&1 \ +// RUN: %clang -### -fsycl -fsycl-device-only %s --no-offloadlib 2>&1 \ // RUN: | FileCheck -check-prefix=CHK-FSYCL-IS-DEVICE %s -// RUN: %clang_cl -### -fsycl -c -- %s 2>&1 \ +// RUN: %clang_cl -### -fsycl --no-offloadlib -c -- %s 2>&1 \ // RUN: | FileCheck -check-prefixes=CHK-FSYCL-IS-DEVICE,CHK-FSYCL-IS-HOST %s -// RUN: %clang -### -fsycl -fsycl-host-only %s 2>&1 \ +// RUN: %clang -### -fsycl --no-offloadlib -fsycl-host-only %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHK-FSYCL-IS-HOST %s // CHK-FSYCL-IS-DEVICE: "-cc1"{{.*}} "-fsycl-is-device" {{.*}} "-emit-llvm-bc" // CHK-FSYCL-IS-HOST: "-cc1"{{.*}} "-fsycl-is-host" /// Check for option incompatibility with -fsycl -// RUN: not %clang -### -fsycl -ffreestanding %s 2>&1 \ +// RUN: not %clang -### -fsycl -ffreestanding %s --no-offloadlib 2>&1 \ // RUN: | FileCheck -check-prefix=CHK-INCOMPATIBILITY %s -DINCOMPATOPT=-ffreestanding -// RUN: not %clang -### -fsycl --offload-new-driver -static-libstdc++ %s 2>&1 \ +// RUN: not %clang -### -fsycl --offload-new-driver -static-libstdc++ %s --no-offloadlib 2>&1 \ // RUN: | FileCheck -check-prefix=CHK-INCOMPATIBILITY %s -DINCOMPATOPT=-static-libstdc++ // CHK-INCOMPATIBILITY: error: invalid argument '[[INCOMPATOPT]]' not allowed with '-fsycl' diff --git a/clang/test/Driver/sycl-std-default.cpp b/clang/test/Driver/sycl-std-default.cpp index 99fcc513696e6..51fbfe7bd5dd0 100644 --- a/clang/test/Driver/sycl-std-default.cpp +++ b/clang/test/Driver/sycl-std-default.cpp @@ -1,6 +1,6 @@ // Tests that SYCL defaults to C++17 when no -std= is specified -// RUN: %clangxx -### -fsycl -c %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck %s --check-prefixes=CHECK-DEVICE,CHECK-HOST +// RUN: %clangxx -### -fsycl -c %s --no-offloadlib 2>&1 | FileCheck %s --check-prefixes=CHECK-DEVICE,CHECK-HOST // CHECK-DEVICE: "-cc1"{{.*}} "-fsycl-is-device" // CHECK-DEVICE-SAME: "-std=c++17" @@ -8,7 +8,7 @@ // CHECK-HOST-SAME: "-std=c++17" // Test that explicit -std= overrides the default -// RUN: %clangxx -### -fsycl -std=c++20 -c %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck %s --check-prefixes=CHECK-OVERRIDE-DEVICE,CHECK-OVERRIDE-HOST +// RUN: %clangxx -### -fsycl -std=c++20 -c %s --no-offloadlib 2>&1 | FileCheck %s --check-prefixes=CHECK-OVERRIDE-DEVICE,CHECK-OVERRIDE-HOST // CHECK-OVERRIDE-DEVICE: "-cc1"{{.*}} "-fsycl-is-device" // CHECK-OVERRIDE-DEVICE-SAME: "-std=c++20" @@ -18,23 +18,23 @@ // CHECK-OVERRIDE-HOST-NOT: "-std=c++17" // Test that -std=c++14 or earlier produces an error -// RUN: not %clangxx -fsycl -std=c++14 -c %s 2>&1 | FileCheck %s --check-prefix=CHECK-CXX14-ERROR -// RUN: not %clangxx -fsycl -std=c++11 -c %s 2>&1 | FileCheck %s --check-prefix=CHECK-CXX11-ERROR -// RUN: not %clangxx -fsycl -std=c++98 -c %s 2>&1 | FileCheck %s --check-prefix=CHECK-CXX98-ERROR +// RUN: not %clangxx -fsycl -std=c++14 -c %s --no-offloadlib 2>&1 | FileCheck %s --check-prefix=CHECK-CXX14-ERROR +// RUN: not %clangxx -fsycl -std=c++11 -c %s --no-offloadlib 2>&1 | FileCheck %s --check-prefix=CHECK-CXX11-ERROR +// RUN: not %clangxx -fsycl -std=c++98 -c %s --no-offloadlib 2>&1 | FileCheck %s --check-prefix=CHECK-CXX98-ERROR // CHECK-CXX14-ERROR: error: SYCL requires C++17 or later; '-std=c++14' is not supported // CHECK-CXX11-ERROR: error: SYCL requires C++17 or later; '-std=c++11' is not supported // CHECK-CXX98-ERROR: error: SYCL requires C++17 or later; '-std=c++98' is not supported // Test that C standards produce an error with SYCL -// RUN: not %clangxx -fsycl -std=c11 -c %s 2>&1 | FileCheck %s --check-prefix=CHECK-C11-ERROR -// RUN: not %clangxx -fsycl -std=c99 -c %s 2>&1 | FileCheck %s --check-prefix=CHECK-C99-ERROR +// RUN: not %clangxx -fsycl -std=c11 -c %s --no-offloadlib 2>&1 | FileCheck %s --check-prefix=CHECK-C11-ERROR +// RUN: not %clangxx -fsycl -std=c99 -c %s --no-offloadlib 2>&1 | FileCheck %s --check-prefix=CHECK-C99-ERROR // CHECK-C11-ERROR: error: invalid argument '-std=c11' not allowed with '-fsycl' // CHECK-C99-ERROR: error: invalid argument '-std=c99' not allowed with '-fsycl' // Test on Windows with clang-cl (MSVC mode) -// RUN: %clang_cl --target=x86_64-pc-windows-msvc -### -fsycl -- %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck %s --check-prefixes=CHECK-MSVC-DEVICE,CHECK-MSVC-HOST +// RUN: %clang_cl --no-offloadlib --target=x86_64-pc-windows-msvc -### -fsycl -- %s 2>&1 | FileCheck %s --check-prefixes=CHECK-MSVC-DEVICE,CHECK-MSVC-HOST // CHECK-MSVC-DEVICE: "-cc1"{{.*}} "-fsycl-is-device" // CHECK-MSVC-DEVICE-SAME: "-std=c++17" @@ -42,7 +42,7 @@ // CHECK-MSVC-HOST-SAME: "-std=c++17" // Test that /std: override works on Windows -// RUN: %clang_cl --target=x86_64-pc-windows-msvc -### -fsycl /std:c++20 -- %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck %s --check-prefixes=CHECK-MSVC-OVERRIDE-DEVICE,CHECK-MSVC-OVERRIDE-HOST +// RUN: %clang_cl --target=x86_64-pc-windows-msvc -### -fsycl /std:c++20 --no-offloadlib -- %s 2>&1 | FileCheck %s --check-prefixes=CHECK-MSVC-OVERRIDE-DEVICE,CHECK-MSVC-OVERRIDE-HOST // CHECK-MSVC-OVERRIDE-DEVICE: "-cc1"{{.*}} "-fsycl-is-device" // CHECK-MSVC-OVERRIDE-DEVICE-SAME: "-std=c++20" @@ -52,12 +52,12 @@ // CHECK-MSVC-OVERRIDE-HOST-NOT: "-std=c++17" // Test that /std:c++14 produces an error on Windows -// RUN: not %clang_cl --target=x86_64-pc-windows-msvc -fsycl /std:c++14 -- %s 2>&1 | FileCheck %s --check-prefix=CHECK-MSVC-CXX14-ERROR +// RUN: not %clang_cl --target=x86_64-pc-windows-msvc -fsycl /std:c++14 --no-offloadlib -- %s 2>&1 | FileCheck %s --check-prefix=CHECK-MSVC-CXX14-ERROR // CHECK-MSVC-CXX14-ERROR: error: SYCL requires C++17 or later; '/std:c++14' is not supported // Test that C standards produce an error on Windows with clang-cl -// RUN: not %clang_cl --target=x86_64-pc-windows-msvc -fsycl /std:c11 -- %s 2>&1 | FileCheck %s --check-prefix=CHECK-MSVC-C-ERROR +// RUN: not %clang_cl --target=x86_64-pc-windows-msvc -fsycl /std:c11 --no-offloadlib -- %s 2>&1 | FileCheck %s --check-prefix=CHECK-MSVC-C-ERROR // CHECK-MSVC-C-ERROR: error: invalid argument '/std:c11' not allowed with '-fsycl' diff --git a/clang/test/Driver/sycl.cpp b/clang/test/Driver/sycl.cpp index 30fb05893a7aa..b58af28c38301 100644 --- a/clang/test/Driver/sycl.cpp +++ b/clang/test/Driver/sycl.cpp @@ -11,8 +11,8 @@ // RUN: %clangxx -### -fno-sycl %s 2>&1 | FileCheck %s --check-prefix=DISABLED // RUN: %clangxx -### -fsycl -fno-sycl %s 2>&1 | FileCheck %s --check-prefix=DISABLED // RUN: %clangxx -### %s 2>&1 | FileCheck %s --check-prefix=DISABLED -// RUN: %clang_cl -### -fsycl -sycl-std=2017 -- %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck %s --check-prefix=ENABLED -// RUN: %clang_cl -### -fsycl -- %s --sysroot=%S/Inputs/SYCL 2>&1 | FileCheck %s --check-prefix=ENABLED +// RUN: %clang_cl -### -fsycl -sycl-std=2017 --sysroot=%S/Inputs/SYCL -- %s 2>&1 | FileCheck %s --check-prefix=ENABLED +// RUN: %clang_cl -### -fsycl --sysroot=%S/Inputs/SYCL -- %s 2>&1 | FileCheck %s --check-prefix=ENABLED // RUN: %clang_cl -### -- %s 2>&1 | FileCheck %s --check-prefix=DISABLED // ENABLED: "-cc1"{{.*}} "-fsycl-is-device" _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
