https://github.com/wenju-he created 
https://github.com/llvm/llvm-project/pull/200727

Reverts llvm/llvm-project#197148

libclc will use generic target triple spirv32[64]-unknown-unknown for use in 
mesa.

>From ac662f8e16cc4ecf4077080e9596568cae110c96 Mon Sep 17 00:00:00 2001
From: Wenju He <[email protected]>
Date: Mon, 1 Jun 2026 14:09:41 +0800
Subject: [PATCH] Revert "[OpenCL] Allow mesa3d OS in spirv32 and spirv64
 targets (#197148)"

This reverts commit 3c6fe49a912adc1ffe174bdf3d547a8bd6826bee.
---
 clang/lib/Basic/Targets.cpp                   |  4 ++--
 clang/lib/Basic/Targets/SPIR.h                | 23 ++++++++-----------
 clang/test/CodeGen/target-data.c              | 12 ----------
 clang/test/Frontend/spirv-target-validation.c | 10 +-------
 4 files changed, 12 insertions(+), 37 deletions(-)

diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp
index 0a1938b0bebd3..ed88ae7173bad 100644
--- a/clang/lib/Basic/Targets.cpp
+++ b/clang/lib/Basic/Targets.cpp
@@ -714,7 +714,7 @@ std::unique_ptr<TargetInfo> AllocateTarget(const 
llvm::Triple &Triple,
   }
   case llvm::Triple::spirv32: {
     if ((os != llvm::Triple::UnknownOS && os != llvm::Triple::ChipStar &&
-         os != llvm::Triple::Vulkan && os != llvm::Triple::Mesa3D) ||
+         os != llvm::Triple::Vulkan) ||
         Triple.getEnvironment() != llvm::Triple::UnknownEnvironment)
       return nullptr;
     return std::make_unique<SPIRV32TargetInfo>(Triple, Opts);
@@ -723,7 +723,7 @@ std::unique_ptr<TargetInfo> AllocateTarget(const 
llvm::Triple &Triple,
     if (os == llvm::Triple::OSType::AMDHSA)
       return std::make_unique<SPIRV64AMDGCNTargetInfo>(Triple, Opts);
     if ((os != llvm::Triple::UnknownOS && os != llvm::Triple::ChipStar &&
-         os != llvm::Triple::Vulkan && os != llvm::Triple::Mesa3D) ||
+         os != llvm::Triple::Vulkan) ||
         Triple.getEnvironment() != llvm::Triple::UnknownEnvironment)
       return nullptr;
     if (Triple.getVendor() == llvm::Triple::Intel)
diff --git a/clang/lib/Basic/Targets/SPIR.h b/clang/lib/Basic/Targets/SPIR.h
index 53590a98ee798..389cc075a3a0b 100644
--- a/clang/lib/Basic/Targets/SPIR.h
+++ b/clang/lib/Basic/Targets/SPIR.h
@@ -351,13 +351,12 @@ class LLVM_LIBRARY_VISIBILITY SPIRVTargetInfo : public 
BaseSPIRVTargetInfo {
     resetDataLayout();
   }
 
-  // When targeting Vulkan, require a fully specified Vulkan environment
-  // (version + valid shader stage). Non-Vulkan OS triples (e.g. mesa3d)
-  // could be used for OpenCL SPIR-V.
+  // SPIR-V targeting requires a fully specified Vulkan environment.
+  // SPIR-V requires the enviornment to be in a valid shader stage as well.
+  // Validate here before CreateTargetInfo() to emit a proper diagnostic.
   bool validateTarget(DiagnosticsEngine &Diags) const override {
-    if (getTriple().getOS() != llvm::Triple::Vulkan)
-      return true;
-    if (getTriple().getVulkanVersion() == llvm::VersionTuple(0)) {
+    if (getTriple().getOS() != llvm::Triple::Vulkan ||
+        getTriple().getVulkanVersion() == llvm::VersionTuple(0)) {
       Diags.Report(diag::err_target_spirv_requires_vulkan);
       return false;
     }
@@ -382,10 +381,8 @@ class LLVM_LIBRARY_VISIBILITY SPIRV32TargetInfo : public 
BaseSPIRVTargetInfo {
            "Invalid architecture for 32-bit SPIR-V.");
     assert((getTriple().getOS() == llvm::Triple::UnknownOS ||
             getTriple().getOS() == llvm::Triple::ChipStar ||
-            getTriple().getOS() == llvm::Triple::Vulkan ||
-            getTriple().getOS() == llvm::Triple::Mesa3D) &&
-           "32-bit SPIR-V target must use unknown, chipstar, vulkan, or mesa3d 
"
-           "OS");
+            getTriple().getOS() == llvm::Triple::Vulkan) &&
+           "32-bit SPIR-V target must use unknown, chipstar, or vulkan OS");
     assert(getTriple().getEnvironment() == llvm::Triple::UnknownEnvironment &&
            "32-bit SPIR-V target must use unknown environment type");
     PointerWidth = PointerAlign = 32;
@@ -409,10 +406,8 @@ class LLVM_LIBRARY_VISIBILITY SPIRV64TargetInfo : public 
BaseSPIRVTargetInfo {
            "Invalid architecture for 64-bit SPIR-V.");
     assert((getTriple().getOS() == llvm::Triple::UnknownOS ||
             getTriple().getOS() == llvm::Triple::ChipStar ||
-            getTriple().getOS() == llvm::Triple::Vulkan ||
-            getTriple().getOS() == llvm::Triple::Mesa3D) &&
-           "64-bit SPIR-V target must use unknown, chipstar, vulkan, or mesa3d 
"
-           "OS");
+            getTriple().getOS() == llvm::Triple::Vulkan) &&
+           "64-bit SPIR-V target must use unknown, chipstar, or vulkan OS");
     assert(getTriple().getEnvironment() == llvm::Triple::UnknownEnvironment &&
            "64-bit SPIR-V target must use unknown environment type");
     PointerWidth = PointerAlign = 64;
