[Mlir-commits] [mlir] [mlir][SPIR-V] Deserialize all unit decorations on function parameters (PR #230611)
Arseniy Obolenskiy
llvmlistbot at llvm.org
Wed Oct 14 23:09:45 PDT 2026
================
@@ -524,48 +524,19 @@ LogicalResult spirv::Deserializer::setFunctionArgAttrs(
decAttr.getValue());
continue;
}
- bool handled = false;
- for (auto decoration :
- {spirv::Decoration::Aliased, spirv::Decoration::Restrict,
- spirv::Decoration::AliasedPointer,
- spirv::Decoration::RestrictPointer}) {
-
- if (decAttr.getName() !=
- getSymbolDecoration(stringifyDecoration(decoration)))
- continue;
-
- if (foundDecorationAttr)
- return emitError(unknownLoc,
- "more than one Aliased/Restrict decorations for "
- "function argument with result <id> ")
- << argID;
-
- foundDecorationAttr = spirv::DecorationAttr::get(context, decoration);
- handled = true;
- break;
- }
- if (handled)
+ if (!isa<UnitAttr>(decAttr.getValue()))
continue;
- if (decAttr.getName() == getSymbolDecoration(stringifyDecoration(
- spirv::Decoration::RelaxedPrecision))) {
- // TODO: Current implementation supports only one decoration per function
- // parameter so RelaxedPrecision cannot be applied at the same time as,
- // for example, Aliased/Restrict/etc. This should be relaxed to allow any
- // combination of decoration allowed by the spec to be supported.
- if (foundDecorationAttr)
- return emitError(unknownLoc, "already found a decoration for function "
- "argument with result <id> ")
- << argID;
-
- foundDecorationAttr = spirv::DecorationAttr::get(
- context, spirv::Decoration::RelaxedPrecision);
- continue;
- }
+ // TODO: Support multiple decorations per function parameter.
+ if (foundDecorationAttr)
+ return emitError(unknownLoc, "already found a decoration for function "
+ "argument with result <id> ")
+ << argID;
- return emitError(unknownLoc, "unhandled decoration '")
- << decAttr.getName().getValue()
- << "' on function argument with result <id> " << argID;
+ std::optional<spirv::Decoration> decoration = spirv::symbolizeDecoration(
+ llvm::convertToCamelFromSnakeCase(decAttr.getName(), true));
+ assert(decoration.has_value());
----------------
aobolensk wrote:
Added error for more safety
https://github.com/llvm/llvm-project/pull/230611
More information about the Mlir-commits
mailing list