-
Notifications
You must be signed in to change notification settings - Fork 45
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
5 changed files
with
481 additions
and
0 deletions.
There are no files selected for viewing
49 changes: 49 additions & 0 deletions
49
build_tools/patches/0002-change-spirv.CL.printf-op-assembly-format.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
36 changes: 36 additions & 0 deletions
36
build_tools/patches/0003-Add-Constant-attribute-in-ParseDecoration.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
81 changes: 81 additions & 0 deletions
81
build_tools/patches/0004-Add-serialization-and-de-serialization-support-for-s.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
Oops, something went wrong.