diff --git a/clang/test/CodeGen/target-data.c b/clang/test/CodeGen/target-data.c
index 0047e1377a7f8..a5e0b814c7042 100644
--- a/clang/test/CodeGen/target-data.c
+++ b/clang/test/CodeGen/target-data.c
@@ -272,15 +272,3 @@
 // RUN: %clang_cc1 -triple spirv64-unknown-vulkan -o - -emit-llvm %s | \
 // RUN: FileCheck %s -check-prefix=SPIRV64VULKAN
 // SPIRV64VULKAN: target datalayout = 
"e-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-n8:16:32:64-G1"
-
-// RUN: %clang_cc1 -triple spirv-mesa-mesa3d -o - -emit-llvm %s | \
-// RUN: FileCheck %s -check-prefix=SPIRVMESA3D
-// SPIRVMESA3D: target datalayout = "e-ve-i64:64-n8:16:32:64-G10"
-
-// RUN: %clang_cc1 -triple spirv32-mesa-mesa3d -o - -emit-llvm %s | \
-// RUN: FileCheck %s -check-prefix=SPIRV32MESA3D
-// SPIRV32MESA3D: target datalayout = 
"e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-n8:16:32:64-G1"
-
-// RUN: %clang_cc1 -triple spirv64-mesa-mesa3d -o - -emit-llvm %s | \
-// RUN: FileCheck %s -check-prefix=SPIRV64MESA3D
-// SPIRV64MESA3D: target datalayout = 
"e-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-n8:16:32:64-G1"
diff --git a/clang/test/Frontend/spirv-target-validation.c 
b/clang/test/Frontend/spirv-target-validation.c
index 5cb7a0fbc2a08..9ac984ec6d70e 100644
--- a/clang/test/Frontend/spirv-target-validation.c
+++ b/clang/test/Frontend/spirv-target-validation.c
@@ -1,15 +1,7 @@
-// RUN: not %clang_cc1 -triple spirv-unknown-vulkan1.0 %s 2>&1 | FileCheck %s 
--check-prefix=CHECK-VULKAN
+// RUN: not %clang_cc1 -triple spirv %s 2>&1 | FileCheck %s 
--check-prefix=CHECK-VULKAN
 // RUN: not %clang_cc1 -triple spirv-vulkan-mlibc %s 2>&1 | FileCheck %s 
--check-prefix=CHECK-SHADER
-// RUN: %clang_cc1 -triple spirv %s -fsyntax-only 2>&1 | FileCheck %s 
--allow-empty --check-prefix=CHECK-SPIRV-BARE
-// RUN: %clang_cc1 -triple spirv32-mesa-mesa3d %s -fsyntax-only 2>&1 | 
FileCheck %s --allow-empty --check-prefix=CHECK-SPIRV32-MESA
-// RUN: %clang_cc1 -triple spirv64-mesa-mesa3d %s -fsyntax-only 2>&1 | 
FileCheck %s --allow-empty --check-prefix=CHECK-SPIRV64-MESA
-// RUN: %clang_cc1 -triple spirv-mesa-mesa3d %s -fsyntax-only 2>&1 | FileCheck 
%s --allow-empty --check-prefix=CHECK-SPIRV-MESA
 
 // CHECK-VULKAN: error: SPIR-V target requires a Vulkan environment
 // CHECK-SHADER: error: SPIR-V target requires a valid shader stage or no 
environment
-// CHECK-SPIRV-BARE-NOT: error: SPIR-V target requires a Vulkan environment
-// CHECK-SPIRV32-MESA-NOT: error: unknown target triple 'spirv32-mesa-mesa3d'
-// CHECK-SPIRV64-MESA-NOT: error: unknown target triple 'spirv64-mesa-mesa3d'
-// CHECK-SPIRV-MESA-NOT: error: SPIR-V target requires a Vulkan environment
 
 int main() { return 0; }

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

Reply via email to