[Mlir-commits] [mlir] [mlir][spirv] Support function argument decorations for ptr in the PhysicalStorageBuffer (PR #76353)

Lei Zhang llvmlistbot at llvm.org
Thu Jan 4 10:16:17 PST 2024


================
@@ -369,6 +370,32 @@ LogicalResult spirv::Deserializer::processMemberName(ArrayRef<uint32_t> words) {
   return success();
 }
 
+void spirv::Deserializer::setArgAttrs(uint32_t argID) {
+  if (!decorations.contains(argID)) {
+    argAttrs.push_back(DictionaryAttr::get(context, {}));
+    return;
+  }
+
+  // Replace a decoration as UnitAttr with DecorationAttr for the physical
+  // buffer pointer in the function parameter.
+  // e.g. `aliased` -> `spirv.decoration = #spirv.decoration<Aliased>`.
+  for (NamedAttribute decAttr : decorations[argID]) {
+    for (auto decoration :
+         {spirv::Decoration::Aliased, spirv::Decoration::Restrict,
+          spirv::Decoration::AliasedPointer,
+          spirv::Decoration::RestrictPointer}) {
+      if (decAttr.getName() ==
+          getSymbolDecoration(stringifyDecoration(decoration))) {
----------------
antiagainst wrote:

I'd think it's better to just break once found one of the above four decorations. We can create the dictionary attribute out of the for loop. This way we don't mutate `decorations` and it's clearer. 

https://github.com/llvm/llvm-project/pull/76353


More information about the Mlir-commits mailing list