@@ -111,6 +111,19 @@ void circt::python::populateDialectRTGSubmodule(nb::module_ &m) {
111111 return rtgArrayTypeGetElementType (self);
112112 });
113113
114+ mlir_type_subclass (m, " MapType" , rtgTypeIsAMap)
115+ .def_classmethod (
116+ " get" ,
117+ [](nb::object cls, MlirType keyType, MlirType valueType) {
118+ return cls (rtgMapTypeGet (keyType, valueType));
119+ },
120+ nb::arg (" self" ), nb::arg (" key_type" ), nb::arg (" value_type" ))
121+ .def_property_readonly (
122+ " key_type" , [](MlirType self) { return rtgMapTypeGetKeyType (self); })
123+ .def_property_readonly (" value_type" , [](MlirType self) {
124+ return rtgMapTypeGetValueType (self);
125+ });
126+
114127 mlir_type_subclass (m, " TupleType" , rtgTypeIsATuple)
115128 .def_classmethod (
116129 " get" ,
@@ -200,6 +213,38 @@ void circt::python::populateDialectRTGSubmodule(nb::module_ &m) {
200213 },
201214 nb::arg (" self" ), nb::arg (" type" ), nb::arg (" ctxt" ) = nullptr );
202215
216+ mlir_attribute_subclass (m, " MapAttr" , rtgAttrIsAMap)
217+ .def_classmethod (
218+ " get" ,
219+ [](nb::object cls, MlirType mapType,
220+ const std::vector<std::pair<MlirAttribute, MlirAttribute>>
221+ &entries,
222+ MlirContext ctxt) {
223+ std::vector<MlirAttribute> keys;
224+ std::vector<MlirAttribute> values;
225+ for (auto entry : entries) {
226+ keys.push_back (entry.first );
227+ values.push_back (entry.second );
228+ }
229+ return cls (rtgMapAttrGet (ctxt, mapType, keys.size (), keys.data (),
230+ values.data ()));
231+ },
232+ nb::arg (" self" ), nb::arg (" map_type" ),
233+ nb::arg (" entries" ) =
234+ std::vector<std::pair<MlirAttribute, MlirAttribute>>(),
235+ nb::arg (" ctxt" ) = nullptr )
236+ .def (
237+ " lookup" ,
238+ [](MlirAttribute self, MlirAttribute key) {
239+ auto val = rtgMapAttrLookup (self, key);
240+ if (mlirAttributeIsNull (val))
241+ return nb::none ();
242+ return nb::cast (val);
243+ },
244+ nb::arg (" key" ),
245+ " Look up the value associated with the given key. Returns None if "
246+ " the key is not found." );
247+
203248 // Attributes for ISA targets
204249 // ===--------------------------------------------------------------------===//
205250
0 commit comments