From 799c46fe5753843b55dfcbedd2228a74b8559aa3 Mon Sep 17 00:00:00 2001 From: jinge90 Date: Mon, 28 Jul 2025 17:15:54 +0800 Subject: [PATCH 1/3] [SYCL] Skip itt libdevice for NV,AMD,NativeCPU backend Signed-off-by: jinge90 --- clang/lib/Driver/Driver.cpp | 9 +- clang/lib/Driver/ToolChains/SYCL.cpp | 22 ++- clang/test/Driver/sycl-device-lib-amdgcn.cpp | 15 -- clang/test/Driver/sycl-device-lib-nvptx.cpp | 15 -- clang/test/Driver/sycl-offload-nvptx.cpp | 62 ++++---- clang/test/Driver/sycl-offload-old-model.c | 136 +++++++++--------- .../sycl-offload-static-lib-2-old-model.cpp | 24 ++-- clang/test/Driver/sycl-oneapi-gpu-nvidia.cpp | 21 +-- 8 files changed, 138 insertions(+), 166 deletions(-) diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index cae629698fac6..6681e2f8f2456 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -5945,13 +5945,6 @@ class OffloadingActionBuilder final { SmallString<128> LibName(LLCandidate); llvm::sys::path::append(LibName, DeviceLib); if (llvm::sys::fs::exists(LibName)) { - // NativeCPU currently only needs libsycl-nativecpu_utils and - // libclc, so temporarily skip other device libs in invocation. - // Todo: remove once NativeCPU tests the other libraries. - if (isNativeCPU && - !LibName.str().contains("libsycl-nativecpu_utils")) - continue; - ++NumOfDeviceLibLinked; Arg *InputArg = MakeInputArg(Args, C.getDriver().getOpts(), Args.MakeArgString(LibName)); @@ -5976,7 +5969,7 @@ class OffloadingActionBuilder final { } } - if (!NumOfDeviceLibLinked) + if (!NumOfDeviceLibLinked && !TC->getTriple().isNVPTX()) return false; // For NVPTX we need to also link libclc at the same stage that we link diff --git a/clang/lib/Driver/ToolChains/SYCL.cpp b/clang/lib/Driver/ToolChains/SYCL.cpp index e70c35a4f526b..88f891aa464ef 100644 --- a/clang/lib/Driver/ToolChains/SYCL.cpp +++ b/clang/lib/Driver/ToolChains/SYCL.cpp @@ -558,7 +558,10 @@ SYCL::getDeviceLibraries(const Compilation &C, const llvm::Triple &TargetTriple, // For NVPTX and AMDGCN we only use one single bitcode library and ignore // manually specified SYCL device libraries. - bool IgnoreSingleLibs = TargetTriple.isNVPTX() || TargetTriple.isAMDGCN(); + // For NativeCPU, only native_utils devicelib is used. + bool UseSingleLib = TargetTriple.isNVPTX() || TargetTriple.isAMDGCN() || + TargetTriple.isNativeCPU(); + bool IgnoreSingleLib = false; struct DeviceLibOptInfo { StringRef DeviceLibName; @@ -598,8 +601,10 @@ SYCL::getDeviceLibraries(const Compilation &C, const llvm::Triple &TargetTriple, // Make sure that internal libraries are still linked against // when -fno-sycl-device-lib contains "all" and single libraries - // should be ignored. - IgnoreSingleLibs = IgnoreSingleLibs && !ExcludeDeviceLibs; + // should be ignored. For NativeCPU, the native_cpu utils library + // is always linked without '-only-needed' flag. + IgnoreSingleLib = + UseSingleLib && ExcludeDeviceLibs && !TargetTriple.isNativeCPU(); for (const auto &K : DeviceLibLinkInfo.keys()) DeviceLibLinkInfo[K] = (K == "internal") || !ExcludeDeviceLibs; @@ -614,21 +619,24 @@ SYCL::getDeviceLibraries(const Compilation &C, const llvm::Triple &TargetTriple, << A->getSpelling() << Val; } DeviceLibLinkInfo[Val] = !ExcludeDeviceLibs; - PrintUnusedExcludeWarning = IgnoreSingleLibs && ExcludeDeviceLibs; + PrintUnusedExcludeWarning = UseSingleLib && ExcludeDeviceLibs; } if (PrintUnusedExcludeWarning) C.getDriver().Diag(diag::warn_drv_unused_argument) << A->getSpelling(); } } - if (TargetTriple.isNVPTX() && IgnoreSingleLibs) + if (TargetTriple.isNVPTX() && !IgnoreSingleLib) LibraryList.push_back( Args.MakeArgString("devicelib-nvptx64-nvidia-cuda.bc")); - if (TargetTriple.isAMDGCN() && IgnoreSingleLibs) + if (TargetTriple.isAMDGCN() && !IgnoreSingleLib) LibraryList.push_back(Args.MakeArgString("devicelib-amdgcn-amd-amdhsa.bc")); - if (IgnoreSingleLibs) + if (TargetTriple.isNativeCPU() && !IgnoreSingleLib) + LibraryList.push_back(Args.MakeArgString("libsycl-nativecpu_utils.bc")); + + if (UseSingleLib) return LibraryList; using SYCLDeviceLibsList = SmallVector; diff --git a/clang/test/Driver/sycl-device-lib-amdgcn.cpp b/clang/test/Driver/sycl-device-lib-amdgcn.cpp index e20320a9f6ca5..0cf7005771c75 100644 --- a/clang/test/Driver/sycl-device-lib-amdgcn.cpp +++ b/clang/test/Driver/sycl-device-lib-amdgcn.cpp @@ -4,21 +4,6 @@ // UNSUPPORTED: system-windows -// Check if internal libraries are still linked against when linkage of all -// device libs is manually excluded. -// RUN: %clangxx -ccc-print-phases -std=c++11 -fsycl -fno-sycl-device-lib=all --sysroot=%S/Inputs/SYCL \ -// RUN: -fsycl-targets=amdgcn-amd-amdhsa -Xsycl-target-backend --offload-arch=gfx906 -fsycl-instrument-device-code %s 2>&1 \ -// RUN: | FileCheck -check-prefix=CHK-NO-DEVLIB %s - -// CHK-NO-DEVLIB-NOT: {{[0-9]+}}: input, "{{.*}}devicelib-amdgcn-amd-amdhsa.bc", ir, (device-sycl, gfx906) -// CHK-NO-DEVLIB: [[LIB1:[0-9]+]]: input, "{{.*}}libsycl-itt-user-wrappers.bc", ir, (device-sycl, gfx906) -// CHK-NO-DEVLIB-NOT: {{[0-9]+}}: input, "{{.*}}devicelib-amdgcn-amd-amdhsa.bc", ir, (device-sycl, gfx906) -// CHK-NO-DEVLIB: [[LIB2:[0-9]+]]: input, "{{.*}}libsycl-itt-compiler-wrappers.bc", ir, (device-sycl, gfx906) -// CHK-NO-DEVLIB-NOT: {{[0-9]+}}: input, "{{.*}}devicelib-amdgcn-amd-amdhsa.bc", ir, (device-sycl, gfx906) -// CHK-NO-DEVLIB: [[LIB3:[0-9]+]]: input, "{{.*}}libsycl-itt-stubs.bc", ir, (device-sycl, gfx906) -// CHK-NO-DEVLIB-NOT: {{[0-9]+}}: input, "{{.*}}devicelib-amdgcn-amd-amdhsa.bc", ir, (device-sycl, gfx906) -// CHK-NO-DEVLIB: {{[0-9]+}}: linker, {{{.*}}[[LIB1]], [[LIB2]], [[LIB3]]{{.*}}}, ir, (device-sycl, gfx906) - // Check that the -fsycl-device-lib flag has no effect when "all" is specified. // RUN: %clangxx -ccc-print-phases -std=c++11 -fsycl -fsycl-device-lib=all --sysroot=%S/Inputs/SYCL \ // RUN: -fsycl-targets=amdgcn-amd-amdhsa -Xsycl-target-backend --offload-arch=gfx906 %s 2>&1 \ diff --git a/clang/test/Driver/sycl-device-lib-nvptx.cpp b/clang/test/Driver/sycl-device-lib-nvptx.cpp index 3fd95c20342fe..a063d16de5c1d 100644 --- a/clang/test/Driver/sycl-device-lib-nvptx.cpp +++ b/clang/test/Driver/sycl-device-lib-nvptx.cpp @@ -4,21 +4,6 @@ // UNSUPPORTED: system-windows -// Check if internal libraries are still linked against when linkage of all -// device libs is manually excluded. -// RUN: %clangxx -ccc-print-phases -std=c++11 -fsycl -fno-sycl-device-lib=all --sysroot=%S/Inputs/SYCL \ -// RUN: -fsycl-targets=nvptx64-nvidia-cuda -fsycl-instrument-device-code %s 2>&1 \ -// RUN: | FileCheck -check-prefix=CHK-NO-DEVLIB %s - -// CHK-NO-DEVLIB-NOT: {{[0-9]+}}: input, "{{.*}}devicelib-nvptx64-nvidia-cuda.bc", ir, (device-sycl, sm_50) -// CHK-NO-DEVLIB: [[LIB1:[0-9]+]]: input, "{{.*}}libsycl-itt-user-wrappers.bc", ir, (device-sycl, sm_50) -// CHK-NO-DEVLIB-NOT: {{[0-9]+}}: input, "{{.*}}devicelib-nvptx64-nvidia-cuda.bc", ir, (device-sycl, sm_50) -// CHK-NO-DEVLIB: [[LIB2:[0-9]+]]: input, "{{.*}}libsycl-itt-compiler-wrappers.bc", ir, (device-sycl, sm_50) -// CHK-NO-DEVLIB-NOT: {{[0-9]+}}: input, "{{.*}}devicelib-nvptx64-nvidia-cuda.bc", ir, (device-sycl, sm_50) -// CHK-NO-DEVLIB: [[LIB3:[0-9]+]]: input, "{{.*}}libsycl-itt-stubs.bc", ir, (device-sycl, sm_50) -// CHK-NO-DEVLIB-NOT: {{[0-9]+}}: input, "{{.*}}devicelib-nvptx64-nvidia-cuda.bc", ir, (device-sycl, sm_50) -// CHK-NO-DEVLIB: {{[0-9]+}}: linker, {{{.*}}[[LIB1]], [[LIB2]], [[LIB3]]{{.*}}}, ir, (device-sycl, sm_50) - // Check that the -fsycl-device-lib flag has no effect when "all" is specified. // RUN: %clangxx -ccc-print-phases -std=c++11 -fsycl -fsycl-device-lib=all --sysroot=%S/Inputs/SYCL \ // RUN: -fsycl-targets=nvptx64-nvidia-cuda %s 2>&1 \ diff --git a/clang/test/Driver/sycl-offload-nvptx.cpp b/clang/test/Driver/sycl-offload-nvptx.cpp index c8668965c1be0..a1a5504eb67f1 100644 --- a/clang/test/Driver/sycl-offload-nvptx.cpp +++ b/clang/test/Driver/sycl-offload-nvptx.cpp @@ -37,7 +37,7 @@ /// Check phases w/out specifying a compute capability. // RUN: %clangxx -ccc-print-phases --sysroot=%S/Inputs/SYCL -std=c++11 \ // RUN: -target x86_64-unknown-linux-gnu -fsycl -fno-sycl-device-lib=all \ -// RUN: -fsycl-instrument-device-code -fsycl-targets=nvptx64-nvidia-cuda %s 2>&1 \ +// RUN: -fsycl-targets=nvptx64-nvidia-cuda %s 2>&1 \ // RUN: -fsycl-libspirv-path=%S/Inputs/SYCL/share/clc/remangled-l32-signed_char.libspirv-nvptx64-nvidia-cuda.bc \ // RUN: --cuda-path=%S/Inputs/CUDA_111/usr/local/cuda \ // RUN: | FileCheck -check-prefix=CHK-PHASES-NO-CC %s @@ -54,27 +54,24 @@ // CHK-PHASES-NO-CC: 7: backend, {6}, assembler, (host-sycl) // CHK-PHASES-NO-CC: 8: assembler, {7}, object, (host-sycl) // CHK-PHASES-NO-CC: 9: linker, {4}, ir, (device-sycl, sm_50) -// CHK-PHASES-NO-CC: 10: input, "{{.*}}libsycl-itt-user-wrappers.bc", ir, (device-sycl, sm_50) -// CHK-PHASES-NO-CC: 11: input, "{{.*}}libsycl-itt-compiler-wrappers.bc", ir, (device-sycl, sm_50) -// CHK-PHASES-NO-CC: 12: input, "{{.*}}libsycl-itt-stubs.bc", ir, (device-sycl, sm_50) -// CHK-PHASES-NO-CC: 13: input, "{{.*}}libspirv-nvptx64{{.*}}", ir, (device-sycl, sm_50) -// CHK-PHASES-NO-CC: 14: input, "{{.*}}libdevice{{.*}}", ir, (device-sycl, sm_50) -// CHK-PHASES-NO-CC: 15: linker, {9, 10, 11, 12, 13, 14}, ir, (device-sycl, sm_50) -// CHK-PHASES-NO-CC: 16: sycl-post-link, {15}, ir, (device-sycl, sm_50) -// CHK-PHASES-NO-CC: 17: file-table-tform, {16}, ir, (device-sycl, sm_50) -// CHK-PHASES-NO-CC: 18: backend, {17}, assembler, (device-sycl, sm_50) -// CHK-PHASES-NO-CC: 19: assembler, {18}, object, (device-sycl, sm_50) -// CHK-PHASES-NO-CC: 20: linker, {18, 19}, cuda-fatbin, (device-sycl, sm_50) -// CHK-PHASES-NO-CC: 21: foreach, {17, 20}, cuda-fatbin, (device-sycl, sm_50) -// CHK-PHASES-NO-CC: 22: file-table-tform, {16, 21}, tempfiletable, (device-sycl, sm_50) -// CHK-PHASES-NO-CC: 23: clang-offload-wrapper, {22}, object, (device-sycl, sm_50) -// CHK-PHASES-NO-CC: 24: offload, "device-sycl (nvptx64-nvidia-cuda:sm_50)" {23}, object -// CHK-PHASES-NO-CC: 25: linker, {8, 24}, image, (host-sycl) +// CHK-PHASES-NO-CC: 10: input, "{{.*}}libspirv-nvptx64{{.*}}", ir, (device-sycl, sm_50) +// CHK-PHASES-NO-CC: 11: input, "{{.*}}libdevice{{.*}}", ir, (device-sycl, sm_50) +// CHK-PHASES-NO-CC: 12: linker, {9, 10, 11}, ir, (device-sycl, sm_50) +// CHK-PHASES-NO-CC: 13: sycl-post-link, {12}, ir, (device-sycl, sm_50) +// CHK-PHASES-NO-CC: 14: file-table-tform, {13}, ir, (device-sycl, sm_50) +// CHK-PHASES-NO-CC: 15: backend, {14}, assembler, (device-sycl, sm_50) +// CHK-PHASES-NO-CC: 16: assembler, {15}, object, (device-sycl, sm_50) +// CHK-PHASES-NO-CC: 17: linker, {15, 16}, cuda-fatbin, (device-sycl, sm_50) +// CHK-PHASES-NO-CC: 18: foreach, {14, 17}, cuda-fatbin, (device-sycl, sm_50) +// CHK-PHASES-NO-CC: 19: file-table-tform, {13, 18}, tempfiletable, (device-sycl, sm_50) +// CHK-PHASES-NO-CC: 20: clang-offload-wrapper, {19}, object, (device-sycl, sm_50) +// CHK-PHASES-NO-CC: 21: offload, "device-sycl (nvptx64-nvidia-cuda:sm_50)" {20}, object +// CHK-PHASES-NO-CC: 22: linker, {8, 21}, image, (host-sycl) // /// Check phases specifying a compute capability. // RUN: %clangxx -ccc-print-phases --sysroot=%S/Inputs/SYCL -std=c++11 \ // RUN: -target x86_64-unknown-linux-gnu -fsycl -fno-sycl-device-lib=all \ -// RUN: -fsycl-instrument-device-code -fsycl-targets=nvptx64-nvidia-cuda \ +// RUN: -fsycl-targets=nvptx64-nvidia-cuda \ // RUN: -fsycl-libspirv-path=%S/Inputs/SYCL/share/clc/remangled-l32-signed_char.libspirv-nvptx64-nvidia-cuda.bc \ // RUN: --cuda-path=%S/Inputs/CUDA_111/usr/local/cuda \ // RUN: -Xsycl-target-backend "--cuda-gpu-arch=sm_35" %s 2>&1 \ @@ -92,22 +89,19 @@ // CHK-PHASES: 7: backend, {6}, assembler, (host-sycl) // CHK-PHASES: 8: assembler, {7}, object, (host-sycl) // CHK-PHASES: 9: linker, {4}, ir, (device-sycl, sm_35) -// CHK-PHASES: 10: input, "{{.*}}libsycl-itt-user-wrappers.bc", ir, (device-sycl, sm_35) -// CHK-PHASES: 11: input, "{{.*}}libsycl-itt-compiler-wrappers.bc", ir, (device-sycl, sm_35) -// CHK-PHASES: 12: input, "{{.*}}libsycl-itt-stubs.bc", ir, (device-sycl, sm_35) -// CHK-PHASES: 13: input, "{{.*}}libspirv-nvptx64{{.*}}", ir, (device-sycl, sm_35) -// CHK-PHASES: 14: input, "{{.*}}libdevice{{.*}}", ir, (device-sycl, sm_35) -// CHK-PHASES: 15: linker, {9, 10, 11, 12, 13, 14}, ir, (device-sycl, sm_35) -// CHK-PHASES: 16: sycl-post-link, {15}, ir, (device-sycl, sm_35) -// CHK-PHASES: 17: file-table-tform, {16}, ir, (device-sycl, sm_35) -// CHK-PHASES: 18: backend, {17}, assembler, (device-sycl, sm_35) -// CHK-PHASES: 19: assembler, {18}, object, (device-sycl, sm_35) -// CHK-PHASES: 20: linker, {18, 19}, cuda-fatbin, (device-sycl, sm_35) -// CHK-PHASES: 21: foreach, {17, 20}, cuda-fatbin, (device-sycl, sm_35) -// CHK-PHASES: 22: file-table-tform, {16, 21}, tempfiletable, (device-sycl, sm_35) -// CHK-PHASES: 23: clang-offload-wrapper, {22}, object, (device-sycl, sm_35) -// CHK-PHASES: 24: offload, "device-sycl (nvptx64-nvidia-cuda:sm_35)" {23}, object -// CHK-PHASES: 25: linker, {8, 24}, image, (host-sycl) +// CHK-PHASES: 10: input, "{{.*}}libspirv-nvptx64{{.*}}", ir, (device-sycl, sm_35) +// CHK-PHASES: 11: input, "{{.*}}libdevice{{.*}}", ir, (device-sycl, sm_35) +// CHK-PHASES: 12: linker, {9, 10, 11}, ir, (device-sycl, sm_35) +// CHK-PHASES: 13: sycl-post-link, {12}, ir, (device-sycl, sm_35) +// CHK-PHASES: 14: file-table-tform, {13}, ir, (device-sycl, sm_35) +// CHK-PHASES: 15: backend, {14}, assembler, (device-sycl, sm_35) +// CHK-PHASES: 16: assembler, {15}, object, (device-sycl, sm_35) +// CHK-PHASES: 17: linker, {15, 16}, cuda-fatbin, (device-sycl, sm_35) +// CHK-PHASES: 18: foreach, {14, 17}, cuda-fatbin, (device-sycl, sm_35) +// CHK-PHASES: 19: file-table-tform, {13, 18}, tempfiletable, (device-sycl, sm_35) +// CHK-PHASES: 20: clang-offload-wrapper, {19}, object, (device-sycl, sm_35) +// CHK-PHASES: 21: offload, "device-sycl (nvptx64-nvidia-cuda:sm_35)" {20}, object +// CHK-PHASES: 22: linker, {8, 21}, image, (host-sycl) /// Check calling preprocessor only // RUN: %clangxx -E -fsycl -fsycl-targets=nvptx64-nvidia-cuda -ccc-print-phases %s 2>&1 \ diff --git a/clang/test/Driver/sycl-offload-old-model.c b/clang/test/Driver/sycl-offload-old-model.c index a0f1017f1baaa..6bef2ced9be7c 100644 --- a/clang/test/Driver/sycl-offload-old-model.c +++ b/clang/test/Driver/sycl-offload-old-model.c @@ -608,23 +608,24 @@ // CHK-PHASE-MULTI-TARG-BOUND-ARCH: 10: preprocessor, {9}, c++-cpp-output, (device-sycl, sm_50) // CHK-PHASE-MULTI-TARG-BOUND-ARCH: 11: compiler, {10}, ir, (device-sycl, sm_50) // CHK-PHASE-MULTI-TARG-BOUND-ARCH: 12: linker, {11}, ir, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 13: sycl-post-link, {12}, ir, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 14: file-table-tform, {13}, ir, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 15: backend, {14}, assembler, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 16: assembler, {15}, object, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 17: linker, {15, 16}, cuda-fatbin, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 18: foreach, {14, 17}, cuda-fatbin, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 19: file-table-tform, {13, 18}, tempfiletable, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 20: clang-offload-wrapper, {19}, object, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 21: offload, "device-sycl (nvptx64-nvidia-cuda:sm_50)" {20}, object -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 22: linker, {4}, ir, (device-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 23: sycl-post-link, {22}, tempfiletable, (device-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 24: file-table-tform, {23}, tempfilelist, (device-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 25: llvm-spirv, {24}, tempfilelist, (device-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 26: file-table-tform, {23, 25}, tempfiletable, (device-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 27: clang-offload-wrapper, {26}, object, (device-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 28: offload, "device-sycl (spir64-unknown-unknown)" {27}, object -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 29: linker, {8, 21, 28}, image, (host-sycl) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 13: linker, {12}, ir, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 14: sycl-post-link, {13}, ir, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 15: file-table-tform, {14}, ir, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 16: backend, {15}, assembler, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 17: assembler, {16}, object, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 18: linker, {16, 17}, cuda-fatbin, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 19: foreach, {15, 18}, cuda-fatbin, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 20: file-table-tform, {14, 19}, tempfiletable, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 21: clang-offload-wrapper, {20}, object, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 22: offload, "device-sycl (nvptx64-nvidia-cuda:sm_50)" {21}, object +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 23: linker, {4}, ir, (device-sycl) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 24: sycl-post-link, {23}, tempfiletable, (device-sycl) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 25: file-table-tform, {24}, tempfilelist, (device-sycl) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 26: llvm-spirv, {25}, tempfilelist, (device-sycl) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 27: file-table-tform, {24, 26}, tempfiletable, (device-sycl) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 28: clang-offload-wrapper, {27}, object, (device-sycl) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 29: offload, "device-sycl (spir64-unknown-unknown)" {28}, object +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 30: linker, {8, 22, 29}, image, (host-sycl) // RUN: %clang -target x86_64-unknown-linux-gnu -fsycl \ // RUN: -fno-sycl-instrument-device-code -fno-sycl-device-lib=all \ @@ -645,24 +646,25 @@ // CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 10: preprocessor, {9}, c++-cpp-output, (device-sycl, sm_50) // CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 11: compiler, {10}, ir, (device-sycl, sm_50) // CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 12: linker, {11}, ir, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 13: sycl-post-link, {12}, ir, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 14: file-table-tform, {13}, ir, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 15: backend, {14}, assembler, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 16: assembler, {15}, object, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 17: linker, {15, 16}, cuda-fatbin, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 18: foreach, {14, 17}, cuda-fatbin, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 19: file-table-tform, {13, 18}, tempfiletable, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 20: clang-offload-wrapper, {19}, object, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 21: offload, "device-sycl (nvptx64-nvidia-cuda:sm_50)" {20}, object -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 22: linker, {4}, ir, (device-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 23: sycl-post-link, {22}, tempfiletable, (device-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 24: file-table-tform, {23}, tempfilelist, (device-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 25: llvm-spirv, {24}, tempfilelist, (device-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 26: backend-compiler, {25}, image, (device-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 27: file-table-tform, {23, 26}, tempfiletable, (device-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 28: clang-offload-wrapper, {27}, object, (device-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 29: offload, "device-sycl (spir64_gen-unknown-unknown)" {28}, object -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 30: linker, {8, 21, 29}, image, (host-sycl) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 13: linker, {12}, ir, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 14: sycl-post-link, {13}, ir, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 15: file-table-tform, {14}, ir, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 16: backend, {15}, assembler, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 17: assembler, {16}, object, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 18: linker, {16, 17}, cuda-fatbin, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 19: foreach, {15, 18}, cuda-fatbin, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 20: file-table-tform, {14, 19}, tempfiletable, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 21: clang-offload-wrapper, {20}, object, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 22: offload, "device-sycl (nvptx64-nvidia-cuda:sm_50)" {21}, object +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 23: linker, {4}, ir, (device-sycl) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 24: sycl-post-link, {23}, tempfiletable, (device-sycl) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 25: file-table-tform, {24}, tempfilelist, (device-sycl) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 26: llvm-spirv, {25}, tempfilelist, (device-sycl) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 27: backend-compiler, {26}, image, (device-sycl) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 28: file-table-tform, {24, 27}, tempfiletable, (device-sycl) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 29: clang-offload-wrapper, {28}, object, (device-sycl) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 30: offload, "device-sycl (spir64_gen-unknown-unknown)" {29}, object +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 31: linker, {8, 22, 30}, image, (host-sycl) /// Check the behaviour however with swapped -fsycl-targets // RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fno-sycl-instrument-device-code -fno-sycl-device-lib=all -fsycl-targets=spir64,nvptx64-nvidia-cuda -ccc-print-phases %s 2>&1 \ @@ -687,16 +689,17 @@ // CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 17: clang-offload-wrapper, {16}, object, (device-sycl) // CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 18: offload, "device-sycl (spir64-unknown-unknown)" {17}, object // CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 19: linker, {4}, ir, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 20: sycl-post-link, {19}, ir, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 21: file-table-tform, {20}, ir, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 22: backend, {21}, assembler, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 23: assembler, {22}, object, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 24: linker, {22, 23}, cuda-fatbin, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 25: foreach, {21, 24}, cuda-fatbin, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 26: file-table-tform, {20, 25}, tempfiletable, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 27: clang-offload-wrapper, {26}, object, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 28: offload, "device-sycl (nvptx64-nvidia-cuda:sm_50)" {27}, object -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 29: linker, {8, 18, 28}, image, (host-sycl) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 20: linker, {19}, ir, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 21: sycl-post-link, {20}, ir, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 22: file-table-tform, {21}, ir, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 23: backend, {22}, assembler, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 24: assembler, {23}, object, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 25: linker, {23, 24}, cuda-fatbin, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 26: foreach, {22, 25}, cuda-fatbin, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 27: file-table-tform, {21, 26}, tempfiletable, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 28: clang-offload-wrapper, {27}, object, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 29: offload, "device-sycl (nvptx64-nvidia-cuda:sm_50)" {28}, object +// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 30: linker, {8, 18, 29}, image, (host-sycl) /// ########################################################################### @@ -726,27 +729,28 @@ // CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 20: preprocessor, {19}, c++-cpp-output, (device-sycl, sm_75) // CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 21: compiler, {20}, ir, (device-sycl, sm_75) // CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 22: linker, {21}, ir, (device-sycl, sm_75) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 23: sycl-post-link, {22}, ir, (device-sycl, sm_75) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 24: file-table-tform, {23}, ir, (device-sycl, sm_75) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 25: backend, {24}, assembler, (device-sycl, sm_75) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 26: assembler, {25}, object, (device-sycl, sm_75) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 27: linker, {25, 26}, cuda-fatbin, (device-sycl, sm_75) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 28: foreach, {24, 27}, cuda-fatbin, (device-sycl, sm_75) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 29: file-table-tform, {23, 28}, tempfiletable, (device-sycl, sm_75) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 30: clang-offload-wrapper, {29}, object, (device-sycl, sm_75) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 31: offload, "device-sycl (nvptx64-nvidia-cuda:sm_75)" {30}, object -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 32: linker, {4}, ir, (device-sycl, gfx908) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 33: sycl-post-link, {32}, ir, (device-sycl, gfx908) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 34: file-table-tform, {33}, ir, (device-sycl, gfx908) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 35: backend, {34}, assembler, (device-sycl, gfx908) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 36: assembler, {35}, object, (device-sycl, gfx908) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 37: linker, {36}, image, (device-sycl, gfx908) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 38: linker, {37}, hip-fatbin, (device-sycl, gfx908) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 39: foreach, {34, 38}, hip-fatbin, (device-sycl, gfx908) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 40: file-table-tform, {33, 39}, tempfiletable, (device-sycl, gfx908) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 41: clang-offload-wrapper, {40}, object, (device-sycl, gfx908) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 42: offload, "device-sycl (amdgcn-amd-amdhsa:gfx908)" {41}, object -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 43: linker, {8, 18, 31, 42}, image, (host-sycl) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 23: linker, {22}, ir, (device-sycl, sm_75) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 24: sycl-post-link, {23}, ir, (device-sycl, sm_75) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 25: file-table-tform, {24}, ir, (device-sycl, sm_75) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 26: backend, {25}, assembler, (device-sycl, sm_75) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 27: assembler, {26}, object, (device-sycl, sm_75) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 28: linker, {26, 27}, cuda-fatbin, (device-sycl, sm_75) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 29: foreach, {25, 28}, cuda-fatbin, (device-sycl, sm_75) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 30: file-table-tform, {24, 29}, tempfiletable, (device-sycl, sm_75) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 31: clang-offload-wrapper, {30}, object, (device-sycl, sm_75) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 32: offload, "device-sycl (nvptx64-nvidia-cuda:sm_75)" {31}, object +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 33: linker, {4}, ir, (device-sycl, gfx908) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 34: sycl-post-link, {33}, ir, (device-sycl, gfx908) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 35: file-table-tform, {34}, ir, (device-sycl, gfx908) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 36: backend, {35}, assembler, (device-sycl, gfx908) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 37: assembler, {36}, object, (device-sycl, gfx908) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 38: linker, {37}, image, (device-sycl, gfx908) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 39: linker, {38}, hip-fatbin, (device-sycl, gfx908) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 40: foreach, {35, 39}, hip-fatbin, (device-sycl, gfx908) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 41: file-table-tform, {34, 40}, tempfiletable, (device-sycl, gfx908) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 42: clang-offload-wrapper, {41}, object, (device-sycl, gfx908) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 43: offload, "device-sycl (amdgcn-amd-amdhsa:gfx908)" {42}, object +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 44: linker, {8, 18, 32, 43}, image, (host-sycl) /// -fsycl --no-offload-new-driver with /Fo testing // RUN: %clang_cl -fsycl --no-offload-new-driver /Fosomefile.obj -c %s -### 2>&1 \ diff --git a/clang/test/Driver/sycl-offload-static-lib-2-old-model.cpp b/clang/test/Driver/sycl-offload-static-lib-2-old-model.cpp index 53d6fbc910e9c..089e3f4a2c258 100644 --- a/clang/test/Driver/sycl-offload-static-lib-2-old-model.cpp +++ b/clang/test/Driver/sycl-offload-static-lib-2-old-model.cpp @@ -129,16 +129,17 @@ // STATIC_LIB_SRC-CUDA: 12: input, "[[INPUTA]]", archive // STATIC_LIB_SRC-CUDA: 13: clang-offload-unbundler, {12}, archive // STATIC_LIB_SRC-CUDA: 14: linker, {5, 11, 13}, ir, (device-sycl, sm_50) -// STATIC_LIB_SRC-CUDA: 15: sycl-post-link, {14}, ir, (device-sycl, sm_50) -// STATIC_LIB_SRC-CUDA: 16: file-table-tform, {15}, ir, (device-sycl, sm_50) -// STATIC_LIB_SRC-CUDA: 17: backend, {16}, assembler, (device-sycl, sm_50) -// STATIC_LIB_SRC-CUDA: 18: assembler, {17}, object, (device-sycl, sm_50) -// STATIC_LIB_SRC-CUDA: 19: linker, {17, 18}, cuda-fatbin, (device-sycl, sm_50) -// STATIC_LIB_SRC-CUDA: 20: foreach, {16, 19}, cuda-fatbin, (device-sycl, sm_50) -// STATIC_LIB_SRC-CUDA: 21: file-table-tform, {15, 20}, tempfiletable, (device-sycl, sm_50) -// STATIC_LIB_SRC-CUDA: 22: clang-offload-wrapper, {21}, object, (device-sycl, sm_50) -// STATIC_LIB_SRC-CUDA: 23: offload, "device-sycl (nvptx64-nvidia-cuda:sm_50)" {22}, object -// STATIC_LIB_SRC-CUDA: 24: linker, {0, 9, 23}, image, (host-sycl) +// STATIC_LIB_SRC-CUDA: 15: linker, {14}, ir, (device-sycl, sm_50) +// STATIC_LIB_SRC-CUDA: 16: sycl-post-link, {15}, ir, (device-sycl, sm_50) +// STATIC_LIB_SRC-CUDA: 17: file-table-tform, {16}, ir, (device-sycl, sm_50) +// STATIC_LIB_SRC-CUDA: 18: backend, {17}, assembler, (device-sycl, sm_50) +// STATIC_LIB_SRC-CUDA: 19: assembler, {18}, object, (device-sycl, sm_50) +// STATIC_LIB_SRC-CUDA: 20: linker, {18, 19}, cuda-fatbin, (device-sycl, sm_50) +// STATIC_LIB_SRC-CUDA: 21: foreach, {17, 20}, cuda-fatbin, (device-sycl, sm_50) +// STATIC_LIB_SRC-CUDA: 22: file-table-tform, {16, 21}, tempfiletable, (device-sycl, sm_50) +// STATIC_LIB_SRC-CUDA: 23: clang-offload-wrapper, {22}, object, (device-sycl, sm_50) +// STATIC_LIB_SRC-CUDA: 24: offload, "device-sycl (nvptx64-nvidia-cuda:sm_50)" {23}, object +// STATIC_LIB_SRC-CUDA: 25: linker, {0, 9, 24}, image, (host-sycl) /// ########################################################################### @@ -230,7 +231,8 @@ // STATIC_LIB_NOSRC-SPIR: llvm-foreach{{.*}}spirv-to-ir-wrapper{{.*}} "[[DEVICELIB]]" "-o" "[[DEVICELIST:.+\.txt]]" // STATIC_LIB_NOSRC-SPIR: llvm-link{{.*}} "@[[DEVICELIST]]" "-o" "[[BCFILE:.+\.bc]]" // STATIC_LIB_NOSRC-CUDA: clang-offload-bundler{{.*}} "-type=a" "-targets=[[BUNDLE_TRIPLE]]" "-input={{.*}}_lib.{{(a|lo)}}" "-output=[[DEVICELIB:.+\.a]]" "-unbundle" -// STATIC_LIB_NOSRC-CUDA: llvm-link{{.*}} "[[DEVICELIB]]" "-o" "[[BCFILE:.+\.bc]]" +// STATIC_LIB_NOSRC-CUDA: llvm-link{{.*}} "[[DEVICELIB]]" "-o" "[[BCFILE1:.+\.bc]]" +// STATIC_LIB_NOSRC-CUDA: llvm-link{{.*}} "[[BCFILE1]]" "{{.*}}" "-o" "[[BCFILE:.+\.bc]]" // STATIC_LIB_NOSRC: sycl-post-link{{.*}} "-o" "[[TABLE:.+]]" "[[BCFILE]]" // STATIC_LIB_NOSRC: file-table-tform{{.*}} "-o" "[[LIST:.+]]" "[[TABLE]]" // STATIC_LIB_NOSRC-SPIR: llvm-foreach{{.*}}llvm-spirv{{.*}} "-o" "[[OBJLIST:.+\.txt]]"{{.*}} "[[LIST]]" diff --git a/clang/test/Driver/sycl-oneapi-gpu-nvidia.cpp b/clang/test/Driver/sycl-oneapi-gpu-nvidia.cpp index 26b0cf8812ffa..53abd912904d1 100644 --- a/clang/test/Driver/sycl-oneapi-gpu-nvidia.cpp +++ b/clang/test/Driver/sycl-oneapi-gpu-nvidia.cpp @@ -96,13 +96,14 @@ // NVIDIA_CHECK_PHASES: 7: backend, {6}, assembler, (host-sycl) // NVIDIA_CHECK_PHASES: 8: assembler, {7}, object, (host-sycl) // NVIDIA_CHECK_PHASES: 9: linker, {4}, ir, (device-sycl, sm_50) -// NVIDIA_CHECK_PHASES: 10: sycl-post-link, {9}, ir, (device-sycl, sm_50) -// NVIDIA_CHECK_PHASES: 11: file-table-tform, {10}, ir, (device-sycl, sm_50) -// NVIDIA_CHECK_PHASES: 12: backend, {11}, assembler, (device-sycl, sm_50) -// NVIDIA_CHECK_PHASES: 13: assembler, {12}, object, (device-sycl, sm_50) -// NVIDIA_CHECK_PHASES: 14: linker, {12, 13}, cuda-fatbin, (device-sycl, sm_50) -// NVIDIA_CHECK_PHASES: 15: foreach, {11, 14}, cuda-fatbin, (device-sycl, sm_50) -// NVIDIA_CHECK_PHASES: 16: file-table-tform, {10, 15}, tempfiletable, (device-sycl, sm_50) -// NVIDIA_CHECK_PHASES: 17: clang-offload-wrapper, {16}, object, (device-sycl, sm_50) -// NVIDIA_CHECK_PHASES: 18: offload, "device-sycl (nvptx64-nvidia-cuda:sm_50)" {17}, object -// NVIDIA_CHECK_PHASES: 19: linker, {8, 18}, image, (host-sycl) +// NVIDIA_CHECK_PHASES: 10: linker, {9}, ir, (device-sycl, sm_50) +// NVIDIA_CHECK_PHASES: 11: sycl-post-link, {10}, ir, (device-sycl, sm_50) +// NVIDIA_CHECK_PHASES: 12: file-table-tform, {11}, ir, (device-sycl, sm_50) +// NVIDIA_CHECK_PHASES: 13: backend, {12}, assembler, (device-sycl, sm_50) +// NVIDIA_CHECK_PHASES: 14: assembler, {13}, object, (device-sycl, sm_50) +// NVIDIA_CHECK_PHASES: 15: linker, {13, 14}, cuda-fatbin, (device-sycl, sm_50) +// NVIDIA_CHECK_PHASES: 16: foreach, {12, 15}, cuda-fatbin, (device-sycl, sm_50) +// NVIDIA_CHECK_PHASES: 17: file-table-tform, {11, 16}, tempfiletable, (device-sycl, sm_50) +// NVIDIA_CHECK_PHASES: 18: clang-offload-wrapper, {17}, object, (device-sycl, sm_50) +// NVIDIA_CHECK_PHASES: 19: offload, "device-sycl (nvptx64-nvidia-cuda:sm_50)" {18}, object +// NVIDIA_CHECK_PHASES: 20: linker, {8, 19}, image, (host-sycl) From 236c0267618cbbcfb667241d83be454714d7f1b5 Mon Sep 17 00:00:00 2001 From: jinge90 Date: Tue, 29 Jul 2025 11:25:34 +0800 Subject: [PATCH 2/3] fix lit failure Signed-off-by: jinge90 --- clang/test/Driver/sycl-offload-old-model.c | 42 ++++++++++--------- .../sycl-offload-static-lib-2-old-model.cpp | 34 +++++++++------ clang/test/Driver/sycl-oneapi-gpu-nvidia.cpp | 27 ++++++------ 3 files changed, 59 insertions(+), 44 deletions(-) diff --git a/clang/test/Driver/sycl-offload-old-model.c b/clang/test/Driver/sycl-offload-old-model.c index 6bef2ced9be7c..18b0e63be9a7e 100644 --- a/clang/test/Driver/sycl-offload-old-model.c +++ b/clang/test/Driver/sycl-offload-old-model.c @@ -593,7 +593,9 @@ /// ########################################################################### /// Verify that triple-boundarch pairs are correct with multi-targetting -// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fno-sycl-instrument-device-code -fno-sycl-device-lib=all -fsycl-targets=nvptx64-nvidia-cuda,spir64 -ccc-print-phases %s 2>&1 \ +// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fno-sycl-instrument-device-code -fno-sycl-device-lib=all \ +// RUN: -fsycl-targets=nvptx64-nvidia-cuda,spir64 -ccc-print-phases --cuda-path=%S/Inputs/CUDA_111/usr/local/cuda \ +// RUN: -fsycl-libspirv-path=%S/Inputs/SYCL/share/clc/remangled-l64-signed_char.libspirv-nvptx64-nvidia-cuda.bc %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHK-PHASE-MULTI-TARG-BOUND-ARCH %s // CHK-PHASE-MULTI-TARG-BOUND-ARCH: 0: input, "[[INPUT:.+\.c]]", c++, (host-sycl) // CHK-PHASE-MULTI-TARG-BOUND-ARCH: 1: preprocessor, {0}, c++-cpp-output, (host-sycl) @@ -608,24 +610,26 @@ // CHK-PHASE-MULTI-TARG-BOUND-ARCH: 10: preprocessor, {9}, c++-cpp-output, (device-sycl, sm_50) // CHK-PHASE-MULTI-TARG-BOUND-ARCH: 11: compiler, {10}, ir, (device-sycl, sm_50) // CHK-PHASE-MULTI-TARG-BOUND-ARCH: 12: linker, {11}, ir, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 13: linker, {12}, ir, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 14: sycl-post-link, {13}, ir, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 15: file-table-tform, {14}, ir, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 16: backend, {15}, assembler, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 17: assembler, {16}, object, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 18: linker, {16, 17}, cuda-fatbin, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 19: foreach, {15, 18}, cuda-fatbin, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 20: file-table-tform, {14, 19}, tempfiletable, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 21: clang-offload-wrapper, {20}, object, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 22: offload, "device-sycl (nvptx64-nvidia-cuda:sm_50)" {21}, object -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 23: linker, {4}, ir, (device-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 24: sycl-post-link, {23}, tempfiletable, (device-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 25: file-table-tform, {24}, tempfilelist, (device-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 26: llvm-spirv, {25}, tempfilelist, (device-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 27: file-table-tform, {24, 26}, tempfiletable, (device-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 28: clang-offload-wrapper, {27}, object, (device-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 29: offload, "device-sycl (spir64-unknown-unknown)" {28}, object -// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 30: linker, {8, 22, 29}, image, (host-sycl) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 13: input, "{{.*}}libspirv-nvptx64{{.*}}", ir, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 14: input, "{{.*}}libdevice{{.*}}", ir, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 15: linker, {12, 13, 14}, ir, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 16: sycl-post-link, {15}, ir, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 17: file-table-tform, {16}, ir, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 18: backend, {17}, assembler, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 19: assembler, {18}, object, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 20: linker, {18, 19}, cuda-fatbin, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 21: foreach, {17, 20}, cuda-fatbin, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 22: file-table-tform, {16, 21}, tempfiletable, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 23: clang-offload-wrapper, {22}, object, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 24: offload, "device-sycl (nvptx64-nvidia-cuda:sm_50)" {23}, object +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 25: linker, {4}, ir, (device-sycl) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 26: sycl-post-link, {25}, tempfiletable, (device-sycl) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 27: file-table-tform, {26}, tempfilelist, (device-sycl) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 28: llvm-spirv, {27}, tempfilelist, (device-sycl) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 29: file-table-tform, {26, 28}, tempfiletable, (device-sycl) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 30: clang-offload-wrapper, {29}, object, (device-sycl) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 31: offload, "device-sycl (spir64-unknown-unknown)" {30}, object +// CHK-PHASE-MULTI-TARG-BOUND-ARCH: 32: linker, {8, 24, 31}, image, (host-sycl) // RUN: %clang -target x86_64-unknown-linux-gnu -fsycl \ // RUN: -fno-sycl-instrument-device-code -fno-sycl-device-lib=all \ diff --git a/clang/test/Driver/sycl-offload-static-lib-2-old-model.cpp b/clang/test/Driver/sycl-offload-static-lib-2-old-model.cpp index 089e3f4a2c258..e44acd655161b 100644 --- a/clang/test/Driver/sycl-offload-static-lib-2-old-model.cpp +++ b/clang/test/Driver/sycl-offload-static-lib-2-old-model.cpp @@ -86,9 +86,15 @@ /// test behaviors of fat static lib from source // RUN: touch %t_lib.a -// RUN: %clangxx -target x86_64-unknown-linux-gnu -fno-sycl-instrument-device-code -fno-sycl-device-lib=all -fsycl --no-offload-new-driver %t_lib.a -ccc-print-phases %s 2>&1 \ +// RUN: %clangxx -target x86_64-unknown-linux-gnu -fno-sycl-instrument-device-code \ +// RUN: --cuda-path=%S/Inputs/CUDA_111/usr/local/cuda \ +// RUN: -fsycl-libspirv-path=%S/Inputs/SYCL/share/clc/remangled-l64-signed_char.libspirv-nvptx64-nvidia-cuda.bc \ +// RUN: -fno-sycl-device-lib=all -fsycl --no-offload-new-driver %t_lib.a -ccc-print-phases %s 2>&1 \ // RUN: | FileCheck %s -check-prefix=STATIC_LIB_SRC -DBUNDLE_TRIPLE=sycl-spir64-unknown-unknown -// RUN: %clangxx -target x86_64-unknown-linux-gnu -fno-sycl-instrument-device-code -fno-sycl-device-lib=all -fsycl-targets=nvptx64-nvidia-cuda -fsycl --no-offload-new-driver %t_lib.a -ccc-print-phases %s 2>&1 \ +// RUN: %clangxx -target x86_64-unknown-linux-gnu -fno-sycl-instrument-device-code -fno-sycl-device-lib=all \ +// RUN: --cuda-path=%S/Inputs/CUDA_111/usr/local/cuda \ +// RUN: -fsycl-libspirv-path=%S/Inputs/SYCL/share/clc/remangled-l64-signed_char.libspirv-nvptx64-nvidia-cuda.bc \ +// RUN: -fsycl-targets=nvptx64-nvidia-cuda -fsycl --no-offload-new-driver %t_lib.a -ccc-print-phases %s 2>&1 \ // RUN: | FileCheck %s -check-prefix=STATIC_LIB_SRC-CUDA // STATIC_LIB_SRC: 0: input, "[[INPUTA:.+\.a]]", object, (host-sycl) // STATIC_LIB_SRC: 1: input, "[[INPUTC:.+\.cpp]]", c++, (host-sycl) @@ -129,17 +135,19 @@ // STATIC_LIB_SRC-CUDA: 12: input, "[[INPUTA]]", archive // STATIC_LIB_SRC-CUDA: 13: clang-offload-unbundler, {12}, archive // STATIC_LIB_SRC-CUDA: 14: linker, {5, 11, 13}, ir, (device-sycl, sm_50) -// STATIC_LIB_SRC-CUDA: 15: linker, {14}, ir, (device-sycl, sm_50) -// STATIC_LIB_SRC-CUDA: 16: sycl-post-link, {15}, ir, (device-sycl, sm_50) -// STATIC_LIB_SRC-CUDA: 17: file-table-tform, {16}, ir, (device-sycl, sm_50) -// STATIC_LIB_SRC-CUDA: 18: backend, {17}, assembler, (device-sycl, sm_50) -// STATIC_LIB_SRC-CUDA: 19: assembler, {18}, object, (device-sycl, sm_50) -// STATIC_LIB_SRC-CUDA: 20: linker, {18, 19}, cuda-fatbin, (device-sycl, sm_50) -// STATIC_LIB_SRC-CUDA: 21: foreach, {17, 20}, cuda-fatbin, (device-sycl, sm_50) -// STATIC_LIB_SRC-CUDA: 22: file-table-tform, {16, 21}, tempfiletable, (device-sycl, sm_50) -// STATIC_LIB_SRC-CUDA: 23: clang-offload-wrapper, {22}, object, (device-sycl, sm_50) -// STATIC_LIB_SRC-CUDA: 24: offload, "device-sycl (nvptx64-nvidia-cuda:sm_50)" {23}, object -// STATIC_LIB_SRC-CUDA: 25: linker, {0, 9, 24}, image, (host-sycl) +// STATIC_LIB_SRC-CUDA: 15: input, "{{.*}}libspirv-nvptx64{{.*}}", ir, (device-sycl, sm_50) +// STATIC_LIB_SRC-CUDA: 16: input, "{{.*}}libdevice{{.*}}", ir, (device-sycl, sm_50) +// STATIC_LIB_SRC-CUDA: 17: linker, {14, 15, 16}, ir, (device-sycl, sm_50) +// STATIC_LIB_SRC-CUDA: 18: sycl-post-link, {17}, ir, (device-sycl, sm_50) +// STATIC_LIB_SRC-CUDA: 19: file-table-tform, {18}, ir, (device-sycl, sm_50) +// STATIC_LIB_SRC-CUDA: 20: backend, {19}, assembler, (device-sycl, sm_50) +// STATIC_LIB_SRC-CUDA: 21: assembler, {20}, object, (device-sycl, sm_50) +// STATIC_LIB_SRC-CUDA: 22: linker, {20, 21}, cuda-fatbin, (device-sycl, sm_50) +// STATIC_LIB_SRC-CUDA: 23: foreach, {19, 22}, cuda-fatbin, (device-sycl, sm_50) +// STATIC_LIB_SRC-CUDA: 24: file-table-tform, {18, 23}, tempfiletable, (device-sycl, sm_50) +// STATIC_LIB_SRC-CUDA: 25: clang-offload-wrapper, {24}, object, (device-sycl, sm_50) +// STATIC_LIB_SRC-CUDA: 26: offload, "device-sycl (nvptx64-nvidia-cuda:sm_50)" {25}, object +// STATIC_LIB_SRC-CUDA: 27: linker, {0, 9, 26}, image, (host-sycl) /// ########################################################################### diff --git a/clang/test/Driver/sycl-oneapi-gpu-nvidia.cpp b/clang/test/Driver/sycl-oneapi-gpu-nvidia.cpp index 53abd912904d1..79d25613f22b3 100644 --- a/clang/test/Driver/sycl-oneapi-gpu-nvidia.cpp +++ b/clang/test/Driver/sycl-oneapi-gpu-nvidia.cpp @@ -83,7 +83,8 @@ /// NVIDIA Test phases, BoundArch settings used for -device target. Additional /// offload action used for compilation and backend compilation. // RUN: %clangxx -fsycl -fsycl-targets=nvidia_gpu_sm_50 -fno-sycl-device-lib=all \ -// RUN: -fno-sycl-instrument-device-code \ +// RUN: -fno-sycl-instrument-device-code --cuda-path=%S/Inputs/CUDA_111/usr/local/cuda \ +// RUN: -fsycl-libspirv-path=%S/Inputs/SYCL/share/clc/remangled-l64-signed_char.libspirv-nvptx64-nvidia-cuda.bc \ // RUN: -target x86_64-unknown-linux-gnu -ccc-print-phases %s 2>&1 | \ // RUN: FileCheck %s --check-prefix=NVIDIA_CHECK_PHASES // NVIDIA_CHECK_PHASES: 0: input, "[[INPUT:.+\.cpp]]", c++, (host-sycl) @@ -96,14 +97,16 @@ // NVIDIA_CHECK_PHASES: 7: backend, {6}, assembler, (host-sycl) // NVIDIA_CHECK_PHASES: 8: assembler, {7}, object, (host-sycl) // NVIDIA_CHECK_PHASES: 9: linker, {4}, ir, (device-sycl, sm_50) -// NVIDIA_CHECK_PHASES: 10: linker, {9}, ir, (device-sycl, sm_50) -// NVIDIA_CHECK_PHASES: 11: sycl-post-link, {10}, ir, (device-sycl, sm_50) -// NVIDIA_CHECK_PHASES: 12: file-table-tform, {11}, ir, (device-sycl, sm_50) -// NVIDIA_CHECK_PHASES: 13: backend, {12}, assembler, (device-sycl, sm_50) -// NVIDIA_CHECK_PHASES: 14: assembler, {13}, object, (device-sycl, sm_50) -// NVIDIA_CHECK_PHASES: 15: linker, {13, 14}, cuda-fatbin, (device-sycl, sm_50) -// NVIDIA_CHECK_PHASES: 16: foreach, {12, 15}, cuda-fatbin, (device-sycl, sm_50) -// NVIDIA_CHECK_PHASES: 17: file-table-tform, {11, 16}, tempfiletable, (device-sycl, sm_50) -// NVIDIA_CHECK_PHASES: 18: clang-offload-wrapper, {17}, object, (device-sycl, sm_50) -// NVIDIA_CHECK_PHASES: 19: offload, "device-sycl (nvptx64-nvidia-cuda:sm_50)" {18}, object -// NVIDIA_CHECK_PHASES: 20: linker, {8, 19}, image, (host-sycl) +// NVIDIA_CHECK_PHASES: 10: input, "{{.*}}libspirv-nvptx64{{.*}}", ir, (device-sycl, sm_50) +// NVIDIA_CHECK_PHASES: 11: input, "{{.*}}libdevice{{.*}}", ir, (device-sycl, sm_50) +// NVIDIA_CHECK_PHASES: 12: linker, {9, 10, 11}, ir, (device-sycl, sm_50) +// NVIDIA_CHECK_PHASES: 13: sycl-post-link, {12}, ir, (device-sycl, sm_50) +// NVIDIA_CHECK_PHASES: 14: file-table-tform, {13}, ir, (device-sycl, sm_50) +// NVIDIA_CHECK_PHASES: 15: backend, {14}, assembler, (device-sycl, sm_50) +// NVIDIA_CHECK_PHASES: 16: assembler, {15}, object, (device-sycl, sm_50) +// NVIDIA_CHECK_PHASES: 17: linker, {15, 16}, cuda-fatbin, (device-sycl, sm_50) +// NVIDIA_CHECK_PHASES: 18: foreach, {14, 17}, cuda-fatbin, (device-sycl, sm_50) +// NVIDIA_CHECK_PHASES: 19: file-table-tform, {13, 18}, tempfiletable, (device-sycl, sm_50) +// NVIDIA_CHECK_PHASES: 20: clang-offload-wrapper, {19}, object, (device-sycl, sm_50) +// NVIDIA_CHECK_PHASES: 21: offload, "device-sycl (nvptx64-nvidia-cuda:sm_50)" {20}, object +// NVIDIA_CHECK_PHASES: 22: linker, {8, 21}, image, (host-sycl) From 2216a30b3b84b5dee0cb29f2c2b9e804111e5374 Mon Sep 17 00:00:00 2001 From: jinge90 Date: Tue, 29 Jul 2025 14:42:25 +0800 Subject: [PATCH 3/3] fix lit failure Signed-off-by: jinge90 --- clang/test/Driver/sycl-offload-old-model.c | 136 ++++++++++++--------- 1 file changed, 77 insertions(+), 59 deletions(-) diff --git a/clang/test/Driver/sycl-offload-old-model.c b/clang/test/Driver/sycl-offload-old-model.c index 18b0e63be9a7e..1067e146af9db 100644 --- a/clang/test/Driver/sycl-offload-old-model.c +++ b/clang/test/Driver/sycl-offload-old-model.c @@ -594,9 +594,9 @@ /// Verify that triple-boundarch pairs are correct with multi-targetting // RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fno-sycl-instrument-device-code -fno-sycl-device-lib=all \ -// RUN: -fsycl-targets=nvptx64-nvidia-cuda,spir64 -ccc-print-phases --cuda-path=%S/Inputs/CUDA_111/usr/local/cuda \ -// RUN: -fsycl-libspirv-path=%S/Inputs/SYCL/share/clc/remangled-l64-signed_char.libspirv-nvptx64-nvidia-cuda.bc %s 2>&1 \ -// RUN: | FileCheck -check-prefix=CHK-PHASE-MULTI-TARG-BOUND-ARCH %s +// RUN: -fsycl-targets=nvptx64-nvidia-cuda,spir64 -ccc-print-phases --cuda-path=%S/Inputs/CUDA_111/usr/local/cuda \ +// RUN: -fsycl-libspirv-path=%S/Inputs/SYCL/share/clc/remangled-l64-signed_char.libspirv-nvptx64-nvidia-cuda.bc %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHK-PHASE-MULTI-TARG-BOUND-ARCH %s // CHK-PHASE-MULTI-TARG-BOUND-ARCH: 0: input, "[[INPUT:.+\.c]]", c++, (host-sycl) // CHK-PHASE-MULTI-TARG-BOUND-ARCH: 1: preprocessor, {0}, c++-cpp-output, (host-sycl) // CHK-PHASE-MULTI-TARG-BOUND-ARCH: 2: input, "[[INPUT]]", c++, (device-sycl) @@ -632,8 +632,10 @@ // CHK-PHASE-MULTI-TARG-BOUND-ARCH: 32: linker, {8, 24, 31}, image, (host-sycl) // RUN: %clang -target x86_64-unknown-linux-gnu -fsycl \ -// RUN: -fno-sycl-instrument-device-code -fno-sycl-device-lib=all \ -// RUN: -fsycl-targets=nvptx64-nvidia-cuda,spir64_gen \ +// RUN: -fno-sycl-instrument-device-code -fno-sycl-device-lib=all \ +// RUN: -fsycl-targets=nvptx64-nvidia-cuda,spir64_gen \ +// RUN: --cuda-path=%S/Inputs/CUDA_111/usr/local/cuda \ +// RUN: -fsycl-libspirv-path=%S/Inputs/SYCL/share/clc/remangled-l64-signed_char.libspirv-nvptx64-nvidia-cuda.bc \ // RUN: -Xsycl-target-backend=spir64_gen "-device skl" \ // RUN: -ccc-print-phases %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHK-PHASE-MULTI-TARG-BOUND-ARCH2 %s @@ -650,28 +652,34 @@ // CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 10: preprocessor, {9}, c++-cpp-output, (device-sycl, sm_50) // CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 11: compiler, {10}, ir, (device-sycl, sm_50) // CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 12: linker, {11}, ir, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 13: linker, {12}, ir, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 14: sycl-post-link, {13}, ir, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 15: file-table-tform, {14}, ir, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 16: backend, {15}, assembler, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 17: assembler, {16}, object, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 18: linker, {16, 17}, cuda-fatbin, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 19: foreach, {15, 18}, cuda-fatbin, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 20: file-table-tform, {14, 19}, tempfiletable, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 21: clang-offload-wrapper, {20}, object, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 22: offload, "device-sycl (nvptx64-nvidia-cuda:sm_50)" {21}, object -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 23: linker, {4}, ir, (device-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 24: sycl-post-link, {23}, tempfiletable, (device-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 25: file-table-tform, {24}, tempfilelist, (device-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 26: llvm-spirv, {25}, tempfilelist, (device-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 27: backend-compiler, {26}, image, (device-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 28: file-table-tform, {24, 27}, tempfiletable, (device-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 29: clang-offload-wrapper, {28}, object, (device-sycl) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 30: offload, "device-sycl (spir64_gen-unknown-unknown)" {29}, object -// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 31: linker, {8, 22, 30}, image, (host-sycl) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 13: input, "{{.*}}libspirv-nvptx64{{.*}}", ir, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 14: input, "{{.*}}libdevice{{.*}}", ir, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 15: linker, {12, 13, 14}, ir, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 16: sycl-post-link, {15}, ir, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 17: file-table-tform, {16}, ir, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 18: backend, {17}, assembler, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 19: assembler, {18}, object, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 20: linker, {18, 19}, cuda-fatbin, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 21: foreach, {17, 20}, cuda-fatbin, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 22: file-table-tform, {16, 21}, tempfiletable, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 23: clang-offload-wrapper, {22}, object, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 24: offload, "device-sycl (nvptx64-nvidia-cuda:sm_50)" {23}, object +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 25: linker, {4}, ir, (device-sycl) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 26: sycl-post-link, {25}, tempfiletable, (device-sycl) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 27: file-table-tform, {26}, tempfilelist, (device-sycl) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 28: llvm-spirv, {27}, tempfilelist, (device-sycl) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 29: backend-compiler, {28}, image, (device-sycl) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 30: file-table-tform, {26, 29}, tempfiletable, (device-sycl) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 31: clang-offload-wrapper, {30}, object, (device-sycl) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 32: offload, "device-sycl (spir64_gen-unknown-unknown)" {31}, object +// CHK-PHASE-MULTI-TARG-BOUND-ARCH2: 33: linker, {8, 24, 32}, image, (host-sycl) /// Check the behaviour however with swapped -fsycl-targets -// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fno-sycl-instrument-device-code -fno-sycl-device-lib=all -fsycl-targets=spir64,nvptx64-nvidia-cuda -ccc-print-phases %s 2>&1 \ +// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver \ +// RUN: -fno-sycl-instrument-device-code -fno-sycl-device-lib=all \ +// RUN: --cuda-path=%S/Inputs/CUDA_111/usr/local/cuda \ +// RUN: -fsycl-libspirv-path=%S/Inputs/SYCL/share/clc/remangled-l64-signed_char.libspirv-nvptx64-nvidia-cuda.bc \ +// RUN: -fsycl-targets=spir64,nvptx64-nvidia-cuda -ccc-print-phases %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED %s // CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 0: input, "[[INPUT:.+\.c]]", c++, (host-sycl) // CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 1: preprocessor, {0}, c++-cpp-output, (host-sycl) @@ -693,22 +701,30 @@ // CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 17: clang-offload-wrapper, {16}, object, (device-sycl) // CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 18: offload, "device-sycl (spir64-unknown-unknown)" {17}, object // CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 19: linker, {4}, ir, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 20: linker, {19}, ir, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 21: sycl-post-link, {20}, ir, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 22: file-table-tform, {21}, ir, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 23: backend, {22}, assembler, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 24: assembler, {23}, object, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 25: linker, {23, 24}, cuda-fatbin, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 26: foreach, {22, 25}, cuda-fatbin, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 27: file-table-tform, {21, 26}, tempfiletable, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 28: clang-offload-wrapper, {27}, object, (device-sycl, sm_50) -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 29: offload, "device-sycl (nvptx64-nvidia-cuda:sm_50)" {28}, object -// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 30: linker, {8, 18, 29}, image, (host-sycl) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 20: input, "{{.*}}libspirv-nvptx64{{.*}}", ir, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 21: input, "{{.*}}libdevice{{.*}}", ir, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 22: linker, {19, 20, 21}, ir, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 23: sycl-post-link, {22}, ir, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 24: file-table-tform, {23}, ir, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 25: backend, {24}, assembler, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 26: assembler, {25}, object, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 27: linker, {25, 26}, cuda-fatbin, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 28: foreach, {24, 27}, cuda-fatbin, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 29: file-table-tform, {23, 28}, tempfiletable, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 30: clang-offload-wrapper, {29}, object, (device-sycl, sm_50) +// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 31: offload, "device-sycl (nvptx64-nvidia-cuda:sm_50)" {30}, object +// CHK-PHASE-MULTI-TARG-BOUND-ARCH-FLIPPED: 32: linker, {8, 18, 31}, image, (host-sycl) /// ########################################################################### // Check if valid bound arch behaviour occurs when compiling for spir-v,nvidia-gpu, and amd-gpu -// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fno-sycl-instrument-device-code -fno-sycl-device-lib=all -fsycl-targets=spir64,nvptx64-nvidia-cuda,amdgcn-amd-amdhsa -Xsycl-target-backend=nvptx64-nvidia-cuda --offload-arch=sm_75 -Xsycl-target-backend=amdgcn-amd-amdhsa --offload-arch=gfx908 -ccc-print-phases %s 2>&1 \ +// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver \ +// RUN: -fno-sycl-instrument-device-code -fno-sycl-device-lib=all \ +// RUN: --cuda-path=%S/Inputs/CUDA_111/usr/local/cuda \ +// RUN: -fsycl-libspirv-path=%S/Inputs/SYCL/share/clc/remangled-l64-signed_char.libspirv-nvptx64-nvidia-cuda.bc \ +// RUN: -fsycl-targets=spir64,nvptx64-nvidia-cuda,amdgcn-amd-amdhsa \ +// RUN: -Xsycl-target-backend=nvptx64-nvidia-cuda --offload-arch=sm_75 \ +// RUN: -Xsycl-target-backend=amdgcn-amd-amdhsa --offload-arch=gfx908 -ccc-print-phases %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD %s // CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 0: input, "[[INPUT:.+\.c]]", c++, (host-sycl) // CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 1: preprocessor, {0}, c++-cpp-output, (host-sycl) @@ -733,28 +749,30 @@ // CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 20: preprocessor, {19}, c++-cpp-output, (device-sycl, sm_75) // CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 21: compiler, {20}, ir, (device-sycl, sm_75) // CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 22: linker, {21}, ir, (device-sycl, sm_75) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 23: linker, {22}, ir, (device-sycl, sm_75) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 24: sycl-post-link, {23}, ir, (device-sycl, sm_75) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 25: file-table-tform, {24}, ir, (device-sycl, sm_75) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 26: backend, {25}, assembler, (device-sycl, sm_75) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 27: assembler, {26}, object, (device-sycl, sm_75) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 28: linker, {26, 27}, cuda-fatbin, (device-sycl, sm_75) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 29: foreach, {25, 28}, cuda-fatbin, (device-sycl, sm_75) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 30: file-table-tform, {24, 29}, tempfiletable, (device-sycl, sm_75) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 31: clang-offload-wrapper, {30}, object, (device-sycl, sm_75) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 32: offload, "device-sycl (nvptx64-nvidia-cuda:sm_75)" {31}, object -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 33: linker, {4}, ir, (device-sycl, gfx908) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 34: sycl-post-link, {33}, ir, (device-sycl, gfx908) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 35: file-table-tform, {34}, ir, (device-sycl, gfx908) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 36: backend, {35}, assembler, (device-sycl, gfx908) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 37: assembler, {36}, object, (device-sycl, gfx908) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 38: linker, {37}, image, (device-sycl, gfx908) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 39: linker, {38}, hip-fatbin, (device-sycl, gfx908) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 40: foreach, {35, 39}, hip-fatbin, (device-sycl, gfx908) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 41: file-table-tform, {34, 40}, tempfiletable, (device-sycl, gfx908) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 42: clang-offload-wrapper, {41}, object, (device-sycl, gfx908) -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 43: offload, "device-sycl (amdgcn-amd-amdhsa:gfx908)" {42}, object -// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 44: linker, {8, 18, 32, 43}, image, (host-sycl) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 23: input, "{{.*}}libspirv-nvptx64{{.*}}", ir, (device-sycl, sm_75) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 24: input, "{{.*}}libdevice{{.*}}", ir, (device-sycl, sm_75) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 25: linker, {22, 23, 24}, ir, (device-sycl, sm_75) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 26: sycl-post-link, {25}, ir, (device-sycl, sm_75) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 27: file-table-tform, {26}, ir, (device-sycl, sm_75) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 28: backend, {27}, assembler, (device-sycl, sm_75) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 29: assembler, {28}, object, (device-sycl, sm_75) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 30: linker, {28, 29}, cuda-fatbin, (device-sycl, sm_75) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 31: foreach, {27, 30}, cuda-fatbin, (device-sycl, sm_75) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 32: file-table-tform, {26, 31}, tempfiletable, (device-sycl, sm_75) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 33: clang-offload-wrapper, {32}, object, (device-sycl, sm_75) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 34: offload, "device-sycl (nvptx64-nvidia-cuda:sm_75)" {33}, object +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 35: linker, {4}, ir, (device-sycl, gfx908) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 36: sycl-post-link, {35}, ir, (device-sycl, gfx908) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 37: file-table-tform, {36}, ir, (device-sycl, gfx908) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 38: backend, {37}, assembler, (device-sycl, gfx908) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 39: assembler, {38}, object, (device-sycl, gfx908) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 40: linker, {39}, image, (device-sycl, gfx908) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 41: linker, {40}, hip-fatbin, (device-sycl, gfx908) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 42: foreach, {37, 41}, hip-fatbin, (device-sycl, gfx908) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 43: file-table-tform, {36, 42}, tempfiletable, (device-sycl, gfx908) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 44: clang-offload-wrapper, {43}, object, (device-sycl, gfx908) +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 45: offload, "device-sycl (amdgcn-amd-amdhsa:gfx908)" {44}, object +// CHK-PHASE-MULTI-TARG-SPIRV-NVIDIA-AMD: 46: linker, {8, 18, 34, 45}, image, (host-sycl) /// -fsycl --no-offload-new-driver with /Fo testing // RUN: %clang_cl -fsycl --no-offload-new-driver /Fosomefile.obj -c %s -### 2>&1 \