@@ -2117,7 +2117,7 @@ TargetRegionFlags TargetOp::getKernelExecFlags(Operation *capturedOp) {
21172117
21182118 //  If it's not capturing a loop, it's a default target region.
21192119 if  (!isa_and_present<LoopNestOp>(capturedOp))
2120-  return  TargetRegionFlags::generic ;
2120+  return  TargetRegionFlags::none ;
21212121
21222122 //  Get the innermost non-simd loop wrapper.
21232123 SmallVector<LoopWrapperInterface> loopWrappers;
@@ -2130,24 +2130,24 @@ TargetRegionFlags TargetOp::getKernelExecFlags(Operation *capturedOp) {
21302130
21312131 auto  numWrappers = std::distance (innermostWrapper, loopWrappers.end ());
21322132 if  (numWrappers != 1  && numWrappers != 2 )
2133-  return  TargetRegionFlags::generic ;
2133+  return  TargetRegionFlags::none ;
21342134
21352135 //  Detect target-teams-distribute-parallel-wsloop[-simd].
21362136 if  (numWrappers == 2 ) {
21372137 if  (!isa<WsloopOp>(innermostWrapper))
2138-  return  TargetRegionFlags::generic ;
2138+  return  TargetRegionFlags::none ;
21392139
21402140 innermostWrapper = std::next (innermostWrapper);
21412141 if  (!isa<DistributeOp>(innermostWrapper))
2142-  return  TargetRegionFlags::generic ;
2142+  return  TargetRegionFlags::none ;
21432143
21442144 Operation *parallelOp = (*innermostWrapper)->getParentOp ();
21452145 if  (!isa_and_present<ParallelOp>(parallelOp))
2146-  return  TargetRegionFlags::generic ;
2146+  return  TargetRegionFlags::none ;
21472147
21482148 Operation *teamsOp = parallelOp->getParentOp ();
21492149 if  (!isa_and_present<TeamsOp>(teamsOp))
2150-  return  TargetRegionFlags::generic ;
2150+  return  TargetRegionFlags::none ;
21512151
21522152 if  (teamsOp->getParentOp () == targetOp.getOperation ())
21532153 return  TargetRegionFlags::spmd | TargetRegionFlags::trip_count;
@@ -2156,53 +2156,27 @@ TargetRegionFlags TargetOp::getKernelExecFlags(Operation *capturedOp) {
21562156 else  if  (isa<DistributeOp, LoopOp>(innermostWrapper)) {
21572157 Operation *teamsOp = (*innermostWrapper)->getParentOp ();
21582158 if  (!isa_and_present<TeamsOp>(teamsOp))
2159-  return  TargetRegionFlags::generic ;
2159+  return  TargetRegionFlags::none ;
21602160
21612161 if  (teamsOp->getParentOp () != targetOp.getOperation ())
2162-  return  TargetRegionFlags::generic ;
2162+  return  TargetRegionFlags::none ;
21632163
21642164 if  (isa<LoopOp>(innermostWrapper))
21652165 return  TargetRegionFlags::spmd | TargetRegionFlags::trip_count;
21662166
2167-  //  Find single immediately nested captured omp.parallel and add spmd flag
2168-  //  (generic-spmd case).
2169-  // 
2170-  //  TODO: This shouldn't have to be done here, as it is too easy to break.
2171-  //  The openmp-opt pass should be updated to be able to promote kernels like
2172-  //  this from "Generic" to "Generic-SPMD". However, the use of the
2173-  //  `kmpc_distribute_static_loop` family of functions produced by the
2174-  //  OMPIRBuilder for these kernels prevents that from working.
2175-  Dialect *ompDialect = targetOp->getDialect ();
2176-  Operation *nestedCapture = findCapturedOmpOp (
2177-  capturedOp, /* checkSingleMandatoryExec=*/ false ,
2178-  [&](Operation *sibling) {
2179-  return  sibling && (ompDialect != sibling->getDialect () ||
2180-  sibling->hasTrait <OpTrait::IsTerminator>());
2181-  });
2182- 
2183-  TargetRegionFlags result =
2184-  TargetRegionFlags::generic | TargetRegionFlags::trip_count;
2185- 
2186-  if  (!nestedCapture)
2187-  return  result;
2188- 
2189-  while  (nestedCapture->getParentOp () != capturedOp)
2190-  nestedCapture = nestedCapture->getParentOp ();
2191- 
2192-  return  isa<ParallelOp>(nestedCapture) ? result | TargetRegionFlags::spmd
2193-  : result;
2167+  return  TargetRegionFlags::trip_count;
21942168 }
21952169 //  Detect target-parallel-wsloop[-simd].
21962170 else  if  (isa<WsloopOp>(innermostWrapper)) {
21972171 Operation *parallelOp = (*innermostWrapper)->getParentOp ();
21982172 if  (!isa_and_present<ParallelOp>(parallelOp))
2199-  return  TargetRegionFlags::generic ;
2173+  return  TargetRegionFlags::none ;
22002174
22012175 if  (parallelOp->getParentOp () == targetOp.getOperation ())
22022176 return  TargetRegionFlags::spmd;
22032177 }
22042178
2205-  return  TargetRegionFlags::generic ;
2179+  return  TargetRegionFlags::none ;
22062180}
22072181
22082182// ===----------------------------------------------------------------------===//
0 commit comments