Skip to content

Commit

Permalink
Add missing patch files.
Browse files Browse the repository at this point in the history
  • Loading branch information
silee2 committed Feb 14, 2024
1 parent b3b5c1c commit 24c1e2c
Show file tree
Hide file tree
Showing 5 changed files with 481 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
From c49e484cae0c62f771ec353bc6fa3113d7b13490 Mon Sep 17 00:00:00 2001
From: Dimple Prajapati <[email protected]>
Date: Fri, 22 Dec 2023 21:03:10 +0000
Subject: [PATCH 2/6] change spirv.CL.printf op assembly format

---
mlir/include/mlir/Dialect/SPIRV/IR/SPIRVCLOps.td | 4 ++--
mlir/test/Dialect/SPIRV/IR/ocl-ops.mlir | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/mlir/include/mlir/Dialect/SPIRV/IR/SPIRVCLOps.td b/mlir/include/mlir/Dialect/SPIRV/IR/SPIRVCLOps.td
index c7c2fe8bc742..b5ca27d7d753 100644
--- a/mlir/include/mlir/Dialect/SPIRV/IR/SPIRVCLOps.td
+++ b/mlir/include/mlir/Dialect/SPIRV/IR/SPIRVCLOps.td
@@ -875,7 +875,7 @@ def SPIRV_CLPrintfOp : SPIRV_CLOp<"printf", 184, []> {
#### Example:

```mlir
- %0 = spirv.CL.printf %0 %1 %2 : (!spirv.ptr<i8, UniformConstant>, (i32, i32)) -> i32
+ %0 = spirv.CL.printf %0 : !spirv.ptr<i8, UniformConstant>(%1, %2 : i32, i32) -> i32
```
}];

@@ -889,7 +889,7 @@ def SPIRV_CLPrintfOp : SPIRV_CLOp<"printf", 184, []> {
);

let assemblyFormat = [{
- $format `,` $arguments attr-dict `:` `(` type($format) `,` `(` type($arguments) `)` `)` `->` type($result)
+ $format `:` type($format) ( `(` $arguments^ `:` type($arguments) `)`)? attr-dict `->` type($result)
}];

