-
Couldn't load subscription status.
- Fork 794
[SYCL] Move bfloat support from experimental to supported. #6524
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 50 commits
6014cef
bdd88e5
73ed541
0fe1884
feb9d5f
129f53f
2115f09
3c2eb80
74aa175
bd05711
f8e894c
2ad68f6
4b78c03
0fce16d
4bcb383
35308f8
fa045e2
3322d6a
b12fd94
87b0f09
f217eb4
a908b11
aab4c78
a2568ba
4d7a22b
38e5ad4
b9accad
ca7880a
dc3b2b5
c955d36
1aa6ad3
ff04ce1
802f502
8d7f46a
190f2a3
84c50f3
df058ba
fed4d1d
28259d0
c11115b
6b05a2a
a82d73a
3fc8885
1ec6838
105094b
432e775
c135643
4eca414
8876ac8
f0f2727
17673bf
1094b8c
8d40228
c5a85cf
cf8f6e0
5e50646
45d3e70
a7be718
cac1c18
208c09a
46f406d
6830857
46e5278
10fc9a3
6195545
437e34a
09dc4c5
386353e
0f93586
48f3cac
d33cb10
28992c2
ec28c8b
b958fc7
ec70b20
1b86012
3e1e681
8c633d3
1a59e03
b2fd6cc
fab2e54
35b8910
a05c872
ac5f603
6d45ed1
077d0fe
2ff6a9d
d7c80ee
20d13df
cd1d0a2
4bf60b9
45c32f7
5de1bf7
6ec2bb9
49e9cd1
2065060
e24e57b
41098ab
37b05f0
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -5081,6 +5081,59 @@ class OffloadingActionBuilder final { | |
| } | ||
| } | ||
|
|
||
| // Return whether to use native bfloat16 library. | ||
| bool selectBfloatLibs(const ToolChain *TC, bool &useNative) { | ||
| bool needLibs = false; | ||
|
|
||
| const OptTable &Opts = C.getDriver().getOpts(); | ||
| const char *TargetOpt = nullptr; | ||
| const char *DeviceOpt = nullptr; | ||
| for (auto *A : Args) { | ||
| llvm::Triple *TargetBE = nullptr; | ||
|
|
||
| auto GetTripleIt = [&, this](llvm::StringRef Triple) { | ||
| llvm::Triple TargetTriple{Triple}; | ||
| auto TripleIt = llvm::find_if(SYCLTripleList, [&](auto &SYCLTriple) { | ||
| return SYCLTriple == TargetTriple; | ||
| }); | ||
| return TripleIt != SYCLTripleList.end() ? &*TripleIt : nullptr; | ||
| }; | ||
|
|
||
| if (A->getOption().matches(options::OPT_fsycl_targets_EQ)) { | ||
| // Passing arg: -fsycl-targets=<targets>. | ||
| needLibs = true; | ||
| TargetBE = GetTripleIt(A->getValue(0)); | ||
| if (TargetBE) | ||
| TargetOpt = A->getValue(0); | ||
| else | ||
| continue; | ||
| } else if (A->getOption().matches(options::OPT_Xsycl_backend_EQ)) { | ||
| // Passing device args: -Xsycl-target-backend=<triple> <opt> | ||
| TargetBE = GetTripleIt(A->getValue(0)); | ||
| if (TargetBE) | ||
| DeviceOpt = A->getValue(1); | ||
| else | ||
| continue; | ||
| } else if (A->getOption().matches(options::OPT_Xsycl_backend)) { | ||
| // Passing device args: -Xsycl-target-backend <opt> | ||
| TargetBE = &SYCLTripleList.front(); | ||
| DeviceOpt = A->getValue(0); | ||
| } else if (A->getOption().matches(options::OPT_Xs_separate)) { | ||
| // Passing device args: -Xs <opt> | ||
| DeviceOpt = A->getValue(0); | ||
| } else { | ||
mdtoguchi marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| continue; | ||
| }; | ||
| } | ||
| useNative = false; | ||
| if (needLibs && TC->getTriple().getArch() == llvm::Triple::spir64 && | ||
| TC->getTriple().getSubArch() == llvm::Triple::SPIRSubArch_gen && | ||
| TargetOpt && DeviceOpt) { | ||
| useNative = strstr(DeviceOpt, "pvc") || strstr(DeviceOpt, "ats"); | ||
| } | ||
| return needLibs; | ||
| } | ||
|
|
||
| bool addSYCLDeviceLibs(const ToolChain *TC, ActionList &DeviceLinkObjects, | ||
| bool isSpirvAOT, bool isMSVCEnv) { | ||
| struct DeviceLibOptInfo { | ||
|
|
@@ -5094,7 +5147,8 @@ class OffloadingActionBuilder final { | |
| // of "internal" libraries cannot be affected via -fno-sycl-device-lib. | ||
| llvm::StringMap<bool> devicelib_link_info = { | ||
| {"libc", true}, {"libm-fp32", true}, {"libm-fp64", true}, | ||
| {"libimf-fp32", true}, {"libimf-fp64", true}, {"internal", true}}; | ||
| {"libimf-fp32", true}, {"libimf-fp64", true}, {"libm-bfloat16", true}, | ||
| {"internal", true}}; | ||
| if (Arg *A = Args.getLastArg(options::OPT_fsycl_device_lib_EQ, | ||
| options::OPT_fno_sycl_device_lib_EQ)) { | ||
| if (A->getValues().size() == 0) | ||
|
|
@@ -5153,6 +5207,10 @@ class OffloadingActionBuilder final { | |
| {"libsycl-fallback-cmath-fp64", "libm-fp64"}, | ||
| {"libsycl-fallback-imf", "libimf-fp32"}, | ||
| {"libsycl-fallback-imf-fp64", "libimf-fp64"}}; | ||
| const SYCLDeviceLibsList sycl_device_bfloat16_fallback_lib = { | ||
| {"libsycl-fallback-bfloat16", "libm-bfloat16"}}; | ||
| const SYCLDeviceLibsList sycl_device_bfloat16_native_lib = { | ||
| {"libsycl-native-bfloat16", "libm-bfloat16"}}; | ||
| // ITT annotation libraries are linked in separately whenever the device | ||
| // code instrumentation is enabled. | ||
| const SYCLDeviceLibsList sycl_device_annotation_libs = { | ||
|
|
@@ -5202,6 +5260,18 @@ class OffloadingActionBuilder final { | |
| addInputs(sycl_device_wrapper_libs); | ||
| if (isSpirvAOT || TC->getTriple().isNVPTX()) | ||
| addInputs(sycl_device_fallback_libs); | ||
|
|
||
| bool nativeBfloatLibs; | ||
| bool needBfloatLibs = selectBfloatLibs(TC, nativeBfloatLibs); | ||
| if (needBfloatLibs && | ||
| TC->getTriple().getSubArch() != llvm::Triple::SPIRSubArch_fpga) { | ||
|
||
| // Add native or fallback bfloat16 library. | ||
| if (nativeBfloatLibs) | ||
| addInputs(sycl_device_bfloat16_native_lib); | ||
| else | ||
| addInputs(sycl_device_bfloat16_fallback_lib); | ||
| } | ||
mdtoguchi marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| if (Args.hasFlag(options::OPT_fsycl_instrument_device_code, | ||
| options::OPT_fno_sycl_instrument_device_code, true)) | ||
| addInputs(sycl_device_annotation_libs); | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| #remark |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,58 @@ | ||
| /// | ||
| /// Check if bfloat16 native and fallback libraries are added on Windows | ||
| /// | ||
|
|
||
| // REQUIRES: windows | ||
|
|
||
| /// ########################################################################### | ||
| /// test that no bfloat16 libraries are added in JIT mode | ||
| // RUN: %clangxx -fsycl %s --sysroot=%S/Inputs/SYCL -### 2>&1 \ | ||
| // RUN: | FileCheck %s -check-prefix=BFLOAT16 | ||
|
|
||
| // test that a PVC AOT compilation uses the native library | ||
| // RUN: %clangxx -fsycl -fsycl-targets=spir64_gen -Xsycl-target-backend "-device pvc" %S/Inputs/SYCL/c.cpp -### 2>&1 \ | ||
| // RUN: | FileCheck %s -check-prefix=BFLOAT16-NATIVE | ||
|
|
||
| // test that a gen9 AOT compilation uses the fallback library | ||
| // RUN: %clangxx -fsycl -fsycl-targets=spir64_gen -Xsycl-target-backend "-device gen9" %S/Inputs/SYCL/c.cpp -### 2>&1 \ | ||
| // RUN: | FileCheck %s -check-prefix=BFLOAT16-FALLBACK | ||
|
|
||
| // test that a generic compilation uses the fallback library | ||
| // RUN: %clangxx -fsycl -fsycl-targets=spir64_gen -Xsycl-target-backend "-device *" %S/Inputs/SYCL/c.cpp -### 2>&1 \ | ||
| // RUN: | FileCheck %s -check-prefix=BFLOAT16-FALLBACK | ||
|
|
||
| // BFLOAT16-NOT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-{{fallback|native}}-bfloat16.obj" "-output={{.*}}libsycl-complex-{{.*}}.o" "-unbundle" | ||
|
|
||
| // BFLOAT16-NATIVE: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-crt.obj" "-output={{.*}}libsycl-crt-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-complex.obj" "-output={{.*}}libsycl-complex-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-complex-fp64.obj" "-output={{.*}}libsycl-complex-fp64-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-cmath.obj" "-output={{.*}}libsycl-cmath-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-cmath-fp64.obj" "-output={{.*}}libsycl-cmath-fp64-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-mscv-math.obj" "-output={{.*}}libsycl-msvc-math-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf.obj" "-output={{.*}}libsycl-imf-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf-fp64.obj" "-output={{.*}}libsycl-imf-fp64-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cassert.obj" "-output={{.*}}libsycl-fallback-cassert-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cstring.obj" "-output={{.*}}libsycl-fallback-cstring-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-complex.obj" "-output={{.*}}libsycl-fallback-complex-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath.obj" "-output={{.*}}libsycl-fallback-cmath-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath-fp64.obj" "-output={{.*}}libsycl-fallback-cmath-fp64-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf.obj" "-output={{.*}}libsycl-fallback-imf-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-fp64.obj" "-output={{.*}}libsycl-fallback-imf-fp64-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-native-bfloat16.obj" | ||
|
|
||
| // BFLOAT16-FALLBACK: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-crt.obj" "-output={{.*}}libsycl-crt-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-complex.obj" "-output={{.*}}libsycl-complex-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-complex-fp64.obj" "-output={{.*}}libsycl-complex-fp64-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-cmath.obj" "-output={{.*}}libsycl-cmath-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-cmath-fp64.obj" "-output={{.*}}libsycl-cmath-fp64-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-mscv-math.obj" "-output={{.*}}libsycl-msvc-math-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf.obj" "-output={{.*}}libsycl-imf-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf-fp64.obj" "-output={{.*}}libsycl-imf-fp64-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cassert.obj" "-output={{.*}}libsycl-fallback-cassert-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cstring.obj" "-output={{.*}}libsycl-fallback-cstring-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-complex.obj" "-output={{.*}}libsycl-fallback-complex-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath.obj" "-output={{.*}}libsycl-fallback-cmath-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath-fp64.obj" "-output={{.*}}libsycl-fallback-cmath-fp64-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf.obj" "-output={{.*}}libsycl-fallback-imf-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-fp64.obj" "-output={{.*}}libsycl-fallback-imf-fp64-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-bfloat16.obj" |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,58 @@ | ||
| /// | ||
| /// Check if bfloat16 native and fallback libraries are added on Linux | ||
| /// | ||
|
|
||
| // UNSUPPORTED: system-windows | ||
|
|
||
| /// ########################################################################### | ||
| /// test that no bfloat16 libraries are added in JIT mode | ||
| // RUN: %clangxx -fsycl %s --sysroot=%S/Inputs/SYCL -### 2>&1 \ | ||
| // RUN: | FileCheck %s -check-prefix=BFLOAT16 | ||
gmlueck marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| // test that a PVC AOT compilation uses the native library | ||
| // RUN: %clangxx -fsycl -fsycl-targets=spir64_gen -Xsycl-target-backend "-device pvc" %S/Inputs/SYCL/c.cpp -### 2>&1 \ | ||
| // RUN: | FileCheck %s -check-prefix=BFLOAT16-NATIVE | ||
|
|
||
| // test that a gen9 AOT compilation uses the fallback library | ||
| // RUN: %clangxx -fsycl -fsycl-targets=spir64_gen -Xsycl-target-backend "-device gen9" %S/Inputs/SYCL/c.cpp -### 2>&1 \ | ||
| // RUN: | FileCheck %s -check-prefix=BFLOAT16-FALLBACK | ||
|
|
||
| // test that a generic compilation uses the fallback library | ||
| // RUN: %clangxx -fsycl -fsycl-targets=spir64_gen -Xsycl-target-backend "-device *" %S/Inputs/SYCL/c.cpp -### 2>&1 \ | ||
| // RUN: | FileCheck %s -check-prefix=BFLOAT16-FALLBACK | ||
|
|
||
| // BFLOAT16-NOT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64-unknown-unknown" "-input={{.*}}libsycl-{{fallback|native}}-bfloat16.o" "-output={{.*}}libsycl-complex-{{.*}}.o" "-unbundle" | ||
|
|
||
| // BFLOAT16-NATIVE: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-crt.o" "-output={{.*}}libsycl-crt-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-complex.o" "-output={{.*}}libsycl-complex-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-complex-fp64.o" "-output={{.*}}libsycl-complex-fp64-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-cmath.o" "-output={{.*}}libsycl-cmath-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-cmath-fp64.o" "-output={{.*}}libsycl-cmath-fp64-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf.o" "-output={{.*}}libsycl-imf-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf-fp64.o" "-output={{.*}}libsycl-imf-fp64-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cassert.o" "-output={{.*}}libsycl-fallback-cassert-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cstring.o" "-output={{.*}}libsycl-fallback-cstring-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-complex.o" "-output={{.*}}libsycl-fallback-complex-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-complex-fp64.o" "-output={{.*}}libsycl-fallback-complex-fp64-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath.o" "-output={{.*}}libsycl-fallback-cmath-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath-fp64.o" "-output={{.*}}libsycl-fallback-cmath-fp64-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf.o" "-output={{.*}}libsycl-fallback-imf-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-fp64.o" "-output={{.*}}libsycl-fallback-imf-fp64-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-NATIVE-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-native-bfloat16.o" | ||
|
|
||
| // BFLOAT16-FALLBACK: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-crt.o" "-output={{.*}}libsycl-crt-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-complex.o" "-output={{.*}}libsycl-complex-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-complex-fp64.o" "-output={{.*}}libsycl-complex-fp64-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-cmath.o" "-output={{.*}}libsycl-cmath-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-cmath-fp64.o" "-output={{.*}}libsycl-cmath-fp64-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf.o" "-output={{.*}}libsycl-imf-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-imf-fp64.o" "-output={{.*}}libsycl-imf-fp64-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cassert.o" "-output={{.*}}libsycl-fallback-cassert-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cstring.o" "-output={{.*}}libsycl-fallback-cstring-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-complex.o" "-output={{.*}}libsycl-fallback-complex-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-complex-fp64.o" "-output={{.*}}libsycl-fallback-complex-fp64-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath.o" "-output={{.*}}libsycl-fallback-cmath-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-cmath-fp64.o" "-output={{.*}}libsycl-fallback-cmath-fp64-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf.o" "-output={{.*}}libsycl-fallback-imf-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-imf-fp64.o" "-output={{.*}}libsycl-fallback-imf-fp64-{{.*}}.o" "-unbundle" | ||
| // BFLOAT16-FALLBACK-NEXT: clang-offload-bundler{{.*}} "-type=o" "-targets=sycl-spir64_gen-unknown-unknown" "-input={{.*}}libsycl-fallback-bfloat16.o" | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does this cause the driver to link the fallback bfloat16 library when compiling with
-fsycl-targets=spir64?