@@ -2053,24 +2053,16 @@ TargetRegionFlags TargetOp::getKernelExecFlags(Operation *capturedOp) {
2053
2053
if (!isa_and_present<LoopNestOp>(capturedOp))
2054
2054
return TargetRegionFlags::generic;
2055
2055
2056
- auto getInnermostWrapper = [](LoopNestOp loopOp, int &numWrappers) {
2057
- SmallVector<LoopWrapperInterface> wrappers;
2058
- loopOp.gatherWrappers (wrappers);
2059
- assert (!wrappers.empty ());
2060
-
2061
- // Ignore optional SIMD leaf construct.
2062
- auto *wrapper = wrappers.begin ();
2063
- if (isa<SimdOp>(wrapper))
2064
- wrapper = std::next (wrapper);
2065
-
2066
- numWrappers = static_cast <int >(std::distance (wrapper, wrappers.end ()));
2067
- return wrapper;
2068
- };
2056
+ // Get the innermost non-simd loop wrapper.
2057
+ SmallVector<LoopWrapperInterface> loopWrappers;
2058
+ cast<LoopNestOp>(capturedOp).gatherWrappers (loopWrappers);
2059
+ assert (!loopWrappers.empty ());
2069
2060
2070
- int numWrappers ;
2071
- LoopWrapperInterface * innermostWrapper =
2072
- getInnermostWrapper (cast<LoopNestOp>(capturedOp), numWrappers );
2061
+ LoopWrapperInterface *innermostWrapper = loopWrappers. begin () ;
2062
+ if (isa<SimdOp>( innermostWrapper))
2063
+ innermostWrapper = std::next (innermostWrapper );
2073
2064
2065
+ auto numWrappers = std::distance (innermostWrapper, loopWrappers.end ());
2074
2066
if (numWrappers != 1 && numWrappers != 2 )
2075
2067
return TargetRegionFlags::generic;
2076
2068
0 commit comments