https://github.com/srividya-sundaram updated https://github.com/llvm/llvm-project/pull/229249
>From e78c0231d44986f0a3aff2fee6b54ed0e7c44303 Mon Sep 17 00:00:00 2001 From: srividya sundaram <[email protected]> Date: Mon, 2 Nov 2026 14:35:37 -0800 Subject: [PATCH 1/4] [Clang][SYCL] Reject an unknown offload architecture on a SPIR-V target On a spirv32-unknown-unknown or spirv64-unknown-unknown target, a SYCL --offload-arch or --no-offload-arch value must name an Intel GPU or CPU, an IGCA target or "generic". Diagnose anything else, e.g. a misspelled xe-pcv or xe-pvc:foo, as for CUDA and HIP, instead of building for a device that does not exist. --- clang/docs/ReleaseNotes.md | 5 +++ clang/lib/Driver/Driver.cpp | 38 ++++++++++++---- clang/test/Driver/sycl-intel-gpu-arch.cpp | 53 +++++++++++++++++++++++ 3 files changed, 87 insertions(+), 9 deletions(-) diff --git a/clang/docs/ReleaseNotes.md b/clang/docs/ReleaseNotes.md index 7a0169be43980e..c93cfb96007db3 100644 --- a/clang/docs/ReleaseNotes.md +++ b/clang/docs/ReleaseNotes.md @@ -1551,6 +1551,11 @@ The `alpha.cplusplus.UseAfterLifetimeEnd` checker was renamed to `alpha.core.Use ### SYCL Support +- On a `spirv32-unknown-unknown` or `spirv64-unknown-unknown` offload target, + `--offload-arch` and `--no-offload-arch` must now name an Intel GPU or CPU, an + IGCA target or `generic`. Any other value, e.g. a misspelled `xe-pcv`, is an + error rather than a device job for a device that does not exist. + #### Improvements ### Clang IR Improvements diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index 37fb69baf6a3eb..a9881b8a2f5824 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -3929,16 +3929,28 @@ void Driver::BuildActions(Compilation &C, DerivedArgList &Args, Args.ClaimAllArgs(options::OPT_cl_ignored_Group); } -/// Returns the canonical name for the offloading architecture when using a HIP -/// or CUDA architecture. +/// \return true if \p Triple is a SPIR-V target with no vendor or OS, such as +/// spirv64-unknown-unknown. +static bool isPlainSPIRV(const llvm::Triple &Triple) { + return Triple.isSPIRV() && + Triple.getVendor() == llvm::Triple::UnknownVendor && + Triple.getOS() == llvm::Triple::UnknownOS; +} + +/// Returns the canonical name for the offloading architecture \p ArchStr on +/// \p Triple, or an empty string after diagnosing an architecture that +/// \p Triple does not support. static StringRef getCanonicalArchString(Compilation &C, const llvm::opt::DerivedArgList &Args, StringRef ArchStr, - const llvm::Triple &Triple) { - // Lookup the CUDA / HIP architecture string. Only report an error if we were - // expecting the triple to be only NVPTX / AMDGPU. + const llvm::Triple &Triple, + Action::OffloadKind Kind) { OffloadArch Arch = StringToOffloadArch(getProcessorFromTargetID(Triple, ArchStr)); + // An Intel name or "generic" takes no target features, so "xe-pvc:foo" is + // not "xe-pvc". + if ((Arch.isIntel() || Arch.isGeneric()) && ArchStr.contains(':')) + Arch = OffloadArch::getUnknown(); if (Triple.isNVPTX() && (Arch.isUnknown() || !Arch.isNVPTX())) { C.getDriver().Diag(clang::diag::err_drv_offload_bad_gpu_arch) << "CUDA" << ArchStr; @@ -3965,6 +3977,14 @@ static StringRef getCanonicalArchString(Compilation &C, << "IGCA" << ArchStr; return StringRef(); } + } else if (Kind == Action::OFK_SYCL && isPlainSPIRV(Triple) && + !ArchStr.empty() && !Arch.isIntel() && !Arch.isGeneric()) { + // A SYCL device on a plain SPIR-V target is an Intel GPU or CPU, an IGCA + // target or "generic". Reject anything else, as for CUDA and HIP, rather + // than build for a device that does not exist. + C.getDriver().Diag(clang::diag::err_drv_offload_bad_gpu_arch) + << "SYCL" << ArchStr; + return StringRef(); } if (Arch.isNVPTX()) @@ -4027,7 +4047,7 @@ Driver::getOffloadArchs(Compilation &C, const llvm::opt::DerivedArgList &Args, for (auto ArchStr : *GPUsOrErr) { StringRef CanonicalStr = getCanonicalArchString( - C, Args, Args.MakeArgString(ArchStr), TC.getTriple()); + C, Args, Args.MakeArgString(ArchStr), TC.getTriple(), Kind); if (!CanonicalStr.empty()) Archs.insert(CanonicalStr); else @@ -4035,7 +4055,7 @@ Driver::getOffloadArchs(Compilation &C, const llvm::opt::DerivedArgList &Args, } } else { StringRef CanonicalStr = - getCanonicalArchString(C, Args, Arch, TC.getTriple()); + getCanonicalArchString(C, Args, Arch, TC.getTriple(), Kind); if (!CanonicalStr.empty()) Archs.insert(CanonicalStr); else @@ -4048,7 +4068,7 @@ Driver::getOffloadArchs(Compilation &C, const llvm::opt::DerivedArgList &Args, Archs.clear(); } else { StringRef ArchStr = - getCanonicalArchString(C, Args, Arch, TC.getTriple()); + getCanonicalArchString(C, Args, Arch, TC.getTriple(), Kind); Archs.erase(ArchStr); } } @@ -4104,7 +4124,7 @@ Driver::getOffloadArchs(Compilation &C, const llvm::opt::DerivedArgList &Args, ? "" : OffloadArchToString(TripleOffloadArch); StringRef CanonicalStr = - getCanonicalArchString(C, Args, ArchStr, TC.getTriple()); + getCanonicalArchString(C, Args, ArchStr, TC.getTriple(), Kind); if (!CanonicalStr.empty()) Archs.insert(CanonicalStr); } diff --git a/clang/test/Driver/sycl-intel-gpu-arch.cpp b/clang/test/Driver/sycl-intel-gpu-arch.cpp index e0169b95b84ee3..df793573b5cc5b 100644 --- a/clang/test/Driver/sycl-intel-gpu-arch.cpp +++ b/clang/test/Driver/sycl-intel-gpu-arch.cpp @@ -57,3 +57,56 @@ // RUN: -nocudalib --offload-arch=xe-pvc -c %s 2>&1 \ // RUN: | FileCheck -check-prefixes=CHK-CUDA %s // CHK-CUDA: error: unsupported CUDA gpu architecture: xe-pvc + +/// On a plain SPIR-V target, a SYCL device must be an Intel GPU or CPU, an IGCA +/// target or "generic". +// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \ +// RUN: --offload-targets=spirv64-unknown-unknown --offload-arch=xe-pcv -c %s 2>&1 \ +// RUN: | FileCheck -check-prefixes=CHK-BAD-ARCH %s +// CHK-BAD-ARCH: error: unsupported SYCL gpu architecture: xe-pcv +// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \ +// RUN: --offload-targets=spirv64-unknown-unknown --offload-arch=bmg_g21 -c %s 2>&1 \ +// RUN: | FileCheck -check-prefixes=CHK-BAD-ARCH-OLD %s +// CHK-BAD-ARCH-OLD: error: unsupported SYCL gpu architecture: bmg_g21 +// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \ +// RUN: --offload-targets=spirv64-unknown-unknown --offload-arch=xe_12.60. -c %s 2>&1 \ +// RUN: | FileCheck -check-prefixes=CHK-BAD-ARCH-NUM %s +// CHK-BAD-ARCH-NUM: error: unsupported SYCL gpu architecture: xe_12.60. +/// A numeric name names no device unless the list has its GPU IP version. +// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \ +// RUN: --offload-targets=spirv64-unknown-unknown --offload-arch=xe_40.11.0 -c %s 2>&1 \ +// RUN: | FileCheck -check-prefixes=CHK-BAD-ARCH-UNLISTED %s +// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \ +// RUN: --offload-arch=xe_40.11.0 -c %s 2>&1 \ +// RUN: | FileCheck -check-prefixes=CHK-BAD-ARCH-UNLISTED %s +// CHK-BAD-ARCH-UNLISTED: error: unsupported {{SYCL|offload}} gpu architecture: xe_40.11.0 +// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \ +// RUN: --offload-targets=spirv64-unknown-unknown --offload-arch=xe-pvc:garbage -c %s 2>&1 \ +// RUN: | FileCheck -check-prefixes=CHK-BAD-ARCH-SUFFIX %s +// CHK-BAD-ARCH-SUFFIX: error: unsupported SYCL gpu architecture: xe-pvc:garbage +// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \ +// RUN: --offload-targets=spirv64-unknown-unknown --offload-arch=generic:foo -c %s 2>&1 \ +// RUN: | FileCheck -check-prefixes=CHK-BAD-GENERIC %s +// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \ +// RUN: --offload-arch=generic:foo -c %s 2>&1 \ +// RUN: | FileCheck -check-prefixes=CHK-BAD-GENERIC %s +// CHK-BAD-GENERIC: error: unsupported SYCL gpu architecture: generic:foo +/// As for CUDA and HIP, --no-offload-arch is checked too when the target is +/// given. +// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \ +// RUN: --offload-targets=spirv64-unknown-unknown --offload-arch=xe-pvc \ +// RUN: --no-offload-arch=foo -c %s 2>&1 \ +// RUN: | FileCheck -check-prefixes=CHK-BAD-NO-ARCH %s +// CHK-BAD-NO-ARCH: error: unsupported SYCL gpu architecture: foo +/// Only a plain SPIR-V target is checked. +// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fsycl \ +// RUN: --offload-targets=spirv64-intel --offload-arch=foo -c %s 2>&1 \ +// RUN: | FileCheck -check-prefixes=CHK-NOT-CHECKED %s +// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fsycl \ +// RUN: --offload-targets=spirv64-unknown-amdhsa --offload-arch=foo -c %s 2>&1 \ +// RUN: | FileCheck -check-prefixes=CHK-NOT-CHECKED %s +// CHK-NOT-CHECKED-NOT: error: +// RUN: %clang -ccc-print-phases --target=x86_64-unknown-linux-gnu -fsycl \ +// RUN: --offload-targets=spirv64-unknown-unknown --offload-arch=graniterapids \ +// RUN: -c %s 2>&1 | FileCheck -check-prefixes=CHK-GOOD-ARCH %s +// CHK-GOOD-ARCH: offload, "device-sycl (spirv64-unknown-unknown:graniterapids)" >From f6f580718a04e93ff0af32f02a9a97289fe05fea Mon Sep 17 00:00:00 2001 From: srividya sundaram <[email protected]> Date: Mon, 2 Nov 2026 14:36:06 -0800 Subject: [PATCH 2/4] [Clang][SYCL] Require a plain SPIR-V target for an Intel offload architecture Intel GPU and CPU names and IGCA targets always use a plain SPIR-V target such as spirv64-unknown-unknown, so diagnose them on any other SPIR-V target, e.g. spirv64-amd-amdhsa. A valid IGCA target now reaches this check too. --- clang/lib/Driver/Driver.cpp | 20 ++++++++++++++------ clang/test/Driver/sycl-intel-gpu-arch.cpp | 14 ++++++++++++++ clang/test/Driver/sycl-offload-arch-igca.cpp | 10 ++++++++++ 3 files changed, 38 insertions(+), 6 deletions(-) diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index a9881b8a2f5824..787b2726c65aba 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -3971,12 +3971,13 @@ static StringRef getCanonicalArchString(Compilation &C, return StringRef(); } } - } else if (Triple.isSPIRV() && ArchStr.starts_with("igca")) { - if (!StringToOffloadArch(ArchStr).isIntelIGCA()) { - C.getDriver().Diag(clang::diag::err_drv_offload_bad_gpu_arch) - << "IGCA" << ArchStr; - return StringRef(); - } + } else if (Triple.isSPIRV() && ArchStr.starts_with("igca") && + !StringToOffloadArch(ArchStr).isIntelIGCA()) { + // Only an invalid IGCA target stops here; a valid one still needs the + // SPIR-V target checks below. + C.getDriver().Diag(clang::diag::err_drv_offload_bad_gpu_arch) + << "IGCA" << ArchStr; + return StringRef(); } else if (Kind == Action::OFK_SYCL && isPlainSPIRV(Triple) && !ArchStr.empty() && !Arch.isIntel() && !Arch.isGeneric()) { // A SYCL device on a plain SPIR-V target is an Intel GPU or CPU, an IGCA @@ -3985,6 +3986,13 @@ static StringRef getCanonicalArchString(Compilation &C, C.getDriver().Diag(clang::diag::err_drv_offload_bad_gpu_arch) << "SYCL" << ArchStr; return StringRef(); + } else if (Kind == Action::OFK_SYCL && Triple.isSPIRV() && + !isPlainSPIRV(Triple) && Arch.isIntel()) { + // An Intel name or IGCA target always uses a plain SPIR-V target, so + // reject it on any other SPIR-V target. + C.getDriver().Diag(clang::diag::err_target_unsupported_arch) + << ArchStr << Triple.str(); + return StringRef(); } if (Arch.isNVPTX()) diff --git a/clang/test/Driver/sycl-intel-gpu-arch.cpp b/clang/test/Driver/sycl-intel-gpu-arch.cpp index df793573b5cc5b..038ef4afb2de67 100644 --- a/clang/test/Driver/sycl-intel-gpu-arch.cpp +++ b/clang/test/Driver/sycl-intel-gpu-arch.cpp @@ -106,6 +106,20 @@ // RUN: --offload-targets=spirv64-unknown-amdhsa --offload-arch=foo -c %s 2>&1 \ // RUN: | FileCheck -check-prefixes=CHK-NOT-CHECKED %s // CHK-NOT-CHECKED-NOT: error: +/// An Intel name needs a plain SPIR-V target. +// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \ +// RUN: --offload-targets=spirv64-intel --offload-arch=xe-pvc -c %s 2>&1 \ +// RUN: | FileCheck -check-prefixes=CHK-NOT-PLAIN -DARCH=xe-pvc -DTRIPLE=spirv64-intel %s +// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \ +// RUN: --offload-targets=spirv64-amd-amdhsa --offload-arch=xe-pvc -c %s 2>&1 \ +// RUN: | FileCheck -check-prefixes=CHK-NOT-PLAIN -DARCH=xe-pvc -DTRIPLE=spirv64-amd-amdhsa %s +// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \ +// RUN: --offload-targets=spirv64-unknown-amdhsa --offload-arch=xe-pvc -c %s 2>&1 \ +// RUN: | FileCheck -check-prefixes=CHK-NOT-PLAIN -DARCH=xe-pvc -DTRIPLE=spirv64-unknown-amdhsa %s +// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \ +// RUN: --offload-targets=spirv64-intel --offload-arch=graniterapids -c %s 2>&1 \ +// RUN: | FileCheck -check-prefixes=CHK-NOT-PLAIN -DARCH=graniterapids -DTRIPLE=spirv64-intel %s +// CHK-NOT-PLAIN: error: the target architecture '[[ARCH]]' is not supported by the target '[[TRIPLE]]' // RUN: %clang -ccc-print-phases --target=x86_64-unknown-linux-gnu -fsycl \ // RUN: --offload-targets=spirv64-unknown-unknown --offload-arch=graniterapids \ // RUN: -c %s 2>&1 | FileCheck -check-prefixes=CHK-GOOD-ARCH %s diff --git a/clang/test/Driver/sycl-offload-arch-igca.cpp b/clang/test/Driver/sycl-offload-arch-igca.cpp index 7a3a2b4f7d7ace..1b948af1bb9d57 100644 --- a/clang/test/Driver/sycl-offload-arch-igca.cpp +++ b/clang/test/Driver/sycl-offload-arch-igca.cpp @@ -33,3 +33,13 @@ // RUN: -c %s 2>&1 | FileCheck -check-prefix=CHK-AMDGPU %s // CHK-AMDGPU: error: unsupported HIP gpu architecture: igca_20ca // CHK-AMDGPU-NOT: llvm-offload-binary + +/// A valid IGCA target, like an Intel GPU name, needs a plain SPIR-V target: +// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \ +// RUN: --offload-targets=spirv64-amd-amdhsa --offload-arch=igca_20ca \ +// RUN: -c %s 2>&1 | FileCheck -check-prefix=CHK-NOT-PLAIN -DTRIPLE=spirv64-amd-amdhsa %s +// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \ +// RUN: --offload-targets=spirv64-unknown-amdhsa --offload-arch=igca_20ca \ +// RUN: -c %s 2>&1 | FileCheck -check-prefix=CHK-NOT-PLAIN -DTRIPLE=spirv64-unknown-amdhsa %s +// CHK-NOT-PLAIN: error: the target architecture 'igca_20ca' is not supported by the target '[[TRIPLE]]' +// CHK-NOT-PLAIN-NOT: llvm-offload-binary >From 0fef0693bae54fa6db20aa13fb8429f6029aa766 Mon Sep 17 00:00:00 2001 From: srividya sundaram <[email protected]> Date: Mon, 2 Nov 2026 14:47:57 -0800 Subject: [PATCH 3/4] [Clang][SYCL] Address review: reuse the parsed IGCA target, tighten tests Use the already parsed architecture for the IGCA check instead of parsing it again, limit the target-feature check to SPIR-V, check the exact message for an unlisted numeric name with and without --offload-targets, and explain the Intel CPU test. --- clang/lib/Driver/Driver.cpp | 9 +++++---- clang/test/Driver/sycl-intel-gpu-arch.cpp | 6 ++++-- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index 787b2726c65aba..3286ee3edc8686 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -3947,9 +3947,10 @@ static StringRef getCanonicalArchString(Compilation &C, Action::OffloadKind Kind) { OffloadArch Arch = StringToOffloadArch(getProcessorFromTargetID(Triple, ArchStr)); - // An Intel name or "generic" takes no target features, so "xe-pvc:foo" is - // not "xe-pvc". - if ((Arch.isIntel() || Arch.isGeneric()) && ArchStr.contains(':')) + // On SPIR-V, an Intel name or "generic" takes no target features, so + // "xe-pvc:foo" is not "xe-pvc". + if (Triple.isSPIRV() && (Arch.isIntel() || Arch.isGeneric()) && + ArchStr.contains(':')) Arch = OffloadArch::getUnknown(); if (Triple.isNVPTX() && (Arch.isUnknown() || !Arch.isNVPTX())) { C.getDriver().Diag(clang::diag::err_drv_offload_bad_gpu_arch) @@ -3972,7 +3973,7 @@ static StringRef getCanonicalArchString(Compilation &C, } } } else if (Triple.isSPIRV() && ArchStr.starts_with("igca") && - !StringToOffloadArch(ArchStr).isIntelIGCA()) { + !Arch.isIntelIGCA()) { // Only an invalid IGCA target stops here; a valid one still needs the // SPIR-V target checks below. C.getDriver().Diag(clang::diag::err_drv_offload_bad_gpu_arch) diff --git a/clang/test/Driver/sycl-intel-gpu-arch.cpp b/clang/test/Driver/sycl-intel-gpu-arch.cpp index 038ef4afb2de67..ed900b81ff3273 100644 --- a/clang/test/Driver/sycl-intel-gpu-arch.cpp +++ b/clang/test/Driver/sycl-intel-gpu-arch.cpp @@ -76,10 +76,11 @@ // RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \ // RUN: --offload-targets=spirv64-unknown-unknown --offload-arch=xe_40.11.0 -c %s 2>&1 \ // RUN: | FileCheck -check-prefixes=CHK-BAD-ARCH-UNLISTED %s +// CHK-BAD-ARCH-UNLISTED: error: unsupported SYCL gpu architecture: xe_40.11.0 // RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \ // RUN: --offload-arch=xe_40.11.0 -c %s 2>&1 \ -// RUN: | FileCheck -check-prefixes=CHK-BAD-ARCH-UNLISTED %s -// CHK-BAD-ARCH-UNLISTED: error: unsupported {{SYCL|offload}} gpu architecture: xe_40.11.0 +// RUN: | FileCheck -check-prefixes=CHK-BAD-ARCH-UNLISTED-INFER %s +// CHK-BAD-ARCH-UNLISTED-INFER: error: unsupported offload gpu architecture: xe_40.11.0 // RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \ // RUN: --offload-targets=spirv64-unknown-unknown --offload-arch=xe-pvc:garbage -c %s 2>&1 \ // RUN: | FileCheck -check-prefixes=CHK-BAD-ARCH-SUFFIX %s @@ -120,6 +121,7 @@ // RUN: --offload-targets=spirv64-intel --offload-arch=graniterapids -c %s 2>&1 \ // RUN: | FileCheck -check-prefixes=CHK-NOT-PLAIN -DARCH=graniterapids -DTRIPLE=spirv64-intel %s // CHK-NOT-PLAIN: error: the target architecture '[[ARCH]]' is not supported by the target '[[TRIPLE]]' +/// An Intel CPU is accepted on a plain SPIR-V target. // RUN: %clang -ccc-print-phases --target=x86_64-unknown-linux-gnu -fsycl \ // RUN: --offload-targets=spirv64-unknown-unknown --offload-arch=graniterapids \ // RUN: -c %s 2>&1 | FileCheck -check-prefixes=CHK-GOOD-ARCH %s >From db40f3ae6b518a0963f3187e616d98183e4669d9 Mon Sep 17 00:00:00 2001 From: srividya sundaram <[email protected]> Date: Mon, 2 Nov 2026 15:02:04 -0800 Subject: [PATCH 4/4] [Clang][SYCL] Address review: add examples to two comments --- clang/lib/Driver/Driver.cpp | 2 +- clang/test/Driver/sycl-intel-gpu-arch.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index 3286ee3edc8686..e297585ebfdeea 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -3990,7 +3990,7 @@ static StringRef getCanonicalArchString(Compilation &C, } else if (Kind == Action::OFK_SYCL && Triple.isSPIRV() && !isPlainSPIRV(Triple) && Arch.isIntel()) { // An Intel name or IGCA target always uses a plain SPIR-V target, so - // reject it on any other SPIR-V target. + // reject it on any other SPIR-V target, e.g. spirv64-amd-amdhsa. C.getDriver().Diag(clang::diag::err_target_unsupported_arch) << ArchStr << Triple.str(); return StringRef(); diff --git a/clang/test/Driver/sycl-intel-gpu-arch.cpp b/clang/test/Driver/sycl-intel-gpu-arch.cpp index ed900b81ff3273..312785ba6a2e85 100644 --- a/clang/test/Driver/sycl-intel-gpu-arch.cpp +++ b/clang/test/Driver/sycl-intel-gpu-arch.cpp @@ -59,7 +59,7 @@ // CHK-CUDA: error: unsupported CUDA gpu architecture: xe-pvc /// On a plain SPIR-V target, a SYCL device must be an Intel GPU or CPU, an IGCA -/// target or "generic". +/// target (e.g. igca_20ca) or "generic". // RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fsycl \ // RUN: --offload-targets=spirv64-unknown-unknown --offload-arch=xe-pcv -c %s 2>&1 \ // RUN: | FileCheck -check-prefixes=CHK-BAD-ARCH %s _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
