[Mlir-commits] [mlir] [MLIR] [Python] The generated op definitions now use typed parameters (PR #188635)

Sergei Lebedev llvmlistbot at llvm.org
Sat Mar 28 13:28:27 PDT 2026


================
@@ -638,6 +643,35 @@ static std::string getPythonAttrName(mlir::tblgen::Attribute attr) {
   return "Attribute";
 }
 
+/// Returns the Python raw value type accepted by the AttrBuilder for the given
+/// attribute. Returns empty StringRef if no mapping is known.
+static StringRef getPythonAttrRawType(mlir::tblgen::Attribute attr) {
+  return llvm::StringSwitch<StringRef>(attr.getAttrDefName())
+      .Cases({"BoolAttr", "I1Attr"}, "bool")
+      .Cases({"I8Attr", "I16Attr", "I32Attr", "I64Attr"}, "int")
+      .Cases({"SI1Attr", "SI8Attr", "SI16Attr", "SI32Attr", "SI64Attr"}, "int")
+      .Cases({"UI1Attr", "UI8Attr", "UI16Attr", "UI32Attr", "UI64Attr"}, "int")
+      .Case("IndexAttr", "int")
+      .Cases({"F32Attr", "F64Attr"}, "float")
+      .Cases({"StrAttr", "SymbolNameAttr"}, "str")
+      .Cases({"FlatSymbolRefAttr", "SymbolRefAttr"}, "str")
+      .Case("TypeAttr", "_ods_ir.Type")
+      .Case("AffineMapAttr", "_ods_ir.AffineMap")
+      .Case("IntegerSetAttr", "_ods_ir.IntegerSet")
+      .Case("DictionaryAttr", "dict")
+      .Case("ArrayAttr", "_Sequence[_ods_ir.Attribute]")
+      .Cases({"I32ArrayAttr", "I64ArrayAttr", "I64SmallVectorArrayAttr"},
+             "_Sequence[int]")
+      .Cases({"F32ArrayAttr", "F64ArrayAttr"}, "_Sequence[float]")
+      .Cases({"BoolArrayAttr", "DenseBoolArrayAttr"}, "_Sequence[bool]")
+      .Cases({"StrArrayAttr", "FlatSymbolRefArrayAttr"}, "_Sequence[str]")
+      .Cases({"DenseI8ArrayAttr", "DenseI16ArrayAttr", "DenseI32ArrayAttr",
+              "DenseI64ArrayAttr"},
+             "_Sequence[int]")
----------------
superbobry wrote:

Why do we `try-except` here if NumPy is not an optional dep? https://github.com/llvm/llvm-project/blob/9f3a9ea6ae689fa0fbd0137999834915cc908e5c/mlir/python/mlir/ir.py#L364

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


More information about the Mlir-commits mailing list