9#ifndef MLIR_C_DOMINANCE_H
10#define MLIR_C_DOMINANCE_H
19#define DEFINE_C_API_STRUCT(name, storage) \
23 typedef struct name name
28#undef DEFINE_C_API_STRUCT
44 MlirOperation a, MlirOperation
b);
76 MlirDominanceInfo info, MlirBlock a, MlirBlock
b);
100 MlirPostDominanceInfo info, MlirOperation a, MlirOperation
b);
105 MlirOperation a, MlirOperation
b);
110 MlirBlock a, MlirBlock
b);
MLIR_CAPI_EXPORTED bool mlirDominanceInfoProperlyDominatesBlock(MlirDominanceInfo info, MlirBlock a, MlirBlock b)
Returns true if block A properly dominates block B.
MLIR_CAPI_EXPORTED bool mlirPostDominanceInfoPostDominatesOperation(MlirPostDominanceInfo info, MlirOperation a, MlirOperation b)
Returns true if operation A post-dominates operation B.
MLIR_CAPI_EXPORTED MlirDominanceInfo mlirDominanceInfoCreate(MlirOperation op)
Creates a DominanceInfo for the given operation (typically a FuncOp or ModuleOp).
#define DEFINE_C_API_STRUCT(name, storage)
MLIR_CAPI_EXPORTED bool mlirDominanceInfoValueProperlyDominates(MlirDominanceInfo info, MlirValue a, MlirOperation b)
Returns true if value A properly dominates operation B.
MLIR_CAPI_EXPORTED bool mlirDominanceInfoDominatesBlock(MlirDominanceInfo info, MlirBlock a, MlirBlock b)
Returns true if block A dominates block B.
MLIR_CAPI_EXPORTED bool mlirPostDominanceInfoProperlyPostDominatesOperation(MlirPostDominanceInfo info, MlirOperation a, MlirOperation b)
Returns true if operation A properly post-dominates operation B.
MLIR_CAPI_EXPORTED void mlirPostDominanceInfoInvalidate(MlirPostDominanceInfo info)
Invalidates all cached post-dominance information.
MLIR_CAPI_EXPORTED bool mlirDominanceInfoProperlyDominatesOperation(MlirDominanceInfo info, MlirOperation a, MlirOperation b)
Returns true if operation A properly dominates operation B.
MLIR_CAPI_EXPORTED bool mlirPostDominanceInfoProperlyPostDominatesBlock(MlirPostDominanceInfo info, MlirBlock a, MlirBlock b)
Returns true if block A properly post-dominates block B.
MLIR_CAPI_EXPORTED bool mlirPostDominanceInfoPostDominatesBlock(MlirPostDominanceInfo info, MlirBlock a, MlirBlock b)
Returns true if block A post-dominates block B.
MLIR_CAPI_EXPORTED bool mlirDominanceInfoIsReachableFromEntry(MlirDominanceInfo info, MlirBlock block)
Returns true if the given block is reachable from the entry block of its region.
MLIR_CAPI_EXPORTED void mlirPostDominanceInfoDestroy(MlirPostDominanceInfo info)
Destroys the given PostDominanceInfo.
MLIR_CAPI_EXPORTED bool mlirDominanceInfoDominatesOperation(MlirDominanceInfo info, MlirOperation a, MlirOperation b)
Returns true if operation A dominates operation B (A == B or A properly dominates B).
MLIR_CAPI_EXPORTED void mlirDominanceInfoDestroy(MlirDominanceInfo info)
Destroys the given DominanceInfo.
MLIR_CAPI_EXPORTED void mlirDominanceInfoInvalidate(MlirDominanceInfo info)
Invalidates all cached dominance information.
MLIR_CAPI_EXPORTED MlirPostDominanceInfo mlirPostDominanceInfoCreate(MlirOperation op)
Creates a PostDominanceInfo for the given operation.
MLIR_CAPI_EXPORTED bool mlirDominanceInfoValueDominates(MlirDominanceInfo info, MlirValue a, MlirOperation b)
Returns true if value A dominates operation B (the operation defining A is B or A properly dominates ...
MLIR_CAPI_EXPORTED MlirBlock mlirDominanceInfoFindNearestCommonDominator(MlirDominanceInfo info, MlirBlock a, MlirBlock b)
Finds the nearest common dominator of blocks A and B.
#define MLIR_CAPI_EXPORTED