[Mlir-commits] [mlir] Reimplementing target description concept using DLTI attribute (PR #92138)

Niranjan Hasabnis llvmlistbot at llvm.org
Fri May 31 01:16:41 PDT 2024


================
@@ -194,6 +194,162 @@ def DataLayoutSpecInterface : AttrInterface<"DataLayoutSpecInterface"> {
   }];
 }
 
+def TargetDeviceDescSpecInterface : AttrInterface<"TargetDeviceDescSpecInterface"> {
+  let cppNamespace = "::mlir";
+
+  let description = [{
+    Attribute interface describing a target device description specification.
+
+    A target device description specification is a list of device properties (key)
+    and their values for a specific device. The device is identified using "device_id"
+    (as a key and ui32 value) and "device_type" key which must have a string value.
+    Both "device_id" and "device_type" are mandatory keys. As an example, L1 cache
+    size could be a device property, and its value would be a device specific size.
+
+    A target device description specification is attached to a module as a module level
+    attribute.
+  }];
+
+  let methods = [
+    InterfaceMethod<
+      /*description=*/"Returns the list of layout entries.",
+      /*retTy=*/"::mlir::DataLayoutEntryListRef",
+      /*methodName=*/"getEntries",
+      /*args=*/(ins)
+    >,
----------------
nhasabni wrote:

> What is a DLTISpec?
> 
> I'm also not really understanding the answer, so I'll ask again: if everything is conceptually a key-value pair, why aren't we using a map-like API?

By DLTISpec I mean [DataLayoutSpecAttr](https://github.com/llvm/llvm-project/blob/ae8627809076390dbab04e01f3bf9d384c9e124e/mlir/include/mlir/Dialect/DLTI/DLTI.h#L69), which is basically a list of DataLayoutEntryAttr.

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


More information about the Mlir-commits mailing list