xref: /llvm-project/mlir/lib/IR/RegionKindInterface.cpp (revision 695a5a6a66396b83263bbb3f1946fbaf41e422c3)
162828865SStephen Neuendorffer //===- RegionKindInterface.cpp - Region Kind Interfaces ---------*- C++ -*-===//
262828865SStephen Neuendorffer //
362828865SStephen Neuendorffer // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
462828865SStephen Neuendorffer // See https://llvm.org/LICENSE.txt for license information.
562828865SStephen Neuendorffer // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
662828865SStephen Neuendorffer //
762828865SStephen Neuendorffer //===----------------------------------------------------------------------===//
862828865SStephen Neuendorffer //
962828865SStephen Neuendorffer // This file contains the definitions of the region kind interfaces defined in
1062828865SStephen Neuendorffer // `RegionKindInterface.td`.
1162828865SStephen Neuendorffer //
1262828865SStephen Neuendorffer //===----------------------------------------------------------------------===//
1362828865SStephen Neuendorffer 
1462828865SStephen Neuendorffer #include "mlir/IR/RegionKindInterface.h"
1562828865SStephen Neuendorffer 
1662828865SStephen Neuendorffer using namespace mlir;
1762828865SStephen Neuendorffer 
1862828865SStephen Neuendorffer #include "mlir/IR/RegionKindInterface.cpp.inc"
19b884f4efSMatthias Springer 
mayHaveSSADominance(Region & region)20b884f4efSMatthias Springer bool mlir::mayHaveSSADominance(Region &region) {
21*695a5a6aSMatthias Springer   auto regionKindOp = dyn_cast<RegionKindInterface>(region.getParentOp());
22b884f4efSMatthias Springer   if (!regionKindOp)
23b884f4efSMatthias Springer     return true;
24b884f4efSMatthias Springer   return regionKindOp.hasSSADominance(region.getRegionNumber());
25b884f4efSMatthias Springer }
26*695a5a6aSMatthias Springer 
mayBeGraphRegion(Region & region)27*695a5a6aSMatthias Springer bool mlir::mayBeGraphRegion(Region &region) {
28*695a5a6aSMatthias Springer   if (!region.getParentOp()->isRegistered())
29*695a5a6aSMatthias Springer     return true;
30*695a5a6aSMatthias Springer   auto regionKindOp = dyn_cast<RegionKindInterface>(region.getParentOp());
31*695a5a6aSMatthias Springer   if (!regionKindOp)
32*695a5a6aSMatthias Springer     return false;
33*695a5a6aSMatthias Springer   return !regionKindOp.hasSSADominance(region.getRegionNumber());
34*695a5a6aSMatthias Springer }
35