mirror of https://github.com/llvm/circt.git
[HW] Add Python bindings for InnerRefAttr.
This adds the necessary CAPI boilerplate and a basic Python type for holding InnerRefAttr.
This commit is contained in:
parent
c5c8f79152
commit
9f7a01a865
|
@ -108,6 +108,10 @@ MLIR_CAPI_EXPORTED MlirStringRef hwTypeAliasTypeGetScope(MlirType typeAlias);
|
|||
// Attribute API.
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
MLIR_CAPI_EXPORTED bool hwAttrIsAInnerRefAttr(MlirAttribute);
|
||||
MLIR_CAPI_EXPORTED MlirAttribute hwInnerRefAttrGet(MlirAttribute moduleName,
|
||||
MlirAttribute innerSym);
|
||||
|
||||
MLIR_CAPI_EXPORTED bool hwAttrIsAParamDeclAttr(MlirAttribute);
|
||||
MLIR_CAPI_EXPORTED MlirAttribute hwParamDeclAttrGet(MlirStringRef name,
|
||||
MlirAttribute type,
|
||||
|
|
|
@ -79,3 +79,8 @@ with Context() as ctx, Location.unknown():
|
|||
pverbatim = hw.ParamVerbatimAttr.get(StringAttr.get("this is verbatim"))
|
||||
# CHECK: #hw.param.verbatim<"this is verbatim">
|
||||
print(pverbatim)
|
||||
|
||||
inner_ref = hw.InnerRefAttr.get(StringAttr.get("some_module"),
|
||||
StringAttr.get("some_instance"))
|
||||
# CHECK: #hw.innerNameRef<@some_module::@some_instance>
|
||||
print(inner_ref)
|
||||
|
|
|
@ -138,4 +138,10 @@ void circt::python::populateDialectHWSubmodule(py::module &m) {
|
|||
.def_classmethod("get", [](py::object cls, MlirAttribute text) {
|
||||
return cls(hwParamVerbatimAttrGet(text));
|
||||
});
|
||||
|
||||
mlir_attribute_subclass(m, "InnerRefAttr", hwAttrIsAInnerRefAttr)
|
||||
.def_classmethod("get", [](py::object cls, MlirAttribute moduleName,
|
||||
MlirAttribute innerSym) {
|
||||
return cls(hwInnerRefAttrGet(moduleName, innerSym));
|
||||
});
|
||||
}
|
||||
|
|
|
@ -134,6 +134,17 @@ MlirStringRef hwTypeAliasTypeGetScope(MlirType typeAlias) {
|
|||
// Attribute API.
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
bool hwAttrIsAInnerRefAttr(MlirAttribute attr) {
|
||||
return unwrap(attr).isa<InnerRefAttr>();
|
||||
}
|
||||
|
||||
MlirAttribute hwInnerRefAttrGet(MlirAttribute moduleName,
|
||||
MlirAttribute innerSym) {
|
||||
auto moduleNameAttr = unwrap(moduleName).cast<StringAttr>();
|
||||
auto innerSymAttr = unwrap(innerSym).cast<StringAttr>();
|
||||
return wrap(InnerRefAttr::get(moduleNameAttr, innerSymAttr));
|
||||
}
|
||||
|
||||
MLIR_CAPI_EXPORTED bool hwAttrIsAParamDeclAttr(MlirAttribute attr) {
|
||||
return unwrap(attr).isa<ParamDeclAttr>();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue