[Mlir-commits] [mlir] [mlir][SPIRV] Move getDecorationString to SPIRVEnums utilities (NFC). (PR #174222)
Nick Kreeger
llvmlistbot at llvm.org
Fri Jan 2 08:20:00 PST 2026
https://github.com/nkreeger created https://github.com/llvm/llvm-project/pull/174222
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.
>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] [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));
+}
More information about the Mlir-commits
mailing list