[clang] [Clang] Use SPIRVToolChain for Mesa3D if target is SPIR-V (PR #199623)
Wenju He via cfe-commits
cfe-commits at lists.llvm.org
Tue May 26 01:07:56 PDT 2026
https://github.com/wenju-he created https://github.com/llvm/llvm-project/pull/199623
spirv*-mesa-mesa3d are legal clang targets since 3c6fe49. They should not use AMDGPU toolchain.
>From 2b2a7aa3303b186c6396b842d70f94309284161a Mon Sep 17 00:00:00 2001
From: Wenju He <wenju.he at intel.com>
Date: Tue, 26 May 2026 09:46:54 +0200
Subject: [PATCH] [Clang] Use SPIRVToolChain for Mesa3D if target is SPIR-V
spirv*-mesa-mesa3d are legal clang targets since 3c6fe49.
They should not use AMDGPU toolchain.
---
clang/lib/Driver/Driver.cpp | 7 ++++++-
clang/test/Driver/spirv-toolchain.cl | 12 ++++++++++++
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index 4a968a4ce5cc0..0821034628415 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -7137,9 +7137,14 @@ const ToolChain &Driver::getToolChain(const ArgList &Args,
break;
}
case llvm::Triple::AMDPAL:
- case llvm::Triple::Mesa3D:
TC = std::make_unique<toolchains::AMDGPUToolChain>(*this, Target, Args);
break;
+ case llvm::Triple::Mesa3D:
+ if (Target.isSPIRV())
+ TC = std::make_unique<toolchains::SPIRVToolChain>(*this, Target, Args);
+ else
+ TC = std::make_unique<toolchains::AMDGPUToolChain>(*this, Target, Args);
+ break;
case llvm::Triple::UEFI:
TC = std::make_unique<toolchains::UEFI>(*this, Target, Args);
break;
diff --git a/clang/test/Driver/spirv-toolchain.cl b/clang/test/Driver/spirv-toolchain.cl
index 6fd71caf2fddb..287941972253c 100644
--- a/clang/test/Driver/spirv-toolchain.cl
+++ b/clang/test/Driver/spirv-toolchain.cl
@@ -109,3 +109,15 @@
// RUN: | FileCheck -DVERSION=%llvm-version-major --check-prefix=VERSIONED %s %}
// VERSIONED: {{.*}}spirv-as-[[VERSION]]
+
+//-----------------------------------------------------------------------------
+// Check warning
+// RUN: %clang -### --target=spirv32-unknown-mesa3d -x cl -c %s 2>&1 | FileCheck --check-prefix=MESA3D-SPIRV32 %s
+// RUN: %clang -### --target=spirv64-unknown-mesa3d -x cl -c %s 2>&1 | FileCheck --check-prefix=MESA3D-SPIRV64 %s
+// MESA3D-SPIRV32: "-cc1" "-triple" "spirv32-unknown-mesa3d"
+// MESA3D-SPIRV32-NOT: "-Werror=atomic-alignment"
+// MESA3D-SPIRV64: "-cc1" "-triple" "spirv64-unknown-mesa3d"
+// MESA3D-SPIRV64-NOT: "-Werror=atomic-alignment"
+
+// RUN: %clang -### --target=amdgcn-amd-mesa3d -x cl -c %s 2>&1 | FileCheck --check-prefix=AMDGCN-MESA3D %s
+// AMDGCN-MESA3D: "-Werror=atomic-alignment"
More information about the cfe-commits
mailing list