================
@@ -60,6 +60,85 @@
 // CHK-SYCL-RDC-HOST: "-cc1"{{.*}} "-fsycl-is-host" {{.*}} "-fgpu-rdc"
 // CHK-SYCL-NORDC-NOT: "-fgpu-rdc"
 
+/// Check the phases graph in non-RDC mode.
+// RUN: %clang -ccc-print-phases --target=x86_64-unknown-linux-gnu -fsycl 
-fno-gpu-rdc %s 2>&1 \
+// RUN:   | FileCheck -check-prefixes=CHK-PHASES-NORDC %s
+// CHK-PHASES-NORDC: 6: backend, {5}, ir, (device-sycl)
+// CHK-PHASES-NORDC-NEXT: 7: offload, "device-sycl (spirv64-unknown-unknown)" 
{6}, ir
+// CHK-PHASES-NORDC-NEXT: 8: llvm-offload-binary, {7}, image, (device-sycl)
+// CHK-PHASES-NORDC-NEXT: 9: clang-linker-wrapper, {8}, sycl-fatbin, 
(device-sycl)
+// CHK-PHASES-NORDC-NEXT: 10: offload, "host-sycl (x86_64{{.*}})" {2}, 
"device-sycl (spirv64{{.*}})" {9}, ir
+// CHK-PHASES-NORDC-NEXT: 11: backend, {10}, assembler, (host-sycl)
+// CHK-PHASES-NORDC-NEXT: 12: assembler, {11}, object, (host-sycl)
+// CHK-PHASES-NORDC-NEXT: 13: clang-linker-wrapper, {12}, image, (host-sycl)
+
+/// With multiple architectures the packaged binary holds an entry per
+/// architecture, and a single fat binary is expected to reach the host.
+// RUN: %clang -ccc-print-phases --target=x86_64-unknown-linux-gnu -fsycl 
-fno-gpu-rdc \
+// RUN:   --offload-targets=spirv64-unknown-unknown --offload-arch=generic 
--offload-arch=bmg_g21 \
+// RUN:   -c %s 2>&1 | FileCheck -check-prefixes=CHK-PHASES-NORDC-ARCHS %s
+// CHK-PHASES-NORDC-ARCHS: 7: offload, "device-sycl 
(spirv64-unknown-unknown:bmg_g21)" {6}, ir
+// CHK-PHASES-NORDC-ARCHS: 12: offload, "device-sycl 
(spirv64-unknown-unknown:generic)" {11}, ir
+// CHK-PHASES-NORDC-ARCHS-NEXT: 13: llvm-offload-binary, {7, 12}, image, 
(device-sycl)
+// CHK-PHASES-NORDC-ARCHS-NEXT: 14: clang-linker-wrapper, {13}, sycl-fatbin, 
(device-sycl)
+
+/// Multiple device triples are not supported today.
+// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl -fno-gpu-rdc \
+// RUN:   --offload-targets=spirv64-unknown-unknown,spirv32-unknown-unknown -c 
%s 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHK-NORDC-MULTI-TRIPLE %s
+// CHK-NORDC-MULTI-TRIPLE: error: '-fno-gpu-rdc' is not supported with 
multiple SYCL offloading targets
+
+/// A single target repeated is one target.
+// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fsycl -fno-gpu-rdc \
+// RUN:   --offload-targets=spirv64-unknown-unknown,spirv64-unknown-unknown -c 
%s 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHK-NORDC-DUP-TRIPLE %s
+// CHK-NORDC-DUP-TRIPLE-NOT: error:
+// CHK-NORDC-DUP-TRIPLE: clang-linker-wrapper{{.*}} "--emit-fatbin-only"
+
+/// The same two targets in RDC mode are supported.
----------------
YuriPlyakhin wrote:

fbe8f926f72fcab3b8de0d6f7d1aa8a090b2fbc3

https://github.com/llvm/llvm-project/pull/218089
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to