diff --git a/mlir/include/mlir-c/ExtensibleDialect.h b/mlir/include/mlir-c/ExtensibleDialect.h index fee26772e1560..c849658c710bb 100644 --- a/mlir/include/mlir-c/ExtensibleDialect.h +++ b/mlir/include/mlir-c/ExtensibleDialect.h @@ -50,10 +50,18 @@ mlirDynamicOpTraitAttach(MlirDynamicOpTrait dynamicOpTrait, MLIR_CAPI_EXPORTED MlirDynamicOpTrait mlirDynamicOpTraitIsTerminatorCreate(void); +/// Get the type ID of the dynamic op trait that indicates the operation is a +/// terminator. +MLIR_CAPI_EXPORTED MlirTypeID mlirDynamicOpTraitIsTerminatorGetTypeID(void); + /// Get the dynamic op trait that indicates regions have no terminator. MLIR_CAPI_EXPORTED MlirDynamicOpTrait mlirDynamicOpTraitNoTerminatorCreate(void); +/// Get the type ID of the dynamic op trait that indicates regions have no +/// terminator. +MLIR_CAPI_EXPORTED MlirTypeID mlirDynamicOpTraitNoTerminatorGetTypeID(void); + /// Destroy the dynamic op trait. MLIR_CAPI_EXPORTED void mlirDynamicOpTraitDestroy(MlirDynamicOpTrait dynamicOpTrait); diff --git a/mlir/include/mlir-c/IR.h b/mlir/include/mlir-c/IR.h index 805f0ffaaf7ce..8d30051d615f4 100644 --- a/mlir/include/mlir-c/IR.h +++ b/mlir/include/mlir-c/IR.h @@ -631,6 +631,11 @@ MLIR_CAPI_EXPORTED size_t mlirOperationHashValue(MlirOperation op); /// Gets the context this operation is associated with MLIR_CAPI_EXPORTED MlirContext mlirOperationGetContext(MlirOperation op); +/// Checks if the operation name has a trait identified by the given type id. +MLIR_CAPI_EXPORTED bool mlirOperationNameHasTrait(MlirStringRef opName, + MlirTypeID traitTypeID, + MlirContext context); + /// Gets the location of the operation. MLIR_CAPI_EXPORTED MlirLocation mlirOperationGetLocation(MlirOperation op); diff --git a/mlir/include/mlir/Bindings/Python/IRCore.h b/mlir/include/mlir/Bindings/Python/IRCore.h index eefc51d519d62..6b67b78cd2184 100644 --- a/mlir/include/mlir/Bindings/Python/IRCore.h +++ b/mlir/include/mlir/Bindings/Python/IRCore.h @@ -1861,6 +1861,8 @@ class MLIR_PYTHON_API_EXPORTED PyDynamicOpTrait { const nanobind::object &target, PyMlirContext &context); static void bind(nanobind::module_ &m); + + static inline const char *typeIDAttr = "_trait_typeid"; }; namespace PyDynamicOpTraits { diff --git a/mlir/include/mlir/IR/ExtensibleDialect.h b/mlir/include/mlir/IR/ExtensibleDialect.h index dcbf6813506d5..d26ddafd2ef1d 100644 --- a/mlir/include/mlir/IR/ExtensibleDialect.h +++ b/mlir/include/mlir/IR/ExtensibleDialect.h @@ -401,7 +401,8 @@ class DynamicOpTraitList { template