Skip to content

Commit 1f1c8c8

Browse files
author
aidan.belton
committed
Merge branch 'sycl' of https://github.com/AidanBeltonS/llvm into aspect_bf16
2 parents 70fcad2 + 5e6642a commit 1f1c8c8

File tree

97 files changed

+3551
-1324
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

97 files changed

+3551
-1324
lines changed

buildbot/configure.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,11 @@ def do_configure(args):
7575
sycl_build_pi_hip_platform = args.hip_platform
7676
sycl_enabled_plugins.append("hip")
7777

78+
# all llvm compiler targets don't require 3rd party dependencies, so can be
79+
# built/tested even if specific runtimes are not available
80+
if args.enable_all_llvm_targets:
81+
llvm_targets_to_build += ';NVPTX;AMDGPU'
82+
7883
if args.werror or args.ci_defaults:
7984
sycl_werror = 'ON'
8085
xpti_enable_werror = 'ON'
@@ -210,9 +215,10 @@ def main():
210215
parser.add_argument("--hip-platform", type=str, choices=['AMD', 'NVIDIA'], default='AMD', help="choose hardware platform for HIP backend")
211216
parser.add_argument("--arm", action='store_true', help="build ARM support rather than x86")
212217
parser.add_argument("--enable-esimd-emulator", action='store_true', help="build with ESIMD emulation support")
218+
parser.add_argument("--enable-all-llvm-targets", action='store_true', help="build compiler with all supported targets, it doesn't change runtime build")
213219
parser.add_argument("--no-assertions", action='store_true', help="build without assertions")
214220
parser.add_argument("--docs", action='store_true', help="build Doxygen documentation")
215-
parser.add_argument("--werror", action='store_true', help="Don't treat warnings as errors")
221+
parser.add_argument("--werror", action='store_true', help="Treat warnings as errors")
216222
parser.add_argument("--shared-libs", action='store_true', help="Build shared libraries")
217223
parser.add_argument("--cmake-opt", action='append', help="Additional CMake option not configured via script parameters")
218224
parser.add_argument("--cmake-gen", default="Ninja", help="CMake generator")

buildbot/dependency.conf

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ ocl_cpu_rt_ver=2022.13.3.0.16
44
# https://github.com/intel/llvm/releases/download/2022-WW13/win-oclcpuexp-2022.13.3.0.16_rel.zip
55
ocl_cpu_rt_ver_win=2022.13.3.0.16
66
# Same GPU driver supports Level Zero and OpenCL
7-
# https://github.com/intel/compute-runtime/releases/tag/22.15.22905
8-
ocl_gpu_rt_ver=22.15.22905
7+
# https://github.com/intel/compute-runtime/releases/tag/22.20.23198
8+
ocl_gpu_rt_ver=22.20.23198
99
# Same GPU driver supports Level Zero and OpenCL
1010
# https://downloadmirror.intel.com/723911/igfx_win_101.1404.zip
1111
ocl_gpu_rt_ver_win=101.1404
@@ -31,7 +31,7 @@ ocloc_ver_win=101.1404
3131
[DRIVER VERSIONS]
3232
cpu_driver_lin=2022.13.3.0.16
3333
cpu_driver_win=2022.13.3.0.16
34-
gpu_driver_lin=22.15.22905
34+
gpu_driver_lin=22.20.23198
3535
gpu_driver_win=101.1404
3636
fpga_driver_lin=2022.13.3.0.16
3737
fpga_driver_win=2022.13.3.0.16

clang/include/clang/Basic/Attr.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1226,7 +1226,7 @@ def : MutualExclusions<[CUDAConstant, CUDAShared, HIPManaged]>;
12261226
def SYCLDevice : InheritableAttr {
12271227
let Spellings = [GNU<"sycl_device">];
12281228
let Subjects = SubjectList<[Function]>;
1229-
let LangOpts = [SYCLIsDevice];
1229+
let LangOpts = [SYCLIsDevice, SilentlyIgnoreSYCLIsHost];
12301230
let Documentation = [SYCLDeviceDocs];
12311231
}
12321232

