[Mlir-commits] [mlir] [mlir][spirv] Replace hardcoded attribute strings with op methods Resolve #77627 (PR #81443)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Sun Feb 11 23:05:27 PST 2024
https://github.com/SahilPatidar created https://github.com/llvm/llvm-project/pull/81443
Resolve #77627
>From 733dbe7175fc225953dd31edb9b883c8b20d0c14 Mon Sep 17 00:00:00 2001
From: SahilPatidar <patidarsahil at 2001gmail.com>
Date: Mon, 12 Feb 2024 11:44:07 +0530
Subject: [PATCH] [mlir][spirv] Replace hardcoded attribute strings with op
methods Resolve #77627
---
.../SPIRV/Deserialization/Deserializer.cpp | 7 +++++--
.../SPIRV/Serialization/SerializeOps.cpp | 20 +++++++++++--------
.../Target/SPIRV/Serialization/Serializer.cpp | 7 +++++--
3 files changed, 22 insertions(+), 12 deletions(-)
diff --git a/mlir/lib/Target/SPIRV/Deserialization/Deserializer.cpp b/mlir/lib/Target/SPIRV/Deserialization/Deserializer.cpp
index 02d03b3a0faeee..ee2f8c2fb37308 100644
--- a/mlir/lib/Target/SPIRV/Deserialization/Deserializer.cpp
+++ b/mlir/lib/Target/SPIRV/Deserialization/Deserializer.cpp
@@ -215,11 +215,14 @@ spirv::Deserializer::processMemoryModel(ArrayRef<uint32_t> operands) {
if (operands.size() != 2)
return emitError(unknownLoc, "OpMemoryModel must have two operands");
+ StringRef addressing_model = module->getAddressingModelAttrName().strref();
(*module)->setAttr(
- "addressing_model",
+ addressing_model,
opBuilder.getAttr<spirv::AddressingModelAttr>(
static_cast<spirv::AddressingModel>(operands.front())));
- (*module)->setAttr("memory_model",
+
+ StringRef memory_model = module->getMemoryModelAttrName().strref();
+ (*module)->setAttr(memory_model,
opBuilder.getAttr<spirv::MemoryModelAttr>(
static_cast<spirv::MemoryModel>(operands.back())));
diff --git a/mlir/lib/Target/SPIRV/Serialization/SerializeOps.cpp b/mlir/lib/Target/SPIRV/Serialization/SerializeOps.cpp
index 41d2c0310d0008..7e6f2f0c5bff27 100644
--- a/mlir/lib/Target/SPIRV/Serialization/SerializeOps.cpp
+++ b/mlir/lib/Target/SPIRV/Serialization/SerializeOps.cpp
@@ -708,33 +708,37 @@ Serializer::processOp<spirv::CopyMemoryOp>(spirv::CopyMemoryOp op) {
operands.push_back(id);
}
- if (auto attr = op->getAttr("memory_access")) {
+ StringRef memory_access = op.getMemoryAccessAttrName().strref();
+ if (auto attr = op->getAttr(memory_access)) {
operands.push_back(
static_cast<uint32_t>(cast<spirv::MemoryAccessAttr>(attr).getValue()));
}
- elidedAttrs.push_back("memory_access");
+ elidedAttrs.push_back(memory_access);
- if (auto attr = op->getAttr("alignment")) {
+ StringRef alignment = op.getAlignmentAttrName().strref();
+ if (auto attr = op->getAttr(alignment)) {
operands.push_back(static_cast<uint32_t>(
cast<IntegerAttr>(attr).getValue().getZExtValue()));
}
- elidedAttrs.push_back("alignment");
+ elidedAttrs.push_back(alignment);
- if (auto attr = op->getAttr("source_memory_access")) {
+ StringRef source_memory_access = op.getSourceMemoryAccessAttrName().strref();
+ if (auto attr = op->getAttr(source_memory_access)) {
operands.push_back(
static_cast<uint32_t>(cast<spirv::MemoryAccessAttr>(attr).getValue()));
}
- elidedAttrs.push_back("source_memory_access");
+ elidedAttrs.push_back(source_memory_access);
- if (auto attr = op->getAttr("source_alignment")) {
+ StringRef source_alignment = op.getSourceAlignmentAttrName().strref();
+ if (auto attr = op->getAttr(source_alignment)) {
operands.push_back(static_cast<uint32_t>(
cast<IntegerAttr>(attr).getValue().getZExtValue()));
}
- elidedAttrs.push_back("source_alignment");
+ elidedAttrs.push_back(source_alignment);
if (failed(emitDebugLine(functionBody, op.getLoc())))
return failure();
encodeInstructionInto(functionBody, spirv::Opcode::OpCopyMemory, operands);
diff --git a/mlir/lib/Target/SPIRV/Serialization/Serializer.cpp b/mlir/lib/Target/SPIRV/Serialization/Serializer.cpp
index 40337e007bbf74..51fab95ad3a847 100644
--- a/mlir/lib/Target/SPIRV/Serialization/Serializer.cpp
+++ b/mlir/lib/Target/SPIRV/Serialization/Serializer.cpp
@@ -197,10 +197,13 @@ void Serializer::processExtension() {
}
void Serializer::processMemoryModel() {
+ StringRef memory_model = module.getMemoryModelAttrName().strref();
auto mm = static_cast<uint32_t>(
- module->getAttrOfType<spirv::MemoryModelAttr>("memory_model").getValue());
+ module->getAttrOfType<spirv::MemoryModelAttr>(memory_model).getValue());
+
+ StringRef addressing_model = module.getAddressingModelAttrName().strref();
auto am = static_cast<uint32_t>(
- module->getAttrOfType<spirv::AddressingModelAttr>("addressing_model")
+ module->getAttrOfType<spirv::AddressingModelAttr>(addressing_model)
.getValue());
encodeInstructionInto(memoryModel, spirv::Opcode::OpMemoryModel, {am, mm});
More information about the Mlir-commits
mailing list