[Mlir-commits] [mlir] [mlir] Add def to `Properties.td` to help with enum properties (PR #89311)

llvmlistbot at llvm.org llvmlistbot at llvm.org
Thu Apr 18 14:08:40 PDT 2024


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-mlir

Author: Jeff Niu (Mogball)

<details>
<summary>Changes</summary>

This is useful for defining operation properties that are enums.

---
Full diff: https://github.com/llvm/llvm-project/pull/89311.diff


1 Files Affected:

- (modified) mlir/include/mlir/IR/Properties.td (+13) 


``````````diff
diff --git a/mlir/include/mlir/IR/Properties.td b/mlir/include/mlir/IR/Properties.td
index 99da1763524fa9..0babdbbfa05bc2 100644
--- a/mlir/include/mlir/IR/Properties.td
+++ b/mlir/include/mlir/IR/Properties.td
@@ -153,4 +153,17 @@ class ArrayProperty<string storageTypeParam = "", int n, string desc = ""> :
   let assignToStorage = "::llvm::copy($_value, $_storage)";
 }
 
+class EnumProperty<string storageTypeParam, string desc = ""> :
+    Property<storageTypeParam, desc> {
+  code writeToMlirBytecode = [{
+    $_writer.writeVarInt(static_cast<uint64_t>($_storage));
+  }];
+  code readFromMlirBytecode = [{
+    uint64_t val;
+    if (failed($_reader.readVarInt(val)))
+      return ::mlir::failure();
+    $_storage = static_cast<}] # storageTypeParam # [{>(val);
+  }];
+}
+
 #endif // PROPERTIES

``````````

</details>


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


More information about the Mlir-commits mailing list