clang/include/clang/Basic/LangOptions.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -470,6 +470,10 @@ class LangOptions : public LangOptionsBase {
470470
/// The seed used by the randomize structure layout feature.
471471
std::string RandstructSeed;
472472

473+
/// The name of the file to which the backend should save YAML optimization
474+
/// records.
475+
std::string OptRecordFile;
476+
473477
LangOptions();
474478

475479
/// Set language defaults for the given input language and

clang/include/clang/Driver/Options.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5897,7 +5897,7 @@ def arcmt_action_EQ : Joined<["-"], "arcmt-action=">, Flags<[CC1Option, NoDriver
58975897

58985898
def opt_record_file : Separate<["-"], "opt-record-file">,
58995899
HelpText<"File name to use for YAML optimization record output">,
5900-
MarshallingInfoString<CodeGenOpts<"OptRecordFile">>;
5900+
MarshallingInfoString<LangOpts<"OptRecordFile">>;
59015901
def opt_record_passes : Separate<["-"], "opt-record-passes">,
59025902
HelpText<"Only record remark information for passes whose names match the given regular expression">;
59035903
def opt_record_format : Separate<["-"], "opt-record-format">,

clang/lib/CodeGen/CodeGenFunction.cpp

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1602,26 +1602,27 @@ void CodeGenFunction::GenerateCode(GlobalDecl GD, llvm::Function *Fn,
16021602

16031603
// Emit the standard function prologue.
16041604
StartFunction(GD, ResTy, Fn, FnInfo, Args, Loc, BodyRange.getBegin());
1605-
1606-
SyclOptReportHandler &SyclOptReport = CGM.getDiags().getSYCLOptReport();
1607-
if (Fn && SyclOptReport.HasOptReportInfo(FD)) {
1608-
llvm::OptimizationRemarkEmitter ORE(Fn);
1609-
for (auto ORI : llvm::enumerate(SyclOptReport.GetInfo(FD))) {
1610-
llvm::DiagnosticLocation DL =
1611-
SourceLocToDebugLoc(ORI.value().KernelArgLoc);
1612-
StringRef NameInDesc = ORI.value().KernelArgDescName;
1613-
StringRef ArgType = ORI.value().KernelArgType;
1614-
StringRef ArgDesc = ORI.value().KernelArgDesc;
1615-
unsigned ArgSize = ORI.value().KernelArgSize;
1616-
StringRef ArgDecomposedField = ORI.value().KernelArgDecomposedField;
1617-
1618-
llvm::OptimizationRemark Remark("sycl", "Region", DL,
1619-
&Fn->getEntryBlock());
1620-
Remark << "Arg " << llvm::ore::NV("Argument", ORI.index()) << ":"
1621-
<< ArgDesc << NameInDesc << " (" << ArgDecomposedField
1622-
<< "Type:" << ArgType << ", "
1623-
<< "Size: " << llvm::ore::NV("Argument", ArgSize) << ")";
1624-
ORE.emit(Remark);
1605+
if (!getLangOpts().OptRecordFile.empty()) {
1606+
SyclOptReportHandler &SyclOptReport = CGM.getDiags().getSYCLOptReport();
1607+
if (Fn && SyclOptReport.HasOptReportInfo(FD)) {
1608+
llvm::OptimizationRemarkEmitter ORE(Fn);
1609+
for (auto ORI : llvm::enumerate(SyclOptReport.GetInfo(FD))) {
1610+
llvm::DiagnosticLocation DL =
1611+
SourceLocToDebugLoc(ORI.value().KernelArgLoc);
1612+
StringRef NameInDesc = ORI.value().KernelArgDescName;
1613+
StringRef ArgType = ORI.value().KernelArgType;
1614+
StringRef ArgDesc = ORI.value().KernelArgDesc;
1615+
unsigned ArgSize = ORI.value().KernelArgSize;
1616+
StringRef ArgDecomposedField = ORI.value().KernelArgDecomposedField;
1617+
1618+
llvm::OptimizationRemark Remark("sycl", "Region", DL,
1619+
&Fn->getEntryBlock());
1620+
Remark << "Arg " << llvm::ore::NV("Argument", ORI.index()) << ":"
1621+
<< ArgDesc << NameInDesc << " (" << ArgDecomposedField
1622+
<< "Type:" << ArgType << ", "
1623+
<< "Size: " << llvm::ore::NV("Argument", ArgSize) << ")";
1624+
ORE.emit(Remark);
1625+
}
16251626
}
16261627
}
16271628

clang/lib/Driver/Driver.cpp

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4754,12 +4754,17 @@ class OffloadingActionBuilder final {
47544754
SYCLTC->SYCLInstallation.getSYCLDeviceLibPath(LibLocCandidates);
47554755
StringRef LibSuffix = isMSVCEnv ? ".obj" : ".o";
47564756
using SYCLDeviceLibsList = SmallVector<DeviceLibOptInfo, 5>;
4757+
47574758
const SYCLDeviceLibsList sycl_device_wrapper_libs = {
4758-
{"libsycl-crt", "libc"},
4759-
{"libsycl-complex", "libm-fp32"},
4760-
{"libsycl-complex-fp64", "libm-fp64"},
4761-
{"libsycl-cmath", "libm-fp32"},
4762-
{"libsycl-cmath-fp64", "libm-fp64"}};
4759+
{"libsycl-crt", "libc"},
4760+
{"libsycl-complex", "libm-fp32"},
4761+
{"libsycl-complex-fp64", "libm-fp64"},
4762+
{"libsycl-cmath", "libm-fp32"},
4763+
{"libsycl-cmath-fp64", "libm-fp64"},
4764+
#if defined(_WIN32)
4765+
{"libsycl-msvc-math", "libm-fp32"},
4766+
#endif
4767+
};
47634768
// For AOT compilation, we need to link sycl_device_fallback_libs as
47644769
// default too.
47654770
const SYCLDeviceLibsList sycl_device_fallback_libs = {

clang/lib/Driver/ToolChains/SYCL.cpp

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -130,21 +130,16 @@ void SYCL::constructLLVMForeachCommand(Compilation &C, const JobAction &JA,
130130
// The list should match pre-built SYCL device library files located in
131131
// compiler package. Once we add or remove any SYCL device library files,
132132
// the list should be updated accordingly.
133-
static llvm::SmallVector<StringRef, 16> SYCLDeviceLibList{
134-
"crt",
135-
"cmath",
136-
"cmath-fp64",
137-
"complex",
138-
"complex-fp64",
139-
"itt-compiler-wrappers",
140-
"itt-stubs",
141-
"itt-user-wrappers",
142-
"fallback-cassert",
143-
"fallback-cstring",
144-
"fallback-cmath",
145-
"fallback-cmath-fp64",
146-
"fallback-complex",
147-
"fallback-complex-fp64"};
133+
134+
static llvm::SmallVector<StringRef, 16> SYCLDeviceLibList {
135+
"crt", "cmath", "cmath-fp64", "complex", "complex-fp64",
136+
#if defined(_WIN32)
137+
"msvc-math",
138+
#endif
139+
"itt-compiler-wrappers", "itt-stubs", "itt-user-wrappers",
140+
"fallback-cassert", "fallback-cstring", "fallback-cmath",
141+
"fallback-cmath-fp64", "fallback-complex", "fallback-complex-fp64"
142+
};
148143

149144
const char *SYCL::Linker::constructLLVMLinkCommand(
150145
Compilation &C, const JobAction &JA, const InputInfo &Output,

clang/lib/Frontend/CompilerInvocation.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1946,6 +1946,8 @@ bool CompilerInvocation::ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args,
19461946

19471947
bool NeedLocTracking = false;
19481948

1949+
Opts.OptRecordFile = LangOpts->OptRecordFile;
1950+
19491951
if (!Opts.OptRecordFile.empty())
19501952
NeedLocTracking = true;
19511953

@@ -3318,6 +3320,8 @@ void CompilerInvocation::GenerateLangArgs(const LangOptions &Opts,
33183320
GenerateArg(Args, OPT_pic_is_pie, SA);
33193321
for (StringRef Sanitizer : serializeSanitizerKinds(Opts.Sanitize))
33203322
GenerateArg(Args, OPT_fsanitize_EQ, Sanitizer, SA);
3323+
if (!Opts.OptRecordFile.empty())
3324+
GenerateArg(Args, OPT_opt_record_file, Opts.OptRecordFile, SA);
33213325

33223326
return;
33233327
}
@@ -3617,6 +3621,12 @@ bool CompilerInvocation::ParseLangArgs(LangOptions &Opts, ArgList &Args,
36173621
parseSanitizerKinds("-fsanitize=", Args.getAllArgValues(OPT_fsanitize_EQ),
36183622
Diags, Opts.Sanitize);
36193623

3624+
// OptRecordFile is used to generate the optimization record file should
3625+
// be set regardless of the input type.
3626+
if (Args.hasArg(OPT_opt_record_file))
3627+
Opts.OptRecordFile =
3628+
std::string(Args.getLastArgValue(OPT_opt_record_file));
3629+
36203630
return Diags.getNumErrors() == NumErrorsBefore;
36213631
}
36223632

clang/lib/Sema/SemaDecl.cpp

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9700,15 +9700,11 @@ Sema::ActOnFunctionDeclarator(Scope *S, Declarator &D, DeclContext *DC,
97009700
}
97019701

97029702
if (isFriend) {
9703-
// In MSVC mode for older versions of the standard, friend function
9704-
// declarations behave as declarations
9705-
bool PerformFriendInjection =
9706-
getLangOpts().MSVCCompat && !getLangOpts().CPlusPlus20;
97079703
if (FunctionTemplate) {
9708-
FunctionTemplate->setObjectOfFriendDecl(PerformFriendInjection);
9704+
FunctionTemplate->setObjectOfFriendDecl();
97099705
FunctionTemplate->setAccess(AS_public);
97109706
}
9711-
NewFD->setObjectOfFriendDecl(PerformFriendInjection);
9707+
NewFD->setObjectOfFriendDecl();
97129708
NewFD->setAccess(AS_public);
97139709
}
97149710

clang/lib/Sema/SemaDeclAttr.cpp

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7623,14 +7623,17 @@ SYCLIntelFPGAMaxConcurrencyAttr *Sema::MergeSYCLIntelFPGAMaxConcurrencyAttr(
76237623
// Check to see if there's a duplicate attribute with different values
76247624
// already applied to the declaration.
76257625
if (const auto *DeclAttr = D->getAttr<SYCLIntelFPGAMaxConcurrencyAttr>()) {
7626-
const auto *DeclExpr = dyn_cast<ConstantExpr>(DeclAttr->getNThreadsExpr());
7627-
const auto *MergeExpr = dyn_cast<ConstantExpr>(A.getNThreadsExpr());
7628-
if (DeclExpr && MergeExpr &&
7629-
DeclExpr->getResultAsAPSInt() != MergeExpr->getResultAsAPSInt()) {
7630-
Diag(DeclAttr->getLoc(), diag::warn_duplicate_attribute) << &A;
7631-
Diag(A.getLoc(), diag::note_previous_attribute);
7626+
if (const auto *DeclExpr =
7627+
dyn_cast<ConstantExpr>(DeclAttr->getNThreadsExpr())) {
7628+
if (const auto *MergeExpr = dyn_cast<ConstantExpr>(A.getNThreadsExpr())) {
7629+
if (DeclExpr->getResultAsAPSInt() != MergeExpr->getResultAsAPSInt()) {
7630+
Diag(DeclAttr->getLoc(), diag::warn_duplicate_attribute) << &A;
7631+
Diag(A.getLoc(), diag::note_previous_attribute);
7632+
}
7633+
// Do not add a duplicate attribute.
7634+
return nullptr;
7635+
}
76327636
}
7633-
return nullptr;
76347637
}
76357638

76367639
return ::new (Context)
@@ -7654,14 +7657,21 @@ void Sema::AddSYCLIntelFPGAMaxConcurrencyAttr(Decl *D,
76547657
return;
76557658
}
76567659

7660+
// Check to see if there's a duplicate attribute with different values
7661+
// already applied to the declaration.
76577662
if (const auto *DeclAttr = D->getAttr<SYCLIntelFPGAMaxConcurrencyAttr>()) {
7658-
const auto *DeclExpr =
7659-
dyn_cast<ConstantExpr>(DeclAttr->getNThreadsExpr());
7660-
if (DeclExpr && ArgVal != DeclExpr->getResultAsAPSInt()) {
7661-
Diag(CI.getLoc(), diag::warn_duplicate_attribute) << CI;
7662-
Diag(DeclAttr->getLoc(), diag::note_previous_attribute);
7663+
// If the other attribute argument is instantiation dependent, we won't
7664+
// have converted it to a constant expression yet and thus we test
7665+
// whether this is a null pointer.
7666+
if (const auto *DeclExpr =
7667+
dyn_cast<ConstantExpr>(DeclAttr->getNThreadsExpr())) {
7668+
if (ArgVal != DeclExpr->getResultAsAPSInt()) {
7669+
Diag(CI.getLoc(), diag::warn_duplicate_attribute) << CI;
7670+
Diag(DeclAttr->getLoc(), diag::note_previous_attribute);
7671+
}
7672+
// Drop the duplicate attribute.
7673+
return;
76637674
}
7664-
return;
76657675
}
76667676
}
76677677

clang/lib/Sema/SemaSYCL.cpp

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3669,17 +3669,29 @@ void Sema::ConstructOpenCLKernel(FunctionDecl *KernelCallerFunc,
36693669
SyclOptReportCreator opt_report(*this, kernel_decl, KernelObj->getLocation());
36703670

36713671
KernelObjVisitor Visitor{*this};
3672-
Visitor.VisitRecordBases(KernelObj, kernel_decl, kernel_body, int_header,
3673-
int_footer, opt_report);
3674-
Visitor.VisitRecordFields(KernelObj, kernel_decl, kernel_body, int_header,
3675-
int_footer, opt_report);
3672+
3673+
// Visit handlers to generate information for optimization record only if
3674+
// optimization record is saved.
3675+
if (!getLangOpts().OptRecordFile.empty()) {
3676+
Visitor.VisitRecordBases(KernelObj, kernel_decl, kernel_body, int_header,
3677+
int_footer, opt_report);
3678+
Visitor.VisitRecordFields(KernelObj, kernel_decl, kernel_body, int_header,
3679+
int_footer, opt_report);
3680+
} else {
3681+
Visitor.VisitRecordBases(KernelObj, kernel_decl, kernel_body, int_header,
3682+
int_footer);
3683+
Visitor.VisitRecordFields(KernelObj, kernel_decl, kernel_body, int_header,
3684+
int_footer);
3685+
}
36763686

36773687
if (ParmVarDecl *KernelHandlerArg =
36783688
getSyclKernelHandlerArg(KernelCallerFunc)) {
36793689
kernel_decl.handleSyclKernelHandlerType();
36803690
kernel_body.handleSyclKernelHandlerType(KernelHandlerArg);
36813691
int_header.handleSyclKernelHandlerType(KernelHandlerArg->getType());
3682-
opt_report.handleSyclKernelHandlerType();
3692+
3693+
if (!getLangOpts().OptRecordFile.empty())
3694+
opt_report.handleSyclKernelHandlerType();
36833695
}
36843696
}
36853697

clang/test/Driver/openmp-simd-sycl-device.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
/// Check that -fopenmp-simd is NOT passed to the device compilation when
22
/// used together with -fsycl.
33

4-
// REQUIRES: clang-driver
5-
64
// RUN: %clang -c -fsycl -fopenmp-simd -### %s 2>&1 | FileCheck %s
75
// RUN: %clang -c -fopenmp-simd -fopenmp-version=50 -### %s 2>&1 | FileCheck %s --check-prefix=UNCHANGED
86

clang/test/Driver/openmp-sycl-interop.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
/// Check that OpenMP and SYCL device binaries are wrapped and linked to the host
22
/// image when program uses both OpenMP and SYCL offloading models.
33

4-
// REQUIRES: clang-driver
54
// REQUIRES: x86-registered-target
65

76
// RUN: touch %t.o
8-
// RUN: %clang --target=x86_64-host-linux-gnu -fsycl -fopenmp -fopenmp-targets=x86_64-device-linux-gnu -### %t.o 2>&1 \
7+
// RUN: %clang --target=x86_64-host-linux-gnu -fno-openmp-new-driver -fsycl -fopenmp -fopenmp-targets=x86_64-device-linux-gnu -### %t.o 2>&1 \
98
// RUN: | FileCheck %s
109
// CHECK: clang-offload-wrapper{{(.exe)?}}" {{.*}}"-o=[[SYCLBC:.+\.bc]]" {{.*}}"-target=spir64" "-kind=sycl"
1110
// CHECK: llc{{.*}}" {{.*}}"-o" "[[SYCLOBJ:.+]]" "[[SYCLBC]]"

clang/test/Driver/suppress-LNK4078-sycl-link.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
// REQUIRES: clang-driver
21
// RUN: %clangxx -target x86_64-pc-windows-msvc -fsycl %s -### 2>&1 \
32
// RUN: | FileCheck %s
43
// RUN: %clang_cl --target=x86_64-pc-windows-msvc -fsycl %s -### 2>&1 \

clang/test/Driver/sycl-MD-default.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
// REQUIRES: clang-driver
2-
31
// RUN: %clang -### -fsycl -c -target x86_64-unknown-windows-msvc %s 2>&1 \
42
// RUN: | FileCheck -check-prefix=CHK-DEFAULT %s
53
// RUN: %clangxx -### -fsycl -c -target x86_64-unknown-windows-msvc %s 2>&1 \

clang/test/Driver/sycl-amdgcn-sqrt.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
// REQUIRES: clang-driver
21
// REQUIRES: amdgpu-registered-target
32
// REQUIRES: !system-windows
43

clang/test/Driver/sycl-cxx-default.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
/// When -fsycl is used, C++ source is the default
2-
// REQUIRES: clang-driver
32

43
// RUN: %clang -c -fsycl %s -### 2>&1 \
54
// RUN: | FileCheck -check-prefix=CXX_TYPE_CHECK %s

clang/test/Driver/sycl-device-lib-win.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
/// Perform several driver tests for SYCL device libraries on Windows
33
///
44

5-
// REQUIRES: clang-driver, windows
5+
// REQUIRES: windows
66

77
/// ###########################################################################
88

@@ -20,6 +20,7 @@
2020
// SYCL_DEVICE_LIB_UNBUNDLE_DEFAULT-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-complex-fp64.obj" "-output={{.*}}libsycl-complex-fp64-{{.*}}.o" "-unbundle"
2121
// SYCL_DEVICE_LIB_UNBUNDLE_DEFAULT-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-cmath.obj" "-output={{.*}}libsycl-cmath-{{.*}}.o" "-unbundle"
2222
// SYCL_DEVICE_LIB_UNBUNDLE_DEFAULT-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-cmath-fp64.obj" "-output={{.*}}libsycl-cmath-fp64-{{.*}}.o" "-unbundle"
23+
// SYCL_DEVICE_LIB_UNBUNDLE_DEFAULT-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-msvc-math.obj" "-output={{.*}}libsycl-msvc-math-{{.*}}.o" "-unbundle"
2324

2425
/// ###########################################################################
2526
/// test sycl fallback device libraries are not linked by default
@@ -46,6 +47,7 @@
4647
// SYCL_DEVICE_LIB_UNBUNDLE_WITH_FP64-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-complex-fp64.obj" "-output={{.*}}libsycl-complex-fp64-{{.*}}.o" "-unbundle"
4748
// SYCL_DEVICE_LIB_UNBUNDLE_WITH_FP64-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-cmath.obj" "-output={{.*}}libsycl-cmath-{{.*}}.o" "-unbundle"
4849
// SYCL_DEVICE_LIB_UNBUNDLE_WITH_FP64-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-cmath-fp64.obj" "-output={{.*}}libsycl-cmath-fp64-{{.*}}.o" "-unbundle"
50+
// SYCL_DEVICE_LIB_UNBUNDLE_WITH_FP64-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-msvc-math.obj" "-output={{.*}}libsycl-msvc-math-{{.*}}.o" "-unbundle"
4951

5052
/// ###########################################################################
5153

@@ -56,6 +58,8 @@
5658
// SYCL_DEVICE_LIB_UNBUNDLE_NO_LIBC: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-complex-fp64.obj" "-output={{.*}}libsycl-complex-fp64-{{.*}}.o" "-unbundle"
5759
// SYCL_DEVICE_LIB_UNBUNDLE_NO_LIBC-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-cmath.obj" "-output={{.*}}libsycl-cmath-{{.*}}.o" "-unbundle"
5860
// SYCL_DEVICE_LIB_UNBUNDLE_NO_LIBC-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-cmath-fp64.obj" "-output={{.*}}libsycl-cmath-fp64-{{.*}}.o" "-unbundle"
61+
// SYCL_DEVICE_LIB_UNBUNDLE_NO_LIBC-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-msvc-math.obj" "-output={{.*}}libsycl-msvc-math-{{.*}}.o" "-unbundle"
62+
5963
/// ###########################################################################
6064

6165
/// test behavior of -fno-sycl-device-lib=libm-fp32,libm-fp64
@@ -107,6 +111,7 @@
107111
// SYCL_LLVM_LINK_DEVICE_LIB-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-complex-fp64.obj" "-output={{.*}}libsycl-complex-fp64-{{.*}}.o" "-unbundle"
108112
// SYCL_LLVM_LINK_DEVICE_LIB-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-cmath.obj" "-output={{.*}}libsycl-cmath-{{.*}}.o" "-unbundle"
109113
// SYCL_LLVM_LINK_DEVICE_LIB-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-cmath-fp64.obj" "-output={{.*}}libsycl-cmath-fp64-{{.*}}.o" "-unbundle"
114+
// SYCL_LLVM_LINK_DEVICE_LIB-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-msvc-math.obj" "-output={{.*}}libsycl-msvc-math-{{.*}}.o" "-unbundle"
110115
// SYCL_LLVM_LINK_DEVICE_LIB-NEXT: llvm-link{{.*}} "-only-needed" "{{.*}}" "-o" "{{.*}}.bc" "--suppress-warnings"
111116

112117
/// ###########################################################################

0 commit comments

Comments
 (0)