[Mlir-commits] [mlir] [mlir][SPIRV] Move getDecorationString to SPIRVEnums utilities (NFC). (PR #174222)

Nick Kreeger llvmlistbot at llvm.org
Fri Jan 2 11:17:06 PST 2026


https://github.com/nkreeger updated https://github.com/llvm/llvm-project/pull/174222

>From c78b16efbad0965ace644442020780e4c38de0d1 Mon Sep 17 00:00:00 2001
From: Nick Kreeger <nick.kreeger at gmail.com>
Date: Fri, 2 Jan 2026 10:18:22 -0600
Subject: [PATCH 1/3] [mlir][SPIRV] Move getDecorationString to SPIRVEnums
 utilities (NFC).

Moves the getDecorationString() helper from the conversion layer's SPIRVCommon/Pattern.h to the public SPIRVEnums.h header. This makes the utility accessible to both the SPIRV dialect and conversion layers, following proper architectural layering.

This continues the refactoring started in #174145.
---
 mlir/include/mlir/Dialect/SPIRV/IR/SPIRVEnums.h |  4 ++++
 mlir/lib/Conversion/SPIRVCommon/Pattern.h       | 12 +-----------
 mlir/lib/Dialect/SPIRV/IR/MemoryOps.cpp         |  6 ++----
 mlir/lib/Dialect/SPIRV/IR/SPIRVDialect.cpp      |  2 +-
 mlir/lib/Dialect/SPIRV/IR/SPIRVEnums.cpp        |  4 ++++
 5 files changed, 12 insertions(+), 16 deletions(-)

diff --git a/mlir/include/mlir/Dialect/SPIRV/IR/SPIRVEnums.h b/mlir/include/mlir/Dialect/SPIRV/IR/SPIRVEnums.h
index 72aa8644981c7..0ec78bfe3b9f5 100644
--- a/mlir/include/mlir/Dialect/SPIRV/IR/SPIRVEnums.h
+++ b/mlir/include/mlir/Dialect/SPIRV/IR/SPIRVEnums.h
@@ -52,6 +52,10 @@ ArrayRef<Capability> getDirectImpliedCapabilities(Capability cap);
 /// third one will also be returned.
 SmallVector<Capability, 0> getRecursiveImpliedCapabilities(Capability cap);
 
+/// Converts a SPIR-V Decoration enum value to its snake_case string
+/// representation for use in MLIR attributes.
+std::string getDecorationString(Decoration decoration);
+
 } // namespace spirv
 } // namespace mlir
 
diff --git a/mlir/lib/Conversion/SPIRVCommon/Pattern.h b/mlir/lib/Conversion/SPIRVCommon/Pattern.h
index 2ea54baaf8953..c21ec72e133ad 100644
--- a/mlir/lib/Conversion/SPIRVCommon/Pattern.h
+++ b/mlir/lib/Conversion/SPIRVCommon/Pattern.h
@@ -13,22 +13,12 @@
 #include "mlir/Dialect/SPIRV/IR/SPIRVOpTraits.h"
 #include "mlir/IR/TypeUtilities.h"
 #include "mlir/Transforms/DialectConversion.h"
-#include "llvm/ADT/StringExtras.h"
 #include "llvm/Support/FormatVariadic.h"
