[Mlir-commits] [mlir] [mlir][SPIRV] Move getDecorationString to SPIRVEnums utilities (NFC). (PR #174222)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Fri Jan 2 08:20:32 PST 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-mlir
Author: Nick Kreeger (nkreeger)
<details>
<summary>Changes</summary>
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.
---
Full diff: https://github.com/llvm/llvm-project/pull/174222.diff
5 Files Affected:
- (modified) mlir/include/mlir/Dialect/SPIRV/IR/SPIRVEnums.h (+4)
- (modified) mlir/lib/Conversion/SPIRVCommon/Pattern.h (+1-11)
- (modified) mlir/lib/Dialect/SPIRV/IR/MemoryOps.cpp (+2-4)
- (modified) mlir/lib/Dialect/SPIRV/IR/SPIRVDialect.cpp (+1-1)
- (modified) mlir/lib/Dialect/SPIRV/IR/SPIRVEnums.cpp (+4)
``````````diff
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));
+}
``````````
</details>
https://github.com/llvm/llvm-project/pull/174222
More information about the Mlir-commits
mailing list