diff --git a/src/lower/lowerer_impl.cpp b/src/lower/lowerer_impl.cpp index c28658c7c..2b0f5c035 100644 --- a/src/lower/lowerer_impl.cpp +++ b/src/lower/lowerer_impl.cpp @@ -1497,15 +1497,18 @@ Stmt LowererImpl::lowerMergeCases(ir::Expr coordinate, IndexVar coordinateVar, I vector> cases; for (MergePoint point : loopLattice.points()) { - if(point.isOmitter()) { - continue; - } + // if(point.isOmitter()) { + // continue; + // } // Construct case expression vector coordComparisons = compareToResolvedCoordinate(point.rangers(), coordinate, coordinateVar); vector omittedRegionIterators = loopLattice.retrieveRegionIteratorsToOmit(point); - std::vector neqComparisons = compareToResolvedCoordinate(omittedRegionIterators, coordinate, coordinateVar); - append(coordComparisons, neqComparisons); + if (!point.isOmitter()) { + std::vector neqComparisons = compareToResolvedCoordinate(omittedRegionIterators, coordinate, + coordinateVar); + append(coordComparisons, neqComparisons); + } coordComparisons = filter(coordComparisons, [](const Expr& e) { return e.defined(); }); diff --git a/test/tests-lower.cpp b/test/tests-lower.cpp index 16b79d70c..be0dd28d3 100644 --- a/test/tests-lower.cpp +++ b/test/tests-lower.cpp @@ -1836,5 +1836,21 @@ TEST_STMT(RightShiftTest, } ) +TEST_STMT(XorTestOrder2, + forall(i, forall(j, + C(i, j) = xorOp(A(i, j), B(i, j))) + ), + Values( + Formats({{A, Format({sparse, sparse})}, {B, Format({sparse, sparse})}, {C, Format({sparse, sparse})} }) + ), + { + TestCase( + {{B, {{{0, 1}, 2.0}, {{1, 1}, 3.0}, {{1, 2}, 2.0}, {{4, 3}, 4.0}}}, + {A, {{{0, 1}, 3.0}, {{1, 3}, 5.0}, {{2, 1}, 3.0}, {{2, 2}, 4.0}, {{4, 3}, 6.0}}}}, + + {{C, {{{1, 1}, 3.0}, {{1, 2}, 2.0}, {{1, 3}, 5.0}, {{2, 1}, 3.0}, + {{2, 2}, 4.0}}}}) + } +) }}