1- From 89e527e48b727a1479aa47fdbe3d2d178d8969a7 Mon Sep 17 00:00:00 2001
1+ From 5900db1c91d40157c2724d324ea65e22936e3354 Mon Sep 17 00:00:00 2001
22From: Garra1980 <
[email protected] >
3- Date: Mon, 4 Aug 2025 17:50:56 +0200
4- Subject: [PATCH] Add serilialization and deserialization for spirv
3+ Date: Tue, 12 Aug 2025 23:41:51 +0200
4+ Subject: [PATCH] Add serialization and de-serialization support for spirv
55
66---
77 mlir/lib/Target/SPIRV/Deserialization/Deserializer.cpp | 6 ++++++
88 mlir/lib/Target/SPIRV/Serialization/Serializer.cpp | 6 ++++++
99 2 files changed, 12 insertions(+)
1010
1111diff --git a/mlir/lib/Target/SPIRV/Deserialization/Deserializer.cpp b/mlir/lib/Target/SPIRV/Deserialization/Deserializer.cpp
12- index 88931b53a688..f1c22d09cc8e 100644
12+ index d8c54ec5f88c..3b539382dedd 100644
1313--- a/mlir/lib/Target/SPIRV/Deserialization/Deserializer.cpp
1414+++ b/mlir/lib/Target/SPIRV/Deserialization/Deserializer.cpp
15- @@ -282 ,6 +282 ,7 @@ LogicalResult spirv::Deserializer::processDecoration(ArrayRef<uint32_t> words) {
15+ @@ -283 ,6 +283 ,7 @@ LogicalResult spirv::Deserializer::processDecoration(ArrayRef<uint32_t> words) {
1616 symbol, FPRoundingModeAttr::get(opBuilder.getContext(),
1717 static_cast<FPRoundingMode>(words[2])));
1818 break;
1919+ case spirv::Decoration::Alignment:
2020 case spirv::Decoration::DescriptorSet:
2121 case spirv::Decoration::Binding:
2222 if (words.size() != 3) {
23- @@ -343,6 +344,10 @@ LogicalResult spirv::Deserializer::processDecoration(ArrayRef<uint32_t> words) {
24- case spirv::Decoration::RestrictPointer:
25- case spirv::Decoration::NoContraction:
23+ @@ -346,6 +347,10 @@ LogicalResult spirv::Deserializer::processDecoration(ArrayRef<uint32_t> words) {
2624 case spirv::Decoration::Constant:
25+ case spirv::Decoration::Invariant:
26+ case spirv::Decoration::Patch:
2727+ case spirv::Decoration::SingleElementVectorINTEL:
2828+ case spirv::Decoration::VectorComputeCallableFunctionINTEL:
2929+ case spirv::Decoration::VectorComputeFunctionINTEL:
3030+ case spirv::Decoration::VectorComputeVariableINTEL:
3131 if (words.size() != 2) {
3232 return emitError(unknownLoc, "OpDecoration with ")
3333 << decorationName << "needs a single target <id>";
34- @@ -351 ,6 +356 ,7 @@ LogicalResult spirv::Deserializer::processDecoration(ArrayRef<uint32_t> words) {
34+ @@ -354 ,6 +359 ,7 @@ LogicalResult spirv::Deserializer::processDecoration(ArrayRef<uint32_t> words) {
3535 break;
3636 case spirv::Decoration::Location:
3737 case spirv::Decoration::SpecId:
@@ -40,10 +40,10 @@ index 88931b53a688..f1c22d09cc8e 100644
4040 return emitError(unknownLoc, "OpDecoration with ")
4141 << decorationName << "needs a single integer literal";
4242diff --git a/mlir/lib/Target/SPIRV/Serialization/Serializer.cpp b/mlir/lib/Target/SPIRV/Serialization/Serializer.cpp
43- index 737f29662f64..cd925b02b6a6 100644
43+ index 7c007de31558..3aa26ab923a9 100644
4444--- a/mlir/lib/Target/SPIRV/Serialization/Serializer.cpp
4545+++ b/mlir/lib/Target/SPIRV/Serialization/Serializer.cpp
46- @@ -283 ,8 +283 ,10 @@ LogicalResult Serializer::processDecorationAttr(Location loc, uint32_t resultID,
46+ @@ -302 ,8 +302 ,10 @@ LogicalResult Serializer::processDecorationAttr(Location loc, uint32_t resultID,
4747 }
4848 return emitError(loc, "expected FPRoundingModeAttr attribute for ")
4949 << stringifyDecoration(decoration);
@@ -54,17 +54,16 @@ index 737f29662f64..cd925b02b6a6 100644
5454 case spirv::Decoration::Location:
5555 if (auto intAttr = dyn_cast<IntegerAttr>(attr)) {
5656 args.push_back(intAttr.getValue().getZExtValue());
57- @@ -318 ,6 +320 ,10 @@ LogicalResult Serializer::processDecorationAttr(Location loc, uint32_t resultID,
58- case spirv::Decoration::RestrictPointer :
59- case spirv::Decoration::NoContraction :
60- case spirv::Decoration::Constant :
57+ @@ -340 ,6 +342 ,10 @@ LogicalResult Serializer::processDecorationAttr(Location loc, uint32_t resultID,
58+ case spirv::Decoration::Block :
59+ case spirv::Decoration::Invariant :
60+ case spirv::Decoration::Patch :
6161+ case spirv::Decoration::SingleElementVectorINTEL:
6262+ case spirv::Decoration::VectorComputeCallableFunctionINTEL:
6363+ case spirv::Decoration::VectorComputeFunctionINTEL:
6464+ case spirv::Decoration::VectorComputeVariableINTEL:
65- case spirv::Decoration::Block:
6665 // For unit attributes and decoration attributes, the args list
6766 // has no values so we do nothing.
68- - -
67+ if (isa<UnitAttr, DecorationAttr>(attr))
68+ - -
69692.34.1
70-
0 commit comments