[Mlir-commits] [mlir] [mlir] Add property combinators, initial ODS support (PR #94732)
Christian Ulmann
llvmlistbot at llvm.org
Mon Jun 17 22:43:34 PDT 2024
================
@@ -68,18 +69,67 @@ class Property<string storageTypeParam = "", string desc = ""> {
// - `$_storage` is the variable to hash.
//
// The expression should define a llvm::hash_code.
- code hashProperty = [{
- llvm::hash_value($_storage);
+ // If unspecified, defaults to `llvm::hash_value($_storage)`.
+ // The default is not specified in tablegen because many combinators, like
+ // ArrayProperty, can fall back to more efficient implementations of
+ // `hashProperty` when their underlying elements have trivial hashing.
+ code hashProperty = "";
+
+ // The body of the parser for a value of this property.
+ // Format:
+ // - `$_parser` is the OpAsmParser.
+ // - `$_storage` is the location into which the value is to be placed if it is
+ // present.
+ // - `$_cxtx` is a `MLIRContext *`
+ //
+ // This defines the body of a function (typically a lambda) that returns a
+ // ParseResult. There is an implicit `return success()` at the end of the parser
+ // code.
+ //
+ // When this code executes, `$_storage` will be initialized to the property's
+ // default value (if any, accounting for the storage type override).
+ code parser = [{
+ auto value = ::mlir::FieldParser<}] # storageType # [{>::parse($_parser);
+ if (::mlir::failed(value))
+ return ::mlir::failure();
+ $_storage = std::move(*value);
}];
+ // The body of the parser for a value of this property as the anchor of an optional
+ // group. This should parse the property if possible and do nothing if a value of
+ // the relevant type is not next in the parse stream.
+ // You are not required to define this parser if it cannot be meaningfully
+ // implemented.
+ // This has the same context and substitutions as `parser` except that it is
+ // required to return an OptionalParseResult.
+ //
+ // Note that the printer for a property should always print a non-empty value.
+ //
----------------
Dinistro wrote:
Should this be moved downwards to the printer's comment?
https://github.com/llvm/llvm-project/pull/94732
More information about the Mlir-commits
mailing list