let hasVerifier = 0;
diff --git a/mlir/test/Dialect/SPIRV/IR/ocl-ops.mlir b/mlir/test/Dialect/SPIRV/IR/ocl-ops.mlir
index 2dbebb2db98e..a7d5f24be296 100644
--- a/mlir/test/Dialect/SPIRV/IR/ocl-ops.mlir
+++ b/mlir/test/Dialect/SPIRV/IR/ocl-ops.mlir
@@ -275,8 +275,8 @@ func.func @rintvec(%arg0 : vector<3xf16>) -> () {
//===----------------------------------------------------------------------===//
// CHECK-LABEL: func.func @printf(
func.func @printf(%arg0 : !spirv.ptr<i8, UniformConstant>, %arg1 : i32, %arg2 : i32) -> i32 {
- // CHECK: spirv.CL.printf {{%.*}}, {{%.*}}, {{%.*}} : (!spirv.ptr<i8, UniformConstant>, (i32, i32)) -> i32
- %0 = spirv.CL.printf %arg0, %arg1, %arg2 : (!spirv.ptr<i8, UniformConstant>, (i32, i32)) -> i32
+ // CHECK: spirv.CL.printf {{%.*}} : !spirv.ptr<i8, UniformConstant>({{%.*}}, {{%.*}} : (i32, i32)) -> i32
+ %0 = spirv.CL.printf %arg0 : !spirv.ptr<i8, UniformConstant>(%arg1, %arg2 : i32, i32) -> i32
return %0 : i32
}

--
2.34.1
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
From 5a8746dbc8a0853f8bbb7570ed360105970b8894 Mon Sep 17 00:00:00 2001
From: "Prajapati, Dimple" <[email protected]>
Date: Fri, 12 Jan 2024 09:12:03 -0800
Subject: [PATCH 3/6] Add Constant attribute in ParseDecoration

---
mlir/lib/Target/SPIRV/Deserialization/Deserializer.cpp | 1 +
mlir/lib/Target/SPIRV/Serialization/Serializer.cpp | 1 +
2 files changed, 2 insertions(+)

diff --git a/mlir/lib/Target/SPIRV/Deserialization/Deserializer.cpp b/mlir/lib/Target/SPIRV/Deserialization/Deserializer.cpp
index 02d03b3a0fae..ba3ecc5344bc 100644
--- a/mlir/lib/Target/SPIRV/Deserialization/Deserializer.cpp
+++ b/mlir/lib/Target/SPIRV/Deserialization/Deserializer.cpp
@@ -296,6 +296,7 @@ LogicalResult spirv::Deserializer::processDecoration(ArrayRef<uint32_t> words) {
decorations[words[0]].set(symbol, llvm::dyn_cast<Attribute>(linkageAttr));
break;
}
+ case spirv::Decoration::Constant:
case spirv::Decoration::Aliased:
case spirv::Decoration::AliasedPointer:
case spirv::Decoration::Block:
diff --git a/mlir/lib/Target/SPIRV/Serialization/Serializer.cpp b/mlir/lib/Target/SPIRV/Serialization/Serializer.cpp
index 40337e007bbf..518facc41e28 100644
--- a/mlir/lib/Target/SPIRV/Serialization/Serializer.cpp
+++ b/mlir/lib/Target/SPIRV/Serialization/Serializer.cpp
@@ -263,6 +263,7 @@ LogicalResult Serializer::processDecorationAttr(Location loc, uint32_t resultID,
<< stringifyDecoration(decoration);
case spirv::Decoration::Aliased:
case spirv::Decoration::AliasedPointer:
+ case spirv::Decoration::Constant:
case spirv::Decoration::Flat:
case spirv::Decoration::NonReadable:
case spirv::Decoration::NonWritable:
--
2.34.1
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
From ab730702ec16bceff41621360172197a73413021 Mon Sep 17 00:00:00 2001
From: Md Abdullah Shahneous Bari <[email protected]>
Date: Mon, 24 Jul 2023 18:25:05 +0000
Subject: [PATCH 4/6] Add serialization and de-serialization support for
several decorations.

Added decorations:
- Alignment
- DescriptorSet
- FuncParamIOKindINTEL
- SingleElementVectorINTEL
- VectorComputeCallableFunctionINTEL
- VectorComputeFunctionINTEL
- VectorComputeVariableINTEL
---
mlir/lib/Target/SPIRV/Deserialization/Deserializer.cpp | 8 +++++++-
mlir/lib/Target/SPIRV/Serialization/Serializer.cpp | 6 ++++++
2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/mlir/lib/Target/SPIRV/Deserialization/Deserializer.cpp b/mlir/lib/Target/SPIRV/Deserialization/Deserializer.cpp
index ba3ecc5344bc..072672b106f3 100644
--- a/mlir/lib/Target/SPIRV/Deserialization/Deserializer.cpp
+++ b/mlir/lib/Target/SPIRV/Deserialization/Deserializer.cpp
@@ -250,8 +250,9 @@ LogicalResult spirv::Deserializer::processDecoration(ArrayRef<uint32_t> words) {
symbol, FPFastMathModeAttr::get(opBuilder.getContext(),
static_cast<FPFastMathMode>(words[2])));
break;
- case spirv::Decoration::DescriptorSet:
+ case spirv::Decoration::Alignment:
case spirv::Decoration::Binding:
+ case spirv::Decoration::DescriptorSet:
if (words.size() != 3) {
return emitError(unknownLoc, "OpDecorate with ")
<< decorationName << " needs a single integer literal";
@@ -310,6 +311,10 @@ LogicalResult spirv::Deserializer::processDecoration(ArrayRef<uint32_t> words) {
case spirv::Decoration::RelaxedPrecision:
case spirv::Decoration::Restrict:
case spirv::Decoration::RestrictPointer:
+ case spirv::Decoration::SingleElementVectorINTEL:
+ case spirv::Decoration::VectorComputeCallableFunctionINTEL:
+ case spirv::Decoration::VectorComputeFunctionINTEL:
+ case spirv::Decoration::VectorComputeVariableINTEL:
if (words.size() != 2) {
return emitError(unknownLoc, "OpDecoration with ")
<< decorationName << "needs a single target <id>";
@@ -320,6 +325,7 @@ LogicalResult spirv::Deserializer::processDecoration(ArrayRef<uint32_t> words) {
// it is needed for many validation rules.
decorations[words[0]].set(symbol, opBuilder.getUnitAttr());
break;
+ case spirv::Decoration::FuncParamIOKindINTEL:
case spirv::Decoration::Location:
case spirv::Decoration::SpecId:
if (words.size() != 3) {
diff --git a/mlir/lib/Target/SPIRV/Serialization/Serializer.cpp b/mlir/lib/Target/SPIRV/Serialization/Serializer.cpp
index 518facc41e28..9830a0c818e9 100644
--- a/mlir/lib/Target/SPIRV/Serialization/Serializer.cpp
+++ b/mlir/lib/Target/SPIRV/Serialization/Serializer.cpp
@@ -239,8 +239,10 @@ LogicalResult Serializer::processDecorationAttr(Location loc, uint32_t resultID,
}
return emitError(loc, "expected FPFastMathModeAttr attribute for ")
<< stringifyDecoration(decoration);
+ case spirv::Decoration::Alignment:
case spirv::Decoration::Binding:
case spirv::Decoration::DescriptorSet:
+ case spirv::Decoration::FuncParamIOKindINTEL:
case spirv::Decoration::Location:
if (auto intAttr = dyn_cast<IntegerAttr>(attr)) {
args.push_back(intAttr.getValue().getZExtValue());
@@ -273,6 +275,10 @@ LogicalResult Serializer::processDecorationAttr(Location loc, uint32_t resultID,
case spirv::Decoration::RelaxedPrecision:
case spirv::Decoration::Restrict:
case spirv::Decoration::RestrictPointer:
+ case spirv::Decoration::SingleElementVectorINTEL:
+ case spirv::Decoration::VectorComputeCallableFunctionINTEL:
+ case spirv::Decoration::VectorComputeFunctionINTEL:
+ case spirv::Decoration::VectorComputeVariableINTEL:
// For unit attributes and decoration attributes, the args list
// has no values so we do nothing.
if (isa<UnitAttr, DecorationAttr>(attr))
--
2.34.1
Loading

0 comments on commit 24c1e2c

Please sign in to comment.