Skip to content

Commit 37c3e8c

Browse files
committed
Merge remote-tracking branch 'upstream/sycl' into urlog
2 parents 4272297 + ecc9d15 commit 37c3e8c

File tree

186 files changed

+4631
-2738
lines changed

Some content is hidden

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

186 files changed

+4631
-2738
lines changed

.github/workflows/sycl-windows-build.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,6 @@ jobs:
8686
- name: Detect hung tests
8787
if: always()
8888
shell: powershell
89-
continue-on-error: true
9089
run: |
9190
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/intel/llvm/refs/heads/sycl/devops/scripts/windows_detect_hung_tests.ps1" -OutFile "windows_detect_hung_tests.ps1"
9291
powershell.exe -File windows_detect_hung_tests.ps1

.github/workflows/sycl-windows-run-tests.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,6 @@ jobs:
101101
- name: Detect hung tests
102102
if: always()
103103
shell: powershell
104-
continue-on-error: true
105104
run: |
106105
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/intel/llvm/refs/heads/sycl/devops/scripts/windows_detect_hung_tests.ps1" -OutFile "windows_detect_hung_tests.ps1"
107106
powershell.exe -File windows_detect_hung_tests.ps1
@@ -181,7 +180,7 @@ jobs:
181180
if: inputs.tests_selector == 'e2e'
182181
shell: bash {0}
183182
env:
184-
LIT_OPTS: -v --no-progress-bar --show-unsupported --show-pass --show-xfail --max-time 3600 --time-tests --param print_features=True --param test-mode=${{ inputs.e2e_testing_mode }} ${{ inputs.extra_lit_opts }}
183+
LIT_OPTS: -v --no-progress-bar --show-unsupported --show-pass --show-xfail --max-time ${{ inputs.e2e_testing_mode == 'run-only' && 1200 || 3600 }} --time-tests --param print_features=True --param test-mode=${{ inputs.e2e_testing_mode }} ${{ inputs.extra_lit_opts }}
185184
run: |
186185
# Run E2E tests.
187186
if [[ ${{inputs.compiler}} == 'icx' ]]; then

buildbot/configure.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,6 @@ def do_configure(args, passthrough_args):
7878
sycl_enabled_backends.append("level_zero")
7979
sycl_enabled_backends.append("level_zero_v2")
8080

81-
# lld is needed on Windows or for the HIP adapter on AMD
82-
if platform.system() == "Windows" or (args.hip and args.hip_platform == "AMD"):
83-
llvm_enable_projects += ";lld"
84-
8581
libclc_enabled = args.cuda or args.hip or args.native_cpu
8682
if libclc_enabled:
8783
llvm_enable_projects += ";libclc"
@@ -171,6 +167,10 @@ def do_configure(args, passthrough_args):
171167
if args.disable_preview_lib:
172168
sycl_preview_lib = "OFF"
173169

170+
# lld is needed on Windows or when building AMDGPU
171+
if platform.system() == "Windows" or "AMDGPU" in llvm_targets_to_build:
172+
llvm_enable_projects += ";lld"
173+
174174
install_dir = os.path.join(abs_obj_dir, "install")
175175

