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

Maksim Levental llvmlistbot at llvm.org
Sat Mar 28 14:31:18 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]")
----------------
makslevental wrote:

I dunno that line is 4 years old (maybe @jpienaar remembers what the thinking was back then) but we have unqualified imports elsewhere like https://github.com/llvm/llvm-project/blob/9f3a9ea6ae689fa0fbd0137999834915cc908e5c/mlir/python/mlir/runtime/np_to_memref.py#L7



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


More information about the Mlir-commits mailing list