-#include <string>
 
 namespace mlir {
 namespace spirv {
 
-//===----------------------------------------------------------------------===//
-// Utility Functions
-//===----------------------------------------------------------------------===//
-
-/// Converts a SPIR-V Decoration enum value to its snake_case string
-/// representation for use in MLIR attributes.
-inline std::string getDecorationString(spirv::Decoration decor) {
-  return llvm::convertToSnakeFromCamelCase(stringifyDecoration(decor));
-}
+// Note: spirv::getDecorationString() is defined in SPIRVEnums.h
 
 /// Converts elementwise unary, binary and ternary standard operations to SPIR-V
 /// operations.
diff --git a/mlir/lib/Dialect/SPIRV/IR/MemoryOps.cpp b/mlir/lib/Dialect/SPIRV/IR/MemoryOps.cpp
index e3187d3dc1901..a49bcff441b9d 100644
--- a/mlir/lib/Dialect/SPIRV/IR/MemoryOps.cpp
+++ b/mlir/lib/Dialect/SPIRV/IR/MemoryOps.cpp
@@ -657,8 +657,7 @@ LogicalResult VariableOp::verify() {
   }
 
   auto getDecorationAttr = [op = getOperation()](spirv::Decoration decoration) {
-    return op->getAttr(
-        llvm::convertToSnakeFromCamelCase(stringifyDecoration(decoration)));
+    return op->getAttr(spirv::getDecorationString(decoration));
   };
 
   // TODO: generate these strings using ODS.
@@ -667,8 +666,7 @@ LogicalResult VariableOp::verify() {
         spirv::Decoration::BuiltIn}) {
     if (auto attr = getDecorationAttr(decoration))
       return emitOpError("cannot have '")
-             << llvm::convertToSnakeFromCamelCase(
-                    stringifyDecoration(decoration))
+             << spirv::getDecorationString(decoration)
              << "' attribute (only allowed in spirv.GlobalVariable)";
   }
 
diff --git a/mlir/lib/Dialect/SPIRV/IR/SPIRVDialect.cpp b/mlir/lib/Dialect/SPIRV/IR/SPIRVDialect.cpp
index 22b57d6c0821a..7c3bfd72115e6 100644
--- a/mlir/lib/Dialect/SPIRV/IR/SPIRVDialect.cpp
+++ b/mlir/lib/Dialect/SPIRV/IR/SPIRVDialect.cpp
@@ -141,7 +141,7 @@ void SPIRVDialect::initialize() {
 }
 
 std::string SPIRVDialect::getAttributeName(Decoration decoration) {
-  return llvm::convertToSnakeFromCamelCase(stringifyDecoration(decoration));
+  return getDecorationString(decoration);
 }
 
 //===----------------------------------------------------------------------===//
diff --git a/mlir/lib/Dialect/SPIRV/IR/SPIRVEnums.cpp b/mlir/lib/Dialect/SPIRV/IR/SPIRVEnums.cpp
index c7541613a52f3..3cab289998763 100644
--- a/mlir/lib/Dialect/SPIRV/IR/SPIRVEnums.cpp
+++ b/mlir/lib/Dialect/SPIRV/IR/SPIRVEnums.cpp
@@ -101,3 +101,7 @@ spirv::getRecursiveImpliedCapabilities(spirv::Capability cap) {
 
   return allCaps.takeVector();
 }
+
+std::string spirv::getDecorationString(spirv::Decoration decoration) {
+  return llvm::convertToSnakeFromCamelCase(stringifyDecoration(decoration));
+}

>From 487b60015840640fb8e4db642c806721b883d467 Mon Sep 17 00:00:00 2001
From: Nick Kreeger <nick.kreeger at gmail.com>
Date: Fri, 2 Jan 2026 13:14:22 -0600
Subject: [PATCH 2/3] remove comment.

---
 mlir/lib/Conversion/SPIRVCommon/Pattern.h | 1 -
 1 file changed, 1 deletion(-)

diff --git a/mlir/lib/Conversion/SPIRVCommon/Pattern.h b/mlir/lib/Conversion/SPIRVCommon/Pattern.h
index c21ec72e133ad..ac9acbbdaee7e 100644
--- a/mlir/lib/Conversion/SPIRVCommon/Pattern.h
+++ b/mlir/lib/Conversion/SPIRVCommon/Pattern.h
@@ -18,7 +18,6 @@
 namespace mlir {
 namespace spirv {
 
-// Note: spirv::getDecorationString() is defined in SPIRVEnums.h
 
 /// Converts elementwise unary, binary and ternary standard operations to SPIR-V
 /// operations.

>From 9d2fe8a6333252170292e9b77efd4868324d22f5 Mon Sep 17 00:00:00 2001
From: Nick Kreeger <nick.kreeger at gmail.com>
Date: Fri, 2 Jan 2026 13:16:53 -0600
Subject: [PATCH 3/3] whitespace.

---
 mlir/lib/Conversion/SPIRVCommon/Pattern.h | 1 -
 1 file changed, 1 deletion(-)

diff --git a/mlir/lib/Conversion/SPIRVCommon/Pattern.h b/mlir/lib/Conversion/SPIRVCommon/Pattern.h
index ac9acbbdaee7e..d947d483f2dd5 100644
--- a/mlir/lib/Conversion/SPIRVCommon/Pattern.h
+++ b/mlir/lib/Conversion/SPIRVCommon/Pattern.h
@@ -18,7 +18,6 @@
 namespace mlir {
 namespace spirv {
 
-
 /// Converts elementwise unary, binary and ternary standard operations to SPIR-V
 /// operations.
 template <typename Op, typename SPIRVOp>



More information about the Mlir-commits mailing list