[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