176176
cmake_cmd = [

clang/lib/CodeGen/CGBuiltin.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3154,9 +3154,10 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
31543154
GenerateIntrinsics =
31553155
ConstWithoutErrnoOrExceptions && ErrnoOverridenToFalseWithOpt;
31563156
}
3157-
if (GenerateIntrinsics &&
3158-
!(getLangOpts().SYCLIsDevice && (getTarget().getTriple().isNVPTX() ||
3159-
getTarget().getTriple().isAMDGCN()))) {
3157+
bool IsSYCLDeviceWithoutIntrinsics =
3158+
getLangOpts().SYCLIsDevice &&
3159+
(getTarget().getTriple().isNVPTX() || getTarget().getTriple().isAMDGCN());
3160+
if (GenerateIntrinsics && !IsSYCLDeviceWithoutIntrinsics) {
31603161
switch (BuiltinIDIfNoAsmLabel) {
31613162
case Builtin::BIacos:
31623163
case Builtin::BIacosf:
@@ -4256,7 +4257,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
42564257
case Builtin::BI__builtin_modf:
42574258
case Builtin::BI__builtin_modff:
42584259
case Builtin::BI__builtin_modfl:
4259-
if (Builder.getIsFPConstrained())
4260+
if (Builder.getIsFPConstrained() || IsSYCLDeviceWithoutIntrinsics)
42604261
break; // TODO: Emit constrained modf intrinsic once one exists.
42614262
return RValue::get(emitModfBuiltin(*this, E, Intrinsic::modf));
42624263
case Builtin::BI__builtin_isgreater:

clang/lib/Driver/ToolChains/SYCL.cpp

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -603,7 +603,15 @@ SYCL::getDeviceLibraries(const Compilation &C, const llvm::Triple &TargetTriple,
603603
// For DG2, we just use libsycl-msan as placeholder.
604604
{"libsycl-msan", "internal"},
605605
{"libsycl-msan-pvc", "internal"}};
606-
const SYCLDeviceLibsList SYCLDeviceTsanLibs = {{"libsycl-tsan", "internal"}};
606+
const SYCLDeviceLibsList SYCLDeviceTsanLibs = {
607+
{"libsycl-tsan", "internal"},
608+
{"libsycl-tsan-cpu", "internal"},
609+
// Currently, we only provide aot tsan libdevice for PVC and CPU.
610+
// For DG2, we just use libsycl-tsan as placeholder.
611+
// TODO: replace "libsycl-tsan" with "libsycl-tsan-dg2" when DG2
612+
// AOT support is added.
613+
{"libsycl-tsan", "internal"},
614+
{"libsycl-tsan-pvc", "internal"}};
607615
#endif
608616

609617
const SYCLDeviceLibsList SYCLNativeCpuDeviceLibs = {
@@ -759,7 +767,7 @@ SYCL::getDeviceLibraries(const Compilation &C, const llvm::Triple &TargetTriple,
759767
else if (SanitizeVal == "memory")
760768
addSingleLibrary(SYCLDeviceMsanLibs[sanitizer_lib_idx]);
761769
else if (SanitizeVal == "thread")
762-
addLibraries(SYCLDeviceTsanLibs);
770+
addSingleLibrary(SYCLDeviceTsanLibs[sanitizer_lib_idx]);
763771
#endif
764772

765773
if (isSYCLNativeCPU(TargetTriple))
@@ -883,6 +891,8 @@ static llvm::SmallVector<StringRef, 16> SYCLDeviceLibList{
883891
"msan-pvc",
884892
"msan-cpu",
885893
"tsan",
894+
"tsan-pvc",
895+
"tsan-cpu",
886896
#endif
887897
"imf",
888898
"imf-fp64",

clang/lib/Frontend/InitPreprocessor.cpp

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1535,18 +1535,25 @@ static void InitializePredefinedMacros(const TargetInfo &TI,
15351535
if (LangOpts.GPURelocatableDeviceCode)
15361536
Builder.defineMacro("SYCL_EXTERNAL", "__attribute__((sycl_device))");
15371537

1538-
const llvm::Triple &DeviceTriple = TI.getTriple();
1539-
const llvm::Triple::SubArchType DeviceSubArch = DeviceTriple.getSubArch();
1540-
if (DeviceTriple.isNVPTX() || DeviceTriple.isAMDGPU() ||
1541-
(DeviceTriple.isSPIR() &&
1542-
DeviceSubArch != llvm::Triple::SPIRSubArch_fpga) ||
1538+
// This gets called twice, once with TI set to the host TargetInfo, once
1539+
// with TI set to the device TargetInfo.
1540+
const llvm::Triple &Triple = TI.getTriple();
1541+
const llvm::Triple::SubArchType SubArch = Triple.getSubArch();
1542+
if (Triple.isNVPTX() || Triple.isAMDGPU() ||
1543+
(Triple.isSPIR() && SubArch != llvm::Triple::SPIRSubArch_fpga) ||
15431544
LangOpts.SYCLIsNativeCPU)
15441545
Builder.defineMacro("SYCL_USE_NATIVE_FP_ATOMICS");
15451546
// Enable generation of USM address spaces for FPGA.
1546-
if (DeviceSubArch == llvm::Triple::SPIRSubArch_fpga) {
1547+
if (SubArch == llvm::Triple::SPIRSubArch_fpga) {
15471548
Builder.defineMacro("__ENABLE_USM_ADDR_SPACE__");
15481549
Builder.defineMacro("SYCL_DISABLE_FALLBACK_ASSERT");
15491550
}
1551+
1552+
if (Triple.isWindowsMSVCEnvironment()) {
1553+
// MSVC inline definitions of stdio functions should not be used for SYCL
1554+
// device code.
1555+
Builder.defineMacro("_NO_CRT_STDIO_INLINE");
1556+
}
15501557
} else if (LangOpts.SYCLIsHost && LangOpts.SYCLESIMDBuildHostCode) {
15511558
Builder.defineMacro("__ESIMD_BUILD_HOST_CODE");
15521559
}

clang/test/Driver/Inputs/SYCL/lib/libsycl-tsan-cpu.bc

Whitespace-only changes.

clang/test/Driver/Inputs/SYCL/lib/libsycl-tsan-pvc.bc

Whitespace-only changes.

clang/test/Driver/sycl-device-lib-old-model.cpp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -415,3 +415,26 @@
415415
// SYCL_DEVICE_TSAN_MACRO-SAME: "USE_SYCL_DEVICE_TSAN"
416416
// SYCL_DEVICE_TSAN_MACRO: llvm-link{{.*}} "-only-needed"
417417
// SYCL_DEVICE_TSAN_MACRO-SAME: "{{.*}}libsycl-tsan.bc"
418+
419+
/// ###########################################################################
420+
/// test behavior of linking libsycl-tsan-pvc for PVC target AOT compilation when tsan flag is applied.
421+
// RUN: %clangxx -fsycl -fsycl-targets=intel_gpu_pvc --no-offload-new-driver %s --sysroot=%S/Inputs/SYCL \
422+
// RUN: -Xarch_device -fsanitize=thread -### 2>&1 | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_TSAN_PVC
423+
// RUN: %clangxx -fsycl -fsycl-targets=spir64_gen -Xsycl-target-backend "-device pvc" --no-offload-new-driver %s \
424+
// RUN: --sysroot=%S/Inputs/SYCL -Xarch_device -fsanitize=thread -### 2>&1 | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_TSAN_PVC
425+
// RUN: %clangxx -fsycl -fsycl-targets=spir64_gen -Xsycl-target-backend=spir64_gen "-device pvc" --no-offload-new-driver %s \
426+
// RUN: --sysroot=%S/Inputs/SYCL -Xarch_device -fsanitize=thread -### 2>&1 | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_TSAN_PVC
427+
// RUN: %clangxx -fsycl -fsycl-targets=spir64_gen -Xsycl-target-backend "-device 12.60.7" --no-offload-new-driver %s \
428+
// RUN: --sysroot=%S/Inputs/SYCL -Xarch_device -fsanitize=thread -### 2>&1 | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_TSAN_PVC
429+
// RUN: %clangxx -fsycl -fsycl-targets=spir64_gen -Xs "-device 12.60.7" --no-offload-new-driver %s --sysroot=%S/Inputs/SYCL \
430+
// RUN: -Xarch_device -fsanitize=thread -### 2>&1 | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_TSAN_PVC
431+
// SYCL_DEVICE_LIB_TSAN_PVC: llvm-link{{.*}} "-only-needed" "{{.*}}libsycl-crt.bc"
432+
// SYCL_DEVICE_LIB_TSAN_PVC-SAME: "{{.*}}libsycl-tsan-pvc.bc"
433+
434+
435+
/// ###########################################################################
436+
/// test behavior of linking libsycl-tsan-cpu for CPU target AOT compilation when tsan flag is applied.
437+
// RUN: %clangxx -fsycl -fsycl-targets=spir64_x86_64 --no-offload-new-driver %s --sysroot=%S/Inputs/SYCL \
438+
// RUN: -Xarch_device -fsanitize=thread -### 2>&1 | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_TSAN_CPU
439+
// SYCL_DEVICE_LIB_TSAN_CPU: llvm-link{{.*}} "-only-needed" "{{.*}}libsycl-crt.bc"
440+
// SYCL_DEVICE_LIB_TSAN_CPU-SAME: "{{.*}}libsycl-tsan-cpu.bc"

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -401,3 +401,15 @@
401401
// SYCL_DEVICE_TSAN_MACRO: "-cc1"
402402
// SYCL_DEVICE_TSAN_MACRO-SAME: "USE_SYCL_DEVICE_TSAN"
403403
// SYCL_DEVICE_TSAN_MACRO: libsycl-tsan.new.o
404+
405+
/// test behavior of tsan libdevice linking when -fsanitize=thread is available for AOT targets
406+
// RUN: %clangxx -fsycl -fsycl-targets=intel_gpu_pvc --offload-new-driver %s --sysroot=%S/Inputs/SYCL \
407+
// RUN: -fsanitize=thread -### 2>&1 | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_TSAN_PVC
408+
// SYCL_DEVICE_LIB_TSAN_PVC: clang-linker-wrapper{{.*}} "-sycl-device-libraries
409+
// SYCL_DEVICE_LIB_TSAN_PVC-SAME: {{.*}}libsycl-tsan-pvc.new.o
410+
411+
/// test behavior of tsan libdevice linking when -fsanitize=thread is available for AOT targets
412+
// RUN: %clangxx -fsycl -fsycl-targets=spir64_x86_64 --offload-new-driver %s --sysroot=%S/Inputs/SYCL \
413+
// RUN: -fsanitize=thread -### 2>&1 | FileCheck %s -check-prefix=SYCL_DEVICE_LIB_TSAN_CPU
414+
// SYCL_DEVICE_LIB_TSAN_CPU: clang-linker-wrapper{{.*}} "-sycl-device-libraries
415+
// SYCL_DEVICE_LIB_TSAN_CPU-SAME: {{.*}}libsycl-tsan-cpu.new.o

clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp

Lines changed: 105 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
#include "llvm/Object/IRObjectFile.h"
3838
#include "llvm/Object/ObjectFile.h"
3939
#include "llvm/Object/OffloadBinary.h"
40+
#include "llvm/Object/SYCLBIN.h"
4041
#include "llvm/Option/ArgList.h"
4142
#include "llvm/Option/OptTable.h"
4243
#include "llvm/Option/Option.h"
@@ -151,6 +152,8 @@ static std::optional<llvm::module_split::IRSplitMode> SYCLModuleSplitMode;
151152

152153
static bool UseSYCLPostLinkTool;
153154

155+
static bool OutputSYCLBIN;
156+
154157
static SmallString<128> OffloadImageDumpDir;
155158

156159
using OffloadingImage = OffloadBinary::OffloadingImage;
@@ -1182,6 +1185,62 @@ static Expected<StringRef> runCompile(StringRef &InputFile,
11821185
return *OutputFileOrErr;
11831186
}
11841187

1188+
/// Write an OffloadBinary containing the serialized SYCLBIN resulting from
1189+
/// \p ModuleDescs to the ExecutableName file with the .syclbin extension.
1190+
static Expected<StringRef>
1191+
packageSYCLBIN(SYCLBIN::BundleState State,
1192+
const ArrayRef<SYCLBIN::SYCLBINModuleDesc> Modules) {
1193+
SYCLBIN::SYCLBINDesc SYCLBIND{State, Modules};
1194+
size_t SYCLBINByteSize = 0;
1195+
if (Error E = SYCLBIND.getSYCLBINByteSite().moveInto(SYCLBINByteSize))
1196+
return std::move(E);
1197+
1198+
SmallString<0> SYCLBINImage;
1199+
SYCLBINImage.reserve(SYCLBINByteSize);
1200+
raw_svector_ostream SYCLBINImageOS{SYCLBINImage};
1201+
if (Error E = SYCLBIN::write(SYCLBIND, SYCLBINImageOS))
1202+
return std::move(E);
1203+
1204+
OffloadingImage Image{};
1205+
Image.TheImageKind = IMG_SYCLBIN;
1206+
Image.TheOffloadKind = OFK_SYCL;
1207+
Image.Image = MemoryBuffer::getMemBuffer(SYCLBINImage, /*BufferName=*/"",
1208+
/*RequiresNullTerminator=*/false);
1209+
1210+
std::unique_ptr<MemoryBuffer> Binary = MemoryBuffer::getMemBufferCopy(
1211+
OffloadBinary::write(Image), Image.Image->getBufferIdentifier());
1212+
1213+
auto OutFileOrErr =
1214+
createOutputFile(sys::path::filename(ExecutableName), "syclbin");
1215+
if (!OutFileOrErr)
1216+
return OutFileOrErr.takeError();
1217+
1218+
Expected<std::unique_ptr<FileOutputBuffer>> OutputOrErr =
1219+
FileOutputBuffer::create(*OutFileOrErr, Binary->getBufferSize());
1220+
if (!OutputOrErr)
1221+
return OutputOrErr.takeError();
1222+
std::unique_ptr<FileOutputBuffer> Output = std::move(*OutputOrErr);
1223+
llvm::copy(Binary->getBuffer(), Output->getBufferStart());
1224+
if (Error E = Output->commit())
1225+
return std::move(E);
1226+
1227+
return *OutFileOrErr;
1228+
}
1229+
1230+
Error mergeSYCLBIN(ArrayRef<StringRef> Files, const ArgList &Args) {
1231+
// Fast path for the general case where there's only one file. In this case we
1232+
// do not need to parse it and can instead simply copy it.
1233+
if (Files.size() == 1) {
1234+
if (std::error_code EC = sys::fs::copy_file(Files[0], ExecutableName))
1235+
return createFileError(ExecutableName, EC);
1236+
return Error::success();
1237+
}
1238+
// TODO: Merge SYCLBIN files here and write to ExecutableName output.
1239+
// Use the first file as the base and modify.
1240+
assert(Files.size() == 1);
1241+
return Error::success();
1242+
}
1243+
11851244
// Run wrapping library and clang
11861245
static Expected<StringRef>
11871246
runWrapperAndCompile(std::vector<module_split::SplitModule> &SplitModules,
@@ -1962,6 +2021,12 @@ Expected<SmallVector<StringRef>> linkAndWrapDeviceFiles(
19622021
// object file.
19632022
SmallVector<StringRef> WrappedOutput;
19642023

2024+
// When creating SYCLBIN files, we need to store the compiled modules for
2025+
// combined packaging.
2026+
std::mutex SYCLBINModulesMtx;
2027+
SYCLBIN::BundleState SYCLBINState = SYCLBIN::BundleState::Input;
2028+
SmallVector<SYCLBIN::SYCLBINModuleDesc> SYCLBINModules;
2029+
19652030
// Initialize the images with any overriding inputs.
19662031
if (Args.hasArg(OPT_override_image))
19672032
if (Error Err = handleOverrideImages(Args, Images))
@@ -2067,18 +2132,26 @@ Expected<SmallVector<StringRef>> linkAndWrapDeviceFiles(
20672132
}
20682133
}
20692134

2070-
// TODO(NOM7): Remove this call and use community flow for bundle/wrap
2071-
auto OutputFile = sycl::runWrapperAndCompile(SplitModules, LinkerArgs);
2072-
if (!OutputFile)
2073-
return OutputFile.takeError();
2074-
2075-
// SYCL offload kind images are all ready to be sent to host linker.
2076-
// TODO: Currently, device code wrapping for SYCL offload happens in a
2077-
// separate path inside 'linkDevice' call seen above.
2078-
// This will eventually be refactored to use the 'common' wrapping logic
2079-
// that is used for other offload kinds.
2080-
std::scoped_lock Guard(ImageMtx);
2081-
WrappedOutput.push_back(*OutputFile);
2135+
if (OutputSYCLBIN) {
2136+
SYCLBIN::SYCLBINModuleDesc MD;
2137+
MD.ArchString = LinkerArgs.getLastArgValue(OPT_arch_EQ);
2138+
MD.SplitModules = std::move(SplitModules);
2139+
std::scoped_lock Guard(SYCLBINModulesMtx);
2140+
SYCLBINModules.emplace_back(std::move(MD));
2141+
} else {
2142+
// TODO(NOM7): Remove this call and use community flow for bundle/wrap
2143+
auto OutputFile = sycl::runWrapperAndCompile(SplitModules, LinkerArgs);
2144+
if (!OutputFile)
2145+
return OutputFile.takeError();
2146+
2147+
// SYCL offload kind images are all ready to be sent to host linker.
2148+
// TODO: Currently, device code wrapping for SYCL offload happens in a
2149+
// separate path inside 'linkDevice' call seen above.
2150+
// This will eventually be refactored to use the 'common' wrapping logic
2151+
// that is used for other offload kinds.
2152+
std::scoped_lock Guard(ImageMtx);
2153+
WrappedOutput.push_back(*OutputFile);
2154+
}
20822155
}
20832156
if (HasNonSYCLOffloadKinds) {
20842157
// Write any remaining device inputs to an output file.
@@ -2129,6 +2202,13 @@ Expected<SmallVector<StringRef>> linkAndWrapDeviceFiles(
21292202
if (Err)
21302203
return std::move(Err);
21312204

2205+
if (OutputSYCLBIN) {
2206+
auto OutputOrErr = sycl::packageSYCLBIN(SYCLBINState, SYCLBINModules);
2207+
if (!OutputOrErr)
2208+
return OutputOrErr.takeError();
2209+
WrappedOutput.push_back(*OutputOrErr);
2210+
}
2211+
21322212
for (auto &[Kind, Input] : Images) {
21332213
if (Kind == OFK_SYCL)
21342214
continue;
@@ -2585,6 +2665,11 @@ int main(int Argc, char **Argv) {
25852665
"-no-use-sycl-post-link-tool options can't "
25862666
"be used together."));
25872667

2668+
OutputSYCLBIN = Args.hasArg(OPT_syclbin);
2669+
if (OutputSYCLBIN && Args.hasArg(OPT_sycl_embed_ir))
2670+
reportError(createStringError(
2671+
"-sycl-embed_ir and -syclbin can't be used together."));
2672+
25882673
if (Args.hasArg(OPT_sycl_module_split_mode_EQ)) {
25892674
if (UseSYCLPostLinkTool)
25902675
reportError(createStringError(
@@ -2623,9 +2708,14 @@ int main(int Argc, char **Argv) {
26232708
if (!FilesOrErr)
26242709
reportError(FilesOrErr.takeError());
26252710

2626-
// Run the host linking job with the rendered arguments.
2627-
if (Error Err = runLinker(*FilesOrErr, Args))
2628-
reportError(std::move(Err));
2711+
if (OutputSYCLBIN) {
2712+
if (Error Err = sycl::mergeSYCLBIN(*FilesOrErr, Args))
2713+
reportError(std::move(Err));
2714+
} else {
2715+
// Run the host linking job with the rendered arguments.
2716+
if (Error Err = runLinker(*FilesOrErr, Args))
2717+
reportError(std::move(Err));
2718+
}
26292719
}
26302720

26312721
if (const opt::Arg *Arg = Args.getLastArg(OPT_wrapper_time_trace_eq)) {

clang/tools/clang-linker-wrapper/LinkerWrapperOpts.td

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,3 +236,8 @@ def sycl_dump_device_code_EQ : Joined<["--", "-"], "sycl-dump-device-code=">,
236236
def sycl_allow_device_image_dependencies : Flag<["--", "-"], "sycl-allow-device-image-dependencies">,
237237
Flags<[WrapperOnlyOption, HelpHidden]>,
238238
HelpText<"Allow dependencies between device code images">;
239+
240+
// Options to force the output to be of the SYCLBIN format.
241+
def syclbin : Flag<["--", "-"], "syclbin">,
242+
Flags<[WrapperOnlyOption]>,
243+
HelpText<"Output in the SYCLBIN binary format">;

devops/containers/ubuntu2204_build.Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ RUN mkdir --parents --mode=0755 /etc/apt/keyrings
2222
RUN wget https://repo.radeon.com/rocm/rocm.gpg.key -O - | \
2323
gpg --dearmor | tee /etc/apt/keyrings/rocm.gpg > /dev/null && \
2424
# Add rocm repo
25-
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/rocm.gpg] https://repo.radeon.com/rocm/apt/6.1.1 jammy main" \
25+
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/rocm.gpg] https://repo.radeon.com/rocm/apt/6.3 jammy main" \
2626
| tee --append /etc/apt/sources.list.d/rocm.list && \
2727
printf 'Package: *\nPin: release o=repo.radeon.com\nPin-Priority: 600' | tee /etc/apt/preferences.d/rocm-pin-600
2828
# Install the kernel driver

0 commit comments

Comments
 (0)