MS0V5 mlir-stage-06-v1 passing 964/1000

Selected stage: loom-lower-scf-to-dfg. Test exactly output obligation mlir-obligation:f9b33846c2d82708b7bf1867 with its governing context; report any stage attr

Test report

1000generated samples
100.0%input coverage
100.0%output coverage
+56lines added
+49branches added
Not estimatedconfidence
964/964checker passes
Code coverage details

Baseline tests: Every tracked test file with a RUN line invoking loom-raise-opt (77 files); other executables and native unit tests excluded

Source fileBaseline coverageBaseline + inputContributing input
…/lib/Dataflow/IR/DataflowActorSemantics.cppMS0V
1089/1621lines67.2%
747/1330branches56.2%
1090/1621lines67.2%+1
751/1330branches56.5%+4
+1 line · +4 branchesseed 0 · 37 → 33 linesOpen PBT Review PR
+1 line · +4 branchesseed 43 · 42 → 39 linesOpen PBT reduced; no PR packaged yet
+1 line · +4 branchesseed 43 · 42 → 39 linesOpen PBT reduced; no PR packaged yet
1 newly covered line · 4 newly covered branches
283    return {};284  auto invariant = demux.getInput().getDefiningOp<dataflow::InvariantOp>();285  if (!invariant || invariant.getCond() != stream.getPhase() ||true branchtrue branch286      invariant.getOutput() != demux.getInput())287    return {};288  return invariant.getInit();289}⋮306    auto stream = demux.getSel().getDefiningOp<dataflow::StreamOp>();307    if (stream && demux.getSel() == stream.getPhase() &&308        result.getResultNumber() == 1 && unwrapPhaseProjection(value, stream))false branchfalse branch309      return;310  }
…/lib/Dataflow/IR/DataflowGraphCausality.cppMS0V
169/189lines89.4%
79/98branches80.6%
169/189lines89.4%+0
81/98branches82.7%+2
+1 branchseed 421 · 90 → 90 linesOpen PBT Review PR
2 newly covered branches
2526  bool operator==(const CausalConstraintTransition &other) const {27    return parent == other.parent && selector == other.selector &&false branch28           lane == other.lane;false branch29  }30};
…/lib/Dataflow/IR/DataflowGraphValidation.cppMS0V
1033/1540lines67.1%
571/1056branches54.1%
1041/1540lines67.6%+8
579/1056branches54.8%+8
+4 lines · +2 branchesseed 421 · 90 → 90 linesOpen PBT Review PR
+8 lines · +8 branchesseed 43 · 42 → 39 linesOpen PBT reduced; no PR packaged yet
+8 lines · +8 branchesseed 43 · 42 → 39 linesOpen PBT reduced; no PR packaged yet
8 newly covered lines · 8 newly covered branches
254    auto it = findEquivalentSelector(selectorLanes, selector);255    bool inserted = it == selectorLanes.end();256    if (!inserted) {true branch257      if (it->second != lane)false branchtrue branch258        return false;259    } else {260      selectorLanes.try_emplace(selector, lane);261    }262    llvm::scope_exit cleanup([&] {263      if (inserted)false branch264        selectorLanes.erase(selector);265    });⋮302        if (!*closes)303          continue;304        if (!coversInLane(input, mux.getSel(), lane))true branch305          return false;306      }307      if (conditional)⋮632    if (known != sharedState->exactOne.end())633      return known->second;634    if (!sharedState->exactOneActive.insert(query).second)true branch635      return false;636    bool result = computeExactOne(value);637    sharedState->exactOneActive.erase(query);⋮1121    };11221123    if (auto stream = childPhase.getDefiningOp<dataflow::StreamOp>()) {false branch1124      if (childPhase != stream.getPhase() || !assumeExact(stream.getInit()) ||1125          !assumeExact(stream.getLimit()) || !assumeExact(stream.getStep()))1126        return false;1127    } else {1128      llvm::SmallVector<dataflow::CarryOp, 4> carries;1129      graphIndex->collectCarries(childPhase, carries);1130      if (carries.empty())false branch1131        return false;1132    }11331134    llvm::SmallVector<mlir::Value, 4> inputs;
…/lib/Dataflow/IR/OperationSchema.cppMS0V
274/716lines38.3%
127/350branches36.3%
274/716lines38.3%+0
129/350branches36.9%+2
+1 branchseed 0 · 37 → 33 linesOpen PBT Review PR
+2 branchesseed 421 · 90 → 90 linesOpen PBT Review PR
+1 branchseed 43 · 42 → 39 linesOpen PBT reduced; no PR packaged yet
+1 branchseed 43 · 42 → 39 linesOpen PBT reduced; no PR packaged yet
2 newly covered branches
728      lhsOp->getNumRegions() != 0 || rhsOp->getNumRegions() != 0 ||729      lhsOp->getNumSuccessors() != 0 || rhsOp->getNumSuccessors() != 0 ||730      !mlir::isPure(lhsOp) || !mlir::isPure(rhsOp) ||true branch731      lhsOp->getNumOperands() != rhsOp->getNumOperands())732    return false;⋮736      dataflow::operationSchemaOf(rhsOp);737  if (!lhsSchema || lhsSchema != rhsSchema ||738      dataflow::actorKind(*lhsSchema) !=true branch739          dataflow::CanonicalDataflowActorKind::Compute ||740      !dataflow::isDeterministic(*lhsSchema))741    return false;
…/lib/Frontend/Lowering/GraphParallelLowering.cppMS0V
651/1243lines52.4%
284/786branches36.1%
698/1243lines56.2%+47
316/786branches40.2%+32
+47 lines · +32 branchesseed 421 · 90 → 90 linesOpen PBT Review PR
+5 lines · +5 branchesseed 43 · 42 → 39 linesOpen PBT reduced; no PR packaged yet
+5 lines · +5 branchesseed 43 · 42 → 39 linesOpen PBT reduced; no PR packaged yet
47 newly covered lines · 32 newly covered branches
424425  std::optional<LinearExpression> build(::mlir::Value value) {426    if (auto found = cache.find(value); found != cache.end())true branch427      return found->second;428    if (failed.contains(value) || !active.insert(value).second)429      return std::nullopt;⋮476    }477478    if (auto add = ::llvm::dyn_cast<::mlir::arith::AddIOp>(def))true branch479      return finish(combine(add.getLhs(), add.getRhs(), /*subtract=*/false));480    if (auto sub = ::llvm::dyn_cast<::mlir::arith::SubIOp>(def))481      return finish(combine(sub.getLhs(), sub.getRhs(), /*subtract=*/true));482    if (auto mul = ::llvm::dyn_cast<::mlir::arith::MulIOp>(def))true branch483      return finish(multiply(mul.getLhs(), mul.getRhs()));484    if (auto cast = ::llvm::dyn_cast<::mlir::arith::IndexCastOp>(def))485      return finish(projectIndexCast(cast.getIn(), cast.getType(), false));⋮580581  void add(LinearExpression &target, const LinearExpression &source,582           bool subtract) {583    target.constant = subtract ? target.constant - source.constantfalse branch584                               : target.constant + source.constant;585    for (unsigned index = 0; index < target.lanes.size(); ++index)false branchtrue branch586      target.lanes[index] = subtractfalse branch587                                ? target.lanes[index] - source.lanes[index]588                                : target.lanes[index] + source.lanes[index];589    for (const auto &[symbol, coefficient] : source.symbols)false branch590      addSymbol(target, symbol, subtract ? -coefficient : coefficient);591    for (const auto &[lane, coefficient] : source.descendantLanes)false branch592      addCoefficient(target.descendantLanes, lane,593                     subtract ? -coefficient : coefficient);594  }595596  std::optional<LinearExpression> combine(::mlir::Value lhs, ::mlir::Value rhs,597                                          bool subtract) {598    auto left = build(lhs);599    auto right = build(rhs);600    if (!left || !right || !left->transforms.empty() ||false branchfalse branchfalse branch601        !right->transforms.empty())false branch602      return std::nullopt;603    add(*left, *right, subtract);604    return left;605  }606607  std::optional<LinearExpression> multiply(::mlir::Value lhs,608                                           ::mlir::Value rhs) {609    auto left = build(lhs);610    auto right = build(rhs);611    if (!left || !right || !left->transforms.empty() ||false branchfalse branchfalse branch612        !right->transforms.empty())false branch613      return std::nullopt;614615    auto isConstant = [](const LinearExpression &expression) {616      return expression.symbols.empty() && expression.descendantLanes.empty() &&true branchtrue branch617             ::llvm::all_of(expression.lanes, [](const ::llvm::APInt &value) {false branchtrue branch618               return value.isZero();619             });620    };621    if (!isConstant(*left) && !isConstant(*right))false branchtrue branch622      return std::nullopt;623    if (!isConstant(*left))true branch624      std::swap(left, right);625626    ::llvm::APInt scale = left->constant;627    right->constant *= scale;628    for (::llvm::APInt &coefficient : right->lanes)false branchtrue branch629      coefficient *= scale;630    for (auto &[symbol, coefficient] : right->symbols) {false branch631      (void)symbol;632      coefficient *= scale;633    }634    for (auto &[lane, coefficient] : right->descendantLanes) {false branch635      (void)lane;636      coefficient *= scale;637    }638    return right;639  }640641  bool dependsOnLane(::mlir::Value value) {⋮1312            SeenAddress &previous = found->second;1313            bool differentLane =1314                previous.firstLane != currentLane || previous.multipleLanes;false branchfalse branch1315            if (differentLane && (previous.writes || access.access->writes) &&false branch1316                (!previous.allAtomic || !access.access->atomic)) {1317              overlap = true;1318              return false;1319            }1320            if (previous.firstLane != currentLane)false branch1321              previous.multipleLanes = true;1322            previous.writes |= access.access->writes;1323            previous.allAtomic &= access.access->atomic;1324          }1325          return true;1326        });
…/lib/Frontend/Lowering/LowerGraphConstantsPass.cppMS0V
80/83lines96.4%
18/24branches75.0%
80/83lines96.4%+0
19/24branches79.2%+1
+1 branchseed 421 · 90 → 90 linesOpen PBT Review PR
1 newly covered branch
68  graph.getBody().walk([&](::mlir::Operation *op) {69    auto cst = ::mlir::dyn_cast<::mlir::arith::ConstantOp>(op);70    if (cst && !cst.use_empty())false branch71      targets.push_back(ScalarSource{cst.getOperation(), cst.getValue()});72  });
Files without added coverage
…/loom/include/Common/Artifact.hMS0V
13/37lines35.1%
3/18branches16.7%
13/37lines35.1%+0
3/18branches16.7%+0
Open PBT
…/include/Dataflow/IR/OperationSchema.hMS0V
8/91lines8.8%
5/66branches7.6%
8/91lines8.8%+0
5/66branches7.6%+0
Open PBT
…/include/Frontend/Lowering/StreamLoopAttrs.hMS0V
31/41lines75.6%
10/14branches71.4%
31/41lines75.6%+0
10/14branches71.4%+0
Open PBT
…/loom/lib/Common/DiagnosticVerbosity.cppMS0V
12/41lines29.3%
1/28branches3.6%
12/41lines29.3%+0
1/28branches3.6%+0
Open PBT
…/loom/lib/Common/IndexWidth.cppMS0V
63/84lines75.0%
28/42branches66.7%
63/84lines75.0%+0
28/42branches66.7%+0
Open PBT
…/loom/lib/Common/InvocationDiagnosticLog.cppMS0V
6/100lines6.0%
1/70branches1.4%
6/100lines6.0%+0
1/70branches1.4%+0
Open PBT
…/lib/Dataflow/IR/DataflowChannelOps.cppMS0V
59/88lines67.0%
13/38branches34.2%
59/88lines67.0%+0
13/38branches34.2%+0
Open PBT
…/lib/Dataflow/IR/DataflowDialect.cppMS0V
22/32lines68.8%
4/10branches40.0%
22/32lines68.8%+0
4/10branches40.0%+0
Open PBT
…/lib/Dataflow/IR/DataflowFunctionLikeOps.cppMS0V
693/1097lines63.2%
264/592branches44.6%
693/1097lines63.2%+0
264/592branches44.6%+0
Open PBT
…/lib/Dataflow/IR/DataflowMemoryContracts.cppMS0V
198/371lines53.4%
98/218branches45.0%
198/371lines53.4%+0
98/218branches45.0%+0
Open PBT
…/lib/Dataflow/IR/DataflowOps.cppMS0V
270/410lines65.9%
103/228branches45.2%
270/410lines65.9%+0
103/228branches45.2%+0
Open PBT
…/lib/Dataflow/IR/DataflowProgramValidation.cppMS0V
367/502lines73.1%
156/276branches56.5%
367/502lines73.1%+0
156/276branches56.5%+0
Open PBT
…/lib/Dataflow/IR/DataflowSyncRendezvous.cppMS0V
21/21lines100.0%
6/12branches50.0%
21/21lines100.0%+0
6/12branches50.0%+0
Open PBT
…/lib/Dataflow/IR/DataflowThreadCompletion.cppMS0V
288/361lines79.8%
148/218branches67.9%
288/361lines79.8%+0
148/218branches67.9%+0
Open PBT
…/lib/Dataflow/IR/DataflowVectorSemantics.cppMS0V
81/121lines66.9%
53/106branches50.0%
81/121lines66.9%+0
53/106branches50.0%+0
Open PBT
…/lib/Dataflow/IR/OperationSchemaCodecInternal.hMS0V
28/120lines23.3%
4/44branches9.1%
28/120lines23.3%+0
4/44branches9.1%+0
Open PBT
…/lib/Dataflow/IR/OperationSchemaTypeCodec.cppMS0V
85/516lines16.5%
55/374branches14.7%
85/516lines16.5%+0
55/374branches14.7%+0
Open PBT
…/lib/Dataflow/Transforms/DataflowRewritePass.cppMS0V
338/559lines60.5%
172/340branches50.6%
338/559lines60.5%+0
172/340branches50.6%+0
Open PBT
…/lib/Frontend/Analysis/MemoryProvenance.cppMS0V
153/317lines48.3%
80/326branches24.5%
153/317lines48.3%+0
80/326branches24.5%+0
Open PBT
…/lib/Frontend/IR/LoomDialect.cppMS0V
6/6lines100.0%
branchesnot measured
6/6lines100.0%+0
branchesnot measured
Open PBT
…/lib/Frontend/IR/LoomOps.cppMS0V
120/184lines65.2%
71/112branches63.4%
120/184lines65.2%+0
71/112branches63.4%+0
Open PBT
…/lib/Frontend/Lowering/ExactMemRefLayout.cppMS0V
61/143lines42.7%
26/80branches32.5%
61/143lines42.7%+0
26/80branches32.5%+0
Open PBT
…/lib/Frontend/Lowering/ExpandGraphMemrefCopyPass.cppMS0V
79/90lines87.8%
20/22branches90.9%
79/90lines87.8%+0
20/22branches90.9%+0
Open PBT
…/lib/Frontend/Lowering/GraphIndexLowering.cppMS0V
260/288lines90.3%
129/168branches76.8%
260/288lines90.3%+0
129/168branches76.8%+0
Open PBT
…/lib/Frontend/Lowering/GraphRegionAdmission.cppMS0V
58/110lines52.7%
29/92branches31.5%
58/110lines52.7%+0
29/92branches31.5%+0
Open PBT
…/lib/Frontend/Lowering/GraphRegionLowering.cppMS0V
1416/1626lines87.1%
532/680branches78.2%
1416/1626lines87.1%+0
532/680branches78.2%+0
Open PBT
…/lib/Frontend/Lowering/GraphStreamBoundaryLowering.cppMS0V
934/1072lines87.1%
299/432branches69.2%
934/1072lines87.1%+0
299/432branches69.2%+0
Open PBT
…/lib/Frontend/Lowering/GraphStreamBoundaryLowering.hMS0V
4/4lines100.0%
4/4branches100.0%
4/4lines100.0%+0
4/4branches100.0%+0
Open PBT
…/lib/Frontend/Lowering/LowerForToGraphPass.cppMS0V
1033/1240lines83.3%
374/540branches69.3%
1033/1240lines83.3%+0
374/540branches69.3%+0
Open PBT
…/lib/Frontend/Lowering/LowerForallToThreadPass.cppMS0V
30/34lines88.2%
2/4branches50.0%
30/34lines88.2%+0
2/4branches50.0%+0
Open PBT
…/lib/Frontend/Lowering/LowerGraphMemoryPass.cppMS0V
525/841lines62.4%
208/400branches52.0%
525/841lines62.4%+0
208/400branches52.0%+0
Open PBT
…/lib/Frontend/Lowering/Pipeline.cppMS0V
18/21lines85.7%
branchesnot measured
18/21lines85.7%+0
branchesnot measured
Open PBT
…/lib/Frontend/Lowering/RankedMemRefLowering.cppMS0V
60/133lines45.1%
27/94branches28.7%
60/133lines45.1%+0
27/94branches28.7%+0
Open PBT
…/lib/Frontend/Raising/DeduplicateSCFWhileStatePass.cppMS0V
13/135lines9.6%
0/60branches0.0%
13/135lines9.6%+0
0/60branches0.0%+0
Open PBT
…/lib/Frontend/Raising/LLVMArithToArithPass.cppMS0V
300/319lines94.0%
94/116branches81.0%
300/319lines94.0%+0
94/116branches81.0%+0
Open PBT
…/lib/Frontend/Raising/LLVMCfToCfPass.cppMS0V
77/80lines96.2%
8/8branches100.0%
77/80lines96.2%+0
8/8branches100.0%+0
Open PBT
…/lib/Frontend/Raising/LiftCFToSCFPass.cppMS0V
616/694lines88.8%
293/386branches75.9%
616/694lines88.8%+0
293/386branches75.9%+0
Open PBT
…/lib/Frontend/Raising/MaterializeFMulAddPass.cppMS0V
70/106lines66.0%
11/26branches42.3%
70/106lines66.0%+0
11/26branches42.3%+0
Open PBT
…/lib/Frontend/Raising/NormalizeLiftedSCFExitPass.cppMS0V
232/250lines92.8%
120/182branches65.9%
232/250lines92.8%+0
120/182branches65.9%+0
Open PBT
…/lib/Frontend/Raising/Pipeline.cppMS0V
10/19lines52.6%
branchesnot measured
10/19lines52.6%+0
branchesnot measured
Open PBT
…/lib/Frontend/Raising/SCFForToForallPass.cppMS0V
494/738lines66.9%
241/458branches52.6%
494/738lines66.9%+0
241/458branches52.6%+0
Open PBT
…/lib/Frontend/Raising/SCFWhileToForPass.cppMS0V
164/176lines93.2%
70/94branches74.5%
164/176lines93.2%+0
70/94branches74.5%+0
Open PBT
…/loom/tools/loom-raise-opt/loom-raise-opt.cppMS0V
12/12lines100.0%
branchesnot measured
12/12lines100.0%+0
branchesnot measured
Open PBT

Review PR: Regression test from seed 0

Review PR: Regression test from seed 421

Source passages for this PBT

Output is an initial Canonical Dataflow Program: module-level llvm.func symbols for imported LLVM callables, any genuinely native func.func helpers, module-level dataflow.thread definitions reached by zero or more dataflow.thread.launch ops; and module-level dataflow.graph definitions reached by zero or more dataflow.graph.launch ops inside thread definitions. No scf.* op is left inside any dataflow.graph definition's body after successful graph-region lowering.

docs/spec-compiler-part-3-dfg.md lines 102–109

Minimized conforming example

33lines−4lines removed

Review regression test PR

Minimized passing input
dataflow.thread private @thread_0 domain(#dataflow.thread_domain<dense>)(
    %limit: index, %memory: memref<?xindex>) ctrl (%ctrl: none) {
  "loom.spatial_region"(%limit, %memory)
      <{operandSegmentSizes = array<i32: 1, 0, 1, 0>,
        resultSegmentSizes = array<i32: 0, 0>}> ({
    ^bb0(%lim: index, %target: memref<?xindex>):
      %zero = arith.constant 0 : index
      %one = arith.constant 1 : index
      %two = arith.constant 2 : index
      scf.for %iv0 = %zero to %two step %one {
      %ld1 = memref.load %target[%zero] : memref<?xindex>
      %ad1 = arith.addi %ld1, %one : index
      memref.store %ad1, %target[%zero] : memref<?xindex>
      }
      %wr2 = scf.while (%wa2 = %zero) : (index) -> index {
        %wc2 = arith.cmpi ult, %wa2, %two : index
        scf.condition(%wc2) %wa2 : index
      } do {
      ^bb0(%wb2: index):
      memref.store %one, %target[%zero] : memref<?xindex>
        %wn2 = arith.addi %wb2, %one : index
        scf.yield %wn2 : index
      }
      "loom.spatial_yield"()
          <{operandSegmentSizes = array<i32: 0, 0>}> : () -> ()
  }) {graph_name = "g_thread_0", source_maps = []} :
      (index, memref<?xindex>) -> ()
  dataflow.thread.yield
}
dataflow.thread private @thread_1 domain(#dataflow.thread_domain<dense>)(
    %limit: index, %memory: memref<?xindex>) ctrl (%ctrl: none) {
  dataflow.thread.yield
}

Conditions

input conditions — what generated inputs satisfy

Conforming input

dataflow.thread private @thread_0 domain(#dataflow.thread_domain<dense>)(
    %limit: index, %memory: memref<?xindex>) ctrl (%ctrl: none) {
  "loom.spatial_region"(%limit, %memory)
      <{operandSegmentSizes = array<i32: 1, 0, 1, 0>,
        resultSegmentSizes = array<i32: 0, 0>}> ({
    ^bb0(%lim: index, %target: memref<?xindex>):
      %zero = arith.constant 0 : index
      %one = arith.constant 1 : index
      %two = arith.constant 2 : index
      %flag = arith.cmpi ult, %zero, %two : index
      scf.for %iv0 = %zero to %two step %one {
      %ld1 = memref.load %target[%zero] : memref<?xindex>
      %ad1 = arith.addi %ld1, %one : index
      memref.store %ad1, %target[%zero] : memref<?xindex>
      }
      %wr2 = scf.while (%wa2 = %zero) : (index) -> index {
        %wc2 = arith.cmpi ult, %wa2, %two : index
        scf.condition(%wc2) %wa2 : index
      } do {
      ^bb0(%wb2: index):
      memref.store %one, %target[%zero] : memref<?xindex>
        %wn2 = arith.addi %wb2, %one : index
        scf.yield %wn2 : index
      }
      "loom.spatial_yield"()
          <{operandSegmentSizes = array<i32: 0, 0>}> : () -> ()
  }) {graph_name = "g_thread_0", source_maps = []} :
      (index, memref<?xindex>) -> ()
  dataflow.thread.yield
}
dataflow.thread private @thread_1 domain(#dataflow.thread_domain<dense>)(
    %limit: index, %memory: memref<?xindex>) ctrl (%ctrl: none) {
  %izero = arith.constant 0 : index
  %ione = arith.constant 1 : index
  memref.store %ione, %memory[%izero] : memref<?xindex>
  dataflow.thread.yield
}

2 linked-input-69 · linked input 69

The recursive lowering contract accepts arbitrary nesting of scf.if, source-sequential scf.for, scf.while, and fixed-width graph-owned scf.parallel or effect-form scf.forall. A graph-owned parallel op must have a compile-time fixed domain, and all facts needed to establish ownership, width, and cross-lane legality must be present in the current Structured Program Candidate's semantic IR and resolved lowering config.

docs/spec-compiler-part-3-dfg.md lines 110–117

3 linked-input-76 · linked input 76

Input to graph extraction is an MLIR module containing module-scope dataflow.thread definitions. Every selected SpatialCore candidate is already materialized as a loom.spatial_region inside exactly one thread.

docs/spec-compiler-part-3-dfg.md lines 92–100

4 linked-input-83 · linked input 83

This section records Dataflow templates for SCF boundaries. Recursive lowering applies the same transfer to scf.if, normalized scf.index_switch, source-sequential scf.for, scf.while, and fixed-domain effect-form scf.parallel / scf.forall.

docs/spec-compiler-part-3-dfg.md lines 1454–1461

5 linked-input-92 · linked input 92

Dynamic-width, resource-mapped, and result or reduction forms fail before any graph is mutated; the graph owner does not infer ownership, serialization, unrolling, or reduction order.

docs/spec-compiler-part-3-dfg.md lines 117–120

6 linked-input-176 · linked input 176

The Structured Transfer Algebra defines graph-owned parallel composition only after the Structured Program Candidate has materialized its P[] ownership and schedule form in semantic SCF. That fixed-domain SCF is the transient input representation for mechanical lowering.

docs/spec-compiler-part-3-dfg.md lines 127–132

7 linked-input-203 · linked input 203

Between Parts 2 and 3, SCF optimization and DSE produce the selected Structured Program Candidate. That domain owns all performance-distinct structured choices.

docs/spec-compiler-part-3-dfg.md lines 87–90

Generator grammar · candidate.pg
// Structured Program Candidate inputs for loom-lower-scf-to-dfg.
// A module holds ownership-neutral llvm.func / func.func callables plus
// module-scope dataflow.thread definitions.  A selected SpatialCore candidate
// is already materialized as an explicit loom.spatial_region inside exactly
// one thread; its body is fixed-domain semantic SCF with arbitrary nesting of
// scf.if, source-sequential scf.for, scf.while, and fixed-width graph-owned
// scf.parallel / effect-form scf.forall.

start: {new V = 0; new T = 0; new N_THREADS = random.randint(1, 2); new WITH_CALLABLES = random.choice([0, 1])}
       callables threads;

// Imported Host / InstructionCore code stays in its llvm.func envelope;
// genuinely native func.func callables may coexist.  Both are
// ownership-neutral and must not authorize graph creation.
callables: (WITH_CALLABLES == 0) ''
         | (WITH_CALLABLES == 1) 'llvm.func @imported_callable(i64) -> i64\n'
                                 'func.func private @native_callable(%arg_a: i32) -> i32 {\n'
                                 '  return %arg_a : i32\n'
                                 '}\n';

threads: (T < N_THREADS) thread {T += 1} threads
       | (T == N_THREADS) '';

thread: {new SPATIAL = random.choice([0, 1, 1, 1])}
        'dataflow.thread private @' thread_name ' domain(#dataflow.thread_domain<dense>)(\n'
        '    %limit: index, %memory: memref<?xindex>) ctrl (%ctrl: none) {\n'
        thread_body
        '  dataflow.thread.yield\n'
        '}\n';

thread_name: ['thread_' + str(T)];
graph_name: ['g_thread_' + str(T)];

thread_body: (SPATIAL == 0) instruction_body
           | (SPATIAL == 1) spatial_body;

// InstructionCore-resident thread body code outside any spatial boundary.
instruction_body: '  %izero = arith.constant 0 : index\n'
                  '  %ione = arith.constant 1 : index\n'
                  '  memref.store %ione, %memory[%izero] : memref<?xindex>\n';

// The explicit selected SpatialCore candidate.  loom.spatial_region is
// IsolatedFromAbove, so every value used inside comes from its entry block
// arguments or from constants defined in the body.
spatial_body: {new DEPTH = random.randint(1, 3); new IDX = '%zero'}
              '  "loom.spatial_region"(%limit, %memory)\n'
              '      <{operandSegmentSizes = array<i32: 1, 0, 1, 0>,\n'
              '        resultSegmentSizes = array<i32: 0, 0>}> ({\n'
              '    ^bb0(%lim: index, %target: memref<?xindex>):\n'
              '      %zero = arith.constant 0 : index\n'
              '      %one = arith.constant 1 : index\n'
              '      %two = arith.constant 2 : index\n'
              '      %flag = arith.cmpi ult, %zero, %two : index\n'
              block
              '      "loom.spatial_yield"()\n'
              '          <{operandSegmentSizes = array<i32: 0, 0>}> : () -> ()\n'
              '  }) {graph_name = "' graph_name '", source_maps = []} :\n'
              '      (index, memref<?xindex>) -> ()\n';

block: {new STMT_N = random.randint(1, 2); new K = 0} stmts;

stmts: (K < STMT_N) stmt {K += 1} stmts
     | (K == STMT_N) '';

stmt: (DEPTH > 0) for_stmt
    | (DEPTH > 0) if_stmt
    | (DEPTH > 0) parallel_stmt
    | (DEPTH > 0) forall_stmt
    | (DEPTH > 0) while_stmt
    | leaf_stmt;

name_id: [str(ID)];

// Source-sequential scf.for with compile-time constant trip domain.
for_stmt: {new DEPTH = DEPTH - 1; new ID = V; V += 1}
          '      scf.for %iv' name_id ' = %zero to %two step %one {\n'
          block
          '      }\n';

if_stmt: {new DEPTH = DEPTH - 1; new ID = V; V += 1; new HAS_ELSE = random.choice([0, 1])}
         if_body;

if_body: (HAS_ELSE == 0) '      scf.if %flag {\n' block '      }\n'
       | (HAS_ELSE == 1) '      scf.if %flag {\n' block '      } else {\n' block '      }\n';

// Fixed-width graph-owned scf.parallel in effect form (no reduction results).
// Each lane derives a lane-disjoint element index from the enclosing index
// expression so cross-lane legality is established in the candidate itself.
parallel_stmt: {new DEPTH = DEPTH - 1; new ID = V; V += 1}
               '      scf.parallel (%iv' name_id ') = (%zero) to (%two) step (%one) {\n'
               lane_index
               parallel_block
               '        scf.reduce\n'
               '      }\n';

// Fixed-domain effect-form scf.forall (no shared_outs, no results).
forall_stmt: {new DEPTH = DEPTH - 1; new ID = V; V += 1}
             '      scf.forall (%iv' name_id ') in (2) {\n'
             lane_index
             parallel_block
             '      }\n';

lane_index: '        %mx' name_id ' = arith.muli ' idx_name ', %two : index\n'
            '        %ix' name_id ' = arith.addi %mx' name_id ', %iv' name_id ' : index\n';

idx_name: [IDX];

parallel_block: {new IDX = '%ix' + str(ID)} block;

while_stmt: {new DEPTH = DEPTH - 1; new ID = V; V += 1}
            '      %wr' name_id ' = scf.while (%wa' name_id ' = %zero) : (index) -> index {\n'
            '        %wc' name_id ' = arith.cmpi ult, %wa' name_id ', %two : index\n'
            '        scf.condition(%wc' name_id ') %wa' name_id ' : index\n'
            '      } do {\n'
            '      ^bb0(%wb' name_id ': index):\n'
            block
            '        %wn' name_id ' = arith.addi %wb' name_id ', %one : index\n'
            '        scf.yield %wn' name_id ' : index\n'
            '      }\n';

leaf_stmt: {new ID = V; V += 1; new LEAF_KIND = random.choice([0, 1])}
           leaf_body;

leaf_body: (LEAF_KIND == 0) '      memref.store %one, %target[' idx_name '] : memref<?xindex>\n'
         | (LEAF_KIND == 1) '      %ld' name_id ' = memref.load %target[' idx_name '] : memref<?xindex>\n'
                            '      %ad' name_id ' = arith.addi %ld' name_id ', %one : index\n'
                            '      memref.store %ad' name_id ', %target[' idx_name '] : memref<?xindex>\n';

output condition — what every compiled pair must satisfy

initial_canonical_dataflow_program · 5 assertion sites

derived from 1 passage: 1selected-output

Output is an initial Canonical Dataflow Program: module-level llvm.func symbols for imported LLVM callables, any genuinely native func.func helpers, module-level dataflow.thread definitions reached by zero or more dataflow.thread.launch ops; and module-level dataflow.graph definitions reached by zero or more dataflow.graph.launch ops inside thread definitions. No scf.* op is left inside any dataflow.graph definition's body after successful graph-region lowering.

Executable output condition · candidate.spct
postcondition initial_canonical_dataflow_program {
  language v0;
  vocabulary mlir = mlir.generic@1;

  metadata {
    project = "PolyArch/loom";
    revision = "48615bc5925ef4b9db8b4550b5d4322933cf4b7b";
    source = "docs/spec-compiler-part-3-dfg.md:L102-L109";
  }

  constraints {
    let threads = seq { op | op in output.operations where op.name == "dataflow.thread" };
    let graphs = seq { op | op in output.operations where op.name == "dataflow.graph" };
    let graph_launches = seq { op | op in output.operations where op.name == "dataflow.graph.launch" };
    let callables = seq { op | op in output.operations
                          where op.name == "llvm.func" or op.name == "func.func" };

    // Imported LLVM callables and genuinely native func.func helpers are
    // module-level symbols.
    forall c in callables {
      assert callable_is_module_level:
        c.parent_operation matches some($p) and p.name == "builtin.module";
    }

    // dataflow.thread definitions are module-level.
    forall t in threads {
      assert thread_is_module_level:
        t.parent_operation matches some($p) and p.name == "builtin.module";
    }

    // dataflow.graph definitions are module-level, and no scf.* op is left
    // inside any dataflow.graph definition's body.
    forall g in graphs {
      assert graph_is_module_level:
        g.parent_operation matches some($p) and p.name == "builtin.module";

      assert no_scf_in_graph_body:
        none op in mlir::descendants(g) where op.dialect == "scf";
    }

    // dataflow.graph definitions are reached by dataflow.graph.launch ops
    // inside thread definitions.
    forall l in graph_launches {
      assert graph_launch_inside_thread:
        exists t in threads where mlir::contains(t, l);
    }
  }
}
Minimized passing input
dataflow.thread private @thread_0 domain(#dataflow.thread_domain<dense>)(
    %limit: index, %memory: memref<?xindex>) ctrl (%ctrl: none) {
  "loom.spatial_region"(%limit, %memory)
      <{operandSegmentSizes = array<i32: 1, 0, 1, 0>,
        resultSegmentSizes = array<i32: 0, 0>}> ({
    ^bb0(%lim: index, %target: memref<?xindex>):
      %zero = arith.constant 0 : index
      %one = arith.constant 1 : index
      %two = arith.constant 2 : index
      scf.for %iv0 = %zero to %two step %one {
      %ld1 = memref.load %target[%zero] : memref<?xindex>
      %ad1 = arith.addi %ld1, %one : index
      memref.store %ad1, %target[%zero] : memref<?xindex>
      }
      %wr2 = scf.while (%wa2 = %zero) : (index) -> index {
        %wc2 = arith.cmpi ult, %wa2, %two : index
        scf.condition(%wc2) %wa2 : index
      } do {
      ^bb0(%wb2: index):
      memref.store %one, %target[%zero] : memref<?xindex>
        %wn2 = arith.addi %wb2, %one : index
        scf.yield %wn2 : index
      }
      "loom.spatial_yield"()
          <{operandSegmentSizes = array<i32: 0, 0>}> : () -> ()
  }) {graph_name = "g_thread_0", source_maps = []} :
      (index, memref<?xindex>) -> ()
  dataflow.thread.yield
}
dataflow.thread private @thread_1 domain(#dataflow.thread_domain<dense>)(
    %limit: index, %memory: memref<?xindex>) ctrl (%ctrl: none) {
  dataflow.thread.yield
}

Evidence

run20260911-081718started2026-09-11T08:17:18Zsubjectloom-raise-optsubject revision48615bc5925e

run results

1000saved inputs
964accepted
36rejected

output condition verdicts

964pass
Additional trace diagnostics

raw trace evidence

964accepted trace samples
431distinct trace classes
230classes seen once
sample pair · seed 0

generated input

dataflow.thread private @thread_0 domain(#dataflow.thread_domain<dense>)(
    %limit: index, %memory: memref<?xindex>) ctrl (%ctrl: none) {
  "loom.spatial_region"(%limit, %memory)
      <{operandSegmentSizes = array<i32: 1, 0, 1, 0>,
        resultSegmentSizes = array<i32: 0, 0>}> ({
    ^bb0(%lim: index, %target: memref<?xindex>):
      %zero = arith.constant 0 : index
      %one = arith.constant 1 : index
      %two = arith.constant 2 : index
      %flag = arith.cmpi ult, %zero, %two : index
      scf.for %iv0 = %zero to %two step %one {
      %ld1 = memref.load %target[%zero] : memref<?xindex>
      %ad1 = arith.addi %ld1, %one : index
      memref.store %ad1, %target[%zero] : memref<?xindex>
      }
      %wr2 = scf.while (%wa2 = %zero) : (index) -> index {
        %wc2 = arith.cmpi ult, %wa2, %two : index
        scf.condition(%wc2) %wa2 : index
      } do {
      ^bb0(%wb2: index):
      memref.store %one, %target[%zero] : memref<?xindex>
        %wn2 = arith.addi %wb2, %one : index
        scf.yield %wn2 : index
      }
      "loom.spatial_yield"()
          <{operandSegmentSizes = array<i32: 0, 0>}> : () -> ()
  }) {graph_name = "g_thread_0", source_maps = []} :
      (index, memref<?xindex>) -> ()
  dataflow.thread.yield
}
dataflow.thread private @thread_1 domain(#dataflow.thread_domain<dense>)(
    %limit: index, %memory: memref<?xindex>) ctrl (%ctrl: none) {
  %izero = arith.constant 0 : index
  %ione = arith.constant 1 : index
  memref.store %ione, %memory[%izero] : memref<?xindex>
  dataflow.thread.yield
}

observed generic output

"builtin.module"() ({
  "dataflow.thread"() <{domain = #dataflow.thread_domain<dense>, function_type = (index, memref<?xindex>) -> (), sym_name = "thread_0", sym_visibility = "private"}> ({
  ^bb0(%arg6: index, %arg7: memref<?xindex>, %arg8: none):
    %55 = "dataflow.graph.launch"(%arg8, %arg6, %arg7) <{callee = @g_thread_0, operandSegmentSizes = array<i32: 1, 1, 0, 1, 0>, resultSegmentSizes = array<i32: 0, 0, 1>, source_maps = []}> : (none, index, memref<?xindex>) -> none
    "dataflow.thread.yield"(%55) : (none) -> ()
  }) : () -> ()
  "dataflow.thread"() <{domain = #dataflow.thread_domain<dense>, function_type = (index, memref<?xindex>) -> (), sym_name = "thread_1", sym_visibility = "private"}> ({
  ^bb0(%arg3: index, %arg4: memref<?xindex>, %arg5: none):
    %53 = "arith.constant"() <{value = 0 : index}> : () -> index
    %54 = "arith.constant"() <{value = 1 : index}> : () -> index
    "memref.store"(%54, %arg4, %53) : (index, memref<?xindex>, index) -> ()
    "dataflow.thread.yield"() : () -> ()
  }) : () -> ()
  "dataflow.graph"() <{arg_attrs = [{}, {llvm.noalias}], function_type = (index, memref<?xindex>) -> (), input_segments = array<i32: 1, 0, 1>, result_segments = array<i32: 0, 0, 0>, sym_name = "g_thread_0", sym_visibility = "private"}> ({
  ^bb0(%arg0: none, %arg1: index, %arg2: memref<?xindex>):
    %0 = "dataflow.constant"(%arg0) <{const_value = 0 : index}> : (none) -> index
    %1 = "dataflow.constant"(%arg0) <{const_value = 1 : index}> : (none) -> index
    %2 = "dataflow.constant"(%arg0) <{const_value = 2 : index}> : (none) -> index
    %3 = "arith.index_cast"(%0) : (index) -> i32
    %4 = "arith.index_cast"(%2) : (index) -> i32
    %5 = "arith.index_cast"(%1) : (index) -> i32
    %6:2 = "dataflow.stream"(%3, %4, %5) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %7 = "dataflow.carry"(%6#1, %arg0, %8#1) : (i1, none, none) -> none
    %8:2 = "dataflow.demux"(%6#1, %7) : (i1, none) -> (none, none)
    %9 = "dataflow.invariant"(%6#1, %0) : (i1, index) -> index
    %10:2 = "dataflow.gate"(%6#1, %9) : (i1, index) -> (i1, index)
    %11:2 = "dataflow.demux"(%10#0, %10#1) : (i1, index) -> (index, index)
    %12 = "dataflow.invariant"(%6#1, %1) : (i1, index) -> index
    %13:2 = "dataflow.gate"(%6#1, %12) : (i1, index) -> (i1, index)
    %14:2 = "dataflow.demux"(%13#0, %13#1) : (i1, index) -> (index, index)
    %15 = "dataflow.carry"(%6#1, %arg0, %23) : (i1, none, none) -> none
    %16 = "dataflow.carry"(%6#1, %arg0, %23) : (i1, none, none) -> none
    %17:2 = "dataflow.demux"(%6#1, %15) : (i1, none) -> (none, none)
    %18:2 = "dataflow.demux"(%6#1, %16) : (i1, none) -> (none, none)
    %19:2 = "dataflow.sync"(%8#1, %17#1) : (none, none) -> (none, none)
    %20:2 = "dataflow.load"(%arg2, %10#1, %19#0) : (memref<?xindex>, index, none) -> (index, none)
    %21:2 = "dataflow.sync"(%18#1, %20#1) : (none, none) -> (none, none)
    %22 = "arith.addi"(%20#0, %13#1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %23 = "dataflow.store"(%arg2, %10#1, %22, %21#0) : (memref<?xindex>, index, index, none) -> none
    %24 = "arith.cmpi"(%3, %4) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %25:2 = "dataflow.demux"(%24, %8#0) : (i1, none) -> (none, none)
    %26:3 = "dataflow.sync"(%25#1, %11#0, %14#0) : (none, index, index) -> (none, index, index)
    %27 = "dataflow.mux"(%24, %25#0, %26#0) : (i1, none, none) -> none
    %28 = "dataflow.carry"(%32, %27, %34#1) : (i1, none, none) -> none
    %29 = "dataflow.carry"(%32, %0, %46) : (i1, index, index) -> index
    %30 = "dataflow.invariant"(%32, %2) : (i1, index) -> index
    %31 = "dataflow.carry"(%32, %18#0, %45) : (i1, none, none) -> none
    %32 = "arith.cmpi"(%29, %30) <{predicate = 6 : i64}> : (index, index) -> i1
    %33:2 = "dataflow.demux"(%32, %28) : (i1, none) -> (none, none)
    %34:2 = "dataflow.gate"(%32, %28) : (i1, none) -> (i1, none)
    %35:2 = "dataflow.demux"(%34#0, %34#1) : (i1, none) -> (none, none)
    %36:2 = "dataflow.demux"(%32, %31) : (i1, none) -> (none, none)
    %37:2 = "dataflow.demux"(%32, %29) : (i1, index) -> (index, index)
    %38 = "dataflow.invariant"(%32, %1) : (i1, index) -> index
    %39:2 = "dataflow.gate"(%32, %38) : (i1, index) -> (i1, index)
    %40:2 = "dataflow.demux"(%39#0, %39#1) : (i1, index) -> (index, index)
    %41 = "dataflow.invariant"(%32, %0) : (i1, index) -> index
    %42:2 = "dataflow.gate"(%32, %41) : (i1, index) -> (i1, index)
    %43:2 = "dataflow.demux"(%42#0, %42#1) : (i1, index) -> (index, index)
    %44:2 = "dataflow.sync"(%34#1, %36#1) : (none, none) -> (none, none)
    %45 = "dataflow.store"(%arg2, %42#1, %39#1, %44#0) : (memref<?xindex>, index, index, none) -> none
    %46 = "arith.addi"(%37#1, %39#1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %47:2 = "dataflow.demux"(%34#0, %34#1) : (i1, none) -> (none, none)
    %48:4 = "dataflow.sync"(%47#0, %35#0, %40#0, %43#0) : (none, none, index, index) -> (none, none, index, index)
    %49 = "dataflow.mux"(%34#0, %48#0, %47#1) : (i1, none, none) -> none
    %50 = "dataflow.carry"(%32, %27, %49) : (i1, none, none) -> none
    %51:2 = "dataflow.demux"(%32, %50) : (i1, none) -> (none, none)
    %52:2 = "dataflow.sync"(%33#0, %51#0) : (none, none) -> (none, none)
    "dataflow.graph.return"(%52#0, %36#0) <{operandSegmentSizes = array<i32: 0, 0, 0, 2>}> : (none, none) -> ()
  }) : () -> ()
}) : () -> ()

per-seed evidence (1000 seeds)
seedsubjectverdictartifacts
0accepted exit 0 · 0.6145423359994311sPASSinput · generic input · output · check report
1accepted exit 0 · 0.6470685439999215sPASSinput · generic input · output · check report
2accepted exit 0 · 0.6420437039996614sPASSinput · generic input · output · check report
3accepted exit 0 · 0.6838341549992037sPASSinput · generic input · output · check report
4accepted exit 0 · 0.6261242260006838sPASSinput · generic input · output · check report
5accepted exit 0 · 0.6005004590006138sPASSinput · generic input · output · check report
6accepted exit 0 · 0.6540464270001394sPASSinput · generic input · output · check report
7accepted exit 0 · 0.6450228249996144sPASSinput · generic input · output · check report
8accepted exit 0 · 0.6151961190007569sPASSinput · generic input · output · check report
9accepted exit 0 · 0.6222866450007132sPASSinput · generic input · output · check report
10accepted exit 0 · 0.6317636070016306sPASSinput · generic input · output · check report
11accepted exit 0 · 0.6640672649991757sPASSinput · generic input · output · check report
12accepted exit 0 · 0.6396178600007261sPASSinput · generic input · output · check report
13accepted exit 0 · 0.6524736879982811sPASSinput · generic input · output · check report
14accepted exit 0 · 0.6303594929995597sPASSinput · generic input · output · check report
15accepted exit 0 · 0.6721636290021706sPASSinput · generic input · output · check report
16accepted exit 0 · 0.6633270489983261sPASSinput · generic input · output · check report
17accepted exit 0 · 0.6188552230014466sPASSinput · generic input · output · check report
18accepted exit 0 · 0.6479024040017975sPASSinput · generic input · output · check report
19accepted exit 0 · 0.6239004749986634sPASSinput · generic input · output · check report
20accepted exit 0 · 0.6311752879992127sPASSinput · generic input · output · check report
21accepted exit 0 · 0.6511009440000635sPASSinput · generic input · output · check report
22accepted exit 0 · 0.6875905970009626sPASSinput · generic input · output · check report
23accepted exit 0 · 0.607542467998428sPASSinput · generic input · output · check report
24accepted exit 0 · 0.6621562059990538sPASSinput · generic input · output · check report
25accepted exit 0 · 0.6345357389982382sPASSinput · generic input · output · check report
26accepted exit 0 · 0.6285749769995164sPASSinput · generic input · output · check report
27accepted exit 0 · 0.6313372590011568sPASSinput · generic input · output · check report
28accepted exit 0 · 0.6705712920011138sPASSinput · generic input · output · check report
29accepted exit 0 · 0.6146910349998507sPASSinput · generic input · output · check report
30accepted exit 0 · 0.5672410510014743sPASSinput · generic input · output · check report
31accepted exit 0 · 0.5983944039980997sPASSinput · generic input · output · check report
32accepted exit 0 · 0.6135704560001614sPASSinput · generic input · output · check report
33accepted exit 0 · 0.5936424489991623sPASSinput · generic input · output · check report
34accepted exit 0 · 0.5862182410055539sPASSinput · generic input · output · check report
35accepted exit 0 · 0.6108106480023707sPASSinput · generic input · output · check report
36accepted exit 0 · 0.5679895989960642sPASSinput · generic input · output · check report
37accepted exit 0 · 0.6269588479990489sPASSinput · generic input · output · check report
38accepted exit 0 · 0.5900612070036004sPASSinput · generic input · output · check report
39accepted exit 0 · 0.6058886640021228sPASSinput · generic input · output · check report
40accepted exit 0 · 0.6555133250003564sPASSinput · generic input · output · check report
41accepted exit 0 · 0.5867431279984885sPASSinput · generic input · output · check report
42accepted exit 0 · 0.6586136939949938sPASSinput · generic input · output · check report
43accepted exit 0 · 0.5917059190032887sPASSinput · generic input · output · check report
44accepted exit 0 · 0.6262935080012539sPASSinput · generic input · output · check report
45accepted exit 0 · 0.6401116470005945sPASSinput · generic input · output · check report
46accepted exit 0 · 0.5504781859999639sPASSinput · generic input · output · check report
47accepted exit 0 · 0.5680673460010439sPASSinput · generic input · output · check report
48accepted exit 0 · 0.6154281700000865sPASSinput · generic input · output · check report
49accepted exit 0 · 0.5699726980019477sPASSinput · generic input · output · check report
50accepted exit 0 · 0.5797071999986656sPASSinput · generic input · output · check report
51accepted exit 0 · 0.6218002309979056sPASSinput · generic input · output · check report
52accepted exit 0 · 0.7497467050052364sPASSinput · generic input · output · check report
53accepted exit 0 · 0.5902286620039376sPASSinput · generic input · output · check report
54accepted exit 0 · 0.569988599003409sPASSinput · generic input · output · check report
55accepted exit 0 · 0.5772098650049884sPASSinput · generic input · output · check report
56accepted exit 0 · 0.6332762770034606sPASSinput · generic input · output · check report
57accepted exit 0 · 0.5963201249978738sPASSinput · generic input · output · check report
58accepted exit 0 · 0.5583676390015171sPASSinput · generic input · output · check report
59accepted exit 0 · 0.576383020998037sPASSinput · generic input · output · check report
60accepted exit 0 · 0.6139108279967331sPASSinput · generic input · output · check report
61accepted exit 0 · 0.6094938239984913sPASSinput · generic input · output · check report
62accepted exit 0 · 0.6057979949982837sPASSinput · generic input · output · check report
63accepted exit 0 · 0.5930566800016095sPASSinput · generic input · output · check report
64accepted exit 0 · 0.5665006809940678sPASSinput · generic input · output · check report
65accepted exit 0 · 0.5542492469976423sPASSinput · generic input · output · check report
66accepted exit 0 · 0.6264623969982495sPASSinput · generic input · output · check report
67accepted exit 0 · 0.5941123250013334sPASSinput · generic input · output · check report
68accepted exit 0 · 0.6509637630006182sPASSinput · generic input · output · check report
69accepted exit 0 · 0.5798770709952805sPASSinput · generic input · output · check report
70accepted exit 0 · 0.6058066610057722sPASSinput · generic input · output · check report
71rejected exit 1 · 0.6403959329982172s—input ·
stderr
<stdin>:15:7: error: loom-lower-graph-memory: parallel addresses have no comparable lane projection; address rank is 1
      scf.parallel (%iv0) = (%zero) to (%two) step (%one) {
      ^
<stdin>:15:7: note: see current operation: 
"scf.parallel"(%0, %2, %1) <{operandSegmentSizes = array<i32: 1, 1, 1, 0>}> ({
^bb0(%arg3: index):
  "scf.forall"() <{operandSegmentSizes = array<i32: 0, 0, 0, 0>, staticLowerBound = array<i64: 0>, staticStep = array<i64: 1>, staticUpperBound = array<i64: 2>}> ({
  ^bb0(%arg4: index):
    %5 = "arith.muli"(%arg3, %2) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %6 = "arith.addi"(%5, %arg4) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    "memref.store"(%1, %arg2, %6) : (index, memref<?xindex>, index) -> ()
    "scf.forall.in_parallel"() ({
    ^bb0:
    }) : () -> ()
  }) : () -> ()
  "scf.reduce"() : () -> ()
}) : (index, index, index) -> ()
72accepted exit 0 · 0.6326495000030263sPASSinput · generic input · output · check report
73accepted exit 0 · 0.5846943180004018sPASSinput · generic input · output · check report
74accepted exit 0 · 0.6401297839984181sPASSinput · generic input · output · check report
75accepted exit 0 · 0.6261506009977893sPASSinput · generic input · output · check report
76accepted exit 0 · 0.6100502499975846sPASSinput · generic input · output · check report
77accepted exit 0 · 0.6153661049975199sPASSinput · generic input · output · check report
78rejected exit 1 · 0.6287117259998922s—input ·
stderr
<stdin>:15:7: error: loom-lower-graph-memory: parallel addresses have no comparable lane projection; address rank is 1
      scf.parallel (%iv0) = (%zero) to (%two) step (%one) {
      ^
<stdin>:15:7: note: see current operation: 
"scf.parallel"(%0, %2, %1) <{operandSegmentSizes = array<i32: 1, 1, 1, 0>}> ({
^bb0(%arg3: index):
  "scf.forall"() <{operandSegmentSizes = array<i32: 0, 0, 0, 0>, staticLowerBound = array<i64: 0>, staticStep = array<i64: 1>, staticUpperBound = array<i64: 2>}> ({
  ^bb0(%arg4: index):
    %3 = "arith.muli"(%arg3, %2) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %4 = "arith.addi"(%3, %arg4) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    "memref.store"(%1, %arg2, %4) : (index, memref<?xindex>, index) -> ()
    "scf.forall.in_parallel"() ({
    ^bb0:
    }) : () -> ()
  }) : () -> ()
  "memref.store"(%1, %arg2, %arg3) : (index, memref<?xindex>, index) -> ()
  "scf.reduce"() : () -> ()
}) : (index, index, index) -> ()
79accepted exit 0 · 0.6157637630021782sPASSinput · generic input · output · check report
80accepted exit 0 · 0.5808015589936986sPASSinput · generic input · output · check report
81accepted exit 0 · 0.5989595179999014sPASSinput · generic input · output · check report
82accepted exit 0 · 0.5812148760014679sPASSinput · generic input · output · check report
83accepted exit 0 · 0.617599954995967sPASSinput · generic input · output · check report
84accepted exit 0 · 0.6098826960005681sPASSinput · generic input · output · check report
85accepted exit 0 · 0.6026469510034076sPASSinput · generic input · output · check report
86accepted exit 0 · 0.5844645869947271sPASSinput · generic input · output · check report
87accepted exit 0 · 0.5948239439967438sPASSinput · generic input · output · check report
88accepted exit 0 · 0.6292802750031115sPASSinput · generic input · output · check report
89accepted exit 0 · 0.5947744510049233sPASSinput · generic input · output · check report
90accepted exit 0 · 0.5661791279999306sPASSinput · generic input · output · check report
91accepted exit 0 · 0.6052838190007606sPASSinput · generic input · output · check report
92accepted exit 0 · 0.662234974995954sPASSinput · generic input · output · check report
93accepted exit 0 · 0.5616540099945269sPASSinput · generic input · output · check report
94accepted exit 0 · 0.6219465370013495sPASSinput · generic input · output · check report
95accepted exit 0 · 0.5688127190005616sPASSinput · generic input · output · check report
96accepted exit 0 · 0.5747261770011391sPASSinput · generic input · output · check report
97accepted exit 0 · 0.5717830139983562sPASSinput · generic input · output · check report
98accepted exit 0 · 0.5942429209972033sPASSinput · generic input · output · check report
99rejected exit 1 · 0.5659955330047524s—input ·
stderr
<stdin>:11:7: error: loom-lower-graph-memory: parallel addresses have no comparable lane projection; address rank is 1
      scf.forall (%iv0) in (2) {
      ^
<stdin>:11:7: note: see current operation: 
"scf.forall"() <{operandSegmentSizes = array<i32: 0, 0, 0, 0>, staticLowerBound = array<i64: 0>, staticStep = array<i64: 1>, staticUpperBound = array<i64: 2>}> ({
^bb0(%arg7: index):
  "scf.parallel"(%0, %2, %1) <{operandSegmentSizes = array<i32: 1, 1, 1, 0>}> ({
  ^bb0(%arg8: index):
    %8 = "arith.muli"(%arg7, %2) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %9 = "arith.addi"(%8, %arg8) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %10 = "memref.load"(%arg2, %9) : (memref<?xindex>, index) -> index
    %11 = "arith.addi"(%10, %1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    "memref.store"(%11, %arg2, %9) : (index, memref<?xindex>, index) -> ()
    "scf.reduce"() : () -> ()
  }) : (index, index, index) -> ()
  "scf.forall.in_parallel"() ({
  ^bb0:
  }) : () -> ()
}) : () -> ()
100accepted exit 0 · 0.40235307500006456sPASSinput · generic input · output · check report
101accepted exit 0 · 0.5126248839999334sPASSinput · generic input · output · check report
102accepted exit 0 · 0.4778932530000475sPASSinput · generic input · output · check report
103accepted exit 0 · 0.36194295199993576sPASSinput · generic input · output · check report
104accepted exit 0 · 0.450519297000028sPASSinput · generic input · output · check report
105accepted exit 0 · 0.4189863560000049sPASSinput · generic input · output · check report
106accepted exit 0 · 0.40506177699990076sPASSinput · generic input · output · check report
107accepted exit 0 · 0.3809177109999382sPASSinput · generic input · output · check report
108accepted exit 0 · 0.42083112900013475sPASSinput · generic input · output · check report
109accepted exit 0 · 0.4027198579999549sPASSinput · generic input · output · check report
110accepted exit 0 · 0.420979915000089sPASSinput · generic input · output · check report
111accepted exit 0 · 0.3521557449998909sPASSinput · generic input · output · check report
112accepted exit 0 · 0.41887497399989115sPASSinput · generic input · output · check report
113accepted exit 0 · 0.37061075199994775sPASSinput · generic input · output · check report
114rejected exit 1 · 0.3682345610000084s—input ·
stderr
<stdin>:0:0: error: canonical Dataflow publication failed: graph @g_thread_0 completion witness #0 is not statically one-shot
<stdin>:0:0: note: see current operation: 
"builtin.module"() ({
  "llvm.func"() <{CConv = #llvm.cconv<ccc>, function_type = !llvm.func<i64 (i64)>, linkage = #llvm.linkage<external>, sym_name = "imported_callable", unnamed_addr = 0 : i64, visibility_ = 0 : i64}> ({
  }) : () -> ()
  "func.func"() <{function_type = (i32) -> i32, sym_name = "native_callable", sym_visibility = "private"}> ({
  ^bb0(%arg6: i32):
    "func.return"(%arg6) : (i32) -> ()
  }) : () -> ()
  "dataflow.thread"() <{domain = #dataflow.thread_domain<dense>, function_type = (index, memref<?xindex>) -> (), sym_name = "thread_0", sym_visibility = "private"}> ({
  ^bb0(%arg3: index, %arg4: memref<?xindex>, %arg5: none):
    %80 = "dataflow.graph.launch"(%arg5, %arg3, %arg4) <{callee = @g_thread_0, operandSegmentSizes = array<i32: 1, 1, 0, 1, 0>, resultSegmentSizes = array<i32: 0, 0, 1>, source_maps = []}> : (none, index, memref<?xindex>) -> none
    "dataflow.thread.yield"(%80) : (none) -> ()
  }) : () -> ()
  "dataflow.graph"() <{arg_attrs = [{}, {llvm.noalias}], function_type = (index, memref<?xindex>) -> (), input_segments = array<i32: 1, 0, 1>, result_segments = array<i32: 0, 0, 0>, sym_name = "g_thread_0", sym_visibility = "private"}> ({
  ^bb0(%arg0: none, %arg1: index, %arg2: memref<?xindex>):
    %0 = "dataflow.constant"(%arg0) <{const_value = 0 : index}> : (none) -> index
    %1 = "dataflow.constant"(%arg0) <{const_value = 1 : index}> : (none) -> index
    %2 = "dataflow.constant"(%arg0) <{const_value = 2 : index}> : (none) -> index
    %3 = "arith.index_cast"(%0) : (index) -> i32
    %4 = "arith.index_cast"(%2) : (index) -> i32
    %5 = "arith.index_cast"(%1) : (index) -> i32
    %6:2 = "dataflow.stream"(%3, %4, %5) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %7 = "dataflow.carry"(%6#1, %arg0, %8#1) : (i1, none, none) -> none
    %8:2 = "dataflow.demux"(%6#1, %7) : (i1, none) -> (none, none)
    %9 = "dataflow.invariant"(%6#1, %0) : (i1, index) -> index
    %10:2 = "dataflow.gate"(%6#1, %9) : (i1, index) -> (i1, index)
    %11:2 = "dataflow.demux"(%10#0, %10#1) : (i1, index) -> (index, index)
    %12 = "dataflow.invariant"(%6#1, %1) : (i1, index) -> index
    %13:2 = "dataflow.gate"(%6#1, %12) : (i1, index) -> (i1, index)
    %14:2 = "dataflow.demux"(%13#0, %13#1) : (i1, index) -> (index, index)
    %15 = "dataflow.carry"(%6#1, %arg0, %23) : (i1, none, none) -> none
    %16 = "dataflow.carry"(%6#1, %arg0, %23) : (i1, none, none) -> none
    %17:2 = "dataflow.demux"(%6#1, %15) : (i1, none) -> (none, none)
    %18:2 = "dataflow.demux"(%6#1, %16) : (i1, none) -> (none, none)
    %19:2 = "dataflow.sync"(%8#1, %17#1) : (none, none) -> (none, none)
    %20:2 = "dataflow.load"(%arg2, %10#1, %19#0) : (memref<?xindex>, index, none) -> (index, none)
    %21:2 = "dataflow.sync"(%18#1, %20#1) : (none, none) -> (none, none)
    %22 = "arith.addi"(%20#0, %13#1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %23 = "dataflow.store"(%arg2, %10#1, %22, %21#0) : (memref<?xindex>, index, index, none) -> none
    %24 = "arith.cmpi"(%3, %4) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %25:2 = "dataflow.demux"(%24, %8#0) : (i1, none) -> (none, none)
    %26:3 = "dataflow.sync"(%25#1, %11#0, %14#0) : (none, index, index) -> (none, index, index)
    %27 = "dataflow.mux"(%24, %25#0, %26#0) : (i1, none, none) -> none
    %28 = "arith.index_cast"(%0) : (index) -> i32
    %29 = "arith.index_cast"(%2) : (index) -> i32
    %30 = "arith.index_cast"(%1) : (index) -> i32
    %31:2 = "dataflow.stream"(%28, %29, %30) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %32 = "dataflow.carry"(%31#1, %27, %33#1) : (i1, none, none) -> none
    %33:2 = "dataflow.demux"(%31#1, %32) : (i1, none) -> (none, none)
    %34 = "dataflow.invariant"(%31#1, %0) : (i1, index) -> index
    %35:2 = "dataflow.gate"(%31#1, %34) : (i1, index) -> (i1, index)
    %36:2 = "dataflow.demux"(%35#0, %35#1) : (i1, index) -> (index, index)
    %37 = "dataflow.invariant"(%31#1, %1) : (i1, index) -> index
    %38:2 = "dataflow.gate"(%31#1, %37) : (i1, index) -> (i1, index)
    %39:2 = "dataflow.demux"(%38#0, %38#1) : (i1, index) -> (index, index)
    %40 = "dataflow.carry"(%31#1, %17#0, %48) : (i1, none, none) -> none
    %41 = "dataflow.carry"(%31#1, %18#0, %48) : (i1, none, none) -> none
    %42:2 = "dataflow.demux"(%31#1, %40) : (i1, none) -> (none, none)
    %43:2 = "dataflow.demux"(%31#1, %41) : (i1, none) -> (none, none)
    %44:2 = "dataflow.sync"(%33#1, %42#1) : (none, none) -> (none, none)
    %45:2 = "dataflow.load"(%arg2, %35#1, %44#0) : (memref<?xindex>, index, none) -> (index, none)
    %46:2 = "dataflow.sync"(%43#1, %45#1) : (none, none) -> (none, none)
    %47 = "arith.addi"(%45#0, %38#1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %48 = "dataflow.store"(%arg2, %35#1, %47, %46#0) : (memref<?xindex>, index, index, none) -> none
    %49 = "arith.cmpi"(%28, %29) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %50:2 = "dataflow.demux"(%49, %33#0) : (i1, none) -> (none, none)
    %51:3 = "dataflow.sync"(%50#1, %36#0, %39#0) : (none, index, index) -> (none, index, index)
    %52 = "dataflow.mux"(%49, %50#0, %51#0) : (i1, none, none) -> none
    %53 = "arith.index_cast"(%0) : (index) -> i32
    %54 = "arith.index_cast"(%2) : (index) -> i32
    %55 = "arith.index_cast"(%1) : (index) -> i32
    %56:2 = "dataflow.stream"(%53, %54, %55) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %57 = "dataflow.carry"(%56#1, %27, %58#1) : (i1, none, none) -> none
    %58:2 = "dataflow.demux"(%56#1, %57) : (i1, none) -> (none, none)
    %59 = "dataflow.invariant"(%56#1, %1) : (i1, index) -> index
    %60:2 = "dataflow.gate"(%56#1, %59) : (i1, index) -> (i1, index)
    %61:2 = "dataflow.demux"(%60#0, %60#1) : (i1, index) -> (index, index)
    %62 = "dataflow.invariant"(%56#1, %1) : (i1, index) -> index
    %63:2 = "dataflow.gate"(%56#1, %62) : (i1, index) -> (i1, index)
    %64:2 = "dataflow.demux"(%63#0, %63#1) : (i1, index) -> (index, index)
    %65 = "dataflow.carry"(%56#1, %17#0, %73) : (i1, none, none) -> none
    %66 = "dataflow.carry"(%56#1, %18#0, %73) : (i1, none, none) -> none
    %67:2 = "dataflow.demux"(%56#1, %65) : (i1, none) -> (none, none)
    %68:2 = "dataflow.demux"(%56#1, %66) : (i1, none) -> (none, none)
    %69:2 = "dataflow.sync"(%58#1, %67#1) : (none, none) -> (none, none)
    %70:2 = "dataflow.load"(%arg2, %60#1, %69#0) : (memref<?xindex>, index, none) -> (index, none)
    %71:2 = "dataflow.sync"(%68#1, %70#1) : (none, none) -> (none, none)
    %72 = "arith.addi"(%70#0, %63#1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %73 = "dataflow.store"(%arg2, %60#1, %72, %71#0) : (memref<?xindex>, index, index, none) -> none
    %74 = "arith.cmpi"(%53, %54) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %75:2 = "dataflow.demux"(%74, %58#0) : (i1, none) -> (none, none)
    %76:3 = "dataflow.sync"(%75#1, %61#0, %64#0) : (none, index, index) -> (none, index, index)
    %77 = "dataflow.mux"(%74, %75#0, %76#0) : (i1, none, none) -> none
    %78:2 = "dataflow.sync"(%52, %77) : (none, none) -> (none, none)
    %79:2 = "dataflow.sync"(%43#0, %68#0) : (none, none) -> (none, none)
    "dataflow.graph.return"(%78#0, %79#0) <{operandSegmentSizes = array<i32: 0, 0, 0, 2>}> : (none, none) -> ()
  }) : () -> ()
}) : () -> ()
115accepted exit 0 · 0.423340971000016sPASSinput · generic input · output · check report
116accepted exit 0 · 0.4611312380000072sPASSinput · generic input · output · check report
117accepted exit 0 · 0.4135796739999478sPASSinput · generic input · output · check report
118accepted exit 0 · 0.46939040500001283sPASSinput · generic input · output · check report
119accepted exit 0 · 0.4690246699999534sPASSinput · generic input · output · check report
120accepted exit 0 · 0.40868452000017896sPASSinput · generic input · output · check report
121accepted exit 0 · 0.3547304930000337sPASSinput · generic input · output · check report
122accepted exit 0 · 0.3852834699998766sPASSinput · generic input · output · check report
123accepted exit 0 · 0.4151820920001228sPASSinput · generic input · output · check report
124accepted exit 0 · 0.4583245439998791sPASSinput · generic input · output · check report
125accepted exit 0 · 0.359179124000093sPASSinput · generic input · output · check report
126accepted exit 0 · 0.43659751399991364sPASSinput · generic input · output · check report
127accepted exit 0 · 0.3681144720001157sPASSinput · generic input · output · check report
128accepted exit 0 · 0.4076948669999183sPASSinput · generic input · output · check report
129accepted exit 0 · 0.40495711500011566sPASSinput · generic input · output · check report
130accepted exit 0 · 0.40605797200009874sPASSinput · generic input · output · check report
131accepted exit 0 · 0.44242506600016895sPASSinput · generic input · output · check report
132accepted exit 0 · 0.38791488400011076sPASSinput · generic input · output · check report
133accepted exit 0 · 0.4686336070001289sPASSinput · generic input · output · check report
134accepted exit 0 · 0.45174361699992005sPASSinput · generic input · output · check report
135accepted exit 0 · 0.4440924109999287sPASSinput · generic input · output · check report
136accepted exit 0 · 0.49685993899993264sPASSinput · generic input · output · check report
137accepted exit 0 · 0.46603613199999927sPASSinput · generic input · output · check report
138accepted exit 0 · 0.431638256000042sPASSinput · generic input · output · check report
139accepted exit 0 · 0.4512279900000067sPASSinput · generic input · output · check report
140accepted exit 0 · 0.43754740400004266sPASSinput · generic input · output · check report
141accepted exit 0 · 0.4190117220000502sPASSinput · generic input · output · check report
142accepted exit 0 · 0.4938154609999401sPASSinput · generic input · output · check report
143accepted exit 0 · 0.4806037500000002sPASSinput · generic input · output · check report
144accepted exit 0 · 0.4173799960001361sPASSinput · generic input · output · check report
145accepted exit 0 · 0.4181465660001322sPASSinput · generic input · output · check report
146accepted exit 0 · 0.4282056609999927sPASSinput · generic input · output · check report
147accepted exit 0 · 0.4034600340000907sPASSinput · generic input · output · check report
148accepted exit 0 · 0.4142477919999692sPASSinput · generic input · output · check report
149accepted exit 0 · 0.41833759499991174sPASSinput · generic input · output · check report
150accepted exit 0 · 0.44323167700008526sPASSinput · generic input · output · check report
151accepted exit 0 · 0.40231193499994333sPASSinput · generic input · output · check report
152accepted exit 0 · 0.414143107999962sPASSinput · generic input · output · check report
153accepted exit 0 · 0.4558124540001245sPASSinput · generic input · output · check report
154accepted exit 0 · 0.4125458929997876sPASSinput · generic input · output · check report
155accepted exit 0 · 0.3896951540000373sPASSinput · generic input · output · check report
156accepted exit 0 · 0.4282701189999898sPASSinput · generic input · output · check report
157accepted exit 0 · 0.424798285000179sPASSinput · generic input · output · check report
158accepted exit 0 · 0.4141483309999785sPASSinput · generic input · output · check report
159accepted exit 0 · 0.38280147399996167sPASSinput · generic input · output · check report
160accepted exit 0 · 0.38794517099995574sPASSinput · generic input · output · check report
161accepted exit 0 · 0.39768968499993207sPASSinput · generic input · output · check report
162accepted exit 0 · 0.3659498120000535sPASSinput · generic input · output · check report
163accepted exit 0 · 0.5024585529999968sPASSinput · generic input · output · check report
164accepted exit 0 · 0.4886764809998567sPASSinput · generic input · output · check report
165accepted exit 0 · 0.3770717600000353sPASSinput · generic input · output · check report
166accepted exit 0 · 0.369797379999909sPASSinput · generic input · output · check report
167accepted exit 0 · 0.41346026800010804sPASSinput · generic input · output · check report
168accepted exit 0 · 0.3405097319998731sPASSinput · generic input · output · check report
169accepted exit 0 · 0.34733715299989854sPASSinput · generic input · output · check report
170accepted exit 0 · 0.4041402170000765sPASSinput · generic input · output · check report
171accepted exit 0 · 0.35397933800004466sPASSinput · generic input · output · check report
172accepted exit 0 · 0.4112822810000125sPASSinput · generic input · output · check report
173accepted exit 0 · 0.30866894800010414sPASSinput · generic input · output · check report
174accepted exit 0 · 0.3717880030001197sPASSinput · generic input · output · check report
175accepted exit 0 · 0.39032930399980614sPASSinput · generic input · output · check report
176accepted exit 0 · 0.3703667199999927sPASSinput · generic input · output · check report
177accepted exit 0 · 0.3473062549999213sPASSinput · generic input · output · check report
178accepted exit 0 · 0.41664274300001125sPASSinput · generic input · output · check report
179accepted exit 0 · 0.38517321199992693sPASSinput · generic input · output · check report
180accepted exit 0 · 0.43552390299987565sPASSinput · generic input · output · check report
181accepted exit 0 · 0.35969269400015946sPASSinput · generic input · output · check report
182accepted exit 0 · 0.43784117099994546sPASSinput · generic input · output · check report
183accepted exit 0 · 0.4051660800000718sPASSinput · generic input · output · check report
184accepted exit 0 · 0.36138983799992275sPASSinput · generic input · output · check report
185accepted exit 0 · 0.36580210000010993sPASSinput · generic input · output · check report
186accepted exit 0 · 0.3829112409998743sPASSinput · generic input · output · check report
187accepted exit 0 · 0.34106939399998737sPASSinput · generic input · output · check report
188accepted exit 0 · 0.35996658199997sPASSinput · generic input · output · check report
189accepted exit 0 · 0.3883272489999854sPASSinput · generic input · output · check report
190accepted exit 0 · 0.4005884790001346sPASSinput · generic input · output · check report
191accepted exit 0 · 0.44724040699998113sPASSinput · generic input · output · check report
192accepted exit 0 · 0.46227716199996394sPASSinput · generic input · output · check report
193accepted exit 0 · 0.37525900599985107sPASSinput · generic input · output · check report
194accepted exit 0 · 0.38045301900001505sPASSinput · generic input · output · check report
195accepted exit 0 · 0.39464477499996065sPASSinput · generic input · output · check report
196accepted exit 0 · 0.40250564000007216sPASSinput · generic input · output · check report
197accepted exit 0 · 0.36476930200001334sPASSinput · generic input · output · check report
198accepted exit 0 · 0.35849178699982076sPASSinput · generic input · output · check report
199accepted exit 0 · 0.359364424999967sPASSinput · generic input · output · check report
200accepted exit 0 · 0.4706748720000178sPASSinput · generic input · output · check report
201accepted exit 0 · 0.39425319900010436sPASSinput · generic input · output · check report
202accepted exit 0 · 0.41231555900003514sPASSinput · generic input · output · check report
203accepted exit 0 · 0.3908247249999022sPASSinput · generic input · output · check report
204accepted exit 0 · 0.4401245439999002sPASSinput · generic input · output · check report
205accepted exit 0 · 0.45807828000010886sPASSinput · generic input · output · check report
206accepted exit 0 · 0.40569159200003924sPASSinput · generic input · output · check report
207accepted exit 0 · 0.41150694499992824sPASSinput · generic input · output · check report
208accepted exit 0 · 0.42559939200009467sPASSinput · generic input · output · check report
209accepted exit 0 · 0.36543860000006134sPASSinput · generic input · output · check report
210accepted exit 0 · 0.3869147670000075sPASSinput · generic input · output · check report
211accepted exit 0 · 0.3857852460000686sPASSinput · generic input · output · check report
212accepted exit 0 · 0.43378523499995936sPASSinput · generic input · output · check report
213accepted exit 0 · 0.3645862500000021sPASSinput · generic input · output · check report
214accepted exit 0 · 0.366252945000042sPASSinput · generic input · output · check report
215rejected exit 1 · 0.3998939010000413s—input ·
stderr
<stdin>:11:7: error: loom-lower-graph-memory: parallel addresses have no comparable lane projection; address rank is 1
      scf.forall (%iv0) in (2) {
      ^
<stdin>:11:7: note: see current operation: 
"scf.forall"() <{operandSegmentSizes = array<i32: 0, 0, 0, 0>, staticLowerBound = array<i64: 0>, staticStep = array<i64: 1>, staticUpperBound = array<i64: 2>}> ({
^bb0(%arg4: index):
  "scf.forall"() <{operandSegmentSizes = array<i32: 0, 0, 0, 0>, staticLowerBound = array<i64: 0>, staticStep = array<i64: 1>, staticUpperBound = array<i64: 2>}> ({
  ^bb0(%arg5: index):
    %4 = "arith.muli"(%arg4, %1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %5 = "arith.addi"(%4, %arg5) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %6 = "memref.load"(%arg2, %5) : (memref<?xindex>, index) -> index
    %7 = "arith.addi"(%6, %0) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    "memref.store"(%7, %arg2, %5) : (index, memref<?xindex>, index) -> ()
    "scf.forall.in_parallel"() ({
    ^bb0:
    }) : () -> ()
  }) : () -> ()
  %2 = "memref.load"(%arg2, %arg4) : (memref<?xindex>, index) -> index
  %3 = "arith.addi"(%2, %0) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
  "memref.store"(%3, %arg2, %arg4) : (index, memref<?xindex>, index) -> ()
  "scf.forall.in_parallel"() ({
  ^bb0:
  }) : () -> ()
}) : () -> ()
216accepted exit 0 · 0.4128338799998801sPASSinput · generic input · output · check report
217accepted exit 0 · 0.3529289549999248sPASSinput · generic input · output · check report
218accepted exit 0 · 0.39930784900002436sPASSinput · generic input · output · check report
219accepted exit 0 · 0.41130361800014725sPASSinput · generic input · output · check report
220accepted exit 0 · 0.4376226099998348sPASSinput · generic input · output · check report
221accepted exit 0 · 0.3885031700001491sPASSinput · generic input · output · check report
222accepted exit 0 · 0.45474748000015097sPASSinput · generic input · output · check report
223accepted exit 0 · 0.4440975269999399sPASSinput · generic input · output · check report
224accepted exit 0 · 0.4213855399998465sPASSinput · generic input · output · check report
225accepted exit 0 · 0.45189285500009646sPASSinput · generic input · output · check report
226accepted exit 0 · 0.4292410909999944sPASSinput · generic input · output · check report
227accepted exit 0 · 0.5362312499999007sPASSinput · generic input · output · check report
228accepted exit 0 · 0.4574170429998503sPASSinput · generic input · output · check report
229accepted exit 0 · 0.4498709150000195sPASSinput · generic input · output · check report
230accepted exit 0 · 0.4689128750001146sPASSinput · generic input · output · check report
231accepted exit 0 · 0.4406588480001119sPASSinput · generic input · output · check report
232accepted exit 0 · 0.44076040099980673sPASSinput · generic input · output · check report
233accepted exit 0 · 0.49018670800023756sPASSinput · generic input · output · check report
234accepted exit 0 · 0.4123387609997735sPASSinput · generic input · output · check report
235accepted exit 0 · 0.7582082469998568sPASSinput · generic input · output · check report
236accepted exit 0 · 0.4164396299997861sPASSinput · generic input · output · check report
237accepted exit 0 · 0.43387213500000144sPASSinput · generic input · output · check report
238accepted exit 0 · 0.48753644800035545sPASSinput · generic input · output · check report
239accepted exit 0 · 0.5151455190002707sPASSinput · generic input · output · check report
240accepted exit 0 · 0.5570289709999088sPASSinput · generic input · output · check report
241accepted exit 0 · 0.5524864120002348sPASSinput · generic input · output · check report
242accepted exit 0 · 0.3705097259999093sPASSinput · generic input · output · check report
243accepted exit 0 · 0.5107749559997501sPASSinput · generic input · output · check report
244accepted exit 0 · 0.4545081199999004sPASSinput · generic input · output · check report
245accepted exit 0 · 0.47674440199989476sPASSinput · generic input · output · check report
246rejected exit 1 · 0.6904180829997131s—input ·
stderr
<stdin>:15:7: error: loom-lower-graph-memory: parallel addresses have no comparable lane projection; address rank is 1
      scf.forall (%iv0) in (2) {
      ^
<stdin>:15:7: note: see current operation: 
"scf.forall"() <{operandSegmentSizes = array<i32: 0, 0, 0, 0>, staticLowerBound = array<i64: 0>, staticStep = array<i64: 1>, staticUpperBound = array<i64: 2>}> ({
^bb0(%arg3: index):
  "scf.parallel"(%0, %2, %1) <{operandSegmentSizes = array<i32: 1, 1, 1, 0>}> ({
  ^bb0(%arg4: index):
    %5 = "arith.muli"(%arg3, %2) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %6 = "arith.addi"(%5, %arg4) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    "memref.store"(%1, %arg2, %6) : (index, memref<?xindex>, index) -> ()
    "scf.reduce"() : () -> ()
  }) : (index, index, index) -> ()
  "scf.forall.in_parallel"() ({
  ^bb0:
  }) : () -> ()
}) : () -> ()
247accepted exit 0 · 0.48068791500008956sPASSinput · generic input · output · check report
248accepted exit 0 · 0.4569592740003827sPASSinput · generic input · output · check report
249accepted exit 0 · 0.45936112199979107sPASSinput · generic input · output · check report
250rejected exit 1 · 0.47518039299984594s—input ·
stderr
<stdin>:11:7: error: loom-lower-graph-memory: parallel addresses have no comparable lane projection; address rank is 1
      scf.forall (%iv0) in (2) {
      ^
<stdin>:11:7: note: see current operation: 
"scf.forall"() <{operandSegmentSizes = array<i32: 0, 0, 0, 0>, staticLowerBound = array<i64: 0>, staticStep = array<i64: 1>, staticUpperBound = array<i64: 2>}> ({
^bb0(%arg4: index):
  "scf.forall"() <{operandSegmentSizes = array<i32: 0, 0, 0, 0>, staticLowerBound = array<i64: 0>, staticStep = array<i64: 1>, staticUpperBound = array<i64: 2>}> ({
  ^bb0(%arg5: index):
    %4 = "arith.muli"(%arg4, %1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %5 = "arith.addi"(%4, %arg5) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    "memref.store"(%0, %arg2, %5) : (index, memref<?xindex>, index) -> ()
    "scf.forall.in_parallel"() ({
    ^bb0:
    }) : () -> ()
  }) : () -> ()
  "scf.forall.in_parallel"() ({
  ^bb0:
  }) : () -> ()
}) : () -> ()
251accepted exit 0 · 0.46634160500025246sPASSinput · generic input · output · check report
252accepted exit 0 · 0.4682090920000519sPASSinput · generic input · output · check report
253accepted exit 0 · 0.4804309170003762sPASSinput · generic input · output · check report
254accepted exit 0 · 0.3727765339999678sPASSinput · generic input · output · check report
255accepted exit 0 · 0.4758936170001107sPASSinput · generic input · output · check report
256accepted exit 0 · 0.46785308900007294sPASSinput · generic input · output · check report
257accepted exit 0 · 0.43141592200026935sPASSinput · generic input · output · check report
258accepted exit 0 · 0.4536450329997024sPASSinput · generic input · output · check report
259accepted exit 0 · 0.45744808700010253sPASSinput · generic input · output · check report
260accepted exit 0 · 0.46980343299992455sPASSinput · generic input · output · check report
261accepted exit 0 · 0.4364004619997104sPASSinput · generic input · output · check report
262accepted exit 0 · 0.4477925920000416sPASSinput · generic input · output · check report
263accepted exit 0 · 0.35574350800015964sPASSinput · generic input · output · check report
264accepted exit 0 · 0.3356719140001587sPASSinput · generic input · output · check report
265accepted exit 0 · 0.3899744059999648sPASSinput · generic input · output · check report
266accepted exit 0 · 0.37948271999994176sPASSinput · generic input · output · check report
267accepted exit 0 · 0.41868320000003223sPASSinput · generic input · output · check report
268accepted exit 0 · 0.3958513879997554sPASSinput · generic input · output · check report
269accepted exit 0 · 0.423660313000255sPASSinput · generic input · output · check report
270accepted exit 0 · 0.3784061700002894sPASSinput · generic input · output · check report
271accepted exit 0 · 0.43759834399998sPASSinput · generic input · output · check report
272accepted exit 0 · 0.37129558800006635sPASSinput · generic input · output · check report
273accepted exit 0 · 0.3912686809999286sPASSinput · generic input · output · check report
274accepted exit 0 · 0.46611583899994sPASSinput · generic input · output · check report
275accepted exit 0 · 0.39976785399994696sPASSinput · generic input · output · check report
276accepted exit 0 · 0.4030135509997308sPASSinput · generic input · output · check report
277accepted exit 0 · 0.39676735399962126sPASSinput · generic input · output · check report
278accepted exit 0 · 0.3958241039999848sPASSinput · generic input · output · check report
279accepted exit 0 · 0.4300077110001439sPASSinput · generic input · output · check report
280accepted exit 0 · 0.34554097499994896sPASSinput · generic input · output · check report
281accepted exit 0 · 0.5424327949999679sPASSinput · generic input · output · check report
282accepted exit 0 · 0.3350293749999764sPASSinput · generic input · output · check report
283accepted exit 0 · 0.4295467749998352sPASSinput · generic input · output · check report
284accepted exit 0 · 0.3942824349996954sPASSinput · generic input · output · check report
285accepted exit 0 · 0.3689880900001299sPASSinput · generic input · output · check report
286accepted exit 0 · 0.35460861299998214sPASSinput · generic input · output · check report
287accepted exit 0 · 0.4065114079999148sPASSinput · generic input · output · check report
288accepted exit 0 · 0.3622569490003116sPASSinput · generic input · output · check report
289accepted exit 0 · 0.38039356999979645sPASSinput · generic input · output · check report
290accepted exit 0 · 0.4545236769999974sPASSinput · generic input · output · check report
291rejected exit 1 · 0.4149805390002257s—input ·
stderr
<stdin>:0:0: error: canonical Dataflow publication failed: graph @g_thread_0 completion witness #0 is not statically one-shot
<stdin>:0:0: note: see current operation: 
"builtin.module"() ({
  "llvm.func"() <{CConv = #llvm.cconv<ccc>, function_type = !llvm.func<i64 (i64)>, linkage = #llvm.linkage<external>, sym_name = "imported_callable", unnamed_addr = 0 : i64, visibility_ = 0 : i64}> ({
  }) : () -> ()
  "func.func"() <{function_type = (i32) -> i32, sym_name = "native_callable", sym_visibility = "private"}> ({
  ^bb0(%arg6: i32):
    "func.return"(%arg6) : (i32) -> ()
  }) : () -> ()
  "dataflow.thread"() <{domain = #dataflow.thread_domain<dense>, function_type = (index, memref<?xindex>) -> (), sym_name = "thread_0", sym_visibility = "private"}> ({
  ^bb0(%arg3: index, %arg4: memref<?xindex>, %arg5: none):
    %98 = "dataflow.graph.launch"(%arg5, %arg3, %arg4) <{callee = @g_thread_0, operandSegmentSizes = array<i32: 1, 1, 0, 1, 0>, resultSegmentSizes = array<i32: 0, 0, 1>, source_maps = []}> : (none, index, memref<?xindex>) -> none
    "dataflow.thread.yield"(%98) : (none) -> ()
  }) : () -> ()
  "dataflow.graph"() <{arg_attrs = [{}, {llvm.noalias}], function_type = (index, memref<?xindex>) -> (), input_segments = array<i32: 1, 0, 1>, result_segments = array<i32: 0, 0, 0>, sym_name = "g_thread_0", sym_visibility = "private"}> ({
  ^bb0(%arg0: none, %arg1: index, %arg2: memref<?xindex>):
    %0 = "dataflow.constant"(%arg0) <{const_value = 0 : index}> : (none) -> index
    %1 = "dataflow.constant"(%arg0) <{const_value = 1 : index}> : (none) -> index
    %2 = "dataflow.constant"(%arg0) <{const_value = 2 : index}> : (none) -> index
    %3 = "arith.index_cast"(%0) : (index) -> i32
    %4 = "arith.index_cast"(%2) : (index) -> i32
    %5 = "arith.index_cast"(%1) : (index) -> i32
    %6:2 = "dataflow.stream"(%3, %4, %5) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %7 = "dataflow.carry"(%6#1, %arg0, %51#0) : (i1, none, none) -> none
    %8:2 = "dataflow.demux"(%6#1, %7) : (i1, none) -> (none, none)
    %9 = "dataflow.invariant"(%6#1, %2) : (i1, index) -> index
    %10:2 = "dataflow.gate"(%6#1, %9) : (i1, index) -> (i1, index)
    %11:2 = "dataflow.demux"(%10#0, %10#1) : (i1, index) -> (index, index)
    %12 = "dataflow.invariant"(%6#1, %0) : (i1, index) -> index
    %13:2 = "dataflow.gate"(%6#1, %12) : (i1, index) -> (i1, index)
    %14:2 = "dataflow.demux"(%13#0, %13#1) : (i1, index) -> (index, index)
    %15 = "dataflow.invariant"(%6#1, %1) : (i1, index) -> index
    %16:2 = "dataflow.gate"(%6#1, %15) : (i1, index) -> (i1, index)
    %17:2 = "dataflow.demux"(%16#0, %16#1) : (i1, index) -> (index, index)
    %18 = "dataflow.carry"(%6#1, %arg0, %31#0) : (i1, none, none) -> none
    %19 = "dataflow.carry"(%6#1, %arg0, %32#0) : (i1, none, none) -> none
    %20:2 = "dataflow.demux"(%6#1, %18) : (i1, none) -> (none, none)
    %21:2 = "dataflow.demux"(%6#1, %19) : (i1, none) -> (none, none)
    %22 = "dataflow.carry"(%27, %8#1, %29#1) : (i1, none, none) -> none
    %23 = "dataflow.carry"(%27, %13#1, %45) : (i1, index, index) -> index
    %24 = "dataflow.invariant"(%27, %10#1) : (i1, index) -> index
    %25 = "dataflow.carry"(%27, %20#1, %44) : (i1, none, none) -> none
    %26 = "dataflow.carry"(%27, %21#1, %44) : (i1, none, none) -> none
    %27 = "arith.cmpi"(%23, %24) <{predicate = 6 : i64}> : (index, index) -> i1
    %28:2 = "dataflow.demux"(%27, %22) : (i1, none) -> (none, none)
    %29:2 = "dataflow.gate"(%27, %22) : (i1, none) -> (i1, none)
    %30:2 = "dataflow.demux"(%29#0, %29#1) : (i1, none) -> (none, none)
    %31:2 = "dataflow.demux"(%27, %25) : (i1, none) -> (none, none)
    %32:2 = "dataflow.demux"(%27, %26) : (i1, none) -> (none, none)
    %33:2 = "dataflow.demux"(%27, %23) : (i1, index) -> (index, index)
    %34 = "dataflow.invariant"(%27, %13#1) : (i1, index) -> index
    %35:2 = "dataflow.gate"(%27, %34) : (i1, index) -> (i1, index)
    %36:2 = "dataflow.demux"(%35#0, %35#1) : (i1, index) -> (index, index)
    %37 = "dataflow.invariant"(%27, %16#1) : (i1, index) -> index
    %38:2 = "dataflow.gate"(%27, %37) : (i1, index) -> (i1, index)
    %39:2 = "dataflow.demux"(%38#0, %38#1) : (i1, index) -> (index, index)
    %40:2 = "dataflow.sync"(%29#1, %31#1) : (none, none) -> (none, none)
    %41:2 = "dataflow.load"(%arg2, %35#1, %40#0) : (memref<?xindex>, index, none) -> (index, none)
    %42:2 = "dataflow.sync"(%32#1, %41#1) : (none, none) -> (none, none)
    %43 = "arith.addi"(%41#0, %38#1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %44 = "dataflow.store"(%arg2, %35#1, %43, %42#0) : (memref<?xindex>, index, index, none) -> none
    %45 = "arith.addi"(%33#1, %38#1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %46:2 = "dataflow.demux"(%29#0, %29#1) : (i1, none) -> (none, none)
    %47:4 = "dataflow.sync"(%46#0, %30#0, %36#0, %39#0) : (none, none, index, index) -> (none, none, index, index)
    %48 = "dataflow.mux"(%29#0, %47#0, %46#1) : (i1, none, none) -> none
    %49 = "dataflow.carry"(%27, %8#1, %48) : (i1, none, none) -> none
    %50:2 = "dataflow.demux"(%27, %49) : (i1, none) -> (none, none)
    %51:2 = "dataflow.sync"(%28#0, %50#0) : (none, none) -> (none, none)
    %52 = "arith.cmpi"(%3, %4) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %53:2 = "dataflow.demux"(%52, %8#0) : (i1, none) -> (none, none)
    %54:4 = "dataflow.sync"(%53#1, %11#0, %14#0, %17#0) : (none, index, index, index) -> (none, index, index, index)
    %55 = "dataflow.mux"(%52, %53#0, %54#0) : (i1, none, none) -> none
    %56 = "arith.index_cast"(%0) : (index) -> i32
    %57 = "arith.index_cast"(%2) : (index) -> i32
    %58 = "arith.index_cast"(%1) : (index) -> i32
    %59:2 = "dataflow.stream"(%56, %57, %58) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %60 = "dataflow.carry"(%59#1, %55, %61#1) : (i1, none, none) -> none
    %61:2 = "dataflow.demux"(%59#1, %60) : (i1, none) -> (none, none)
    %62 = "dataflow.invariant"(%59#1, %1) : (i1, index) -> index
    %63:2 = "dataflow.gate"(%59#1, %62) : (i1, index) -> (i1, index)
    %64:2 = "dataflow.demux"(%63#0, %63#1) : (i1, index) -> (index, index)
    %65 = "dataflow.invariant"(%59#1, %0) : (i1, index) -> index
    %66:2 = "dataflow.gate"(%59#1, %65) : (i1, index) -> (i1, index)
    %67:2 = "dataflow.demux"(%66#0, %66#1) : (i1, index) -> (index, index)
    %68 = "dataflow.carry"(%59#1, %21#0, %71) : (i1, none, none) -> none
    %69:2 = "dataflow.demux"(%59#1, %68) : (i1, none) -> (none, none)
    %70:2 = "dataflow.sync"(%61#1, %69#1) : (none, none) -> (none, none)
    %71 = "dataflow.store"(%arg2, %66#1, %63#1, %70#0) : (memref<?xindex>, index, index, none) -> none
    %72 = "arith.cmpi"(%56, %57) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %73:2 = "dataflow.demux"(%72, %61#0) : (i1, none) -> (none, none)
    %74:3 = "dataflow.sync"(%73#1, %64#0, %67#0) : (none, index, index) -> (none, index, index)
    %75 = "dataflow.mux"(%72, %73#0, %74#0) : (i1, none, none) -> none
    %76 = "arith.index_cast"(%0) : (index) -> i32
    %77 = "arith.index_cast"(%2) : (index) -> i32
    %78 = "arith.index_cast"(%1) : (index) -> i32
    %79:2 = "dataflow.stream"(%76, %77, %78) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %80 = "dataflow.carry"(%79#1, %55, %81#1) : (i1, none, none) -> none
    %81:2 = "dataflow.demux"(%79#1, %80) : (i1, none) -> (none, none)
    %82 = "dataflow.invariant"(%79#1, %1) : (i1, index) -> index
    %83:2 = "dataflow.gate"(%79#1, %82) : (i1, index) -> (i1, index)
    %84:2 = "dataflow.demux"(%83#0, %83#1) : (i1, index) -> (index, index)
    %85 = "dataflow.invariant"(%79#1, %1) : (i1, index) -> index
    %86:2 = "dataflow.gate"(%79#1, %85) : (i1, index) -> (i1, index)
    %87:2 = "dataflow.demux"(%86#0, %86#1) : (i1, index) -> (index, index)
    %88 = "dataflow.carry"(%79#1, %21#0, %91) : (i1, none, none) -> none
    %89:2 = "dataflow.demux"(%79#1, %88) : (i1, none) -> (none, none)
    %90:2 = "dataflow.sync"(%81#1, %89#1) : (none, none) -> (none, none)
    %91 = "dataflow.store"(%arg2, %86#1, %83#1, %90#0) : (memref<?xindex>, index, index, none) -> none
    %92 = "arith.cmpi"(%76, %77) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %93:2 = "dataflow.demux"(%92, %81#0) : (i1, none) -> (none, none)
    %94:3 = "dataflow.sync"(%93#1, %84#0, %87#0) : (none, index, index) -> (none, index, index)
    %95 = "dataflow.mux"(%92, %93#0, %94#0) : (i1, none, none) -> none
    %96:2 = "dataflow.sync"(%75, %95) : (none, none) -> (none, none)
    %97:2 = "dataflow.sync"(%69#0, %89#0) : (none, none) -> (none, none)
    "dataflow.graph.return"(%96#0, %97#0) <{operandSegmentSizes = array<i32: 0, 0, 0, 2>}> : (none, none) -> ()
  }) : () -> ()
}) : () -> ()
292accepted exit 0 · 0.40076815600014015sPASSinput · generic input · output · check report
293accepted exit 0 · 0.3969310840002436sPASSinput · generic input · output · check report
294accepted exit 0 · 0.39689821399997527sPASSinput · generic input · output · check report
295accepted exit 0 · 0.3723625459997493sPASSinput · generic input · output · check report
296accepted exit 0 · 1.0490042520000316sPASSinput · generic input · output · check report
297accepted exit 0 · 0.4299789880001299sPASSinput · generic input · output · check report
298rejected exit 1 · 0.42505804199981867s—input ·
stderr
<stdin>:11:7: error: loom-lower-graph-memory: parallel addresses have no comparable lane projection; address rank is 1
      scf.parallel (%iv0) = (%zero) to (%two) step (%one) {
      ^
<stdin>:11:7: note: see current operation: 
"scf.parallel"(%0, %2, %1) <{operandSegmentSizes = array<i32: 1, 1, 1, 0>}> ({
^bb0(%arg3: index):
  "scf.forall"() <{operandSegmentSizes = array<i32: 0, 0, 0, 0>, staticLowerBound = array<i64: 0>, staticStep = array<i64: 1>, staticUpperBound = array<i64: 2>}> ({
  ^bb0(%arg4: index):
    %3 = "arith.muli"(%arg3, %2) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %4 = "arith.addi"(%3, %arg4) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %5 = "memref.load"(%arg2, %4) : (memref<?xindex>, index) -> index
    %6 = "arith.addi"(%5, %1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    "memref.store"(%6, %arg2, %4) : (index, memref<?xindex>, index) -> ()
    "scf.forall.in_parallel"() ({
    ^bb0:
    }) : () -> ()
  }) : () -> ()
  "scf.reduce"() : () -> ()
}) : (index, index, index) -> ()
299accepted exit 0 · 0.401984271999936sPASSinput · generic input · output · check report
300accepted exit 0 · 0.44573832100013533sPASSinput · generic input · output · check report
301accepted exit 0 · 0.4055288740000833sPASSinput · generic input · output · check report
302rejected exit 1 · 0.3672950480004147s—input ·
stderr
<stdin>:15:7: error: loom-lower-graph-memory: parallel addresses have no comparable lane projection; address rank is 1
      scf.forall (%iv0) in (2) {
      ^
<stdin>:15:7: note: see current operation: 
"scf.forall"() <{operandSegmentSizes = array<i32: 0, 0, 0, 0>, staticLowerBound = array<i64: 0>, staticStep = array<i64: 1>, staticUpperBound = array<i64: 2>}> ({
^bb0(%arg3: index):
  "scf.forall"() <{operandSegmentSizes = array<i32: 0, 0, 0, 0>, staticLowerBound = array<i64: 0>, staticStep = array<i64: 1>, staticUpperBound = array<i64: 2>}> ({
  ^bb0(%arg6: index):
    %8 = "arith.muli"(%arg3, %2) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %9 = "arith.addi"(%8, %arg6) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    "memref.store"(%1, %arg2, %9) : (index, memref<?xindex>, index) -> ()
    "scf.forall.in_parallel"() ({
    ^bb0:
    }) : () -> ()
  }) : () -> ()
  %3 = "scf.while"(%0) ({
  ^bb0(%arg5: index):
    %7 = "arith.cmpi"(%arg5, %2) <{predicate = 6 : i64}> : (index, index) -> i1
    "scf.condition"(%7, %arg5) : (i1, index) -> ()
  }, {
  ^bb0(%arg4: index):
    %4 = "memref.load"(%arg2, %arg3) : (memref<?xindex>, index) -> index
    %5 = "arith.addi"(%4, %1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    "memref.store"(%5, %arg2, %arg3) : (index, memref<?xindex>, index) -> ()
    %6 = "arith.addi"(%arg4, %1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    "scf.yield"(%6) : (index) -> ()
  }) : (index) -> index
  "scf.forall.in_parallel"() ({
  ^bb0:
  }) : () -> ()
}) : () -> ()
303accepted exit 0 · 0.4641807819998576sPASSinput · generic input · output · check report
304accepted exit 0 · 0.42174387699969884sPASSinput · generic input · output · check report
305accepted exit 0 · 0.42113506399982725sPASSinput · generic input · output · check report
306accepted exit 0 · 0.44163148799998453sPASSinput · generic input · output · check report
307accepted exit 0 · 0.3866561919999185sPASSinput · generic input · output · check report
308accepted exit 0 · 0.45383816500043395sPASSinput · generic input · output · check report
309accepted exit 0 · 0.4390751589999127sPASSinput · generic input · output · check report
310accepted exit 0 · 0.6185376240000551sPASSinput · generic input · output · check report
311accepted exit 0 · 0.47237050600006114sPASSinput · generic input · output · check report
312accepted exit 0 · 0.5020327610000095sPASSinput · generic input · output · check report
313accepted exit 0 · 0.36997213199992984sPASSinput · generic input · output · check report
314accepted exit 0 · 0.49305530500032546sPASSinput · generic input · output · check report
315accepted exit 0 · 0.3855277220000062sPASSinput · generic input · output · check report
316accepted exit 0 · 0.4868729159998111sPASSinput · generic input · output · check report
317accepted exit 0 · 0.417522719000317sPASSinput · generic input · output · check report
318accepted exit 0 · 0.40151456900002813sPASSinput · generic input · output · check report
319accepted exit 0 · 0.40763282799980516sPASSinput · generic input · output · check report
320accepted exit 0 · 0.36794903999998496sPASSinput · generic input · output · check report
321accepted exit 0 · 0.35915194800008976sPASSinput · generic input · output · check report
322accepted exit 0 · 0.39941751400010617sPASSinput · generic input · output · check report
323accepted exit 0 · 0.3901059790000545sPASSinput · generic input · output · check report
324accepted exit 0 · 0.37984942000002775sPASSinput · generic input · output · check report
325accepted exit 0 · 0.43609008099974744sPASSinput · generic input · output · check report
326accepted exit 0 · 0.5120750979999684sPASSinput · generic input · output · check report
327accepted exit 0 · 0.45346134900000834sPASSinput · generic input · output · check report
328accepted exit 0 · 0.406452378999802sPASSinput · generic input · output · check report
329accepted exit 0 · 0.4391216980002355sPASSinput · generic input · output · check report
330accepted exit 0 · 0.43322195999962787sPASSinput · generic input · output · check report
331accepted exit 0 · 0.5978747359999943sPASSinput · generic input · output · check report
332accepted exit 0 · 0.5225664960003087sPASSinput · generic input · output · check report
333accepted exit 0 · 0.5134288859999288sPASSinput · generic input · output · check report
334accepted exit 0 · 0.42703102099994794sPASSinput · generic input · output · check report
335accepted exit 0 · 0.6060450359996139sPASSinput · generic input · output · check report
336rejected exit 1 · 0.4162964809997902s—input ·
stderr
<stdin>:11:7: error: loom-lower-graph-memory: parallel addresses have no comparable lane projection; address rank is 1
      scf.parallel (%iv0) = (%zero) to (%two) step (%one) {
      ^
<stdin>:11:7: note: see current operation: 
"scf.parallel"(%0, %2, %1) <{operandSegmentSizes = array<i32: 1, 1, 1, 0>}> ({
^bb0(%arg5: index):
  "scf.parallel"(%0, %2, %1) <{operandSegmentSizes = array<i32: 1, 1, 1, 0>}> ({
  ^bb0(%arg6: index):
    %5 = "arith.muli"(%arg5, %2) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %6 = "arith.addi"(%5, %arg6) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %7 = "memref.load"(%arg2, %6) : (memref<?xindex>, index) -> index
    %8 = "arith.addi"(%7, %1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    "memref.store"(%8, %arg2, %6) : (index, memref<?xindex>, index) -> ()
    "scf.reduce"() : () -> ()
  }) : (index, index, index) -> ()
  "memref.store"(%1, %arg2, %arg5) : (index, memref<?xindex>, index) -> ()
  "scf.reduce"() : () -> ()
}) : (index, index, index) -> ()
337accepted exit 0 · 0.5536702670001432sPASSinput · generic input · output · check report
338accepted exit 0 · 0.5732283370002733sPASSinput · generic input · output · check report
339accepted exit 0 · 0.5715792080000028sPASSinput · generic input · output · check report
340accepted exit 0 · 0.48629817899973204sPASSinput · generic input · output · check report
341accepted exit 0 · 0.40568157000006977sPASSinput · generic input · output · check report
342accepted exit 0 · 0.4439555230001133sPASSinput · generic input · output · check report
343accepted exit 0 · 0.5337142230000609sPASSinput · generic input · output · check report
344accepted exit 0 · 0.4232374680000248sPASSinput · generic input · output · check report
345accepted exit 0 · 0.3610014500000034sPASSinput · generic input · output · check report
346accepted exit 0 · 0.45392102599998907sPASSinput · generic input · output · check report
347accepted exit 0 · 0.4074978550002015sPASSinput · generic input · output · check report
348accepted exit 0 · 0.3862427630001548sPASSinput · generic input · output · check report
349accepted exit 0 · 0.41690820300027553sPASSinput · generic input · output · check report
350accepted exit 0 · 0.39658494700006486sPASSinput · generic input · output · check report
351accepted exit 0 · 0.41694531699977233sPASSinput · generic input · output · check report
352accepted exit 0 · 0.4045239520000905sPASSinput · generic input · output · check report
353accepted exit 0 · 0.40582273099971644sPASSinput · generic input · output · check report
354accepted exit 0 · 0.426994564999859sPASSinput · generic input · output · check report
355accepted exit 0 · 0.4137240059999385sPASSinput · generic input · output · check report
356rejected exit 1 · 0.4206072779998067s—input ·
stderr
<stdin>:15:7: error: loom-lower-graph-memory: parallel addresses have no comparable lane projection; address rank is 1
      scf.parallel (%iv0) = (%zero) to (%two) step (%one) {
      ^
<stdin>:15:7: note: see current operation: 
"scf.parallel"(%0, %2, %1) <{operandSegmentSizes = array<i32: 1, 1, 1, 0>}> ({
^bb0(%arg3: index):
  "scf.forall"() <{operandSegmentSizes = array<i32: 0, 0, 0, 0>, staticLowerBound = array<i64: 0>, staticStep = array<i64: 1>, staticUpperBound = array<i64: 2>}> ({
  ^bb0(%arg4: index):
    %3 = "arith.muli"(%arg3, %2) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %4 = "arith.addi"(%3, %arg4) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %5 = "memref.load"(%arg2, %4) : (memref<?xindex>, index) -> index
    %6 = "arith.addi"(%5, %1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    "memref.store"(%6, %arg2, %4) : (index, memref<?xindex>, index) -> ()
    "scf.forall.in_parallel"() ({
    ^bb0:
    }) : () -> ()
  }) : () -> ()
  "scf.reduce"() : () -> ()
}) : (index, index, index) -> ()
357rejected exit 1 · 0.43366937300015707s—input ·
stderr
<stdin>:11:7: error: loom-lower-graph-memory: parallel addresses have no comparable lane projection; address rank is 1
      scf.forall (%iv0) in (2) {
      ^
<stdin>:11:7: note: see current operation: 
"scf.forall"() <{operandSegmentSizes = array<i32: 0, 0, 0, 0>, staticLowerBound = array<i64: 0>, staticStep = array<i64: 1>, staticUpperBound = array<i64: 2>}> ({
^bb0(%arg4: index):
  "scf.parallel"(%0, %2, %1) <{operandSegmentSizes = array<i32: 1, 1, 1, 0>}> ({
  ^bb0(%arg5: index):
    %9 = "arith.muli"(%arg4, %2) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %10 = "arith.addi"(%9, %arg5) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    "memref.store"(%1, %arg2, %10) : (index, memref<?xindex>, index) -> ()
    "scf.reduce"() : () -> ()
  }) : (index, index, index) -> ()
  %7 = "memref.load"(%arg2, %arg4) : (memref<?xindex>, index) -> index
  %8 = "arith.addi"(%7, %1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
  "memref.store"(%8, %arg2, %arg4) : (index, memref<?xindex>, index) -> ()
  "scf.forall.in_parallel"() ({
  ^bb0:
  }) : () -> ()
}) : () -> ()
358accepted exit 0 · 0.4165001750002375sPASSinput · generic input · output · check report
359accepted exit 0 · 0.4542252159999407sPASSinput · generic input · output · check report
360accepted exit 0 · 0.4404707949997828sPASSinput · generic input · output · check report
361accepted exit 0 · 0.41213810700037357sPASSinput · generic input · output · check report
362accepted exit 0 · 0.4055789030003325sPASSinput · generic input · output · check report
363accepted exit 0 · 0.42576564199998757sPASSinput · generic input · output · check report
364accepted exit 0 · 0.4413961069999459sPASSinput · generic input · output · check report
365accepted exit 0 · 0.42367407599977014sPASSinput · generic input · output · check report
366accepted exit 0 · 0.43159607100005815sPASSinput · generic input · output · check report
367accepted exit 0 · 0.4717731230002755sPASSinput · generic input · output · check report
368accepted exit 0 · 0.4287432650003211sPASSinput · generic input · output · check report
369accepted exit 0 · 0.46564857600014875sPASSinput · generic input · output · check report
370accepted exit 0 · 0.5010502060004001sPASSinput · generic input · output · check report
371accepted exit 0 · 0.4932199690001653sPASSinput · generic input · output · check report
372rejected exit 1 · 0.4705214939999678s—input ·
stderr
<stdin>:0:0: error: canonical Dataflow publication failed: graph @g_thread_0 completion witness #0 is not statically one-shot
<stdin>:0:0: note: see current operation: 
"builtin.module"() ({
  "dataflow.thread"() <{domain = #dataflow.thread_domain<dense>, function_type = (index, memref<?xindex>) -> (), sym_name = "thread_0", sym_visibility = "private"}> ({
  ^bb0(%arg9: index, %arg10: memref<?xindex>, %arg11: none):
    %145 = "dataflow.graph.launch"(%arg11, %arg9, %arg10) <{callee = @g_thread_0, operandSegmentSizes = array<i32: 1, 1, 0, 1, 0>, resultSegmentSizes = array<i32: 0, 0, 1>, source_maps = []}> : (none, index, memref<?xindex>) -> none
    "dataflow.thread.yield"(%145) : (none) -> ()
  }) : () -> ()
  "dataflow.thread"() <{domain = #dataflow.thread_domain<dense>, function_type = (index, memref<?xindex>) -> (), sym_name = "thread_1", sym_visibility = "private"}> ({
  ^bb0(%arg6: index, %arg7: memref<?xindex>, %arg8: none):
    %144 = "dataflow.graph.launch"(%arg8, %arg6, %arg7) <{callee = @g_thread_1, operandSegmentSizes = array<i32: 1, 1, 0, 1, 0>, resultSegmentSizes = array<i32: 0, 0, 1>, source_maps = []}> : (none, index, memref<?xindex>) -> none
    "dataflow.thread.yield"(%144) : (none) -> ()
  }) : () -> ()
  "dataflow.graph"() <{arg_attrs = [{}, {llvm.noalias}], function_type = (index, memref<?xindex>) -> (), input_segments = array<i32: 1, 0, 1>, result_segments = array<i32: 0, 0, 0>, sym_name = "g_thread_0", sym_visibility = "private"}> ({
  ^bb0(%arg3: none, %arg4: index, %arg5: memref<?xindex>):
    %3 = "dataflow.constant"(%arg3) <{const_value = 0 : index}> : (none) -> index
    %4 = "dataflow.constant"(%arg3) <{const_value = 1 : index}> : (none) -> index
    %5 = "dataflow.constant"(%arg3) <{const_value = 2 : index}> : (none) -> index
    %6 = "arith.index_cast"(%3) : (index) -> i32
    %7 = "arith.index_cast"(%5) : (index) -> i32
    %8 = "arith.index_cast"(%4) : (index) -> i32
    %9:2 = "dataflow.stream"(%6, %7, %8) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %10 = "dataflow.carry"(%9#1, %arg3, %11#1) : (i1, none, none) -> none
    %11:2 = "dataflow.demux"(%9#1, %10) : (i1, none) -> (none, none)
    %12 = "dataflow.invariant"(%9#1, %4) : (i1, index) -> index
    %13:2 = "dataflow.gate"(%9#1, %12) : (i1, index) -> (i1, index)
    %14:2 = "dataflow.demux"(%13#0, %13#1) : (i1, index) -> (index, index)
    %15 = "dataflow.invariant"(%9#1, %3) : (i1, index) -> index
    %16:2 = "dataflow.gate"(%9#1, %15) : (i1, index) -> (i1, index)
    %17:2 = "dataflow.demux"(%16#0, %16#1) : (i1, index) -> (index, index)
    %18 = "dataflow.carry"(%9#1, %arg3, %23) : (i1, none, none) -> none
    %19 = "dataflow.carry"(%9#1, %arg3, %23) : (i1, none, none) -> none
    %20:2 = "dataflow.demux"(%9#1, %18) : (i1, none) -> (none, none)
    %21:2 = "dataflow.demux"(%9#1, %19) : (i1, none) -> (none, none)
    %22:2 = "dataflow.sync"(%11#1, %21#1) : (none, none) -> (none, none)
    %23 = "dataflow.store"(%arg5, %16#1, %13#1, %22#0) : (memref<?xindex>, index, index, none) -> none
    %24 = "arith.cmpi"(%6, %7) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %25:2 = "dataflow.demux"(%24, %11#0) : (i1, none) -> (none, none)
    %26:3 = "dataflow.sync"(%25#1, %14#0, %17#0) : (none, index, index) -> (none, index, index)
    %27 = "dataflow.mux"(%24, %25#0, %26#0) : (i1, none, none) -> none
    %28 = "arith.index_cast"(%3) : (index) -> i32
    %29 = "arith.index_cast"(%5) : (index) -> i32
    %30 = "arith.index_cast"(%4) : (index) -> i32
    %31:2 = "dataflow.stream"(%28, %29, %30) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %32 = "dataflow.carry"(%31#1, %27, %33#1) : (i1, none, none) -> none
    %33:2 = "dataflow.demux"(%31#1, %32) : (i1, none) -> (none, none)
    %34 = "dataflow.invariant"(%31#1, %3) : (i1, index) -> index
    %35:2 = "dataflow.gate"(%31#1, %34) : (i1, index) -> (i1, index)
    %36:2 = "dataflow.demux"(%35#0, %35#1) : (i1, index) -> (index, index)
    %37 = "dataflow.invariant"(%31#1, %4) : (i1, index) -> index
    %38:2 = "dataflow.gate"(%31#1, %37) : (i1, index) -> (i1, index)
    %39:2 = "dataflow.demux"(%38#0, %38#1) : (i1, index) -> (index, index)
    %40 = "dataflow.carry"(%31#1, %20#0, %48) : (i1, none, none) -> none
    %41 = "dataflow.carry"(%31#1, %21#0, %48) : (i1, none, none) -> none
    %42:2 = "dataflow.demux"(%31#1, %40) : (i1, none) -> (none, none)
    %43:2 = "dataflow.demux"(%31#1, %41) : (i1, none) -> (none, none)
    %44:2 = "dataflow.sync"(%33#1, %42#1) : (none, none) -> (none, none)
    %45:2 = "dataflow.load"(%arg5, %35#1, %44#0) : (memref<?xindex>, index, none) -> (index, none)
    %46:2 = "dataflow.sync"(%43#1, %45#1) : (none, none) -> (none, none)
    %47 = "arith.addi"(%45#0, %38#1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %48 = "dataflow.store"(%arg5, %35#1, %47, %46#0) : (memref<?xindex>, index, index, none) -> none
    %49 = "arith.cmpi"(%28, %29) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %50:2 = "dataflow.demux"(%49, %33#0) : (i1, none) -> (none, none)
    %51:3 = "dataflow.sync"(%50#1, %36#0, %39#0) : (none, index, index) -> (none, index, index)
    %52 = "dataflow.mux"(%49, %50#0, %51#0) : (i1, none, none) -> none
    %53 = "arith.index_cast"(%3) : (index) -> i32
    %54 = "arith.index_cast"(%5) : (index) -> i32
    %55 = "arith.index_cast"(%4) : (index) -> i32
    %56:2 = "dataflow.stream"(%53, %54, %55) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %57 = "dataflow.carry"(%56#1, %arg3, %58#1) : (i1, none, none) -> none
    %58:2 = "dataflow.demux"(%56#1, %57) : (i1, none) -> (none, none)
    %59 = "dataflow.invariant"(%56#1, %4) : (i1, index) -> index
    %60:2 = "dataflow.gate"(%56#1, %59) : (i1, index) -> (i1, index)
    %61:2 = "dataflow.demux"(%60#0, %60#1) : (i1, index) -> (index, index)
    %62 = "dataflow.invariant"(%56#1, %4) : (i1, index) -> index
    %63:2 = "dataflow.gate"(%56#1, %62) : (i1, index) -> (i1, index)
    %64:2 = "dataflow.demux"(%63#0, %63#1) : (i1, index) -> (index, index)
    %65 = "dataflow.carry"(%56#1, %arg3, %70) : (i1, none, none) -> none
    %66 = "dataflow.carry"(%56#1, %arg3, %70) : (i1, none, none) -> none
    %67:2 = "dataflow.demux"(%56#1, %65) : (i1, none) -> (none, none)
    %68:2 = "dataflow.demux"(%56#1, %66) : (i1, none) -> (none, none)
    %69:2 = "dataflow.sync"(%58#1, %68#1) : (none, none) -> (none, none)
    %70 = "dataflow.store"(%arg5, %63#1, %60#1, %69#0) : (memref<?xindex>, index, index, none) -> none
    %71 = "arith.cmpi"(%53, %54) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %72:2 = "dataflow.demux"(%71, %58#0) : (i1, none) -> (none, none)
    %73:3 = "dataflow.sync"(%72#1, %61#0, %64#0) : (none, index, index) -> (none, index, index)
    %74 = "dataflow.mux"(%71, %72#0, %73#0) : (i1, none, none) -> none
    %75 = "arith.index_cast"(%3) : (index) -> i32
    %76 = "arith.index_cast"(%5) : (index) -> i32
    %77 = "arith.index_cast"(%4) : (index) -> i32
    %78:2 = "dataflow.stream"(%75, %76, %77) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %79 = "dataflow.carry"(%78#1, %74, %80#1) : (i1, none, none) -> none
    %80:2 = "dataflow.demux"(%78#1, %79) : (i1, none) -> (none, none)
    %81 = "dataflow.invariant"(%78#1, %4) : (i1, index) -> index
    %82:2 = "dataflow.gate"(%78#1, %81) : (i1, index) -> (i1, index)
    %83:2 = "dataflow.demux"(%82#0, %82#1) : (i1, index) -> (index, index)
    %84 = "dataflow.invariant"(%78#1, %4) : (i1, index) -> index
    %85:2 = "dataflow.gate"(%78#1, %84) : (i1, index) -> (i1, index)
    %86:2 = "dataflow.demux"(%85#0, %85#1) : (i1, index) -> (index, index)
    %87 = "dataflow.carry"(%78#1, %67#0, %95) : (i1, none, none) -> none
    %88 = "dataflow.carry"(%78#1, %68#0, %95) : (i1, none, none) -> none
    %89:2 = "dataflow.demux"(%78#1, %87) : (i1, none) -> (none, none)
    %90:2 = "dataflow.demux"(%78#1, %88) : (i1, none) -> (none, none)
    %91:2 = "dataflow.sync"(%80#1, %89#1) : (none, none) -> (none, none)
    %92:2 = "dataflow.load"(%arg5, %82#1, %91#0) : (memref<?xindex>, index, none) -> (index, none)
    %93:2 = "dataflow.sync"(%90#1, %92#1) : (none, none) -> (none, none)
    %94 = "arith.addi"(%92#0, %85#1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %95 = "dataflow.store"(%arg5, %82#1, %94, %93#0) : (memref<?xindex>, index, index, none) -> none
    %96 = "arith.cmpi"(%75, %76) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %97:2 = "dataflow.demux"(%96, %80#0) : (i1, none) -> (none, none)
    %98:3 = "dataflow.sync"(%97#1, %83#0, %86#0) : (none, index, index) -> (none, index, index)
    %99 = "dataflow.mux"(%96, %97#0, %98#0) : (i1, none, none) -> none
    %100:2 = "dataflow.sync"(%52, %99) : (none, none) -> (none, none)
    %101:2 = "dataflow.sync"(%43#0, %90#0) : (none, none) -> (none, none)
    %102 = "arith.index_cast"(%3) : (index) -> i32
    %103 = "arith.index_cast"(%5) : (index) -> i32
    %104 = "arith.index_cast"(%4) : (index) -> i32
    %105:2 = "dataflow.stream"(%102, %103, %104) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %106 = "dataflow.carry"(%105#1, %100#0, %107#1) : (i1, none, none) -> none
    %107:2 = "dataflow.demux"(%105#1, %106) : (i1, none) -> (none, none)
    %108 = "dataflow.invariant"(%105#1, %4) : (i1, index) -> index
    %109:2 = "dataflow.gate"(%105#1, %108) : (i1, index) -> (i1, index)
    %110:2 = "dataflow.demux"(%109#0, %109#1) : (i1, index) -> (index, index)
    %111 = "dataflow.invariant"(%105#1, %3) : (i1, index) -> index
    %112:2 = "dataflow.gate"(%105#1, %111) : (i1, index) -> (i1, index)
    %113:2 = "dataflow.demux"(%112#0, %112#1) : (i1, index) -> (index, index)
    %114 = "dataflow.carry"(%105#1, %101#0, %117) : (i1, none, none) -> none
    %115:2 = "dataflow.demux"(%105#1, %114) : (i1, none) -> (none, none)
    %116:2 = "dataflow.sync"(%107#1, %115#1) : (none, none) -> (none, none)
    %117 = "dataflow.store"(%arg5, %112#1, %109#1, %116#0) : (memref<?xindex>, index, index, none) -> none
    %118 = "arith.cmpi"(%102, %103) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %119:2 = "dataflow.demux"(%118, %107#0) : (i1, none) -> (none, none)
    %120:3 = "dataflow.sync"(%119#1, %110#0, %113#0) : (none, index, index) -> (none, index, index)
    %121 = "dataflow.mux"(%118, %119#0, %120#0) : (i1, none, none) -> none
    %122 = "arith.index_cast"(%3) : (index) -> i32
    %123 = "arith.index_cast"(%5) : (index) -> i32
    %124 = "arith.index_cast"(%4) : (index) -> i32
    %125:2 = "dataflow.stream"(%122, %123, %124) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %126 = "dataflow.carry"(%125#1, %100#0, %127#1) : (i1, none, none) -> none
    %127:2 = "dataflow.demux"(%125#1, %126) : (i1, none) -> (none, none)
    %128 = "dataflow.invariant"(%125#1, %4) : (i1, index) -> index
    %129:2 = "dataflow.gate"(%125#1, %128) : (i1, index) -> (i1, index)
    %130:2 = "dataflow.demux"(%129#0, %129#1) : (i1, index) -> (index, index)
    %131 = "dataflow.invariant"(%125#1, %4) : (i1, index) -> index
    %132:2 = "dataflow.gate"(%125#1, %131) : (i1, index) -> (i1, index)
    %133:2 = "dataflow.demux"(%132#0, %132#1) : (i1, index) -> (index, index)
    %134 = "dataflow.carry"(%125#1, %101#0, %137) : (i1, none, none) -> none
    %135:2 = "dataflow.demux"(%125#1, %134) : (i1, none) -> (none, none)
    %136:2 = "dataflow.sync"(%127#1, %135#1) : (none, none) -> (none, none)
    %137 = "dataflow.store"(%arg5, %132#1, %129#1, %136#0) : (memref<?xindex>, index, index, none) -> none
    %138 = "arith.cmpi"(%122, %123) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %139:2 = "dataflow.demux"(%138, %127#0) : (i1, none) -> (none, none)
    %140:3 = "dataflow.sync"(%139#1, %130#0, %133#0) : (none, index, index) -> (none, index, index)
    %141 = "dataflow.mux"(%138, %139#0, %140#0) : (i1, none, none) -> none
    %142:2 = "dataflow.sync"(%121, %141) : (none, none) -> (none, none)
    %143:2 = "dataflow.sync"(%115#0, %135#0) : (none, none) -> (none, none)
    "dataflow.graph.return"(%142#0, %143#0) <{operandSegmentSizes = array<i32: 0, 0, 0, 2>}> : (none, none) -> ()
  }) : () -> ()
  "dataflow.graph"() <{arg_attrs = [{}, {llvm.noalias}], function_type = (index, memref<?xindex>) -> (), input_segments = array<i32: 1, 0, 1>, result_segments = array<i32: 0, 0, 0>, sym_name = "g_thread_1", sym_visibility = "private"}> ({
  ^bb0(%arg0: none, %arg1: index, %arg2: memref<?xindex>):
    %0 = "dataflow.constant"(%arg0) <{const_value = 0 : index}> : (none) -> index
    %1 = "dataflow.constant"(%arg0) <{const_value = 1 : index}> : (none) -> index
    %2 = "dataflow.store"(%arg2, %0, %1, %arg0) : (memref<?xindex>, index, index, none) -> none
    "dataflow.graph.return"(%2) <{operandSegmentSizes = array<i32: 0, 0, 0, 1>}> : (none) -> ()
  }) : () -> ()
}) : () -> ()
373accepted exit 0 · 0.5203170839999984sPASSinput · generic input · output · check report
374accepted exit 0 · 0.45944578499984345sPASSinput · generic input · output · check report
375rejected exit 1 · 0.47154454399969836s—input ·
stderr
<stdin>:15:7: error: loom-lower-graph-memory: parallel addresses have no comparable lane projection; address rank is 1
      scf.parallel (%iv0) = (%zero) to (%two) step (%one) {
      ^
<stdin>:15:7: note: see current operation: 
"scf.parallel"(%0, %2, %1) <{operandSegmentSizes = array<i32: 1, 1, 1, 0>}> ({
^bb0(%arg3: index):
  "scf.forall"() <{operandSegmentSizes = array<i32: 0, 0, 0, 0>, staticLowerBound = array<i64: 0>, staticStep = array<i64: 1>, staticUpperBound = array<i64: 2>}> ({
  ^bb0(%arg4: index):
    %3 = "arith.muli"(%arg3, %2) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %4 = "arith.addi"(%3, %arg4) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    "memref.store"(%1, %arg2, %4) : (index, memref<?xindex>, index) -> ()
    "scf.forall.in_parallel"() ({
    ^bb0:
    }) : () -> ()
  }) : () -> ()
  "memref.store"(%1, %arg2, %arg3) : (index, memref<?xindex>, index) -> ()
  "scf.reduce"() : () -> ()
}) : (index, index, index) -> ()
376accepted exit 0 · 0.43989845699979924sPASSinput · generic input · output · check report
377accepted exit 0 · 0.49852515199972913sPASSinput · generic input · output · check report
378accepted exit 0 · 0.522110402999715sPASSinput · generic input · output · check report
379accepted exit 0 · 0.46744592900040516sPASSinput · generic input · output · check report
380rejected exit 1 · 0.4121767780002301s—input ·
stderr
<stdin>:0:0: error: canonical Dataflow publication failed: graph @g_thread_0 completion witness #0 is not statically one-shot
<stdin>:0:0: note: see current operation: 
"builtin.module"() ({
  "llvm.func"() <{CConv = #llvm.cconv<ccc>, function_type = !llvm.func<i64 (i64)>, linkage = #llvm.linkage<external>, sym_name = "imported_callable", unnamed_addr = 0 : i64, visibility_ = 0 : i64}> ({
  }) : () -> ()
  "func.func"() <{function_type = (i32) -> i32, sym_name = "native_callable", sym_visibility = "private"}> ({
  ^bb0(%arg12: i32):
    "func.return"(%arg12) : (i32) -> ()
  }) : () -> ()
  "dataflow.thread"() <{domain = #dataflow.thread_domain<dense>, function_type = (index, memref<?xindex>) -> (), sym_name = "thread_0", sym_visibility = "private"}> ({
  ^bb0(%arg9: index, %arg10: memref<?xindex>, %arg11: none):
    %170 = "dataflow.graph.launch"(%arg11, %arg9, %arg10) <{callee = @g_thread_0, operandSegmentSizes = array<i32: 1, 1, 0, 1, 0>, resultSegmentSizes = array<i32: 0, 0, 1>, source_maps = []}> : (none, index, memref<?xindex>) -> none
    "dataflow.thread.yield"(%170) : (none) -> ()
  }) : () -> ()
  "dataflow.thread"() <{domain = #dataflow.thread_domain<dense>, function_type = (index, memref<?xindex>) -> (), sym_name = "thread_1", sym_visibility = "private"}> ({
  ^bb0(%arg6: index, %arg7: memref<?xindex>, %arg8: none):
    %169 = "dataflow.graph.launch"(%arg8, %arg6, %arg7) <{callee = @g_thread_1, operandSegmentSizes = array<i32: 1, 1, 0, 1, 0>, resultSegmentSizes = array<i32: 0, 0, 1>, source_maps = []}> : (none, index, memref<?xindex>) -> none
    "dataflow.thread.yield"(%169) : (none) -> ()
  }) : () -> ()
  "dataflow.graph"() <{arg_attrs = [{}, {llvm.noalias}], function_type = (index, memref<?xindex>) -> (), input_segments = array<i32: 1, 0, 1>, result_segments = array<i32: 0, 0, 0>, sym_name = "g_thread_0", sym_visibility = "private"}> ({
  ^bb0(%arg3: none, %arg4: index, %arg5: memref<?xindex>):
    %11 = "dataflow.constant"(%arg3) <{const_value = 0 : index}> : (none) -> index
    %12 = "dataflow.constant"(%arg3) <{const_value = 1 : index}> : (none) -> index
    %13 = "dataflow.constant"(%arg3) <{const_value = 2 : index}> : (none) -> index
    %14 = "arith.addi"(%138#0, %12) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %15 = "arith.addi"(%164#0, %12) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %16 = "arith.index_cast"(%11) : (index) -> i32
    %17 = "arith.index_cast"(%13) : (index) -> i32
    %18 = "arith.index_cast"(%12) : (index) -> i32
    %19:2 = "dataflow.stream"(%16, %17, %18) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %20 = "dataflow.carry"(%19#1, %arg3, %21#1) : (i1, none, none) -> none
    %21:2 = "dataflow.demux"(%19#1, %20) : (i1, none) -> (none, none)
    %22 = "dataflow.invariant"(%19#1, %11) : (i1, index) -> index
    %23:2 = "dataflow.gate"(%19#1, %22) : (i1, index) -> (i1, index)
    %24:2 = "dataflow.demux"(%23#0, %23#1) : (i1, index) -> (index, index)
    %25 = "dataflow.invariant"(%19#1, %12) : (i1, index) -> index
    %26:2 = "dataflow.gate"(%19#1, %25) : (i1, index) -> (i1, index)
    %27:2 = "dataflow.demux"(%26#0, %26#1) : (i1, index) -> (index, index)
    %28 = "dataflow.carry"(%19#1, %arg3, %37) : (i1, none, none) -> none
    %29 = "dataflow.carry"(%19#1, %arg3, %37) : (i1, none, none) -> none
    %30:2 = "dataflow.demux"(%19#1, %28) : (i1, none) -> (none, none)
    %31:2 = "dataflow.demux"(%19#1, %29) : (i1, none) -> (none, none)
    %32:2 = "dataflow.sync"(%21#1, %30#1) : (none, none) -> (none, none)
    %33:2 = "dataflow.load"(%arg5, %23#1, %32#0) : (memref<?xindex>, index, none) -> (index, none)
    %34:2 = "dataflow.sync"(%31#1, %33#1) : (none, none) -> (none, none)
    %35 = "arith.addi"(%33#0, %26#1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %36 = "dataflow.store"(%arg5, %23#1, %35, %34#0) : (memref<?xindex>, index, index, none) -> none
    %37 = "dataflow.store"(%arg5, %23#1, %26#1, %36) : (memref<?xindex>, index, index, none) -> none
    %38 = "arith.cmpi"(%16, %17) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %39:2 = "dataflow.demux"(%38, %21#0) : (i1, none) -> (none, none)
    %40:3 = "dataflow.sync"(%39#1, %24#0, %27#0) : (none, index, index) -> (none, index, index)
    %41 = "dataflow.mux"(%38, %39#0, %40#0) : (i1, none, none) -> none
    %42 = "arith.index_cast"(%11) : (index) -> i32
    %43 = "arith.index_cast"(%13) : (index) -> i32
    %44 = "arith.index_cast"(%12) : (index) -> i32
    %45:2 = "dataflow.stream"(%42, %43, %44) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %46 = "dataflow.carry"(%45#1, %41, %47#1) : (i1, none, none) -> none
    %47:2 = "dataflow.demux"(%45#1, %46) : (i1, none) -> (none, none)
    %48 = "dataflow.invariant"(%45#1, %12) : (i1, index) -> index
    %49:2 = "dataflow.gate"(%45#1, %48) : (i1, index) -> (i1, index)
    %50:2 = "dataflow.demux"(%49#0, %49#1) : (i1, index) -> (index, index)
    %51 = "dataflow.invariant"(%45#1, %11) : (i1, index) -> index
    %52:2 = "dataflow.gate"(%45#1, %51) : (i1, index) -> (i1, index)
    %53:2 = "dataflow.demux"(%52#0, %52#1) : (i1, index) -> (index, index)
    %54 = "dataflow.carry"(%45#1, %30#0, %59) : (i1, none, none) -> none
    %55 = "dataflow.carry"(%45#1, %31#0, %59) : (i1, none, none) -> none
    %56:2 = "dataflow.demux"(%45#1, %54) : (i1, none) -> (none, none)
    %57:2 = "dataflow.demux"(%45#1, %55) : (i1, none) -> (none, none)
    %58:2 = "dataflow.sync"(%47#1, %57#1) : (none, none) -> (none, none)
    %59 = "dataflow.store"(%arg5, %52#1, %49#1, %58#0) : (memref<?xindex>, index, index, none) -> none
    %60 = "arith.cmpi"(%42, %43) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %61:2 = "dataflow.demux"(%60, %47#0) : (i1, none) -> (none, none)
    %62:3 = "dataflow.sync"(%61#1, %50#0, %53#0) : (none, index, index) -> (none, index, index)
    %63 = "dataflow.mux"(%60, %61#0, %62#0) : (i1, none, none) -> none
    %64 = "arith.index_cast"(%11) : (index) -> i32
    %65 = "arith.index_cast"(%13) : (index) -> i32
    %66 = "arith.index_cast"(%12) : (index) -> i32
    %67:2 = "dataflow.stream"(%64, %65, %66) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %68 = "dataflow.carry"(%67#1, %arg3, %69#1) : (i1, none, none) -> none
    %69:2 = "dataflow.demux"(%67#1, %68) : (i1, none) -> (none, none)
    %70 = "dataflow.invariant"(%67#1, %12) : (i1, index) -> index
    %71:2 = "dataflow.gate"(%67#1, %70) : (i1, index) -> (i1, index)
    %72:2 = "dataflow.demux"(%71#0, %71#1) : (i1, index) -> (index, index)
    %73 = "dataflow.invariant"(%67#1, %12) : (i1, index) -> index
    %74:2 = "dataflow.gate"(%67#1, %73) : (i1, index) -> (i1, index)
    %75:2 = "dataflow.demux"(%74#0, %74#1) : (i1, index) -> (index, index)
    %76 = "dataflow.carry"(%67#1, %arg3, %85) : (i1, none, none) -> none
    %77 = "dataflow.carry"(%67#1, %arg3, %85) : (i1, none, none) -> none
    %78:2 = "dataflow.demux"(%67#1, %76) : (i1, none) -> (none, none)
    %79:2 = "dataflow.demux"(%67#1, %77) : (i1, none) -> (none, none)
    %80:2 = "dataflow.sync"(%69#1, %78#1) : (none, none) -> (none, none)
    %81:2 = "dataflow.load"(%arg5, %71#1, %80#0) : (memref<?xindex>, index, none) -> (index, none)
    %82:2 = "dataflow.sync"(%79#1, %81#1) : (none, none) -> (none, none)
    %83 = "arith.addi"(%81#0, %74#1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %84 = "dataflow.store"(%arg5, %71#1, %83, %82#0) : (memref<?xindex>, index, index, none) -> none
    %85 = "dataflow.store"(%arg5, %71#1, %74#1, %84) : (memref<?xindex>, index, index, none) -> none
    %86 = "arith.cmpi"(%64, %65) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %87:2 = "dataflow.demux"(%86, %69#0) : (i1, none) -> (none, none)
    %88:3 = "dataflow.sync"(%87#1, %72#0, %75#0) : (none, index, index) -> (none, index, index)
    %89 = "dataflow.mux"(%86, %87#0, %88#0) : (i1, none, none) -> none
    %90 = "arith.index_cast"(%11) : (index) -> i32
    %91 = "arith.index_cast"(%13) : (index) -> i32
    %92 = "arith.index_cast"(%12) : (index) -> i32
    %93:2 = "dataflow.stream"(%90, %91, %92) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %94 = "dataflow.carry"(%93#1, %89, %95#1) : (i1, none, none) -> none
    %95:2 = "dataflow.demux"(%93#1, %94) : (i1, none) -> (none, none)
    %96 = "dataflow.invariant"(%93#1, %12) : (i1, index) -> index
    %97:2 = "dataflow.gate"(%93#1, %96) : (i1, index) -> (i1, index)
    %98:2 = "dataflow.demux"(%97#0, %97#1) : (i1, index) -> (index, index)
    %99 = "dataflow.invariant"(%93#1, %12) : (i1, index) -> index
    %100:2 = "dataflow.gate"(%93#1, %99) : (i1, index) -> (i1, index)
    %101:2 = "dataflow.demux"(%100#0, %100#1) : (i1, index) -> (index, index)
    %102 = "dataflow.carry"(%93#1, %78#0, %107) : (i1, none, none) -> none
    %103 = "dataflow.carry"(%93#1, %79#0, %107) : (i1, none, none) -> none
    %104:2 = "dataflow.demux"(%93#1, %102) : (i1, none) -> (none, none)
    %105:2 = "dataflow.demux"(%93#1, %103) : (i1, none) -> (none, none)
    %106:2 = "dataflow.sync"(%95#1, %105#1) : (none, none) -> (none, none)
    %107 = "dataflow.store"(%arg5, %100#1, %97#1, %106#0) : (memref<?xindex>, index, index, none) -> none
    %108 = "arith.cmpi"(%90, %91) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %109:2 = "dataflow.demux"(%108, %95#0) : (i1, none) -> (none, none)
    %110:3 = "dataflow.sync"(%109#1, %98#0, %101#0) : (none, index, index) -> (none, index, index)
    %111 = "dataflow.mux"(%108, %109#0, %110#0) : (i1, none, none) -> none
    %112:2 = "dataflow.sync"(%63, %111) : (none, none) -> (none, none)
    %113:2 = "dataflow.sync"(%56#0, %104#0) : (none, none) -> (none, none)
    %114:2 = "dataflow.sync"(%57#0, %105#0) : (none, none) -> (none, none)
    %115 = "arith.index_cast"(%11) : (index) -> i32
    %116 = "arith.index_cast"(%13) : (index) -> i32
    %117 = "arith.index_cast"(%12) : (index) -> i32
    %118:2 = "dataflow.stream"(%115, %116, %117) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %119 = "dataflow.carry"(%118#1, %112#0, %120#1) : (i1, none, none) -> none
    %120:2 = "dataflow.demux"(%118#1, %119) : (i1, none) -> (none, none)
    %121 = "dataflow.invariant"(%118#1, %12) : (i1, index) -> index
    %122:2 = "dataflow.gate"(%118#1, %121) : (i1, index) -> (i1, index)
    %123:2 = "dataflow.demux"(%122#0, %122#1) : (i1, index) -> (index, index)
    %124 = "dataflow.invariant"(%118#1, %11) : (i1, index) -> index
    %125:2 = "dataflow.gate"(%118#1, %124) : (i1, index) -> (i1, index)
    %126:2 = "dataflow.demux"(%125#0, %125#1) : (i1, index) -> (index, index)
    %127 = "dataflow.carry"(%118#1, %113#0, %132) : (i1, none, none) -> none
    %128 = "dataflow.carry"(%118#1, %114#0, %132) : (i1, none, none) -> none
    %129:2 = "dataflow.demux"(%118#1, %127) : (i1, none) -> (none, none)
    %130:2 = "dataflow.demux"(%118#1, %128) : (i1, none) -> (none, none)
    %131:2 = "dataflow.sync"(%120#1, %130#1) : (none, none) -> (none, none)
    %132 = "dataflow.store"(%arg5, %125#1, %122#1, %131#0) : (memref<?xindex>, index, index, none) -> none
    %133 = "arith.cmpi"(%115, %116) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %134:2 = "dataflow.demux"(%133, %120#0) : (i1, none) -> (none, none)
    %135:3 = "dataflow.sync"(%134#1, %123#0, %126#0) : (none, index, index) -> (none, index, index)
    %136 = "dataflow.mux"(%133, %134#0, %135#0) : (i1, none, none) -> none
    %137:2 = "dataflow.sync"(%136, %129#0) : (none, none) -> (none, none)
    %138:2 = "dataflow.load"(%arg5, %11, %137#0) : (memref<?xindex>, index, none) -> (index, none)
    %139:2 = "dataflow.sync"(%130#0, %138#1) : (none, none) -> (none, none)
    %140 = "dataflow.store"(%arg5, %11, %14, %139#0) : (memref<?xindex>, index, index, none) -> none
    %141 = "arith.index_cast"(%11) : (index) -> i32
    %142 = "arith.index_cast"(%13) : (index) -> i32
    %143 = "arith.index_cast"(%12) : (index) -> i32
    %144:2 = "dataflow.stream"(%141, %142, %143) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %145 = "dataflow.carry"(%144#1, %112#0, %146#1) : (i1, none, none) -> none
    %146:2 = "dataflow.demux"(%144#1, %145) : (i1, none) -> (none, none)
    %147 = "dataflow.invariant"(%144#1, %12) : (i1, index) -> index
    %148:2 = "dataflow.gate"(%144#1, %147) : (i1, index) -> (i1, index)
    %149:2 = "dataflow.demux"(%148#0, %148#1) : (i1, index) -> (index, index)
    %150 = "dataflow.invariant"(%144#1, %12) : (i1, index) -> index
    %151:2 = "dataflow.gate"(%144#1, %150) : (i1, index) -> (i1, index)
    %152:2 = "dataflow.demux"(%151#0, %151#1) : (i1, index) -> (index, index)
    %153 = "dataflow.carry"(%144#1, %113#0, %158) : (i1, none, none) -> none
    %154 = "dataflow.carry"(%144#1, %114#0, %158) : (i1, none, none) -> none
    %155:2 = "dataflow.demux"(%144#1, %153) : (i1, none) -> (none, none)
    %156:2 = "dataflow.demux"(%144#1, %154) : (i1, none) -> (none, none)
    %157:2 = "dataflow.sync"(%146#1, %156#1) : (none, none) -> (none, none)
    %158 = "dataflow.store"(%arg5, %151#1, %148#1, %157#0) : (memref<?xindex>, index, index, none) -> none
    %159 = "arith.cmpi"(%141, %142) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %160:2 = "dataflow.demux"(%159, %146#0) : (i1, none) -> (none, none)
    %161:3 = "dataflow.sync"(%160#1, %149#0, %152#0) : (none, index, index) -> (none, index, index)
    %162 = "dataflow.mux"(%159, %160#0, %161#0) : (i1, none, none) -> none
    %163:2 = "dataflow.sync"(%162, %155#0) : (none, none) -> (none, none)
    %164:2 = "dataflow.load"(%arg5, %12, %163#0) : (memref<?xindex>, index, none) -> (index, none)
    %165:2 = "dataflow.sync"(%156#0, %164#1) : (none, none) -> (none, none)
    %166 = "dataflow.store"(%arg5, %12, %15, %165#0) : (memref<?xindex>, index, index, none) -> none
    %167:2 = "dataflow.sync"(%136, %162) : (none, none) -> (none, none)
    %168:2 = "dataflow.sync"(%140, %166) : (none, none) -> (none, none)
    "dataflow.graph.return"(%167#0, %168#0) <{operandSegmentSizes = array<i32: 0, 0, 0, 2>}> : (none, none) -> ()
  }) : () -> ()
  "dataflow.graph"() <{arg_attrs = [{}, {llvm.noalias}], function_type = (index, memref<?xindex>) -> (), input_segments = array<i32: 1, 0, 1>, result_segments = array<i32: 0, 0, 0>, sym_name = "g_thread_1", sym_visibility = "private"}> ({
  ^bb0(%arg0: none, %arg1: index, %arg2: memref<?xindex>):
    %0 = "dataflow.constant"(%arg0) <{const_value = 1 : index}> : (none) -> index
    %1 = "dataflow.constant"(%arg0) <{const_value = 0 : index}> : (none) -> index
    %2 = "arith.addi"(%4#0, %0) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %3 = "arith.addi"(%7#0, %0) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %4:2 = "dataflow.load"(%arg2, %1, %arg0) : (memref<?xindex>, index, none) -> (index, none)
    %5 = "dataflow.store"(%arg2, %1, %2, %4#1) : (memref<?xindex>, index, index, none) -> none
    %6 = "dataflow.store"(%arg2, %1, %0, %5) : (memref<?xindex>, index, index, none) -> none
    %7:2 = "dataflow.load"(%arg2, %0, %arg0) : (memref<?xindex>, index, none) -> (index, none)
    %8 = "dataflow.store"(%arg2, %0, %3, %7#1) : (memref<?xindex>, index, index, none) -> none
    %9 = "dataflow.store"(%arg2, %0, %0, %8) : (memref<?xindex>, index, index, none) -> none
    %10:2 = "dataflow.sync"(%6, %9) : (none, none) -> (none, none)
    "dataflow.graph.return"(%10#0) <{operandSegmentSizes = array<i32: 0, 0, 0, 1>}> : (none) -> ()
  }) : () -> ()
}) : () -> ()
381accepted exit 0 · 0.38228424799990535sPASSinput · generic input · output · check report
382accepted exit 0 · 0.4186189580000246sPASSinput · generic input · output · check report
383accepted exit 0 · 0.4040284679999786sPASSinput · generic input · output · check report
384accepted exit 0 · 0.4140239670000483sPASSinput · generic input · output · check report
385accepted exit 0 · 0.446787822999795sPASSinput · generic input · output · check report
386accepted exit 0 · 0.45033977299999606sPASSinput · generic input · output · check report
387accepted exit 0 · 0.4692489230001229sPASSinput · generic input · output · check report
388accepted exit 0 · 0.41522289500016996sPASSinput · generic input · output · check report
389accepted exit 0 · 0.3663440410000476sPASSinput · generic input · output · check report
390accepted exit 0 · 0.47680540400006066sPASSinput · generic input · output · check report
391accepted exit 0 · 0.43206558300016695sPASSinput · generic input · output · check report
392accepted exit 0 · 0.38692931500008854sPASSinput · generic input · output · check report
393accepted exit 0 · 0.43162598599974444sPASSinput · generic input · output · check report
394accepted exit 0 · 0.39291072300011365sPASSinput · generic input · output · check report
395accepted exit 0 · 0.4661229800003639sPASSinput · generic input · output · check report
396accepted exit 0 · 0.45257920399990326sPASSinput · generic input · output · check report
397accepted exit 0 · 0.4033694489999107sPASSinput · generic input · output · check report
398accepted exit 0 · 0.36563698000009026sPASSinput · generic input · output · check report
399accepted exit 0 · 0.3928232759999446sPASSinput · generic input · output · check report
400accepted exit 0 · 0.06717719400012356sPASSinput · generic input · output · check report
401accepted exit 0 · 0.10076951099972575sPASSinput · generic input · output · check report
402accepted exit 0 · 0.0437919169999077sPASSinput · generic input · output · check report
403accepted exit 0 · 0.056275721000019985sPASSinput · generic input · output · check report
404accepted exit 0 · 0.05908529099997395sPASSinput · generic input · output · check report
405accepted exit 0 · 0.09428424999987328sPASSinput · generic input · output · check report
406accepted exit 0 · 0.04584502900024745sPASSinput · generic input · output · check report
407accepted exit 0 · 0.0663207389998206sPASSinput · generic input · output · check report
408accepted exit 0 · 0.06113178200030234sPASSinput · generic input · output · check report
409accepted exit 0 · 0.09059936600033325sPASSinput · generic input · output · check report
410accepted exit 0 · 0.05691201599984197sPASSinput · generic input · output · check report
411accepted exit 0 · 0.05851507900024444sPASSinput · generic input · output · check report
412accepted exit 0 · 0.050034806999974535sPASSinput · generic input · output · check report
413accepted exit 0 · 0.0565049439996983sPASSinput · generic input · output · check report
414accepted exit 0 · 0.05178858299996136sPASSinput · generic input · output · check report
415accepted exit 0 · 0.05284302500012927sPASSinput · generic input · output · check report
416accepted exit 0 · 0.09224095000035959sPASSinput · generic input · output · check report
417accepted exit 0 · 0.05859162800015838sPASSinput · generic input · output · check report
418accepted exit 0 · 0.09061048900002788sPASSinput · generic input · output · check report
419accepted exit 0 · 0.08607219299983626sPASSinput · generic input · output · check report
420accepted exit 0 · 0.05091789100015376sPASSinput · generic input · output · check report
421accepted exit 0 · 0.09442069199985781sPASSinput · generic input · output · check report
422accepted exit 0 · 0.05283129800000097sPASSinput · generic input · output · check report
423accepted exit 0 · 0.052774742000110564sPASSinput · generic input · output · check report
424accepted exit 0 · 0.0898092910001651sPASSinput · generic input · output · check report
425accepted exit 0 · 0.04801879700016798sPASSinput · generic input · output · check report
426accepted exit 0 · 0.05531123100035984sPASSinput · generic input · output · check report
427accepted exit 0 · 0.04694002099995487sPASSinput · generic input · output · check report
428accepted exit 0 · 0.08916186800024661sPASSinput · generic input · output · check report
429accepted exit 0 · 0.09336055899984785sPASSinput · generic input · output · check report
430accepted exit 0 · 0.05782070799978101sPASSinput · generic input · output · check report
431accepted exit 0 · 0.05939342400006353sPASSinput · generic input · output · check report
432accepted exit 0 · 0.052505871999983356sPASSinput · generic input · output · check report
433accepted exit 0 · 0.08484916899988093sPASSinput · generic input · output · check report
434accepted exit 0 · 0.07285141400006978sPASSinput · generic input · output · check report
435rejected exit 1 · 0.0898620299999493s—input ·
stderr
<stdin>:15:7: error: loom-lower-graph-memory: parallel addresses have no comparable lane projection; address rank is 1
      scf.forall (%iv0) in (2) {
      ^
<stdin>:15:7: note: see current operation: 
"scf.forall"() <{operandSegmentSizes = array<i32: 0, 0, 0, 0>, staticLowerBound = array<i64: 0>, staticStep = array<i64: 1>, staticUpperBound = array<i64: 2>}> ({
^bb0(%arg3: index):
  "scf.forall"() <{operandSegmentSizes = array<i32: 0, 0, 0, 0>, staticLowerBound = array<i64: 0>, staticStep = array<i64: 1>, staticUpperBound = array<i64: 2>}> ({
  ^bb0(%arg4: index):
    %2 = "arith.muli"(%arg3, %1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %3 = "arith.addi"(%2, %arg4) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    "memref.store"(%0, %arg2, %3) : (index, memref<?xindex>, index) -> ()
    "scf.forall.in_parallel"() ({
    ^bb0:
    }) : () -> ()
  }) : () -> ()
  "scf.forall.in_parallel"() ({
  ^bb0:
  }) : () -> ()
}) : () -> ()
436accepted exit 0 · 0.09295422999957736sPASSinput · generic input · output · check report
437accepted exit 0 · 0.11857645800000682sPASSinput · generic input · output · check report
438accepted exit 0 · 0.058378479999646515sPASSinput · generic input · output · check report
439accepted exit 0 · 0.051768028999958915sPASSinput · generic input · output · check report
440rejected exit 1 · 0.08915535599999203s—input ·
stderr
<stdin>:15:7: error: loom-lower-graph-memory: parallel addresses have no comparable lane projection; address rank is 1
      scf.parallel (%iv0) = (%zero) to (%two) step (%one) {
      ^
<stdin>:15:7: note: see current operation: 
"scf.parallel"(%0, %2, %1) <{operandSegmentSizes = array<i32: 1, 1, 1, 0>}> ({
^bb0(%arg4: index):
  "scf.forall"() <{operandSegmentSizes = array<i32: 0, 0, 0, 0>, staticLowerBound = array<i64: 0>, staticStep = array<i64: 1>, staticUpperBound = array<i64: 2>}> ({
  ^bb0(%arg5: index):
    %5 = "arith.muli"(%arg4, %2) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %6 = "arith.addi"(%5, %arg5) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    "memref.store"(%1, %arg2, %6) : (index, memref<?xindex>, index) -> ()
    "scf.forall.in_parallel"() ({
    ^bb0:
    }) : () -> ()
  }) : () -> ()
  "scf.reduce"() : () -> ()
}) : (index, index, index) -> ()
441accepted exit 0 · 0.0625750269996388sPASSinput · generic input · output · check report
442accepted exit 0 · 0.0456659640003636sPASSinput · generic input · output · check report
443accepted exit 0 · 0.055876952999824425sPASSinput · generic input · output · check report
444accepted exit 0 · 0.05258281300029921sPASSinput · generic input · output · check report
445accepted exit 0 · 0.04513872600000468sPASSinput · generic input · output · check report
446accepted exit 0 · 0.08656987600033972sPASSinput · generic input · output · check report
447accepted exit 0 · 0.09853432199997769sPASSinput · generic input · output · check report
448accepted exit 0 · 0.05439959200020894sPASSinput · generic input · output · check report
449accepted exit 0 · 0.061019353000119736sPASSinput · generic input · output · check report
450accepted exit 0 · 0.09989240800041443sPASSinput · generic input · output · check report
451accepted exit 0 · 0.09455041999990499sPASSinput · generic input · output · check report
452accepted exit 0 · 0.05058990499992433sPASSinput · generic input · output · check report
453accepted exit 0 · 0.11078609400010464sPASSinput · generic input · output · check report
454accepted exit 0 · 0.053564867000204686sPASSinput · generic input · output · check report
455accepted exit 0 · 0.05667666499994084sPASSinput · generic input · output · check report
456accepted exit 0 · 0.053632534999906056sPASSinput · generic input · output · check report
457accepted exit 0 · 0.048185007000029145sPASSinput · generic input · output · check report
458accepted exit 0 · 0.10522153100009746sPASSinput · generic input · output · check report
459accepted exit 0 · 0.08798486800014871sPASSinput · generic input · output · check report
460accepted exit 0 · 0.04252782699995805sPASSinput · generic input · output · check report
461accepted exit 0 · 0.05379825799991522sPASSinput · generic input · output · check report
462accepted exit 0 · 0.05502518399998735sPASSinput · generic input · output · check report
463accepted exit 0 · 0.05856379500028197sPASSinput · generic input · output · check report
464accepted exit 0 · 0.12147486200001367sPASSinput · generic input · output · check report
465accepted exit 0 · 0.06401105399982043sPASSinput · generic input · output · check report
466accepted exit 0 · 0.0720727570001145sPASSinput · generic input · output · check report
467accepted exit 0 · 0.09500463600033981sPASSinput · generic input · output · check report
468accepted exit 0 · 0.060439213999870844sPASSinput · generic input · output · check report
469accepted exit 0 · 0.0553424750000886sPASSinput · generic input · output · check report
470accepted exit 0 · 0.07250001399961548sPASSinput · generic input · output · check report
471accepted exit 0 · 0.08509557699971992sPASSinput · generic input · output · check report
472accepted exit 0 · 0.05251439199992092sPASSinput · generic input · output · check report
473accepted exit 0 · 0.06071365399975548sPASSinput · generic input · output · check report
474accepted exit 0 · 0.08915199500006565sPASSinput · generic input · output · check report
475accepted exit 0 · 0.10533354100016368sPASSinput · generic input · output · check report
476accepted exit 0 · 0.05220457299992631sPASSinput · generic input · output · check report
477accepted exit 0 · 0.08851662600000054sPASSinput · generic input · output · check report
478accepted exit 0 · 0.09352751500000522sPASSinput · generic input · output · check report
479accepted exit 0 · 0.08628546399995685sPASSinput · generic input · output · check report
480accepted exit 0 · 0.0526213490002192sPASSinput · generic input · output · check report
481accepted exit 0 · 0.09157425700004751sPASSinput · generic input · output · check report
482accepted exit 0 · 0.05059642400010489sPASSinput · generic input · output · check report
483accepted exit 0 · 0.05159486200000174sPASSinput · generic input · output · check report
484accepted exit 0 · 0.052453476000209776sPASSinput · generic input · output · check report
485accepted exit 0 · 0.09080932400001984sPASSinput · generic input · output · check report
486accepted exit 0 · 0.05209990299999845sPASSinput · generic input · output · check report
487accepted exit 0 · 0.050927049000165425sPASSinput · generic input · output · check report
488accepted exit 0 · 0.05336231699993732sPASSinput · generic input · output · check report
489accepted exit 0 · 0.05660335999982635sPASSinput · generic input · output · check report
490accepted exit 0 · 0.10607847199980824sPASSinput · generic input · output · check report
491accepted exit 0 · 0.05943793899996308sPASSinput · generic input · output · check report
492accepted exit 0 · 0.05573337599980732sPASSinput · generic input · output · check report
493rejected exit 1 · 0.09323350000022401s—input ·
stderr
<stdin>:15:7: error: loom-lower-graph-memory: parallel addresses have no comparable lane projection; address rank is 1
      scf.forall (%iv0) in (2) {
      ^
<stdin>:15:7: note: see current operation: 
"scf.forall"() <{operandSegmentSizes = array<i32: 0, 0, 0, 0>, staticLowerBound = array<i64: 0>, staticStep = array<i64: 1>, staticUpperBound = array<i64: 2>}> ({
^bb0(%arg3: index):
  "scf.forall"() <{operandSegmentSizes = array<i32: 0, 0, 0, 0>, staticLowerBound = array<i64: 0>, staticStep = array<i64: 1>, staticUpperBound = array<i64: 2>}> ({
  ^bb0(%arg4: index):
    %2 = "arith.muli"(%arg3, %1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %3 = "arith.addi"(%2, %arg4) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    "memref.store"(%0, %arg2, %3) : (index, memref<?xindex>, index) -> ()
    "scf.forall.in_parallel"() ({
    ^bb0:
    }) : () -> ()
  }) : () -> ()
  "scf.forall.in_parallel"() ({
  ^bb0:
  }) : () -> ()
}) : () -> ()
494accepted exit 0 · 0.05297811800028285sPASSinput · generic input · output · check report
495accepted exit 0 · 0.10012445399979697sPASSinput · generic input · output · check report
496rejected exit 1 · 0.05738105499995072s—input ·
stderr
<stdin>:15:7: error: loom-lower-graph-memory: parallel addresses have no comparable lane projection; address rank is 1
      scf.forall (%iv0) in (2) {
      ^
<stdin>:15:7: note: see current operation: 
"scf.forall"() <{operandSegmentSizes = array<i32: 0, 0, 0, 0>, staticLowerBound = array<i64: 0>, staticStep = array<i64: 1>, staticUpperBound = array<i64: 2>}> ({
^bb0(%arg8: index):
  "scf.parallel"(%0, %2, %1) <{operandSegmentSizes = array<i32: 1, 1, 1, 0>}> ({
  ^bb0(%arg10: index):
    %9 = "arith.muli"(%arg8, %2) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %10 = "arith.addi"(%9, %arg10) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %11 = "memref.load"(%arg2, %10) : (memref<?xindex>, index) -> index
    %12 = "arith.addi"(%11, %1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    "memref.store"(%12, %arg2, %10) : (index, memref<?xindex>, index) -> ()
    "scf.reduce"() : () -> ()
  }) : (index, index, index) -> ()
  "scf.for"(%0, %2, %1) ({
  ^bb0(%arg9: index):
    "memref.store"(%1, %arg2, %arg8) : (index, memref<?xindex>, index) -> ()
    "scf.yield"() : () -> ()
  }) : (index, index, index) -> ()
  "scf.forall.in_parallel"() ({
  ^bb0:
  }) : () -> ()
}) : () -> ()
497accepted exit 0 · 0.08613823299992873sPASSinput · generic input · output · check report
498rejected exit 1 · 0.12644608600021456s—input ·
stderr
<stdin>:11:7: error: loom-lower-graph-memory: parallel addresses have no comparable lane projection; address rank is 1
      scf.parallel (%iv0) = (%zero) to (%two) step (%one) {
      ^
<stdin>:11:7: note: see current operation: 
"scf.parallel"(%0, %2, %1) <{operandSegmentSizes = array<i32: 1, 1, 1, 0>}> ({
^bb0(%arg3: index):
  "scf.forall"() <{operandSegmentSizes = array<i32: 0, 0, 0, 0>, staticLowerBound = array<i64: 0>, staticStep = array<i64: 1>, staticUpperBound = array<i64: 2>}> ({
  ^bb0(%arg4: index):
    %3 = "arith.muli"(%arg3, %2) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %4 = "arith.addi"(%3, %arg4) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %5 = "memref.load"(%arg2, %4) : (memref<?xindex>, index) -> index
    %6 = "arith.addi"(%5, %1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    "memref.store"(%6, %arg2, %4) : (index, memref<?xindex>, index) -> ()
    "scf.forall.in_parallel"() ({
    ^bb0:
    }) : () -> ()
  }) : () -> ()
  "scf.reduce"() : () -> ()
}) : (index, index, index) -> ()
499accepted exit 0 · 0.05825382600005469sPASSinput · generic input · output · check report
500accepted exit 0 · 0.05283060799956729sPASSinput · generic input · output · check report
501accepted exit 0 · 0.055564357999628555sPASSinput · generic input · output · check report
502accepted exit 0 · 0.04417672800036598sPASSinput · generic input · output · check report
503accepted exit 0 · 0.047754435000115336sPASSinput · generic input · output · check report
504accepted exit 0 · 0.048693278999962786sPASSinput · generic input · output · check report
505accepted exit 0 · 0.05223049999995055sPASSinput · generic input · output · check report
506accepted exit 0 · 0.04949919499995303sPASSinput · generic input · output · check report
507accepted exit 0 · 0.09845275399993625sPASSinput · generic input · output · check report
508accepted exit 0 · 0.05099840299999414sPASSinput · generic input · output · check report
509accepted exit 0 · 0.05788044299970352sPASSinput · generic input · output · check report
510accepted exit 0 · 0.051021056000081444sPASSinput · generic input · output · check report
511accepted exit 0 · 0.09376942000017152sPASSinput · generic input · output · check report
512accepted exit 0 · 0.055502712999896175sPASSinput · generic input · output · check report
513accepted exit 0 · 0.053793369000231905sPASSinput · generic input · output · check report
514accepted exit 0 · 0.05347689400014133sPASSinput · generic input · output · check report
515accepted exit 0 · 0.04842775099996288sPASSinput · generic input · output · check report
516accepted exit 0 · 0.05188019199977134sPASSinput · generic input · output · check report
517accepted exit 0 · 0.05668738999975176sPASSinput · generic input · output · check report
518accepted exit 0 · 0.05252220000011221sPASSinput · generic input · output · check report
519accepted exit 0 · 0.05352511499995671sPASSinput · generic input · output · check report
520accepted exit 0 · 0.049302816999897914sPASSinput · generic input · output · check report
521accepted exit 0 · 0.05400585000006686sPASSinput · generic input · output · check report
522accepted exit 0 · 0.05098060099999202sPASSinput · generic input · output · check report
523accepted exit 0 · 0.056038881999938894sPASSinput · generic input · output · check report
524accepted exit 0 · 0.050439372999790066sPASSinput · generic input · output · check report
525accepted exit 0 · 0.10012284699996599sPASSinput · generic input · output · check report
526accepted exit 0 · 0.09758457500038276sPASSinput · generic input · output · check report
527accepted exit 0 · 0.048272349999933795sPASSinput · generic input · output · check report
528rejected exit 1 · 0.08207935200016436s—input ·
stderr
<stdin>:11:7: error: loom-lower-graph-memory: parallel addresses have no comparable lane projection; address rank is 1
      scf.forall (%iv0) in (2) {
      ^
<stdin>:11:7: note: see current operation: 
"scf.forall"() <{operandSegmentSizes = array<i32: 0, 0, 0, 0>, staticLowerBound = array<i64: 0>, staticStep = array<i64: 1>, staticUpperBound = array<i64: 2>}> ({
^bb0(%arg3: index):
  "scf.parallel"(%0, %2, %1) <{operandSegmentSizes = array<i32: 1, 1, 1, 0>}> ({
  ^bb0(%arg4: index):
    %3 = "arith.muli"(%arg3, %2) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %4 = "arith.addi"(%3, %arg4) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    "memref.store"(%1, %arg2, %4) : (index, memref<?xindex>, index) -> ()
    "scf.reduce"() : () -> ()
  }) : (index, index, index) -> ()
  "scf.forall.in_parallel"() ({
  ^bb0:
  }) : () -> ()
}) : () -> ()
529accepted exit 0 · 0.08565351199968063sPASSinput · generic input · output · check report
530accepted exit 0 · 0.09955678300002546sPASSinput · generic input · output · check report
531accepted exit 0 · 0.08854027100005624sPASSinput · generic input · output · check report
532accepted exit 0 · 0.08786527100028252sPASSinput · generic input · output · check report
533accepted exit 0 · 0.09301100699985909sPASSinput · generic input · output · check report
534accepted exit 0 · 0.09308418400041774sPASSinput · generic input · output · check report
535accepted exit 0 · 0.05637517500008471sPASSinput · generic input · output · check report
536accepted exit 0 · 0.05508868600009009sPASSinput · generic input · output · check report
537accepted exit 0 · 0.061308690999794635sPASSinput · generic input · output · check report
538accepted exit 0 · 0.08972069099991131sPASSinput · generic input · output · check report
539accepted exit 0 · 0.10465736400010428sPASSinput · generic input · output · check report
540accepted exit 0 · 0.05723879899960593sPASSinput · generic input · output · check report
541accepted exit 0 · 0.05236211000010371sPASSinput · generic input · output · check report
542accepted exit 0 · 0.05709860500019204sPASSinput · generic input · output · check report
543accepted exit 0 · 0.06204363300003024sPASSinput · generic input · output · check report
544accepted exit 0 · 0.05353209000031711sPASSinput · generic input · output · check report
545accepted exit 0 · 0.09179184499998883sPASSinput · generic input · output · check report
546accepted exit 0 · 0.0535923030001868sPASSinput · generic input · output · check report
547accepted exit 0 · 0.06292308699994464sPASSinput · generic input · output · check report
548accepted exit 0 · 0.11355132900007447sPASSinput · generic input · output · check report
549accepted exit 0 · 0.09488935800072795sPASSinput · generic input · output · check report
550accepted exit 0 · 0.05813810399922659sPASSinput · generic input · output · check report
551accepted exit 0 · 0.09143370199944911sPASSinput · generic input · output · check report
552accepted exit 0 · 0.09074296200014942sPASSinput · generic input · output · check report
553accepted exit 0 · 0.09674179699959495sPASSinput · generic input · output · check report
554accepted exit 0 · 0.09378304600068077sPASSinput · generic input · output · check report
555accepted exit 0 · 0.09796237099999416sPASSinput · generic input · output · check report
556accepted exit 0 · 0.07698598199931439sPASSinput · generic input · output · check report
557accepted exit 0 · 0.06228912900041905sPASSinput · generic input · output · check report
558accepted exit 0 · 0.053336546000537055sPASSinput · generic input · output · check report
559accepted exit 0 · 0.04920411500006594sPASSinput · generic input · output · check report
560accepted exit 0 · 0.04332745500050805sPASSinput · generic input · output · check report
561accepted exit 0 · 0.05263527700026316sPASSinput · generic input · output · check report
562accepted exit 0 · 0.04000167499998497sPASSinput · generic input · output · check report
563accepted exit 0 · 0.07016930499958107sPASSinput · generic input · output · check report
564accepted exit 0 · 0.06983124399994267sPASSinput · generic input · output · check report
565accepted exit 0 · 0.046675323999807006sPASSinput · generic input · output · check report
566accepted exit 0 · 0.05004175300018687sPASSinput · generic input · output · check report
567accepted exit 0 · 0.05049075599981734sPASSinput · generic input · output · check report
568accepted exit 0 · 0.062315857000612596sPASSinput · generic input · output · check report
569accepted exit 0 · 0.09169585600011487sPASSinput · generic input · output · check report
570accepted exit 0 · 0.06011806100013928sPASSinput · generic input · output · check report
571accepted exit 0 · 0.05713698599993222sPASSinput · generic input · output · check report
572accepted exit 0 · 0.05210921500020049sPASSinput · generic input · output · check report
573accepted exit 0 · 0.10242289699999674sPASSinput · generic input · output · check report
574accepted exit 0 · 0.06779600699974253sPASSinput · generic input · output · check report
575accepted exit 0 · 0.06417824700019992sPASSinput · generic input · output · check report
576accepted exit 0 · 0.05301895499997045sPASSinput · generic input · output · check report
577accepted exit 0 · 0.05445984700054396sPASSinput · generic input · output · check report
578accepted exit 0 · 0.06238661399947887sPASSinput · generic input · output · check report
579accepted exit 0 · 0.06087103599929833sPASSinput · generic input · output · check report
580accepted exit 0 · 0.05834818900075334sPASSinput · generic input · output · check report
581accepted exit 0 · 0.07625387000007322sPASSinput · generic input · output · check report
582accepted exit 0 · 0.10010092700031237sPASSinput · generic input · output · check report
583accepted exit 0 · 0.08604727999954775sPASSinput · generic input · output · check report
584accepted exit 0 · 0.08325759300078062sPASSinput · generic input · output · check report
585accepted exit 0 · 0.09580879999975878sPASSinput · generic input · output · check report
586accepted exit 0 · 0.09770261199992092sPASSinput · generic input · output · check report
587accepted exit 0 · 0.054902799999581475sPASSinput · generic input · output · check report
588accepted exit 0 · 0.05124579699986498sPASSinput · generic input · output · check report
589accepted exit 0 · 0.054418603999693005sPASSinput · generic input · output · check report
590accepted exit 0 · 0.0635047180003312sPASSinput · generic input · output · check report
591accepted exit 0 · 0.06151247399975546sPASSinput · generic input · output · check report
592accepted exit 0 · 0.052190561999850615sPASSinput · generic input · output · check report
593accepted exit 0 · 0.04611598600058642sPASSinput · generic input · output · check report
594accepted exit 0 · 0.05931180300012784sPASSinput · generic input · output · check report
595accepted exit 0 · 0.05721191800057568sPASSinput · generic input · output · check report
596accepted exit 0 · 0.06162031300027593sPASSinput · generic input · output · check report
597accepted exit 0 · 0.047709997999845655sPASSinput · generic input · output · check report
598rejected exit 1 · 0.08808737200070027s—input ·
stderr
<stdin>:15:7: error: loom-lower-graph-memory: parallel addresses have no comparable lane projection; address rank is 1
      scf.forall (%iv0) in (2) {
      ^
<stdin>:15:7: note: see current operation: 
"scf.forall"() <{operandSegmentSizes = array<i32: 0, 0, 0, 0>, staticLowerBound = array<i64: 0>, staticStep = array<i64: 1>, staticUpperBound = array<i64: 2>}> ({
^bb0(%arg6: index):
  "scf.parallel"(%0, %2, %1) <{operandSegmentSizes = array<i32: 1, 1, 1, 0>}> ({
  ^bb0(%arg7: index):
    %6 = "arith.muli"(%arg6, %2) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %7 = "arith.addi"(%6, %arg7) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    "memref.store"(%1, %arg2, %7) : (index, memref<?xindex>, index) -> ()
    "scf.reduce"() : () -> ()
  }) : (index, index, index) -> ()
  "scf.forall.in_parallel"() ({
  ^bb0:
  }) : () -> ()
}) : () -> ()
599accepted exit 0 · 0.11180496500037407sPASSinput · generic input · output · check report
600accepted exit 0 · 0.060014570000021195sPASSinput · generic input · output · check report
601accepted exit 0 · 0.09817274800025189sPASSinput · generic input · output · check report
602accepted exit 0 · 0.05591020599968033sPASSinput · generic input · output · check report
603accepted exit 0 · 0.060758088000511634sPASSinput · generic input · output · check report
604accepted exit 0 · 0.04994495800019649sPASSinput · generic input · output · check report
605accepted exit 0 · 0.051341149000109sPASSinput · generic input · output · check report
606accepted exit 0 · 0.09471601400036889sPASSinput · generic input · output · check report
607accepted exit 0 · 0.052939753000828205sPASSinput · generic input · output · check report
608rejected exit 1 · 0.05200660099944798s—input ·
stderr
<stdin>:15:7: error: loom-lower-graph-memory: parallel addresses have no comparable lane projection; address rank is 1
      scf.parallel (%iv0) = (%zero) to (%two) step (%one) {
      ^
<stdin>:15:7: note: see current operation: 
"scf.parallel"(%0, %2, %1) <{operandSegmentSizes = array<i32: 1, 1, 1, 0>}> ({
^bb0(%arg3: index):
  "scf.parallel"(%0, %2, %1) <{operandSegmentSizes = array<i32: 1, 1, 1, 0>}> ({
  ^bb0(%arg5: index):
    %5 = "arith.muli"(%arg3, %2) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %6 = "arith.addi"(%5, %arg5) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    "memref.store"(%1, %arg2, %6) : (index, memref<?xindex>, index) -> ()
    "scf.reduce"() : () -> ()
  }) : (index, index, index) -> ()
  "scf.for"(%0, %2, %1) ({
  ^bb0(%arg4: index):
    %3 = "memref.load"(%arg2, %arg3) : (memref<?xindex>, index) -> index
    %4 = "arith.addi"(%3, %1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    "memref.store"(%4, %arg2, %arg3) : (index, memref<?xindex>, index) -> ()
    "scf.yield"() : () -> ()
  }) : (index, index, index) -> ()
  "scf.reduce"() : () -> ()
}) : (index, index, index) -> ()
609rejected exit 1 · 0.04872126299960655s—input ·
stderr
<stdin>:11:7: error: loom-lower-graph-memory: parallel addresses have no comparable lane projection; address rank is 1
      scf.parallel (%iv0) = (%zero) to (%two) step (%one) {
      ^
<stdin>:11:7: note: see current operation: 
"scf.parallel"(%0, %2, %1) <{operandSegmentSizes = array<i32: 1, 1, 1, 0>}> ({
^bb0(%arg5: index):
  "scf.parallel"(%0, %2, %1) <{operandSegmentSizes = array<i32: 1, 1, 1, 0>}> ({
  ^bb0(%arg7: index):
    %6 = "arith.muli"(%arg5, %2) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %7 = "arith.addi"(%6, %arg7) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %8 = "memref.load"(%arg2, %7) : (memref<?xindex>, index) -> index
    %9 = "arith.addi"(%8, %1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    "memref.store"(%9, %arg2, %7) : (index, memref<?xindex>, index) -> ()
    "scf.reduce"() : () -> ()
  }) : (index, index, index) -> ()
  "scf.for"(%0, %2, %1) ({
  ^bb0(%arg6: index):
    "memref.store"(%1, %arg2, %arg5) : (index, memref<?xindex>, index) -> ()
    "scf.yield"() : () -> ()
  }) : (index, index, index) -> ()
  "scf.reduce"() : () -> ()
}) : (index, index, index) -> ()
610accepted exit 0 · 0.04870099500021752sPASSinput · generic input · output · check report
611accepted exit 0 · 0.05470369700014999sPASSinput · generic input · output · check report
612accepted exit 0 · 0.06928980300017429sPASSinput · generic input · output · check report
613accepted exit 0 · 0.1346495790003246sPASSinput · generic input · output · check report
614accepted exit 0 · 0.06317026399938186sPASSinput · generic input · output · check report
615accepted exit 0 · 0.1206963149998046sPASSinput · generic input · output · check report
616accepted exit 0 · 0.07022567399963009sPASSinput · generic input · output · check report
617accepted exit 0 · 0.0705336940000052sPASSinput · generic input · output · check report
618accepted exit 0 · 0.10280428500027483sPASSinput · generic input · output · check report
619accepted exit 0 · 0.10373327099932794sPASSinput · generic input · output · check report
620accepted exit 0 · 0.0980953469997985sPASSinput · generic input · output · check report
621accepted exit 0 · 0.08210263899945858sPASSinput · generic input · output · check report
622accepted exit 0 · 0.06832051200035494sPASSinput · generic input · output · check report
623accepted exit 0 · 0.11404872700040869sPASSinput · generic input · output · check report
624accepted exit 0 · 0.07684167500065087sPASSinput · generic input · output · check report
625accepted exit 0 · 0.1031994080003642sPASSinput · generic input · output · check report
626accepted exit 0 · 0.1117359089994352sPASSinput · generic input · output · check report
627accepted exit 0 · 0.11710230599965143sPASSinput · generic input · output · check report
628accepted exit 0 · 0.060919920999367605sPASSinput · generic input · output · check report
629accepted exit 0 · 0.06447948599998199sPASSinput · generic input · output · check report
630accepted exit 0 · 0.11517695499969705sPASSinput · generic input · output · check report
631accepted exit 0 · 0.10592906000056246sPASSinput · generic input · output · check report
632accepted exit 0 · 0.09915705500043259sPASSinput · generic input · output · check report
633accepted exit 0 · 0.07089080799960357sPASSinput · generic input · output · check report
634accepted exit 0 · 0.057193198000277334sPASSinput · generic input · output · check report
635accepted exit 0 · 0.060448440999607556sPASSinput · generic input · output · check report
636accepted exit 0 · 0.10281414699966263sPASSinput · generic input · output · check report
637accepted exit 0 · 0.06969682900034968sPASSinput · generic input · output · check report
638accepted exit 0 · 0.05967033200067817sPASSinput · generic input · output · check report
639accepted exit 0 · 0.0769661719996293sPASSinput · generic input · output · check report
640accepted exit 0 · 0.06959029200061195sPASSinput · generic input · output · check report
641accepted exit 0 · 0.06534543099951406sPASSinput · generic input · output · check report
642accepted exit 0 · 0.10195005100013077sPASSinput · generic input · output · check report
643rejected exit 1 · 0.1088845250005761s—input ·
stderr
<stdin>:15:7: error: loom-lower-graph-memory: parallel addresses have no comparable lane projection; address rank is 1
      scf.parallel (%iv0) = (%zero) to (%two) step (%one) {
      ^
<stdin>:15:7: note: see current operation: 
"scf.parallel"(%0, %2, %1) <{operandSegmentSizes = array<i32: 1, 1, 1, 0>}> ({
^bb0(%arg5: index):
  "scf.forall"() <{operandSegmentSizes = array<i32: 0, 0, 0, 0>, staticLowerBound = array<i64: 0>, staticStep = array<i64: 1>, staticUpperBound = array<i64: 2>}> ({
  ^bb0(%arg6: index):
    %5 = "arith.muli"(%arg5, %2) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %6 = "arith.addi"(%5, %arg6) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    "memref.store"(%1, %arg2, %6) : (index, memref<?xindex>, index) -> ()
    "scf.forall.in_parallel"() ({
    ^bb0:
    }) : () -> ()
  }) : () -> ()
  "scf.reduce"() : () -> ()
}) : (index, index, index) -> ()
644accepted exit 0 · 0.056598817000121926sPASSinput · generic input · output · check report
645accepted exit 0 · 0.08597175800059631sPASSinput · generic input · output · check report
646accepted exit 0 · 0.10120187899974553sPASSinput · generic input · output · check report
647accepted exit 0 · 0.06533353200029524sPASSinput · generic input · output · check report
648accepted exit 0 · 0.06888382000033744sPASSinput · generic input · output · check report
649accepted exit 0 · 0.07852395400004752sPASSinput · generic input · output · check report
650accepted exit 0 · 0.1028056449995347sPASSinput · generic input · output · check report
651accepted exit 0 · 0.10040295399994648sPASSinput · generic input · output · check report
652accepted exit 0 · 0.060874832999616046sPASSinput · generic input · output · check report
653accepted exit 0 · 0.05934239399994112sPASSinput · generic input · output · check report
654accepted exit 0 · 0.056235230000311276sPASSinput · generic input · output · check report
655accepted exit 0 · 0.06235463300072297sPASSinput · generic input · output · check report
656accepted exit 0 · 0.061223259000144026sPASSinput · generic input · output · check report
657accepted exit 0 · 0.06203039499996521sPASSinput · generic input · output · check report
658accepted exit 0 · 0.089728453999669sPASSinput · generic input · output · check report
659accepted exit 0 · 0.06449596699985705sPASSinput · generic input · output · check report
660accepted exit 0 · 0.10102127400023164sPASSinput · generic input · output · check report
661accepted exit 0 · 0.05763956099963252sPASSinput · generic input · output · check report
662accepted exit 0 · 0.10350224500052718sPASSinput · generic input · output · check report
663accepted exit 0 · 0.088292561000344sPASSinput · generic input · output · check report
664accepted exit 0 · 0.05539929499991558sPASSinput · generic input · output · check report
665accepted exit 0 · 0.07725807799943141sPASSinput · generic input · output · check report
666accepted exit 0 · 0.07594013400012045sPASSinput · generic input · output · check report
667accepted exit 0 · 0.060995597000328416sPASSinput · generic input · output · check report
668accepted exit 0 · 0.061631913000383065sPASSinput · generic input · output · check report
669accepted exit 0 · 0.10550117499951739sPASSinput · generic input · output · check report
670accepted exit 0 · 0.06416104399977485sPASSinput · generic input · output · check report
671accepted exit 0 · 0.10609814899999037sPASSinput · generic input · output · check report
672accepted exit 0 · 0.06884726600037538sPASSinput · generic input · output · check report
673accepted exit 0 · 0.10138402700067672sPASSinput · generic input · output · check report
674accepted exit 0 · 0.10457634300018981sPASSinput · generic input · output · check report
675accepted exit 0 · 0.06524359000013646sPASSinput · generic input · output · check report
676accepted exit 0 · 0.06287797700042574sPASSinput · generic input · output · check report
677accepted exit 0 · 0.05935121399943455sPASSinput · generic input · output · check report
678accepted exit 0 · 0.06176454699925671sPASSinput · generic input · output · check report
679accepted exit 0 · 0.06611005000013392sPASSinput · generic input · output · check report
680accepted exit 0 · 0.0546592620003139sPASSinput · generic input · output · check report
681accepted exit 0 · 0.05949992499972723sPASSinput · generic input · output · check report
682accepted exit 0 · 0.07036061500002688sPASSinput · generic input · output · check report
683accepted exit 0 · 0.096669641000517sPASSinput · generic input · output · check report
684rejected exit 1 · 0.05597649799983628s—input ·
stderr
<stdin>:0:0: error: canonical Dataflow publication failed: graph @g_thread_0 completion witness #0 is not statically one-shot
<stdin>:0:0: note: see current operation: 
"builtin.module"() ({
  "llvm.func"() <{CConv = #llvm.cconv<ccc>, function_type = !llvm.func<i64 (i64)>, linkage = #llvm.linkage<external>, sym_name = "imported_callable", unnamed_addr = 0 : i64, visibility_ = 0 : i64}> ({
  }) : () -> ()
  "func.func"() <{function_type = (i32) -> i32, sym_name = "native_callable", sym_visibility = "private"}> ({
  ^bb0(%arg12: i32):
    "func.return"(%arg12) : (i32) -> ()
  }) : () -> ()
  "dataflow.thread"() <{domain = #dataflow.thread_domain<dense>, function_type = (index, memref<?xindex>) -> (), sym_name = "thread_0", sym_visibility = "private"}> ({
  ^bb0(%arg9: index, %arg10: memref<?xindex>, %arg11: none):
    %108 = "dataflow.graph.launch"(%arg11, %arg9, %arg10) <{callee = @g_thread_0, operandSegmentSizes = array<i32: 1, 1, 0, 1, 0>, resultSegmentSizes = array<i32: 0, 0, 1>, source_maps = []}> : (none, index, memref<?xindex>) -> none
    "dataflow.thread.yield"(%108) : (none) -> ()
  }) : () -> ()
  "dataflow.thread"() <{domain = #dataflow.thread_domain<dense>, function_type = (index, memref<?xindex>) -> (), sym_name = "thread_1", sym_visibility = "private"}> ({
  ^bb0(%arg6: index, %arg7: memref<?xindex>, %arg8: none):
    %107 = "dataflow.graph.launch"(%arg8, %arg6, %arg7) <{callee = @g_thread_1, operandSegmentSizes = array<i32: 1, 1, 0, 1, 0>, resultSegmentSizes = array<i32: 0, 0, 1>, source_maps = []}> : (none, index, memref<?xindex>) -> none
    "dataflow.thread.yield"(%107) : (none) -> ()
  }) : () -> ()
  "dataflow.graph"() <{arg_attrs = [{}, {llvm.noalias}], function_type = (index, memref<?xindex>) -> (), input_segments = array<i32: 1, 0, 1>, result_segments = array<i32: 0, 0, 0>, sym_name = "g_thread_0", sym_visibility = "private"}> ({
  ^bb0(%arg3: none, %arg4: index, %arg5: memref<?xindex>):
    %28 = "dataflow.constant"(%arg3) <{const_value = 0 : index}> : (none) -> index
    %29 = "dataflow.constant"(%arg3) <{const_value = 1 : index}> : (none) -> index
    %30 = "dataflow.constant"(%arg3) <{const_value = 2 : index}> : (none) -> index
    %31 = "arith.index_cast"(%28) : (index) -> i32
    %32 = "arith.index_cast"(%30) : (index) -> i32
    %33 = "arith.index_cast"(%29) : (index) -> i32
    %34:2 = "dataflow.stream"(%31, %32, %33) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %35 = "dataflow.carry"(%34#1, %arg3, %36#1) : (i1, none, none) -> none
    %36:2 = "dataflow.demux"(%34#1, %35) : (i1, none) -> (none, none)
    %37 = "dataflow.invariant"(%34#1, %29) : (i1, index) -> index
    %38:2 = "dataflow.gate"(%34#1, %37) : (i1, index) -> (i1, index)
    %39:2 = "dataflow.demux"(%38#0, %38#1) : (i1, index) -> (index, index)
    %40 = "dataflow.invariant"(%34#1, %28) : (i1, index) -> index
    %41:2 = "dataflow.gate"(%34#1, %40) : (i1, index) -> (i1, index)
    %42:2 = "dataflow.demux"(%41#0, %41#1) : (i1, index) -> (index, index)
    %43 = "dataflow.invariant"(%34#1, %30) : (i1, index) -> index
    %44:2 = "dataflow.gate"(%34#1, %43) : (i1, index) -> (i1, index)
    %45:2 = "dataflow.demux"(%44#0, %44#1) : (i1, index) -> (index, index)
    %46 = "dataflow.carry"(%34#1, %arg3, %56#0) : (i1, none, none) -> none
    %47:2 = "dataflow.demux"(%34#1, %46) : (i1, none) -> (none, none)
    %48 = "dataflow.constant"(%36#1) <{const_value = 0 : index}> : (none) -> index
    %49:2 = "dataflow.sync"(%36#1, %47#1) : (none, none) -> (none, none)
    %50 = "dataflow.store"(%arg5, %48, %38#1, %49#0) : (memref<?xindex>, index, index, none) -> none
    %51 = "dataflow.store"(%arg5, %48, %38#1, %50) : (memref<?xindex>, index, index, none) -> none
    %52 = "dataflow.constant"(%36#1) <{const_value = 1 : index}> : (none) -> index
    %53:2 = "dataflow.sync"(%36#1, %47#1) : (none, none) -> (none, none)
    %54 = "dataflow.store"(%arg5, %52, %38#1, %53#0) : (memref<?xindex>, index, index, none) -> none
    %55 = "dataflow.store"(%arg5, %52, %38#1, %54) : (memref<?xindex>, index, index, none) -> none
    %56:2 = "dataflow.sync"(%51, %55) : (none, none) -> (none, none)
    %57 = "arith.cmpi"(%31, %32) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %58:2 = "dataflow.demux"(%57, %36#0) : (i1, none) -> (none, none)
    %59:4 = "dataflow.sync"(%58#1, %39#0, %42#0, %45#0) : (none, index, index, index) -> (none, index, index, index)
    %60 = "dataflow.mux"(%57, %58#0, %59#0) : (i1, none, none) -> none
    %61 = "arith.index_cast"(%28) : (index) -> i32
    %62 = "arith.index_cast"(%30) : (index) -> i32
    %63 = "arith.index_cast"(%29) : (index) -> i32
    %64:2 = "dataflow.stream"(%61, %62, %63) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %65 = "dataflow.carry"(%64#1, %60, %66#1) : (i1, none, none) -> none
    %66:2 = "dataflow.demux"(%64#1, %65) : (i1, none) -> (none, none)
    %67 = "dataflow.invariant"(%64#1, %29) : (i1, index) -> index
    %68:2 = "dataflow.gate"(%64#1, %67) : (i1, index) -> (i1, index)
    %69:2 = "dataflow.demux"(%68#0, %68#1) : (i1, index) -> (index, index)
    %70 = "dataflow.invariant"(%64#1, %28) : (i1, index) -> index
    %71:2 = "dataflow.gate"(%64#1, %70) : (i1, index) -> (i1, index)
    %72:2 = "dataflow.demux"(%71#0, %71#1) : (i1, index) -> (index, index)
    %73 = "dataflow.carry"(%64#1, %47#0, %76) : (i1, none, none) -> none
    %74:2 = "dataflow.demux"(%64#1, %73) : (i1, none) -> (none, none)
    %75:2 = "dataflow.sync"(%66#1, %74#1) : (none, none) -> (none, none)
    %76 = "dataflow.store"(%arg5, %71#1, %68#1, %75#0) : (memref<?xindex>, index, index, none) -> none
    %77 = "arith.cmpi"(%61, %62) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %78:2 = "dataflow.demux"(%77, %66#0) : (i1, none) -> (none, none)
    %79:3 = "dataflow.sync"(%78#1, %69#0, %72#0) : (none, index, index) -> (none, index, index)
    %80 = "dataflow.mux"(%77, %78#0, %79#0) : (i1, none, none) -> none
    %81:2 = "dataflow.sync"(%80, %74#0) : (none, none) -> (none, none)
    %82 = "dataflow.store"(%arg5, %28, %29, %81#0) : (memref<?xindex>, index, index, none) -> none
    %83 = "arith.index_cast"(%28) : (index) -> i32
    %84 = "arith.index_cast"(%30) : (index) -> i32
    %85 = "arith.index_cast"(%29) : (index) -> i32
    %86:2 = "dataflow.stream"(%83, %84, %85) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %87 = "dataflow.carry"(%86#1, %60, %88#1) : (i1, none, none) -> none
    %88:2 = "dataflow.demux"(%86#1, %87) : (i1, none) -> (none, none)
    %89 = "dataflow.invariant"(%86#1, %29) : (i1, index) -> index
    %90:2 = "dataflow.gate"(%86#1, %89) : (i1, index) -> (i1, index)
    %91:2 = "dataflow.demux"(%90#0, %90#1) : (i1, index) -> (index, index)
    %92 = "dataflow.invariant"(%86#1, %29) : (i1, index) -> index
    %93:2 = "dataflow.gate"(%86#1, %92) : (i1, index) -> (i1, index)
    %94:2 = "dataflow.demux"(%93#0, %93#1) : (i1, index) -> (index, index)
    %95 = "dataflow.carry"(%86#1, %47#0, %98) : (i1, none, none) -> none
    %96:2 = "dataflow.demux"(%86#1, %95) : (i1, none) -> (none, none)
    %97:2 = "dataflow.sync"(%88#1, %96#1) : (none, none) -> (none, none)
    %98 = "dataflow.store"(%arg5, %93#1, %90#1, %97#0) : (memref<?xindex>, index, index, none) -> none
    %99 = "arith.cmpi"(%83, %84) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %100:2 = "dataflow.demux"(%99, %88#0) : (i1, none) -> (none, none)
    %101:3 = "dataflow.sync"(%100#1, %91#0, %94#0) : (none, index, index) -> (none, index, index)
    %102 = "dataflow.mux"(%99, %100#0, %101#0) : (i1, none, none) -> none
    %103:2 = "dataflow.sync"(%102, %96#0) : (none, none) -> (none, none)
    %104 = "dataflow.store"(%arg5, %29, %29, %103#0) : (memref<?xindex>, index, index, none) -> none
    %105:2 = "dataflow.sync"(%80, %102) : (none, none) -> (none, none)
    %106:2 = "dataflow.sync"(%82, %104) : (none, none) -> (none, none)
    "dataflow.graph.return"(%105#0, %106#0) <{operandSegmentSizes = array<i32: 0, 0, 0, 2>}> : (none, none) -> ()
  }) : () -> ()
  "dataflow.graph"() <{arg_attrs = [{}, {llvm.noalias}], function_type = (index, memref<?xindex>) -> (), input_segments = array<i32: 1, 0, 1>, result_segments = array<i32: 0, 0, 0>, sym_name = "g_thread_1", sym_visibility = "private"}> ({
  ^bb0(%arg0: none, %arg1: index, %arg2: memref<?xindex>):
    %0 = "dataflow.constant"(%arg0) <{const_value = 0 : index}> : (none) -> index
    %1 = "dataflow.constant"(%arg0) <{const_value = 1 : index}> : (none) -> index
    %2 = "dataflow.constant"(%arg0) <{const_value = 2 : index}> : (none) -> index
    %3 = "arith.index_cast"(%0) : (index) -> i32
    %4 = "arith.index_cast"(%2) : (index) -> i32
    %5 = "arith.index_cast"(%1) : (index) -> i32
    %6:2 = "dataflow.stream"(%3, %4, %5) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %7 = "dataflow.carry"(%6#1, %arg0, %8#1) : (i1, none, none) -> none
    %8:2 = "dataflow.demux"(%6#1, %7) : (i1, none) -> (none, none)
    %9 = "dataflow.invariant"(%6#1, %0) : (i1, index) -> index
    %10:2 = "dataflow.gate"(%6#1, %9) : (i1, index) -> (i1, index)
    %11:2 = "dataflow.demux"(%10#0, %10#1) : (i1, index) -> (index, index)
    %12 = "dataflow.invariant"(%6#1, %1) : (i1, index) -> index
    %13:2 = "dataflow.gate"(%6#1, %12) : (i1, index) -> (i1, index)
    %14:2 = "dataflow.demux"(%13#0, %13#1) : (i1, index) -> (index, index)
    %15 = "dataflow.carry"(%6#1, %arg0, %23) : (i1, none, none) -> none
    %16 = "dataflow.carry"(%6#1, %arg0, %23) : (i1, none, none) -> none
    %17:2 = "dataflow.demux"(%6#1, %15) : (i1, none) -> (none, none)
    %18:2 = "dataflow.demux"(%6#1, %16) : (i1, none) -> (none, none)
    %19:2 = "dataflow.sync"(%8#1, %17#1) : (none, none) -> (none, none)
    %20:2 = "dataflow.load"(%arg2, %10#1, %19#0) : (memref<?xindex>, index, none) -> (index, none)
    %21:2 = "dataflow.sync"(%18#1, %20#1) : (none, none) -> (none, none)
    %22 = "arith.addi"(%20#0, %13#1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %23 = "dataflow.store"(%arg2, %10#1, %22, %21#0) : (memref<?xindex>, index, index, none) -> none
    %24 = "arith.cmpi"(%3, %4) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %25:2 = "dataflow.demux"(%24, %8#0) : (i1, none) -> (none, none)
    %26:3 = "dataflow.sync"(%25#1, %11#0, %14#0) : (none, index, index) -> (none, index, index)
    %27 = "dataflow.mux"(%24, %25#0, %26#0) : (i1, none, none) -> none
    "dataflow.graph.return"(%27, %18#0) <{operandSegmentSizes = array<i32: 0, 0, 0, 2>}> : (none, none) -> ()
  }) : () -> ()
}) : () -> ()
685accepted exit 0 · 0.05539031799980876sPASSinput · generic input · output · check report
686accepted exit 0 · 0.055563744000210136sPASSinput · generic input · output · check report
687accepted exit 0 · 0.0614641969996228sPASSinput · generic input · output · check report
688accepted exit 0 · 0.06622906800021156sPASSinput · generic input · output · check report
689accepted exit 0 · 0.06327890700049466sPASSinput · generic input · output · check report
690rejected exit 1 · 0.07710378499996295s—input ·
stderr
<stdin>:11:7: error: loom-lower-graph-memory: parallel addresses have no comparable lane projection; address rank is 1
      scf.forall (%iv0) in (2) {
      ^
<stdin>:11:7: note: see current operation: 
"scf.forall"() <{operandSegmentSizes = array<i32: 0, 0, 0, 0>, staticLowerBound = array<i64: 0>, staticStep = array<i64: 1>, staticUpperBound = array<i64: 2>}> ({
^bb0(%arg3: index):
  "scf.forall"() <{operandSegmentSizes = array<i32: 0, 0, 0, 0>, staticLowerBound = array<i64: 0>, staticStep = array<i64: 1>, staticUpperBound = array<i64: 2>}> ({
  ^bb0(%arg4: index):
    %4 = "arith.muli"(%arg3, %1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %5 = "arith.addi"(%4, %arg4) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    "memref.store"(%0, %arg2, %5) : (index, memref<?xindex>, index) -> ()
    "scf.forall.in_parallel"() ({
    ^bb0:
    }) : () -> ()
  }) : () -> ()
  %2 = "memref.load"(%arg2, %arg3) : (memref<?xindex>, index) -> index
  %3 = "arith.addi"(%2, %0) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
  "memref.store"(%3, %arg2, %arg3) : (index, memref<?xindex>, index) -> ()
  "scf.forall.in_parallel"() ({
  ^bb0:
  }) : () -> ()
}) : () -> ()
691accepted exit 0 · 0.06169174600017868sPASSinput · generic input · output · check report
692accepted exit 0 · 0.09976368800016644sPASSinput · generic input · output · check report
693accepted exit 0 · 0.052578488999643014sPASSinput · generic input · output · check report
694accepted exit 0 · 0.06495243199969991sPASSinput · generic input · output · check report
695accepted exit 0 · 0.11818170500009728sPASSinput · generic input · output · check report
696accepted exit 0 · 0.06206474900045578sPASSinput · generic input · output · check report
697accepted exit 0 · 0.08999779700025101sPASSinput · generic input · output · check report
698accepted exit 0 · 0.11323686000014277sPASSinput · generic input · output · check report
699accepted exit 0 · 0.09894715000064025sPASSinput · generic input · output · check report
700accepted exit 0 · 0.06261249699946347sPASSinput · generic input · output · check report
701accepted exit 0 · 0.08731972900022811sPASSinput · generic input · output · check report
702accepted exit 0 · 0.06199898500017298sPASSinput · generic input · output · check report
703accepted exit 0 · 0.11667951500021445sPASSinput · generic input · output · check report
704accepted exit 0 · 0.08421299099973112sPASSinput · generic input · output · check report
705accepted exit 0 · 0.12543545099924813sPASSinput · generic input · output · check report
706accepted exit 0 · 0.05709306500011735sPASSinput · generic input · output · check report
707accepted exit 0 · 0.06505081000068458sPASSinput · generic input · output · check report
708accepted exit 0 · 0.05977222999990772sPASSinput · generic input · output · check report
709accepted exit 0 · 0.09793370700026571sPASSinput · generic input · output · check report
710accepted exit 0 · 0.062964550000288sPASSinput · generic input · output · check report
711accepted exit 0 · 0.0629113499999221sPASSinput · generic input · output · check report
712accepted exit 0 · 0.08916786400004639sPASSinput · generic input · output · check report
713accepted exit 0 · 0.06346219500028383sPASSinput · generic input · output · check report
714accepted exit 0 · 0.10467856400009623sPASSinput · generic input · output · check report
715accepted exit 0 · 0.06701039400013542sPASSinput · generic input · output · check report
716accepted exit 0 · 0.06701187599992409sPASSinput · generic input · output · check report
717accepted exit 0 · 0.08867171200017765sPASSinput · generic input · output · check report
718accepted exit 0 · 0.0614307670002745sPASSinput · generic input · output · check report
719accepted exit 0 · 0.06617125699995086sPASSinput · generic input · output · check report
720accepted exit 0 · 0.14688917200055585sPASSinput · generic input · output · check report
721accepted exit 0 · 0.06118750099994941sPASSinput · generic input · output · check report
722accepted exit 0 · 0.09685815800003184sPASSinput · generic input · output · check report
723accepted exit 0 · 0.10078230199997051sPASSinput · generic input · output · check report
724accepted exit 0 · 0.06551432299966109sPASSinput · generic input · output · check report
725accepted exit 0 · 0.10195703000044887sPASSinput · generic input · output · check report
726accepted exit 0 · 0.05755204900015087sPASSinput · generic input · output · check report
727accepted exit 0 · 0.09620678400006sPASSinput · generic input · output · check report
728accepted exit 0 · 0.14032869400034542sPASSinput · generic input · output · check report
729accepted exit 0 · 0.06732413400004589sPASSinput · generic input · output · check report
730rejected exit 1 · 0.11343087399927754s—input ·
stderr
<stdin>:15:7: error: loom-lower-graph-memory: parallel addresses have no comparable lane projection; address rank is 1
      scf.parallel (%iv0) = (%zero) to (%two) step (%one) {
      ^
<stdin>:15:7: note: see current operation: 
"scf.parallel"(%0, %2, %1) <{operandSegmentSizes = array<i32: 1, 1, 1, 0>}> ({
^bb0(%arg4: index):
  "scf.parallel"(%0, %2, %1) <{operandSegmentSizes = array<i32: 1, 1, 1, 0>}> ({
  ^bb0(%arg5: index):
    %3 = "arith.muli"(%arg4, %2) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %4 = "arith.addi"(%3, %arg5) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %5 = "memref.load"(%arg2, %4) : (memref<?xindex>, index) -> index
    %6 = "arith.addi"(%5, %1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    "memref.store"(%6, %arg2, %4) : (index, memref<?xindex>, index) -> ()
    "scf.reduce"() : () -> ()
  }) : (index, index, index) -> ()
  "memref.store"(%1, %arg2, %arg4) : (index, memref<?xindex>, index) -> ()
  "scf.reduce"() : () -> ()
}) : (index, index, index) -> ()
731accepted exit 0 · 0.057279577999906905sPASSinput · generic input · output · check report
732accepted exit 0 · 0.0668691190003301sPASSinput · generic input · output · check report
733accepted exit 0 · 0.06544910999946296sPASSinput · generic input · output · check report
734accepted exit 0 · 0.06184646000019711sPASSinput · generic input · output · check report
735accepted exit 0 · 0.06793090500013932sPASSinput · generic input · output · check report
736accepted exit 0 · 0.10148303099958866sPASSinput · generic input · output · check report
737accepted exit 0 · 0.10340382100002898sPASSinput · generic input · output · check report
738accepted exit 0 · 0.10134688499965705sPASSinput · generic input · output · check report
739accepted exit 0 · 0.07261796400052845sPASSinput · generic input · output · check report
740accepted exit 0 · 0.10252036100064288sPASSinput · generic input · output · check report
741accepted exit 0 · 0.09832867400018586sPASSinput · generic input · output · check report
742accepted exit 0 · 0.07483622299969284sPASSinput · generic input · output · check report
743accepted exit 0 · 0.06543608700030745sPASSinput · generic input · output · check report
744accepted exit 0 · 0.08353558199996769sPASSinput · generic input · output · check report
745rejected exit 1 · 0.07908641199992417s—input ·
stderr
<stdin>:11:7: error: loom-lower-graph-memory: parallel addresses have no comparable lane projection; address rank is 1
      scf.forall (%iv0) in (2) {
      ^
<stdin>:11:7: note: see current operation: 
"scf.forall"() <{operandSegmentSizes = array<i32: 0, 0, 0, 0>, staticLowerBound = array<i64: 0>, staticStep = array<i64: 1>, staticUpperBound = array<i64: 2>}> ({
^bb0(%arg3: index):
  "scf.forall"() <{operandSegmentSizes = array<i32: 0, 0, 0, 0>, staticLowerBound = array<i64: 0>, staticStep = array<i64: 1>, staticUpperBound = array<i64: 2>}> ({
  ^bb0(%arg4: index):
    %2 = "arith.muli"(%arg3, %1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %3 = "arith.addi"(%2, %arg4) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %4 = "memref.load"(%arg2, %3) : (memref<?xindex>, index) -> index
    %5 = "arith.addi"(%4, %0) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    "memref.store"(%5, %arg2, %3) : (index, memref<?xindex>, index) -> ()
    "scf.forall.in_parallel"() ({
    ^bb0:
    }) : () -> ()
  }) : () -> ()
  "scf.forall.in_parallel"() ({
  ^bb0:
  }) : () -> ()
}) : () -> ()
746accepted exit 0 · 0.05936796300011338sPASSinput · generic input · output · check report
747accepted exit 0 · 0.06988692199956859sPASSinput · generic input · output · check report
748accepted exit 0 · 0.06698540000070352sPASSinput · generic input · output · check report
749accepted exit 0 · 0.15281892100028927sPASSinput · generic input · output · check report
750accepted exit 0 · 0.06618818199967791sPASSinput · generic input · output · check report
751accepted exit 0 · 0.06616509800005588sPASSinput · generic input · output · check report
752accepted exit 0 · 0.06571086399981141sPASSinput · generic input · output · check report
753accepted exit 0 · 0.09929722600008972sPASSinput · generic input · output · check report
754accepted exit 0 · 0.10247787299977063sPASSinput · generic input · output · check report
755accepted exit 0 · 0.072163501000432sPASSinput · generic input · output · check report
756accepted exit 0 · 0.06832331400073599sPASSinput · generic input · output · check report
757accepted exit 0 · 0.10743536100017081sPASSinput · generic input · output · check report
758accepted exit 0 · 0.06230637699991348sPASSinput · generic input · output · check report
759accepted exit 0 · 0.10197661199981667sPASSinput · generic input · output · check report
760accepted exit 0 · 0.061069272000167985sPASSinput · generic input · output · check report
761accepted exit 0 · 0.06493727199995192sPASSinput · generic input · output · check report
762accepted exit 0 · 0.08170496499951696sPASSinput · generic input · output · check report
763accepted exit 0 · 0.060470175999398634sPASSinput · generic input · output · check report
764accepted exit 0 · 0.06643196000004536sPASSinput · generic input · output · check report
765accepted exit 0 · 0.10808203699980368sPASSinput · generic input · output · check report
766accepted exit 0 · 0.099389371000143sPASSinput · generic input · output · check report
767accepted exit 0 · 0.06621295900004043sPASSinput · generic input · output · check report
768accepted exit 0 · 0.10336044399991806sPASSinput · generic input · output · check report
769accepted exit 0 · 0.10372986799939099sPASSinput · generic input · output · check report
770accepted exit 0 · 0.08262747899971146sPASSinput · generic input · output · check report
771accepted exit 0 · 0.08969481099939003sPASSinput · generic input · output · check report
772accepted exit 0 · 0.11045405599998048sPASSinput · generic input · output · check report
773accepted exit 0 · 0.09085501200024737sPASSinput · generic input · output · check report
774accepted exit 0 · 0.06737188799979776sPASSinput · generic input · output · check report
775accepted exit 0 · 0.062270150000586sPASSinput · generic input · output · check report
776accepted exit 0 · 0.06363101799979631sPASSinput · generic input · output · check report
777accepted exit 0 · 0.09810196200032806sPASSinput · generic input · output · check report
778accepted exit 0 · 0.05704837699977361sPASSinput · generic input · output · check report
779accepted exit 0 · 0.05185060799976782sPASSinput · generic input · output · check report
780accepted exit 0 · 0.09994453599938424sPASSinput · generic input · output · check report
781accepted exit 0 · 0.06430617699970753sPASSinput · generic input · output · check report
782accepted exit 0 · 0.07013079399985145sPASSinput · generic input · output · check report
783accepted exit 0 · 0.10566195100000186sPASSinput · generic input · output · check report
784accepted exit 0 · 0.07150928499959264sPASSinput · generic input · output · check report
785accepted exit 0 · 0.06123881299936329sPASSinput · generic input · output · check report
786accepted exit 0 · 0.09797815999991144sPASSinput · generic input · output · check report
787accepted exit 0 · 0.0651849490004679sPASSinput · generic input · output · check report
788accepted exit 0 · 0.06124276999980793sPASSinput · generic input · output · check report
789accepted exit 0 · 0.06403603999933694sPASSinput · generic input · output · check report
790accepted exit 0 · 0.08403609800006961sPASSinput · generic input · output · check report
791accepted exit 0 · 0.10739957799978583sPASSinput · generic input · output · check report
792accepted exit 0 · 0.06409771600010572sPASSinput · generic input · output · check report
793accepted exit 0 · 0.059499795000192535sPASSinput · generic input · output · check report
794accepted exit 0 · 0.09986252300041087sPASSinput · generic input · output · check report
795accepted exit 0 · 0.06301871800042136sPASSinput · generic input · output · check report
796accepted exit 0 · 0.05961649400069291sPASSinput · generic input · output · check report
797accepted exit 0 · 0.060316449999845645sPASSinput · generic input · output · check report
798accepted exit 0 · 0.07529844699911337sPASSinput · generic input · output · check report
799accepted exit 0 · 0.09908892899966304sPASSinput · generic input · output · check report
800accepted exit 0 · 0.09548156399978325sPASSinput · generic input · output · check report
801accepted exit 0 · 0.054553573999328364sPASSinput · generic input · output · check report
802accepted exit 0 · 0.10086414099987451sPASSinput · generic input · output · check report
803accepted exit 0 · 0.05775006400017446sPASSinput · generic input · output · check report
804accepted exit 0 · 0.060403211999982886sPASSinput · generic input · output · check report
805accepted exit 0 · 0.053940970999974525sPASSinput · generic input · output · check report
806accepted exit 0 · 0.06189860199992836sPASSinput · generic input · output · check report
807accepted exit 0 · 0.09929660899979353sPASSinput · generic input · output · check report
808accepted exit 0 · 0.09497785399980785sPASSinput · generic input · output · check report
809accepted exit 0 · 0.09103861499988852sPASSinput · generic input · output · check report
810accepted exit 0 · 0.0679033199994592sPASSinput · generic input · output · check report
811accepted exit 0 · 0.05796775399994658sPASSinput · generic input · output · check report
812accepted exit 0 · 0.05721000199991977sPASSinput · generic input · output · check report
813accepted exit 0 · 0.0578479249998054sPASSinput · generic input · output · check report
814accepted exit 0 · 0.06154088499988575sPASSinput · generic input · output · check report
815accepted exit 0 · 0.059215193999989424sPASSinput · generic input · output · check report
816accepted exit 0 · 0.06003877600051055sPASSinput · generic input · output · check report
817accepted exit 0 · 0.09912731600070401sPASSinput · generic input · output · check report
818accepted exit 0 · 0.057455678000224sPASSinput · generic input · output · check report
819accepted exit 0 · 0.09942960200078232sPASSinput · generic input · output · check report
820accepted exit 0 · 0.10232240999994247sPASSinput · generic input · output · check report
821accepted exit 0 · 0.05569829700016271sPASSinput · generic input · output · check report
822accepted exit 0 · 0.10045707400058745sPASSinput · generic input · output · check report
823accepted exit 0 · 0.05972655700043106sPASSinput · generic input · output · check report
824accepted exit 0 · 0.0925422719992639sPASSinput · generic input · output · check report
825accepted exit 0 · 0.05621078999956808sPASSinput · generic input · output · check report
826accepted exit 0 · 0.06164920199989865sPASSinput · generic input · output · check report
827accepted exit 0 · 0.09410050600035902sPASSinput · generic input · output · check report
828accepted exit 0 · 0.05777132999992318sPASSinput · generic input · output · check report
829accepted exit 0 · 0.06641604400010692sPASSinput · generic input · output · check report
830accepted exit 0 · 0.11016136000034749sPASSinput · generic input · output · check report
831accepted exit 0 · 0.05772251500002312sPASSinput · generic input · output · check report
832accepted exit 0 · 0.06459734799955186sPASSinput · generic input · output · check report
833accepted exit 0 · 0.10889543400026014sPASSinput · generic input · output · check report
834accepted exit 0 · 0.06522035099987988sPASSinput · generic input · output · check report
835accepted exit 0 · 0.05443843200009724sPASSinput · generic input · output · check report
836accepted exit 0 · 0.09578302299996722sPASSinput · generic input · output · check report
837accepted exit 0 · 0.06418548399960855sPASSinput · generic input · output · check report
838accepted exit 0 · 0.058892002999527904sPASSinput · generic input · output · check report
839accepted exit 0 · 0.0603648920005071sPASSinput · generic input · output · check report
840accepted exit 0 · 0.1053663789998609sPASSinput · generic input · output · check report
841accepted exit 0 · 0.07276306400035537sPASSinput · generic input · output · check report
842accepted exit 0 · 0.056738383999800135sPASSinput · generic input · output · check report
843accepted exit 0 · 0.05742474799990305sPASSinput · generic input · output · check report
844accepted exit 0 · 0.05661348700050439sPASSinput · generic input · output · check report
845accepted exit 0 · 0.09415529400030209sPASSinput · generic input · output · check report
846accepted exit 0 · 0.07003866699960781sPASSinput · generic input · output · check report
847accepted exit 0 · 0.05396012700020947sPASSinput · generic input · output · check report
848accepted exit 0 · 0.10689078900031745sPASSinput · generic input · output · check report
849accepted exit 0 · 0.11145943800056557sPASSinput · generic input · output · check report
850accepted exit 0 · 0.06839978900006827sPASSinput · generic input · output · check report
851accepted exit 0 · 0.09949125200000708sPASSinput · generic input · output · check report
852accepted exit 0 · 0.05311463599991839sPASSinput · generic input · output · check report
853accepted exit 0 · 0.05598153400023875sPASSinput · generic input · output · check report
854accepted exit 0 · 0.09116386299956503sPASSinput · generic input · output · check report
855accepted exit 0 · 0.10721216999991157sPASSinput · generic input · output · check report
856accepted exit 0 · 0.05662213000050542sPASSinput · generic input · output · check report
857accepted exit 0 · 0.1027335660000972sPASSinput · generic input · output · check report
858accepted exit 0 · 0.10340701499990246sPASSinput · generic input · output · check report
859accepted exit 0 · 0.06308268500015402sPASSinput · generic input · output · check report
860accepted exit 0 · 0.05704305900053441sPASSinput · generic input · output · check report
861accepted exit 0 · 0.06110989100034203sPASSinput · generic input · output · check report
862accepted exit 0 · 0.10535546200026147sPASSinput · generic input · output · check report
863accepted exit 0 · 0.06272183900000528sPASSinput · generic input · output · check report
864accepted exit 0 · 0.05964449200018862sPASSinput · generic input · output · check report
865accepted exit 0 · 0.055413328999748046sPASSinput · generic input · output · check report
866accepted exit 0 · 0.10037481800009118sPASSinput · generic input · output · check report
867accepted exit 0 · 0.053824700000404846sPASSinput · generic input · output · check report
868accepted exit 0 · 0.05843821200051025sPASSinput · generic input · output · check report
869accepted exit 0 · 0.07046894699942641sPASSinput · generic input · output · check report
870accepted exit 0 · 0.06218583999998373sPASSinput · generic input · output · check report
871accepted exit 0 · 0.06044453399954364sPASSinput · generic input · output · check report
872accepted exit 0 · 0.05749228399963613sPASSinput · generic input · output · check report
873accepted exit 0 · 0.05846651000047132sPASSinput · generic input · output · check report
874accepted exit 0 · 0.05535300599967741sPASSinput · generic input · output · check report
875accepted exit 0 · 0.06330146900018008sPASSinput · generic input · output · check report
876accepted exit 0 · 0.05858106300001964sPASSinput · generic input · output · check report
877accepted exit 0 · 0.05672621400026401sPASSinput · generic input · output · check report
878accepted exit 0 · 0.0635095879997607sPASSinput · generic input · output · check report
879accepted exit 0 · 0.06439410500024678sPASSinput · generic input · output · check report
880accepted exit 0 · 0.09883696300039446sPASSinput · generic input · output · check report
881accepted exit 0 · 0.09338902399940707sPASSinput · generic input · output · check report
882accepted exit 0 · 0.058316428000580345sPASSinput · generic input · output · check report
883accepted exit 0 · 0.0970380530006878sPASSinput · generic input · output · check report
884accepted exit 0 · 0.10111250699992524sPASSinput · generic input · output · check report
885accepted exit 0 · 0.09867230300005758sPASSinput · generic input · output · check report
886accepted exit 0 · 0.10201520600003278sPASSinput · generic input · output · check report
887accepted exit 0 · 0.05286550199980411sPASSinput · generic input · output · check report
888accepted exit 0 · 0.06203087800076901sPASSinput · generic input · output · check report
889accepted exit 0 · 0.10397032799937733sPASSinput · generic input · output · check report
890accepted exit 0 · 0.05984288800027571sPASSinput · generic input · output · check report
891accepted exit 0 · 0.05878777700036153sPASSinput · generic input · output · check report
892rejected exit 1 · 0.09961392599961982s—input ·
stderr
<stdin>:11:7: error: loom-lower-graph-memory: parallel addresses have no comparable lane projection; address rank is 1
      scf.forall (%iv0) in (2) {
      ^
<stdin>:11:7: note: see current operation: 
"scf.forall"() <{operandSegmentSizes = array<i32: 0, 0, 0, 0>, staticLowerBound = array<i64: 0>, staticStep = array<i64: 1>, staticUpperBound = array<i64: 2>}> ({
^bb0(%arg3: index):
  "scf.forall"() <{operandSegmentSizes = array<i32: 0, 0, 0, 0>, staticLowerBound = array<i64: 0>, staticStep = array<i64: 1>, staticUpperBound = array<i64: 2>}> ({
  ^bb0(%arg4: index):
    %2 = "arith.muli"(%arg3, %1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %3 = "arith.addi"(%2, %arg4) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    "memref.store"(%0, %arg2, %3) : (index, memref<?xindex>, index) -> ()
    "scf.forall.in_parallel"() ({
    ^bb0:
    }) : () -> ()
  }) : () -> ()
  "scf.forall.in_parallel"() ({
  ^bb0:
  }) : () -> ()
}) : () -> ()
893accepted exit 0 · 0.05722007900021708sPASSinput · generic input · output · check report
894accepted exit 0 · 0.05449966800006223sPASSinput · generic input · output · check report
895accepted exit 0 · 0.055566007000379614sPASSinput · generic input · output · check report
896accepted exit 0 · 0.09729415599940694sPASSinput · generic input · output · check report
897accepted exit 0 · 0.07298042899947177sPASSinput · generic input · output · check report
898accepted exit 0 · 0.12899149300028512sPASSinput · generic input · output · check report
899accepted exit 0 · 0.07093701300073008sPASSinput · generic input · output · check report
900rejected exit 1 · 0.05832917600037035s—input ·
stderr
<stdin>:0:0: error: canonical Dataflow publication failed: graph @g_thread_0 completion witness #0 is not statically one-shot
<stdin>:0:0: note: see current operation: 
"builtin.module"() ({
  "llvm.func"() <{CConv = #llvm.cconv<ccc>, function_type = !llvm.func<i64 (i64)>, linkage = #llvm.linkage<external>, sym_name = "imported_callable", unnamed_addr = 0 : i64, visibility_ = 0 : i64}> ({
  }) : () -> ()
  "func.func"() <{function_type = (i32) -> i32, sym_name = "native_callable", sym_visibility = "private"}> ({
  ^bb0(%arg6: i32):
    "func.return"(%arg6) : (i32) -> ()
  }) : () -> ()
  "dataflow.thread"() <{domain = #dataflow.thread_domain<dense>, function_type = (index, memref<?xindex>) -> (), sym_name = "thread_0", sym_visibility = "private"}> ({
  ^bb0(%arg3: index, %arg4: memref<?xindex>, %arg5: none):
    %107 = "dataflow.graph.launch"(%arg5, %arg3, %arg4) <{callee = @g_thread_0, operandSegmentSizes = array<i32: 1, 1, 0, 1, 0>, resultSegmentSizes = array<i32: 0, 0, 1>, source_maps = []}> : (none, index, memref<?xindex>) -> none
    "dataflow.thread.yield"(%107) : (none) -> ()
  }) : () -> ()
  "dataflow.graph"() <{arg_attrs = [{}, {llvm.noalias}], function_type = (index, memref<?xindex>) -> (), input_segments = array<i32: 1, 0, 1>, result_segments = array<i32: 0, 0, 0>, sym_name = "g_thread_0", sym_visibility = "private"}> ({
  ^bb0(%arg0: none, %arg1: index, %arg2: memref<?xindex>):
    %0 = "dataflow.constant"(%arg0) <{const_value = 0 : index}> : (none) -> index
    %1 = "dataflow.constant"(%arg0) <{const_value = 1 : index}> : (none) -> index
    %2 = "dataflow.constant"(%arg0) <{const_value = 2 : index}> : (none) -> index
    %3 = "arith.addi"(%5#0, %1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %4 = "arith.addi"(%32#0, %1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %5:2 = "dataflow.load"(%arg2, %0, %arg0) : (memref<?xindex>, index, none) -> (index, none)
    %6 = "dataflow.store"(%arg2, %0, %3, %5#1) : (memref<?xindex>, index, index, none) -> none
    %7 = "arith.index_cast"(%0) : (index) -> i32
    %8 = "arith.index_cast"(%2) : (index) -> i32
    %9 = "arith.index_cast"(%1) : (index) -> i32
    %10:2 = "dataflow.stream"(%7, %8, %9) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %11 = "dataflow.carry"(%10#1, %arg0, %12#1) : (i1, none, none) -> none
    %12:2 = "dataflow.demux"(%10#1, %11) : (i1, none) -> (none, none)
    %13 = "dataflow.invariant"(%10#1, %0) : (i1, index) -> index
    %14:2 = "dataflow.gate"(%10#1, %13) : (i1, index) -> (i1, index)
    %15:2 = "dataflow.demux"(%14#0, %14#1) : (i1, index) -> (index, index)
    %16 = "dataflow.invariant"(%10#1, %1) : (i1, index) -> index
    %17:2 = "dataflow.gate"(%10#1, %16) : (i1, index) -> (i1, index)
    %18:2 = "dataflow.demux"(%17#0, %17#1) : (i1, index) -> (index, index)
    %19 = "dataflow.carry"(%10#1, %6, %27) : (i1, none, none) -> none
    %20 = "dataflow.carry"(%10#1, %6, %27) : (i1, none, none) -> none
    %21:2 = "dataflow.demux"(%10#1, %19) : (i1, none) -> (none, none)
    %22:2 = "dataflow.demux"(%10#1, %20) : (i1, none) -> (none, none)
    %23:2 = "dataflow.sync"(%12#1, %21#1) : (none, none) -> (none, none)
    %24:2 = "dataflow.load"(%arg2, %14#1, %23#0) : (memref<?xindex>, index, none) -> (index, none)
    %25:2 = "dataflow.sync"(%22#1, %24#1) : (none, none) -> (none, none)
    %26 = "arith.addi"(%24#0, %17#1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %27 = "dataflow.store"(%arg2, %14#1, %26, %25#0) : (memref<?xindex>, index, index, none) -> none
    %28 = "arith.cmpi"(%7, %8) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %29:2 = "dataflow.demux"(%28, %12#0) : (i1, none) -> (none, none)
    %30:3 = "dataflow.sync"(%29#1, %15#0, %18#0) : (none, index, index) -> (none, index, index)
    %31 = "dataflow.mux"(%28, %29#0, %30#0) : (i1, none, none) -> none
    %32:2 = "dataflow.load"(%arg2, %1, %arg0) : (memref<?xindex>, index, none) -> (index, none)
    %33 = "dataflow.store"(%arg2, %1, %4, %32#1) : (memref<?xindex>, index, index, none) -> none
    %34 = "arith.index_cast"(%0) : (index) -> i32
    %35 = "arith.index_cast"(%2) : (index) -> i32
    %36 = "arith.index_cast"(%1) : (index) -> i32
    %37:2 = "dataflow.stream"(%34, %35, %36) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %38 = "dataflow.carry"(%37#1, %arg0, %39#1) : (i1, none, none) -> none
    %39:2 = "dataflow.demux"(%37#1, %38) : (i1, none) -> (none, none)
    %40 = "dataflow.invariant"(%37#1, %1) : (i1, index) -> index
    %41:2 = "dataflow.gate"(%37#1, %40) : (i1, index) -> (i1, index)
    %42:2 = "dataflow.demux"(%41#0, %41#1) : (i1, index) -> (index, index)
    %43 = "dataflow.invariant"(%37#1, %1) : (i1, index) -> index
    %44:2 = "dataflow.gate"(%37#1, %43) : (i1, index) -> (i1, index)
    %45:2 = "dataflow.demux"(%44#0, %44#1) : (i1, index) -> (index, index)
    %46 = "dataflow.carry"(%37#1, %33, %54) : (i1, none, none) -> none
    %47 = "dataflow.carry"(%37#1, %33, %54) : (i1, none, none) -> none
    %48:2 = "dataflow.demux"(%37#1, %46) : (i1, none) -> (none, none)
    %49:2 = "dataflow.demux"(%37#1, %47) : (i1, none) -> (none, none)
    %50:2 = "dataflow.sync"(%39#1, %48#1) : (none, none) -> (none, none)
    %51:2 = "dataflow.load"(%arg2, %41#1, %50#0) : (memref<?xindex>, index, none) -> (index, none)
    %52:2 = "dataflow.sync"(%49#1, %51#1) : (none, none) -> (none, none)
    %53 = "arith.addi"(%51#0, %44#1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %54 = "dataflow.store"(%arg2, %41#1, %53, %52#0) : (memref<?xindex>, index, index, none) -> none
    %55 = "arith.cmpi"(%34, %35) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %56:2 = "dataflow.demux"(%55, %39#0) : (i1, none) -> (none, none)
    %57:3 = "dataflow.sync"(%56#1, %42#0, %45#0) : (none, index, index) -> (none, index, index)
    %58 = "dataflow.mux"(%55, %56#0, %57#0) : (i1, none, none) -> none
    %59:2 = "dataflow.sync"(%31, %58) : (none, none) -> (none, none)
    %60:2 = "dataflow.sync"(%22#0, %49#0) : (none, none) -> (none, none)
    %61 = "arith.index_cast"(%0) : (index) -> i32
    %62 = "arith.index_cast"(%2) : (index) -> i32
    %63 = "arith.index_cast"(%1) : (index) -> i32
    %64:2 = "dataflow.stream"(%61, %62, %63) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %65 = "dataflow.carry"(%64#1, %59#0, %66#1) : (i1, none, none) -> none
    %66:2 = "dataflow.demux"(%64#1, %65) : (i1, none) -> (none, none)
    %67 = "dataflow.invariant"(%64#1, %1) : (i1, index) -> index
    %68:2 = "dataflow.gate"(%64#1, %67) : (i1, index) -> (i1, index)
    %69:2 = "dataflow.demux"(%68#0, %68#1) : (i1, index) -> (index, index)
    %70 = "dataflow.invariant"(%64#1, %0) : (i1, index) -> index
    %71:2 = "dataflow.gate"(%64#1, %70) : (i1, index) -> (i1, index)
    %72:2 = "dataflow.demux"(%71#0, %71#1) : (i1, index) -> (index, index)
    %73 = "dataflow.carry"(%64#1, %60#0, %76) : (i1, none, none) -> none
    %74:2 = "dataflow.demux"(%64#1, %73) : (i1, none) -> (none, none)
    %75:2 = "dataflow.sync"(%66#1, %74#1) : (none, none) -> (none, none)
    %76 = "dataflow.store"(%arg2, %71#1, %68#1, %75#0) : (memref<?xindex>, index, index, none) -> none
    %77 = "arith.cmpi"(%61, %62) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %78:2 = "dataflow.demux"(%77, %66#0) : (i1, none) -> (none, none)
    %79:3 = "dataflow.sync"(%78#1, %69#0, %72#0) : (none, index, index) -> (none, index, index)
    %80 = "dataflow.mux"(%77, %78#0, %79#0) : (i1, none, none) -> none
    %81:2 = "dataflow.sync"(%80, %74#0) : (none, none) -> (none, none)
    %82 = "dataflow.store"(%arg2, %0, %1, %81#0) : (memref<?xindex>, index, index, none) -> none
    %83 = "arith.index_cast"(%0) : (index) -> i32
    %84 = "arith.index_cast"(%2) : (index) -> i32
    %85 = "arith.index_cast"(%1) : (index) -> i32
    %86:2 = "dataflow.stream"(%83, %84, %85) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %87 = "dataflow.carry"(%86#1, %59#0, %88#1) : (i1, none, none) -> none
    %88:2 = "dataflow.demux"(%86#1, %87) : (i1, none) -> (none, none)
    %89 = "dataflow.invariant"(%86#1, %1) : (i1, index) -> index
    %90:2 = "dataflow.gate"(%86#1, %89) : (i1, index) -> (i1, index)
    %91:2 = "dataflow.demux"(%90#0, %90#1) : (i1, index) -> (index, index)
    %92 = "dataflow.invariant"(%86#1, %1) : (i1, index) -> index
    %93:2 = "dataflow.gate"(%86#1, %92) : (i1, index) -> (i1, index)
    %94:2 = "dataflow.demux"(%93#0, %93#1) : (i1, index) -> (index, index)
    %95 = "dataflow.carry"(%86#1, %60#0, %98) : (i1, none, none) -> none
    %96:2 = "dataflow.demux"(%86#1, %95) : (i1, none) -> (none, none)
    %97:2 = "dataflow.sync"(%88#1, %96#1) : (none, none) -> (none, none)
    %98 = "dataflow.store"(%arg2, %93#1, %90#1, %97#0) : (memref<?xindex>, index, index, none) -> none
    %99 = "arith.cmpi"(%83, %84) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %100:2 = "dataflow.demux"(%99, %88#0) : (i1, none) -> (none, none)
    %101:3 = "dataflow.sync"(%100#1, %91#0, %94#0) : (none, index, index) -> (none, index, index)
    %102 = "dataflow.mux"(%99, %100#0, %101#0) : (i1, none, none) -> none
    %103:2 = "dataflow.sync"(%102, %96#0) : (none, none) -> (none, none)
    %104 = "dataflow.store"(%arg2, %1, %1, %103#0) : (memref<?xindex>, index, index, none) -> none
    %105:2 = "dataflow.sync"(%80, %102) : (none, none) -> (none, none)
    %106:2 = "dataflow.sync"(%82, %104) : (none, none) -> (none, none)
    "dataflow.graph.return"(%105#0, %106#0) <{operandSegmentSizes = array<i32: 0, 0, 0, 2>}> : (none, none) -> ()
  }) : () -> ()
}) : () -> ()
901accepted exit 0 · 0.051872181000362616sPASSinput · generic input · output · check report
902rejected exit 1 · 0.09907578399997874s—input ·
stderr
<stdin>:15:7: error: loom-lower-graph-memory: parallel addresses have no comparable lane projection; address rank is 1
      scf.forall (%iv0) in (2) {
      ^
<stdin>:15:7: note: see current operation: 
"scf.forall"() <{operandSegmentSizes = array<i32: 0, 0, 0, 0>, staticLowerBound = array<i64: 0>, staticStep = array<i64: 1>, staticUpperBound = array<i64: 2>}> ({
^bb0(%arg4: index):
  "scf.parallel"(%0, %2, %1) <{operandSegmentSizes = array<i32: 1, 1, 1, 0>}> ({
  ^bb0(%arg5: index):
    %3 = "arith.muli"(%arg4, %2) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %4 = "arith.addi"(%3, %arg5) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    "memref.store"(%1, %arg2, %4) : (index, memref<?xindex>, index) -> ()
    "scf.reduce"() : () -> ()
  }) : (index, index, index) -> ()
  "memref.store"(%1, %arg2, %arg4) : (index, memref<?xindex>, index) -> ()
  "scf.forall.in_parallel"() ({
  ^bb0:
  }) : () -> ()
}) : () -> ()
903accepted exit 0 · 0.09660697699928278sPASSinput · generic input · output · check report
904accepted exit 0 · 0.09295909000047686sPASSinput · generic input · output · check report
905accepted exit 0 · 0.09519576000002417sPASSinput · generic input · output · check report
906accepted exit 0 · 0.07768823500009603sPASSinput · generic input · output · check report
907accepted exit 0 · 0.05401802899996255sPASSinput · generic input · output · check report
908accepted exit 0 · 0.056690028999582864sPASSinput · generic input · output · check report
909accepted exit 0 · 0.09740654100005486sPASSinput · generic input · output · check report
910accepted exit 0 · 0.06462355200073944sPASSinput · generic input · output · check report
911accepted exit 0 · 0.061273055999663484sPASSinput · generic input · output · check report
912accepted exit 0 · 0.06372176500008209sPASSinput · generic input · output · check report
913accepted exit 0 · 0.06118418799997016sPASSinput · generic input · output · check report
914accepted exit 0 · 0.06597912300003372sPASSinput · generic input · output · check report
915accepted exit 0 · 0.061118273999454686sPASSinput · generic input · output · check report
916accepted exit 0 · 0.06439513100031036sPASSinput · generic input · output · check report
917accepted exit 0 · 0.06066799499967601sPASSinput · generic input · output · check report
918accepted exit 0 · 0.06434856299983949sPASSinput · generic input · output · check report
919accepted exit 0 · 0.05842894099987461sPASSinput · generic input · output · check report
920accepted exit 0 · 0.09886664600071526sPASSinput · generic input · output · check report
921accepted exit 0 · 0.06982760599930771sPASSinput · generic input · output · check report
922accepted exit 0 · 0.055577432999598386sPASSinput · generic input · output · check report
923accepted exit 0 · 0.09840520700072375sPASSinput · generic input · output · check report
924accepted exit 0 · 0.09898574999988341sPASSinput · generic input · output · check report
925accepted exit 0 · 0.06535163999978977sPASSinput · generic input · output · check report
926accepted exit 0 · 0.09477189799963526sPASSinput · generic input · output · check report
927accepted exit 0 · 0.09520223700019415sPASSinput · generic input · output · check report
928accepted exit 0 · 0.05844962800074427sPASSinput · generic input · output · check report
929accepted exit 0 · 0.09877767699981632sPASSinput · generic input · output · check report
930accepted exit 0 · 0.05841694599985203sPASSinput · generic input · output · check report
931accepted exit 0 · 0.06203168000047299sPASSinput · generic input · output · check report
932accepted exit 0 · 0.09204691700051626sPASSinput · generic input · output · check report
933accepted exit 0 · 0.05784752500039758sPASSinput · generic input · output · check report
934accepted exit 0 · 0.0568856540003253sPASSinput · generic input · output · check report
935accepted exit 0 · 0.06482701099957922sPASSinput · generic input · output · check report
936accepted exit 0 · 0.05919544200060045sPASSinput · generic input · output · check report
937accepted exit 0 · 0.0667769319998115sPASSinput · generic input · output · check report
938accepted exit 0 · 0.10677111099994363sPASSinput · generic input · output · check report
939accepted exit 0 · 0.10248338099972898sPASSinput · generic input · output · check report
940accepted exit 0 · 0.10348996500033536sPASSinput · generic input · output · check report
941accepted exit 0 · 0.06183416699968802sPASSinput · generic input · output · check report
942accepted exit 0 · 0.13507294100054423sPASSinput · generic input · output · check report
943accepted exit 0 · 0.05604125399986515sPASSinput · generic input · output · check report
944accepted exit 0 · 0.09257697300017753sPASSinput · generic input · output · check report
945accepted exit 0 · 0.09889399299936485sPASSinput · generic input · output · check report
946accepted exit 0 · 0.05385553999985859sPASSinput · generic input · output · check report
947accepted exit 0 · 0.10080963800010068sPASSinput · generic input · output · check report
948accepted exit 0 · 0.05414121699959651sPASSinput · generic input · output · check report
949accepted exit 0 · 0.05926092400022753sPASSinput · generic input · output · check report
950accepted exit 0 · 0.053517802999522246sPASSinput · generic input · output · check report
951accepted exit 0 · 0.0940034060004109sPASSinput · generic input · output · check report
952accepted exit 0 · 0.053575972000544425sPASSinput · generic input · output · check report
953accepted exit 0 · 0.0557645210001283sPASSinput · generic input · output · check report
954accepted exit 0 · 0.09572769100032019sPASSinput · generic input · output · check report
955accepted exit 0 · 0.05425067199939804sPASSinput · generic input · output · check report
956accepted exit 0 · 0.0936742369995045sPASSinput · generic input · output · check report
957accepted exit 0 · 0.09810866199950397sPASSinput · generic input · output · check report
958accepted exit 0 · 0.09436580800047523sPASSinput · generic input · output · check report
959accepted exit 0 · 0.0929338119995009sPASSinput · generic input · output · check report
960accepted exit 0 · 0.0804838979993292sPASSinput · generic input · output · check report
961accepted exit 0 · 0.06463454700042348sPASSinput · generic input · output · check report
962accepted exit 0 · 0.08098476100076368sPASSinput · generic input · output · check report
963accepted exit 0 · 0.1060763079995013sPASSinput · generic input · output · check report
964accepted exit 0 · 0.05585618299937778sPASSinput · generic input · output · check report
965rejected exit 1 · 0.06623139200019068s—input ·
stderr
<stdin>:0:0: error: canonical Dataflow publication failed: graph @g_thread_0 completion witness #0 is not statically one-shot
<stdin>:0:0: note: see current operation: 
"builtin.module"() ({
  "llvm.func"() <{CConv = #llvm.cconv<ccc>, function_type = !llvm.func<i64 (i64)>, linkage = #llvm.linkage<external>, sym_name = "imported_callable", unnamed_addr = 0 : i64, visibility_ = 0 : i64}> ({
  }) : () -> ()
  "func.func"() <{function_type = (i32) -> i32, sym_name = "native_callable", sym_visibility = "private"}> ({
  ^bb0(%arg9: i32):
    "func.return"(%arg9) : (i32) -> ()
  }) : () -> ()
  "dataflow.thread"() <{domain = #dataflow.thread_domain<dense>, function_type = (index, memref<?xindex>) -> (), sym_name = "thread_0", sym_visibility = "private"}> ({
  ^bb0(%arg6: index, %arg7: memref<?xindex>, %arg8: none):
    %75 = "dataflow.graph.launch"(%arg8, %arg6, %arg7) <{callee = @g_thread_0, operandSegmentSizes = array<i32: 1, 1, 0, 1, 0>, resultSegmentSizes = array<i32: 0, 0, 1>, source_maps = []}> : (none, index, memref<?xindex>) -> none
    "dataflow.thread.yield"(%75) : (none) -> ()
  }) : () -> ()
  "dataflow.thread"() <{domain = #dataflow.thread_domain<dense>, function_type = (index, memref<?xindex>) -> (), sym_name = "thread_1", sym_visibility = "private"}> ({
  ^bb0(%arg3: index, %arg4: memref<?xindex>, %arg5: none):
    %73 = "arith.constant"() <{value = 0 : index}> : () -> index
    %74 = "arith.constant"() <{value = 1 : index}> : () -> index
    "memref.store"(%74, %arg4, %73) : (index, memref<?xindex>, index) -> ()
    "dataflow.thread.yield"() : () -> ()
  }) : () -> ()
  "dataflow.graph"() <{arg_attrs = [{}, {llvm.noalias}], function_type = (index, memref<?xindex>) -> (), input_segments = array<i32: 1, 0, 1>, result_segments = array<i32: 0, 0, 0>, sym_name = "g_thread_0", sym_visibility = "private"}> ({
  ^bb0(%arg0: none, %arg1: index, %arg2: memref<?xindex>):
    %0 = "dataflow.constant"(%arg0) <{const_value = 0 : index}> : (none) -> index
    %1 = "dataflow.constant"(%arg0) <{const_value = 1 : index}> : (none) -> index
    %2 = "dataflow.constant"(%arg0) <{const_value = 2 : index}> : (none) -> index
    %3 = "arith.index_cast"(%0) : (index) -> i32
    %4 = "arith.index_cast"(%2) : (index) -> i32
    %5 = "arith.index_cast"(%1) : (index) -> i32
    %6:2 = "dataflow.stream"(%3, %4, %5) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %7 = "dataflow.carry"(%6#1, %arg0, %8#1) : (i1, none, none) -> none
    %8:2 = "dataflow.demux"(%6#1, %7) : (i1, none) -> (none, none)
    %9 = "dataflow.invariant"(%6#1, %0) : (i1, index) -> index
    %10:2 = "dataflow.gate"(%6#1, %9) : (i1, index) -> (i1, index)
    %11:2 = "dataflow.demux"(%10#0, %10#1) : (i1, index) -> (index, index)
    %12 = "dataflow.invariant"(%6#1, %1) : (i1, index) -> index
    %13:2 = "dataflow.gate"(%6#1, %12) : (i1, index) -> (i1, index)
    %14:2 = "dataflow.demux"(%13#0, %13#1) : (i1, index) -> (index, index)
    %15 = "dataflow.carry"(%6#1, %arg0, %26) : (i1, none, none) -> none
    %16 = "dataflow.carry"(%6#1, %arg0, %26) : (i1, none, none) -> none
    %17:2 = "dataflow.demux"(%6#1, %15) : (i1, none) -> (none, none)
    %18:2 = "dataflow.demux"(%6#1, %16) : (i1, none) -> (none, none)
    %19:2 = "dataflow.sync"(%8#1, %17#1) : (none, none) -> (none, none)
    %20:2 = "dataflow.load"(%arg2, %10#1, %19#0) : (memref<?xindex>, index, none) -> (index, none)
    %21:2 = "dataflow.sync"(%18#1, %20#1) : (none, none) -> (none, none)
    %22 = "arith.addi"(%20#0, %13#1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %23 = "dataflow.store"(%arg2, %10#1, %22, %21#0) : (memref<?xindex>, index, index, none) -> none
    %24:2 = "dataflow.load"(%arg2, %10#1, %23) : (memref<?xindex>, index, none) -> (index, none)
    %25 = "arith.addi"(%24#0, %13#1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %26 = "dataflow.store"(%arg2, %10#1, %25, %24#1) : (memref<?xindex>, index, index, none) -> none
    %27 = "arith.cmpi"(%3, %4) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %28:2 = "dataflow.demux"(%27, %8#0) : (i1, none) -> (none, none)
    %29:3 = "dataflow.sync"(%28#1, %11#0, %14#0) : (none, index, index) -> (none, index, index)
    %30 = "dataflow.mux"(%27, %28#0, %29#0) : (i1, none, none) -> none
    %31 = "arith.index_cast"(%0) : (index) -> i32
    %32 = "arith.index_cast"(%2) : (index) -> i32
    %33 = "arith.index_cast"(%1) : (index) -> i32
    %34:2 = "dataflow.stream"(%31, %32, %33) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %35 = "dataflow.carry"(%34#1, %30, %36#1) : (i1, none, none) -> none
    %36:2 = "dataflow.demux"(%34#1, %35) : (i1, none) -> (none, none)
    %37 = "dataflow.invariant"(%34#1, %1) : (i1, index) -> index
    %38:2 = "dataflow.gate"(%34#1, %37) : (i1, index) -> (i1, index)
    %39:2 = "dataflow.demux"(%38#0, %38#1) : (i1, index) -> (index, index)
    %40 = "dataflow.invariant"(%34#1, %0) : (i1, index) -> index
    %41:2 = "dataflow.gate"(%34#1, %40) : (i1, index) -> (i1, index)
    %42:2 = "dataflow.demux"(%41#0, %41#1) : (i1, index) -> (index, index)
    %43 = "dataflow.carry"(%34#1, %18#0, %46) : (i1, none, none) -> none
    %44:2 = "dataflow.demux"(%34#1, %43) : (i1, none) -> (none, none)
    %45:2 = "dataflow.sync"(%36#1, %44#1) : (none, none) -> (none, none)
    %46 = "dataflow.store"(%arg2, %41#1, %38#1, %45#0) : (memref<?xindex>, index, index, none) -> none
    %47 = "arith.cmpi"(%31, %32) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %48:2 = "dataflow.demux"(%47, %36#0) : (i1, none) -> (none, none)
    %49:3 = "dataflow.sync"(%48#1, %39#0, %42#0) : (none, index, index) -> (none, index, index)
    %50 = "dataflow.mux"(%47, %48#0, %49#0) : (i1, none, none) -> none
    %51 = "arith.index_cast"(%0) : (index) -> i32
    %52 = "arith.index_cast"(%2) : (index) -> i32
    %53 = "arith.index_cast"(%1) : (index) -> i32
    %54:2 = "dataflow.stream"(%51, %52, %53) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %55 = "dataflow.carry"(%54#1, %30, %56#1) : (i1, none, none) -> none
    %56:2 = "dataflow.demux"(%54#1, %55) : (i1, none) -> (none, none)
    %57 = "dataflow.invariant"(%54#1, %1) : (i1, index) -> index
    %58:2 = "dataflow.gate"(%54#1, %57) : (i1, index) -> (i1, index)
    %59:2 = "dataflow.demux"(%58#0, %58#1) : (i1, index) -> (index, index)
    %60 = "dataflow.invariant"(%54#1, %1) : (i1, index) -> index
    %61:2 = "dataflow.gate"(%54#1, %60) : (i1, index) -> (i1, index)
    %62:2 = "dataflow.demux"(%61#0, %61#1) : (i1, index) -> (index, index)
    %63 = "dataflow.carry"(%54#1, %18#0, %66) : (i1, none, none) -> none
    %64:2 = "dataflow.demux"(%54#1, %63) : (i1, none) -> (none, none)
    %65:2 = "dataflow.sync"(%56#1, %64#1) : (none, none) -> (none, none)
    %66 = "dataflow.store"(%arg2, %61#1, %58#1, %65#0) : (memref<?xindex>, index, index, none) -> none
    %67 = "arith.cmpi"(%51, %52) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %68:2 = "dataflow.demux"(%67, %56#0) : (i1, none) -> (none, none)
    %69:3 = "dataflow.sync"(%68#1, %59#0, %62#0) : (none, index, index) -> (none, index, index)
    %70 = "dataflow.mux"(%67, %68#0, %69#0) : (i1, none, none) -> none
    %71:2 = "dataflow.sync"(%50, %70) : (none, none) -> (none, none)
    %72:2 = "dataflow.sync"(%44#0, %64#0) : (none, none) -> (none, none)
    "dataflow.graph.return"(%71#0, %72#0) <{operandSegmentSizes = array<i32: 0, 0, 0, 2>}> : (none, none) -> ()
  }) : () -> ()
}) : () -> ()
966accepted exit 0 · 0.05470926399993914sPASSinput · generic input · output · check report
967accepted exit 0 · 0.11294512600034068sPASSinput · generic input · output · check report
968accepted exit 0 · 0.05969206300051155sPASSinput · generic input · output · check report
969accepted exit 0 · 0.09852056599993375sPASSinput · generic input · output · check report
970accepted exit 0 · 0.05737719500029925sPASSinput · generic input · output · check report
971accepted exit 0 · 0.058640352999645984sPASSinput · generic input · output · check report
972accepted exit 0 · 0.07046268399972178sPASSinput · generic input · output · check report
973accepted exit 0 · 0.06905022600039956sPASSinput · generic input · output · check report
974accepted exit 0 · 0.05690259099992545sPASSinput · generic input · output · check report
975accepted exit 0 · 0.09986174900041078sPASSinput · generic input · output · check report
976accepted exit 0 · 0.06520818499939196sPASSinput · generic input · output · check report
977accepted exit 0 · 0.060278124999967986sPASSinput · generic input · output · check report
978accepted exit 0 · 0.09484039800008759sPASSinput · generic input · output · check report
979accepted exit 0 · 0.05536668100012321sPASSinput · generic input · output · check report
980accepted exit 0 · 0.05520814200008317sPASSinput · generic input · output · check report
981accepted exit 0 · 0.09558006899987959sPASSinput · generic input · output · check report
982rejected exit 1 · 0.0918267349998132s—input ·
stderr
<stdin>:11:7: error: loom-lower-graph-memory: parallel addresses have no comparable lane projection; address rank is 1
      scf.parallel (%iv0) = (%zero) to (%two) step (%one) {
      ^
<stdin>:11:7: note: see current operation: 
"scf.parallel"(%0, %2, %1) <{operandSegmentSizes = array<i32: 1, 1, 1, 0>}> ({
^bb0(%arg3: index):
  "scf.forall"() <{operandSegmentSizes = array<i32: 0, 0, 0, 0>, staticLowerBound = array<i64: 0>, staticStep = array<i64: 1>, staticUpperBound = array<i64: 2>}> ({
  ^bb0(%arg4: index):
    %3 = "arith.muli"(%arg3, %2) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %4 = "arith.addi"(%3, %arg4) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %5 = "memref.load"(%arg2, %4) : (memref<?xindex>, index) -> index
    %6 = "arith.addi"(%5, %1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    "memref.store"(%6, %arg2, %4) : (index, memref<?xindex>, index) -> ()
    "scf.forall.in_parallel"() ({
    ^bb0:
    }) : () -> ()
  }) : () -> ()
  "scf.reduce"() : () -> ()
}) : (index, index, index) -> ()
983accepted exit 0 · 0.09560690999933286sPASSinput · generic input · output · check report
984accepted exit 0 · 0.09563725699990755sPASSinput · generic input · output · check report
985accepted exit 0 · 0.06030763000035222sPASSinput · generic input · output · check report
986accepted exit 0 · 0.06506058600007236sPASSinput · generic input · output · check report
987accepted exit 0 · 0.06018219300040073sPASSinput · generic input · output · check report
988rejected exit 1 · 0.09690249799950834s—input ·
stderr
<stdin>:0:0: error: canonical Dataflow publication failed: graph @g_thread_0 completion witness #0 is not statically one-shot
<stdin>:0:0: note: see current operation: 
"builtin.module"() ({
  "dataflow.thread"() <{domain = #dataflow.thread_domain<dense>, function_type = (index, memref<?xindex>) -> (), sym_name = "thread_0", sym_visibility = "private"}> ({
  ^bb0(%arg3: index, %arg4: memref<?xindex>, %arg5: none):
    %108 = "dataflow.graph.launch"(%arg5, %arg3, %arg4) <{callee = @g_thread_0, operandSegmentSizes = array<i32: 1, 1, 0, 1, 0>, resultSegmentSizes = array<i32: 0, 0, 1>, source_maps = []}> : (none, index, memref<?xindex>) -> none
    "dataflow.thread.yield"(%108) : (none) -> ()
  }) : () -> ()
  "dataflow.graph"() <{arg_attrs = [{}, {llvm.noalias}], function_type = (index, memref<?xindex>) -> (), input_segments = array<i32: 1, 0, 1>, result_segments = array<i32: 0, 0, 0>, sym_name = "g_thread_0", sym_visibility = "private"}> ({
  ^bb0(%arg0: none, %arg1: index, %arg2: memref<?xindex>):
    %0 = "dataflow.constant"(%arg0) <{const_value = 0 : index}> : (none) -> index
    %1 = "dataflow.constant"(%arg0) <{const_value = 1 : index}> : (none) -> index
    %2 = "dataflow.constant"(%arg0) <{const_value = 2 : index}> : (none) -> index
    %3 = "arith.addi"(%77#0, %1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %4 = "arith.addi"(%103#0, %1) <{overflowFlags = #arith.overflow<none>}> : (index, index) -> index
    %5 = "arith.index_cast"(%0) : (index) -> i32
    %6 = "arith.index_cast"(%2) : (index) -> i32
    %7 = "arith.index_cast"(%1) : (index) -> i32
    %8:2 = "dataflow.stream"(%5, %6, %7) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %9 = "dataflow.carry"(%8#1, %arg0, %10#1) : (i1, none, none) -> none
    %10:2 = "dataflow.demux"(%8#1, %9) : (i1, none) -> (none, none)
    %11 = "dataflow.invariant"(%8#1, %1) : (i1, index) -> index
    %12:2 = "dataflow.gate"(%8#1, %11) : (i1, index) -> (i1, index)
    %13:2 = "dataflow.demux"(%12#0, %12#1) : (i1, index) -> (index, index)
    %14 = "dataflow.invariant"(%8#1, %0) : (i1, index) -> index
    %15:2 = "dataflow.gate"(%8#1, %14) : (i1, index) -> (i1, index)
    %16:2 = "dataflow.demux"(%15#0, %15#1) : (i1, index) -> (index, index)
    %17 = "dataflow.carry"(%8#1, %arg0, %23) : (i1, none, none) -> none
    %18 = "dataflow.carry"(%8#1, %arg0, %23) : (i1, none, none) -> none
    %19:2 = "dataflow.demux"(%8#1, %17) : (i1, none) -> (none, none)
    %20:2 = "dataflow.demux"(%8#1, %18) : (i1, none) -> (none, none)
    %21:2 = "dataflow.sync"(%10#1, %20#1) : (none, none) -> (none, none)
    %22 = "dataflow.store"(%arg2, %15#1, %12#1, %21#0) : (memref<?xindex>, index, index, none) -> none
    %23 = "dataflow.store"(%arg2, %15#1, %12#1, %22) : (memref<?xindex>, index, index, none) -> none
    %24 = "arith.cmpi"(%5, %6) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %25:2 = "dataflow.demux"(%24, %10#0) : (i1, none) -> (none, none)
    %26:3 = "dataflow.sync"(%25#1, %13#0, %16#0) : (none, index, index) -> (none, index, index)
    %27 = "dataflow.mux"(%24, %25#0, %26#0) : (i1, none, none) -> none
    %28 = "arith.index_cast"(%0) : (index) -> i32
    %29 = "arith.index_cast"(%2) : (index) -> i32
    %30 = "arith.index_cast"(%1) : (index) -> i32
    %31:2 = "dataflow.stream"(%28, %29, %30) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %32 = "dataflow.carry"(%31#1, %arg0, %33#1) : (i1, none, none) -> none
    %33:2 = "dataflow.demux"(%31#1, %32) : (i1, none) -> (none, none)
    %34 = "dataflow.invariant"(%31#1, %1) : (i1, index) -> index
    %35:2 = "dataflow.gate"(%31#1, %34) : (i1, index) -> (i1, index)
    %36:2 = "dataflow.demux"(%35#0, %35#1) : (i1, index) -> (index, index)
    %37 = "dataflow.invariant"(%31#1, %1) : (i1, index) -> index
    %38:2 = "dataflow.gate"(%31#1, %37) : (i1, index) -> (i1, index)
    %39:2 = "dataflow.demux"(%38#0, %38#1) : (i1, index) -> (index, index)
    %40 = "dataflow.carry"(%31#1, %arg0, %46) : (i1, none, none) -> none
    %41 = "dataflow.carry"(%31#1, %arg0, %46) : (i1, none, none) -> none
    %42:2 = "dataflow.demux"(%31#1, %40) : (i1, none) -> (none, none)
    %43:2 = "dataflow.demux"(%31#1, %41) : (i1, none) -> (none, none)
    %44:2 = "dataflow.sync"(%33#1, %43#1) : (none, none) -> (none, none)
    %45 = "dataflow.store"(%arg2, %38#1, %35#1, %44#0) : (memref<?xindex>, index, index, none) -> none
    %46 = "dataflow.store"(%arg2, %38#1, %35#1, %45) : (memref<?xindex>, index, index, none) -> none
    %47 = "arith.cmpi"(%28, %29) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %48:2 = "dataflow.demux"(%47, %33#0) : (i1, none) -> (none, none)
    %49:3 = "dataflow.sync"(%48#1, %36#0, %39#0) : (none, index, index) -> (none, index, index)
    %50 = "dataflow.mux"(%47, %48#0, %49#0) : (i1, none, none) -> none
    %51:2 = "dataflow.sync"(%27, %50) : (none, none) -> (none, none)
    %52:2 = "dataflow.sync"(%19#0, %42#0) : (none, none) -> (none, none)
    %53:2 = "dataflow.sync"(%20#0, %43#0) : (none, none) -> (none, none)
    %54 = "arith.index_cast"(%0) : (index) -> i32
    %55 = "arith.index_cast"(%2) : (index) -> i32
    %56 = "arith.index_cast"(%1) : (index) -> i32
    %57:2 = "dataflow.stream"(%54, %55, %56) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %58 = "dataflow.carry"(%57#1, %51#0, %59#1) : (i1, none, none) -> none
    %59:2 = "dataflow.demux"(%57#1, %58) : (i1, none) -> (none, none)
    %60 = "dataflow.invariant"(%57#1, %1) : (i1, index) -> index
    %61:2 = "dataflow.gate"(%57#1, %60) : (i1, index) -> (i1, index)
    %62:2 = "dataflow.demux"(%61#0, %61#1) : (i1, index) -> (index, index)
    %63 = "dataflow.invariant"(%57#1, %0) : (i1, index) -> index
    %64:2 = "dataflow.gate"(%57#1, %63) : (i1, index) -> (i1, index)
    %65:2 = "dataflow.demux"(%64#0, %64#1) : (i1, index) -> (index, index)
    %66 = "dataflow.carry"(%57#1, %52#0, %71) : (i1, none, none) -> none
    %67 = "dataflow.carry"(%57#1, %53#0, %71) : (i1, none, none) -> none
    %68:2 = "dataflow.demux"(%57#1, %66) : (i1, none) -> (none, none)
    %69:2 = "dataflow.demux"(%57#1, %67) : (i1, none) -> (none, none)
    %70:2 = "dataflow.sync"(%59#1, %69#1) : (none, none) -> (none, none)
    %71 = "dataflow.store"(%arg2, %64#1, %61#1, %70#0) : (memref<?xindex>, index, index, none) -> none
    %72 = "arith.cmpi"(%54, %55) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %73:2 = "dataflow.demux"(%72, %59#0) : (i1, none) -> (none, none)
    %74:3 = "dataflow.sync"(%73#1, %62#0, %65#0) : (none, index, index) -> (none, index, index)
    %75 = "dataflow.mux"(%72, %73#0, %74#0) : (i1, none, none) -> none
    %76:2 = "dataflow.sync"(%75, %68#0) : (none, none) -> (none, none)
    %77:2 = "dataflow.load"(%arg2, %0, %76#0) : (memref<?xindex>, index, none) -> (index, none)
    %78:2 = "dataflow.sync"(%69#0, %77#1) : (none, none) -> (none, none)
    %79 = "dataflow.store"(%arg2, %0, %3, %78#0) : (memref<?xindex>, index, index, none) -> none
    %80 = "arith.index_cast"(%0) : (index) -> i32
    %81 = "arith.index_cast"(%2) : (index) -> i32
    %82 = "arith.index_cast"(%1) : (index) -> i32
    %83:2 = "dataflow.stream"(%80, %81, %82) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %84 = "dataflow.carry"(%83#1, %51#0, %85#1) : (i1, none, none) -> none
    %85:2 = "dataflow.demux"(%83#1, %84) : (i1, none) -> (none, none)
    %86 = "dataflow.invariant"(%83#1, %1) : (i1, index) -> index
    %87:2 = "dataflow.gate"(%83#1, %86) : (i1, index) -> (i1, index)
    %88:2 = "dataflow.demux"(%87#0, %87#1) : (i1, index) -> (index, index)
    %89 = "dataflow.invariant"(%83#1, %1) : (i1, index) -> index
    %90:2 = "dataflow.gate"(%83#1, %89) : (i1, index) -> (i1, index)
    %91:2 = "dataflow.demux"(%90#0, %90#1) : (i1, index) -> (index, index)
    %92 = "dataflow.carry"(%83#1, %52#0, %97) : (i1, none, none) -> none
    %93 = "dataflow.carry"(%83#1, %53#0, %97) : (i1, none, none) -> none
    %94:2 = "dataflow.demux"(%83#1, %92) : (i1, none) -> (none, none)
    %95:2 = "dataflow.demux"(%83#1, %93) : (i1, none) -> (none, none)
    %96:2 = "dataflow.sync"(%85#1, %95#1) : (none, none) -> (none, none)
    %97 = "dataflow.store"(%arg2, %90#1, %87#1, %96#0) : (memref<?xindex>, index, index, none) -> none
    %98 = "arith.cmpi"(%80, %81) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %99:2 = "dataflow.demux"(%98, %85#0) : (i1, none) -> (none, none)
    %100:3 = "dataflow.sync"(%99#1, %88#0, %91#0) : (none, index, index) -> (none, index, index)
    %101 = "dataflow.mux"(%98, %99#0, %100#0) : (i1, none, none) -> none
    %102:2 = "dataflow.sync"(%101, %94#0) : (none, none) -> (none, none)
    %103:2 = "dataflow.load"(%arg2, %1, %102#0) : (memref<?xindex>, index, none) -> (index, none)
    %104:2 = "dataflow.sync"(%95#0, %103#1) : (none, none) -> (none, none)
    %105 = "dataflow.store"(%arg2, %1, %4, %104#0) : (memref<?xindex>, index, index, none) -> none
    %106:2 = "dataflow.sync"(%75, %101) : (none, none) -> (none, none)
    %107:2 = "dataflow.sync"(%79, %105) : (none, none) -> (none, none)
    "dataflow.graph.return"(%106#0, %107#0) <{operandSegmentSizes = array<i32: 0, 0, 0, 2>}> : (none, none) -> ()
  }) : () -> ()
}) : () -> ()
989accepted exit 0 · 0.09693151200008288sPASSinput · generic input · output · check report
990accepted exit 0 · 0.10483157100043172sPASSinput · generic input · output · check report
991accepted exit 0 · 0.0977271900001142sPASSinput · generic input · output · check report
992accepted exit 0 · 0.05567206400064606sPASSinput · generic input · output · check report
993accepted exit 0 · 0.10634464899976592sPASSinput · generic input · output · check report
994accepted exit 0 · 0.05654407599922706sPASSinput · generic input · output · check report
995accepted exit 0 · 0.06686332799927186sPASSinput · generic input · output · check report
996accepted exit 0 · 0.05969855200055463sPASSinput · generic input · output · check report
997accepted exit 0 · 0.06301308100046299sPASSinput · generic input · output · check report
998accepted exit 0 · 0.07488084800024808sPASSinput · generic input · output · check report
999accepted exit 0 · 0.0997097899999062sPASSinput · generic input · output · check report
How this PBT was generated and reviewed

paired production revision · manifest.json · review.json

partial source coverage: Approved for execution and public reporting; translation accuracy and completeness remain separately unvalidated.

Independent replay: 20 generated, 20 compiler-accepted; checker verdicts {"PASS": 20}. Compiler binary and revision identities matched.

Covered requirements

  • Module-level callable/thread/graph definitions, absence of SCF within graphs, and graph-launch containment within threads.

Uncovered requirements

  • Full correspondence to the source passage and coverage beyond the authored generator/checker have not been established; empty selections may pass without exercising assertions.
Agent-selected pinned authoring context · authoring-context.json
{"entries":[{"file_sha256":"d76b4cb1e888697d5f011a939e68cbc6230647c4d457c12d22689740aa43a44d","kind":"documentation_input","lines":"87-90","path":"docs/spec-compiler-part-3-dfg.md","roles":["applicability","input_construction"],"text":"Between Parts 2 and 3, SCF optimization and DSE produce the selected\nStructured Program Candidate. That domain owns all performance-distinct\nstructured choices. Part 3 begins only after those choices and their typed\nownership carriers are explicit.","why":"Part 3 begins only after the selected Structured Program Candidate is explicit, so the grammar emits already-selected ownership carriers rather than raw host SCF."},{"file_sha256":"d76b4cb1e888697d5f011a939e68cbc6230647c4d457c12d22689740aa43a44d","kind":"documentation_input","lines":"92-100","path":"docs/spec-compiler-part-3-dfg.md","roles":["input_construction","input_well_formedness"],"text":"Input to graph extraction is an MLIR module containing module-scope\n`dataflow.thread` definitions. Every selected SpatialCore candidate is already\nmaterialized as a `loom.spatial_region` inside exactly one thread. Other thread\nbody code remains InstructionCore-resident, including SCF-shaped code outside\nan explicit spatial boundary. Imported Host or InstructionCore code remains in\nits `llvm.func` envelope; genuinely standard-MLIR-native `func.func` callables\nmay coexist in the module. Either callable is ownership-neutral and does not\nauthorize graph creation through its signature, body shape, memory effects, or\nreturn convention.","why":"Fixes the top-level input shape: module-scope dataflow.thread definitions, each selected SpatialCore candidate materialized as a loom.spatial_region inside exactly one thread, InstructionCore-resident thread code outside spatial boundaries, and coexisting ownership-neutral llvm.func / func.func callables."},{"file_sha256":"d76b4cb1e888697d5f011a939e68cbc6230647c4d457c12d22689740aa43a44d","kind":"documentation_input","lines":"102-135","path":"docs/spec-compiler-part-3-dfg.md","roles":["context"],"text":"Output is an initial Canonical Dataflow Program: module-level `llvm.func`\nsymbols for imported LLVM callables, any genuinely native `func.func` helpers,\nmodule-level\n`dataflow.thread` definitions reached by zero or more\n`dataflow.thread.launch` ops; and module-level `dataflow.graph`\ndefinitions reached by zero or more `dataflow.graph.launch` ops\ninside thread definitions. No `scf.*` op is left inside any\n`dataflow.graph` definition's body after successful graph-region lowering.\nThe recursive lowering contract accepts arbitrary nesting of\n`scf.if`, source-sequential `scf.for`, `scf.while`, and fixed-width\ngraph-owned `scf.parallel` or effect-form `scf.forall`. A graph-owned parallel\nop must have a compile-time fixed domain, and all facts needed to establish\nownership, width, and cross-lane legality must be present in the current\nStructured Program Candidate's semantic IR and resolved lowering config.\nThe lowerer re-proves those facts; lineage, cached analyses, and external\nprovenance cannot make an otherwise invalid candidate legal. Dynamic-width,\nresource-mapped, and result or reduction forms fail before any graph is\nmutated; the graph owner does not infer ownership, serialization, unrolling,\nor reduction order. The\n`dataflow.thread.launch` op carries the completion token and\nmapped-memory data transfer; the def remains a callable kernel\nbody, not a tensor-result returning op. Memory dependence\nconstruction runs in the recursive graph owner using basic graph-local alias\nroots and per-partition write/read frontiers (see\n`docs/spec-compiler-part-3-mem.md`).\nThe Structured Transfer Algebra defines graph-owned parallel composition only\nafter the Structured Program Candidate has materialized its P[] ownership and\nschedule form in semantic SCF. That fixed-domain SCF is the transient input\nrepresentation for mechanical lowering. It is recursively replicated into\nstatic lanes and removed; no parallel control op or schedule record survives\nin canonical graph IR.\nGraph candidate eligibility and atomic publication are governed by this\ndocument. TechMapping, SpatialMapping, and SystemMapping realization are\noutside this IR.","why":"Governing context for the sampled obligation; supplies the Canonical Dataflow Program terminology (module-level thread/graph definitions, graph.launch inside thread definitions) used to phrase the postcondition."},{"file_sha256":"d76b4cb1e888697d5f011a939e68cbc6230647c4d457c12d22689740aa43a44d","kind":"documentation_input","lines":"110-117","path":"docs/spec-compiler-part-3-dfg.md","roles":["input_construction","input_well_formedness"],"text":"The recursive lowering contract accepts arbitrary nesting of\n`scf.if`, source-sequential `scf.for`, `scf.while`, and fixed-width\ngraph-owned `scf.parallel` or effect-form `scf.forall`. A graph-owned parallel\nop must have a compile-time fixed domain, and all facts needed to establish\nownership, width, and cross-lane legality must be present in the current\nStructured Program Candidate's semantic IR and resolved lowering config.\nThe lowerer re-proves those facts; lineage, cached analyses, and external\nprovenance cannot make an otherwise invalid candidate legal. Dynamic-width,","why":"The recursive lowering contract: arbitrary nesting of scf.if, source-sequential scf.for, scf.while, and fixed-width graph-owned scf.parallel / effect-form scf.forall, with ownership, width and cross-lane legality facts present in the candidate itself. Drives the nested stmt rule and the lane-disjoint index construction."},{"file_sha256":"d76b4cb1e888697d5f011a939e68cbc6230647c4d457c12d22689740aa43a44d","kind":"documentation_input","lines":"117-120","path":"docs/spec-compiler-part-3-dfg.md","roles":["input_well_formedness"],"text":"provenance cannot make an otherwise invalid candidate legal. Dynamic-width,\nresource-mapped, and result or reduction forms fail before any graph is\nmutated; the graph owner does not infer ownership, serialization, unrolling,\nor reduction order. The","why":"Dynamic-width, resource-mapped, and result or reduction parallel forms fail before any graph is mutated; the grammar therefore samples only constant-bound scf.parallel with a bare scf.reduce and scf.forall without shared_outs."},{"file_sha256":"d76b4cb1e888697d5f011a939e68cbc6230647c4d457c12d22689740aa43a44d","kind":"documentation_input","lines":"127-132","path":"docs/spec-compiler-part-3-dfg.md","roles":["input_construction","input_well_formedness"],"text":"The Structured Transfer Algebra defines graph-owned parallel composition only\nafter the Structured Program Candidate has materialized its P[] ownership and\nschedule form in semantic SCF. That fixed-domain SCF is the transient input\nrepresentation for mechanical lowering. It is recursively replicated into\nstatic lanes and removed; no parallel control op or schedule record survives\nin canonical graph IR.","why":"Fixed-domain semantic SCF is the transient input representation for mechanical lowering; justifies generating the parallel domain as compile-time constants inside the spatial region."},{"file_sha256":"d76b4cb1e888697d5f011a939e68cbc6230647c4d457c12d22689740aa43a44d","kind":"documentation_input","lines":"1454-1461","path":"docs/spec-compiler-part-3-dfg.md","roles":["input_construction","input_well_formedness"],"text":"This section records Dataflow templates for SCF boundaries. Recursive lowering\napplies the same transfer to `scf.if`, normalized `scf.index_switch`,\nsource-sequential `scf.for`, `scf.while`, and fixed-domain\neffect-form `scf.parallel` / `scf.forall`. A zero-case `scf.index_switch` is\nreplaced by its default region during structured normalization. Other\nunsupported source forms must be normalized by Part 2 before handoff of the\nselected Structured Program Candidate and are rejected if they remain in a\ngraph.","why":"Enumerates the SCF boundary forms the same transfer applies to, bounding the set of control constructs the grammar samples inside a graph candidate."},{"file_sha256":"73f239de628bbf8d40145ecde732142ffcf6567c9483e6dc2286ae9176a6907c","kind":"language_definition","lines":"8-101","path":"include/Frontend/IR/LoomOps.td","roles":["input_construction","input_well_formedness"],"text":"def Loom_SpatialRegionOp : Loom_Op<\"spatial_region\", [\n    IsolatedFromAbove,\n    SingleBlock,\n    AttrSizedOperandSegments,\n    AttrSizedResultSegments,\n    RecursiveMemoryEffects\n]> {\n  let summary = \"Structured candidate for one SpatialCore graph\";\n  let description = [{\n    Holds one structured candidate inside a `dataflow.thread`. Operands are\n    normalized as value inputs, stream input channels, memory inputs, and\n    stream output channels. Results are normalized as value outputs followed\n    by memory outputs. Each stream input has one affine `source_map`.\n\n    This operation is temporary compiler IR. Successful publication replaces\n    it with one native-valid `dataflow.graph` and its matching launch.\n  }];\n\n  let arguments = (ins\n      Variadic<AnyType>:$valueInputs,\n      Variadic<Dataflow_ChannelType>:$streamInputs,\n      Variadic<AnyType>:$memoryInputs,\n      Variadic<Dataflow_ChannelType>:$streamOutputs,\n      AffineMapArrayAttr:$source_maps,\n      OptionalAttr<StrAttr>:$graph_name);\n\n  let results = (outs\n      Variadic<AnyType>:$valueResults,\n      Variadic<AnyType>:$memoryResults);\n\n  let regions = (region AnyRegion:$body);\n\n  let skipDefaultBuilders = 1;\n  let builders = [\n    OpBuilder<(ins\n        \"::mlir::ValueRange\":$valueInputs,\n        \"::mlir::ValueRange\":$streamInputs,\n        \"::mlir::ValueRange\":$memoryInputs,\n        \"::mlir::ValueRange\":$streamOutputs,\n        \"::mlir::TypeRange\":$valueResultTypes,\n        \"::mlir::TypeRange\":$memoryResultTypes,\n        \"::mlir::ArrayAttr\":$sourceMaps,\n        CArg<\"::mlir::StringAttr\", \"{}\">:$graphName), [{\n      $_state.addOperands(valueInputs);\n      $_state.addOperands(streamInputs);\n      $_state.addOperands(memoryInputs);\n      $_state.addOperands(streamOutputs);\n      $_state.addTypes(valueResultTypes);\n      $_state.addTypes(memoryResultTypes);\n      $_state.addAttribute(\"source_maps\", sourceMaps);\n      if (graphName)\n        $_state.addAttribute(\"graph_name\", graphName);\n      auto &properties = $_state.getOrAddProperties<Properties>();\n      properties.operandSegmentSizes = {\n          static_cast<int32_t>(valueInputs.size()),\n          static_cast<int32_t>(streamInputs.size()),\n          static_cast<int32_t>(memoryInputs.size()),\n          static_cast<int32_t>(streamOutputs.size())};\n      properties.resultSegmentSizes = {\n          static_cast<int32_t>(valueResultTypes.size()),\n          static_cast<int32_t>(memoryResultTypes.size())};\n      $_state.addRegion();\n    }]>\n  ];\n\n  let hasVerifier = 1;\n}\n\ndef Loom_SpatialYieldOp : Loom_Op<\"spatial_yield\", [\n    Terminator,\n    ParentOneOf<[\"::loom::SpatialRegionOp\"]>,\n    AttrSizedOperandSegments,\n    Pure\n]> {\n  let summary = \"Yield value and memory results from a spatial candidate\";\n\n  let arguments = (ins\n      Variadic<AnyType>:$values,\n      Variadic<AnyType>:$memories);\n\n  let skipDefaultBuilders = 1;\n  let builders = [\n    OpBuilder<(ins\n        \"::mlir::ValueRange\":$values,\n        \"::mlir::ValueRange\":$memories), [{\n      $_state.addOperands(values);\n      $_state.addOperands(memories);\n      auto &properties = $_state.getOrAddProperties<Properties>();\n      properties.operandSegmentSizes = {\n          static_cast<int32_t>(values.size()),\n          static_cast<int32_t>(memories.size())};\n    }]>\n  ];","why":"loom.spatial_region / loom.spatial_yield definitions: IsolatedFromAbove single-block body, the value/stream-in/memory/stream-out operand segmentation and value/memory result segmentation encoded as operandSegmentSizes and resultSegmentSizes, and the source_maps / graph_name attributes the grammar must spell."},{"file_sha256":"f4e60b2e62b496c3714437bd100ab5236540abebd3685dfbd25eeddb37cb7160","kind":"language_definition","lines":"614-765","path":"include/Dataflow/IR/DataflowOps.td","roles":["input_construction","input_well_formedness"],"text":"def Dataflow_ThreadOp : Dataflow_Op<\"thread\", [\n    AutomaticAllocationScope,\n    IsolatedFromAbove,\n    HasParent<\"::mlir::ModuleOp\">,\n    SingleBlockImplicitTerminator<\"ThreadYieldOp\">,\n    FunctionOpInterface,\n    RecursiveMemoryEffects\n]> {\n  let summary = \"Symbol-bearing function-like AccCore kernel definition\";\n  let description = [{\n    Module-scope, function-like callable that holds an AccCore kernel\n    body. It does not itself execute; one or more\n    `dataflow.thread.launch` ops materialize launches of it.\n\n    The body's entry block has the layout\n    `(args_*, thread_ctrl: none, iv_*: index)` (per spec section\n    5.4.1). The first N block args mirror `function_type.inputs`; the\n    trailing `thread_ctrl` and grid index args are NOT in\n    `function_type` (they are launch-instance extras). Specifically:\n\n      * Args[0 .. N-1]   match `function_type.inputs` position-wise.\n      * Args[N]          is `none` -- the per-launch `thread_ctrl`\n                         slot, used as the AccCore start signal and\n                         consumed by root `dataflow.graph.launch` ops\n                         in the body as a dependency event.\n      * Args[N+1 .. end] are all `index` -- one per grid dim.\n\n    The custom assembly format prints the required `domain(...)` immediately\n    after the symbol and the trailing extras after the function-style\n    signature using a separate `ctrl ( ... )` clause\n    (the `thread_ctrl` slot) and an `iv ( ... )` clause (the\n    grid-index slots). Either / both clauses are optional; threads\n    written without them are accepted at parse time only when the op\n    is external (i.e., body is empty), since a body-having thread\n    must carry the trailing `thread_ctrl` slot per the verifier.\n\n    The op is `IsolatedFromAbove`; values flow in only through the\n    matching `dataflow.thread.launch` body operands.\n\n    Every definition carries one closed `domain`: DenseRectangular or\n    DynamicWork. Dense rank is derived solely from the trailing index block\n    arguments. DynamicWork carries one ordinary function-input ordinal and has\n    no coordinate suffix.\n  }];\n\n  let arguments = (ins\n      SymbolNameAttr:$sym_name,\n      TypeAttrOf<FunctionType>:$function_type,\n      Dataflow_ThreadDomainAttr:$domain,\n      OptionalAttr<StrAttr>:$sym_visibility,\n      OptionalAttr<DictArrayAttr>:$arg_attrs,\n      OptionalAttr<DictArrayAttr>:$res_attrs);\n\n  let regions = (region SizedRegion<1>:$body);\n\n  let hasCustomAssemblyFormat = 1;\n  let hasVerifier = 1;\n\n  let builders = [\n    OpBuilder<(ins\n        \"::llvm::StringRef\":$name,\n        \"::mlir::FunctionType\":$type,\n        \"::dataflow::ThreadDomainAttr\":$domain,\n        CArg<\"::llvm::ArrayRef<::mlir::NamedAttribute>\", \"{}\">:$attrs)>\n  ];\n\n  let extraClassDeclaration = [{\n    /// FunctionOpInterface methods.\n    ::llvm::ArrayRef<::mlir::Type> getArgumentTypes() {\n      return getFunctionType().getInputs();\n    }\n    ::llvm::ArrayRef<::mlir::Type> getResultTypes() {\n      return getFunctionType().getResults();\n    }\n    ::mlir::Region *getCallableRegion() {\n      return isExternal() ? nullptr : &getBody();\n    }\n    bool isExternal() { return getBody().empty(); }\n\n    /// Override the default FunctionOpInterface body verifier: a\n    /// dataflow.thread body's entry block leads with the\n    /// function-signature args, then a `none`-typed `thread_ctrl`\n    /// slot, then zero or more `index`-typed `iv_*` slots (per spec\n    /// section 5.4.1: `(args_*, thread_ctrl, iv_*)`).\n    ::llvm::LogicalResult verifyBody() {\n      if (isExternal())\n        return ::mlir::success();\n      ::mlir::Block &entry = getBody().front();\n      ::llvm::ArrayRef<::mlir::Type> inputs = getFunctionType().getInputs();\n      const size_t N = inputs.size();\n      // Body-carrying threads MUST have the trailing thread_ctrl slot.\n      if (entry.getNumArguments() < N + 1)\n        return emitOpError(\"entry block must have at least \")\n               << (N + 1)\n               << \" arguments (function inputs + 1 thread_ctrl slot)\";\n      // First N entry block arguments must match function_type.inputs.\n      for (size_t i = 0; i < N; ++i) {\n        if (entry.getArgument(i).getType() != inputs[i])\n          return emitOpError(\"type of entry block argument #\")\n                 << i << '(' << entry.getArgument(i).getType()\n                 << \") must match the corresponding function signature input (\"\n                 << inputs[i] << ')';\n      }\n      // Slot N must be the `none`-typed thread_ctrl per spec\n      // section 5.4.1.\n      if (!::llvm::isa<::mlir::NoneType>(entry.getArgument(N).getType()))\n        return emitOpError(\"entry block argument #\")\n               << N << \" (thread_ctrl) must have type `none`, got \"\n               << entry.getArgument(N).getType();\n      if (getDomain().getKind() ==\n              ::dataflow::ThreadDomainKind::DynamicWork &&\n          entry.getNumArguments() != N + 1)\n        return emitOpError(\"dynamic-work thread body must not have coordinate \"\n                           \"arguments\");\n      // All remaining dense-domain slots are grid induction variables of\n      // `index`.\n      for (size_t i = N + 1, e = entry.getNumArguments(); i < e; ++i) {\n        if (!::llvm::isa<::mlir::IndexType>(entry.getArgument(i).getType()))\n          return emitOpError(\"entry block argument #\")\n                 << i << \" (grid iv) must have type `index`, got \"\n                 << entry.getArgument(i).getType();\n      }\n      return ::mlir::success();\n    }\n  }];\n}\n\ndef Dataflow_ThreadYieldOp : Dataflow_Op<\"thread.yield\", [\n    Terminator,\n    ParentOneOf<[\"::dataflow::ThreadOp\"]>,\n    Pure\n]> {\n  let summary = \"Terminator for a dataflow.thread body\";\n  let description = [{\n    Accepts an unordered all-of completion frontier of `none` values.\n    Tensor-result aggregation from `scf.forall` is materialised into\n    explicit destination-buffer writes before thread promotion, so the\n    thread definition has no parallel combining region or thread data\n    results.\n  }];\n\n  let arguments = (ins Variadic<NoneType>:$completionFrontier);\n\n  let assemblyFormat = \"($completionFrontier^ `:` type($completionFrontier))? attr-dict\";\n\n  let skipDefaultBuilders = 1;\n  let builders = [\n    OpBuilder<(ins CArg<\"::mlir::ValueRange\", \"{}\">:$completionFrontier), [{\n      $_state.addOperands(completionFrontier);\n    }]>\n  ];\n}","why":"dataflow.thread definition: HasParent ModuleOp, IsolatedFromAbove, implicit ThreadYieldOp terminator, thread domain attribute and ctrl argument; fixes the module-scope thread syntax the grammar emits."},{"file_sha256":"7f380008fb405f6cf8d60d16d1b5980dc1d2e694f9842bcfeb6538fbcfa01099","kind":"implementation","lines":"1-57","path":"lib/Frontend/Lowering/Pipeline.cpp","roles":["applicability","context"],"text":"// Pipeline glue and pass-registry hooks for the SCF-to-DFG lowering\n// passes. The standard pipeline runs:\n//\n//     loom-lower-for-to-graph           (module-level)\n//\n// `loom-lower-for-to-graph` owns the atomic publication transaction. It\n// consumes explicit loom.spatial_region candidates, runs graph finalization\n// on a scratch module, validates the native result, and publishes only the\n// completed module. Graph memref-copy expansion is part of that finalization,\n// so a copy the current profile cannot expand fails the transaction instead of\n// reaching the published program.\n//\n// Thread ownership must already be present in the Structured Program\n// Candidate. The independently registered forall pass only diagnoses raw\n// implicit promotion requests.\n\n#include \"Frontend/Lowering/Passes.h\"\n\n#include \"mlir/Pass/PassManager.h\"\n#include \"mlir/Pass/PassRegistry.h\"\n#include \"mlir/Transforms/Passes.h\"\n\nnamespace loom {\nnamespace lowering {\n\nvoid registerExpandGraphMemrefCopyPass();\nvoid registerLowerForallToThreadPass();\nvoid registerLowerForToGraphPass();\nvoid registerLowerGraphConstantsPass();\nvoid registerLowerGraphMemoryPass();\n\nstatic void buildPipelineOnOpPassManager(::mlir::OpPassManager &pm) {\n  pm.addPass(createLowerForToGraphPass());\n}\n\nvoid registerLoweringPasses() {\n  registerExpandGraphMemrefCopyPass();\n  registerLowerForallToThreadPass();\n  registerLowerForToGraphPass();\n  registerLowerGraphConstantsPass();\n  registerLowerGraphMemoryPass();\n  static bool once = []() {\n    ::mlir::PassPipelineRegistration<>(\n        \"loom-lower-scf-to-dfg\",\n        \"Run the standard Loom SCF-to-DFG lowering pipeline.\",\n        buildPipelineOnOpPassManager);\n    return true;\n  }();\n  (void)once;\n}\n\nvoid buildLoweringPipeline(::mlir::PassManager &pm) {\n  buildPipelineOnOpPassManager(pm);\n}\n\n} // namespace lowering\n} // namespace loom","why":"Registers the loom-lower-scf-to-dfg pipeline as exactly the loom-lower-for-to-graph pass that owns the atomic spatial_region-to-dataflow.graph publication transaction; confirms the subject-command pass pipeline matches the claimed stage and that ownership must already be present in the input."},{"file_sha256":"320a66521bba7346cf97dce9b11dce757385efbfbe7c36cc03f44198965edb4b","kind":"verifier","lines":"1280-1331","path":"lib/Frontend/Lowering/GraphParallelLowering.cpp","roles":["input_well_formedness"],"text":"if (unitProjection && lane && !projected[*lane])\n          projected[*lane] = true;\n      }\n      if (!::llvm::all_of(projected, [](bool value) { return value; }))\n        return info.op->emitError(\n            \"loom-lower-graph-memory: dynamic parallel plain-memory effects \"\n            \"have no exact injective lane projection\");\n      continue;\n    }\n\n    std::unordered_map<std::vector<::llvm::APInt>, SeenAddress, AddressKeyHash>\n        seen;\n    uint64_t lane = 0;\n    bool overlap = false;\n    ::llvm::SmallVector<int64_t, 4> point;\n    (void)forEachParallelPointUntil(\n        *info.domain, 0, point, [&](::llvm::ArrayRef<int64_t> coordinates) {\n          uint64_t currentLane = lane++;\n          for (const AccessExpressions &access : analyzed) {\n            std::vector<::llvm::APInt> key;\n            key.reserve(comparableDimensions.size());\n            for (unsigned dimension : comparableDimensions)\n              key.push_back(\n                  evaluateLaneConstant(access.address[dimension], coordinates));\n\n            auto [found, inserted] = seen.try_emplace(\n                std::move(key),\n                SeenAddress{currentLane, /*multipleLanes=*/false,\n                            access.access->writes, access.access->atomic});\n            if (inserted)\n              continue;\n\n            SeenAddress &previous = found->second;\n            bool differentLane =\n                previous.firstLane != currentLane || previous.multipleLanes;\n            if (differentLane && (previous.writes || access.access->writes) &&\n                (!previous.allAtomic || !access.access->atomic)) {\n              overlap = true;\n              return false;\n            }\n            if (previous.firstLane != currentLane)\n              previous.multipleLanes = true;\n            previous.writes |= access.access->writes;\n            previous.allAtomic &= access.access->atomic;\n          }\n          return true;\n        });\n    if (overlap)\n      return info.op->emitError(\n          \"loom-lower-graph-memory: parallel lanes have overlapping plain \"\n          \"memory effects\");\n  }","why":"Per-lane memory effect overlap check that rejects a candidate whose parallel lanes write the same element. Its diagnostic rejected the first grammar revision and established that each lane must address a disjoint element index."},{"file_sha256":"c25a72ad99349973a47f2a1e081b6b269920e25cc5f59f74619c2e7ce0c2b65d","kind":"test","lines":"23-52","path":"test/raise/scf-to-dfg-explicit-spatial-ownership.mlir","roles":["input_construction"],"text":"%zero = arith.constant 0 : index\n  %four = arith.constant 4 : index\n  %one = arith.constant 1 : index\n  scf.for %index = %zero to %four step %one {\n    memref.store %value, %target[%index] : memref<4xi32>\n  }\n  return\n}\n\ndataflow.thread private @instruction_only domain(#dataflow.thread_domain<dense>)(\n    %target: memref<1xi32>, %value: i32) ctrl (%ctrl: none) {\n  %zero = arith.constant 0 : index\n  memref.store %value, %target[%zero] : memref<1xi32>\n  dataflow.thread.yield\n}\n\ndataflow.thread private @selected_spatial domain(#dataflow.thread_domain<dense>)(\n    %target: memref<1xi32>, %value: i32) ctrl (%ctrl: none) {\n  \"loom.spatial_region\"(%value, %target)\n      <{operandSegmentSizes = array<i32: 1, 0, 1, 0>,\n        resultSegmentSizes = array<i32: 0, 0>}> ({\n    ^bb0(%payload: i32, %memory: memref<1xi32>):\n      %zero = arith.constant 0 : index\n      memref.store %payload, %memory[%zero] : memref<1xi32>\n      \"loom.spatial_yield\"()\n          <{operandSegmentSizes = array<i32: 0, 0>}> : () -> ()\n  }) {graph_name = \"selected_graph\", source_maps = []} :\n      (i32, memref<1xi32>) -> ()\n  dataflow.thread.yield\n}","why":"Accepted spelling of a module mixing a host func.func, an InstructionCore-only dataflow.thread, and a thread carrying an explicit loom.spatial_region in generic form."},{"file_sha256":"dcb708e61fd42fa8e3f9a37ef7669b0fbd5b19123b648d5d66dd735b763e018d","kind":"test","lines":"22-82","path":"test/raise/scf-to-dfg-graph-owned-parallel-recurrence.mlir","roles":["input_construction"],"text":"%n: index, %memory: memref<?xindex>) ctrl (%ctrl: none) {\n  \"loom.spatial_region\"(%n, %memory)\n      <{operandSegmentSizes = array<i32: 1, 0, 1, 0>,\n        resultSegmentSizes = array<i32: 0, 0>}> ({\n    ^bb0(%limit: index, %target: memref<?xindex>):\n      %zero = arith.constant 0 : index\n      %one = arith.constant 1 : index\n      scf.forall (%lane) in (2) {\n        %sum = scf.for %i = %zero to %limit step %one\n            iter_args(%state = %lane) -> (index) {\n          %next = arith.addi %state, %i : index\n          scf.yield %next : index\n        }\n        memref.store %sum, %target[%lane] : memref<?xindex>\n      }\n      \"loom.spatial_yield\"()\n          <{operandSegmentSizes = array<i32: 0, 0>}> : () -> ()\n  }) {graph_name = \"g_parallel_recurrence_0\", source_maps = []} :\n      (index, memref<?xindex>) -> ()\n  dataflow.thread.yield\n}\n\n// CHECK-LABEL: dataflow.graph private @g_selected_nested_recurrence_0\n// CHECK: dataflow.demux\n// CHECK: dataflow.stream\n// CHECK: dataflow.carry\n// CHECK: dataflow.store\n// CHECK: dataflow.stream\n// CHECK: dataflow.carry\n// CHECK: dataflow.store\n// CHECK: dataflow.sync\n// CHECK: dataflow.mux\n// CHECK-NOT: scf.\n// CHECK: dataflow.graph.return\n\ndataflow.thread private @selected_nested_recurrence domain(#dataflow.thread_domain<dense>)(\n    %condition: i1, %n: index, %memory: memref<?xindex>) ctrl (%ctrl: none) {\n  \"loom.spatial_region\"(%condition, %n, %memory)\n      <{operandSegmentSizes = array<i32: 2, 0, 1, 0>,\n        resultSegmentSizes = array<i32: 0, 0>}> ({\n    ^bb0(%selected: i1, %limit: index, %target: memref<?xindex>):\n      %zero = arith.constant 0 : index\n      %one = arith.constant 1 : index\n      %two = arith.constant 2 : index\n      scf.if %selected {\n        scf.parallel (%lane) = (%zero) to (%two) step (%one) {\n          %sum = scf.for %i = %zero to %limit step %one\n              iter_args(%state = %lane) -> (index) {\n            %next = arith.addi %state, %i : index\n            scf.yield %next : index\n          }\n          memref.store %sum, %target[%lane] : memref<?xindex>\n          scf.reduce\n        }\n      }\n      \"loom.spatial_yield\"()\n          <{operandSegmentSizes = array<i32: 0, 0>}> : () -> ()\n  }) {graph_name = \"g_selected_nested_recurrence_0\", source_maps = []} :\n      (i1, index, memref<?xindex>) -> ()\n  dataflow.thread.yield\n}","why":"Accepted spelling of fixed-width graph-owned scf.forall / scf.parallel and nested scf.if / scf.for inside a spatial region, including the constant bound form and the trailing scf.reduce."},{"file_sha256":"d161de7a4a08f9902236e14b73808fc9caeadf88e4b2f2e15d61000cb648ebb0","kind":"test","lines":"30-59","path":"test/raise/scf-to-dfg-graph-memory.mlir","roles":["input_construction"],"text":"module attributes {\n  llvm.data_layout = \"e-p:64:64\",\n  dlti.dl_spec = #dlti.dl_spec<#dlti.dl_entry<index, 64>>\n} {\n  dataflow.thread private @pointer_chain\n      domain(#dataflow.thread_domain<dense>)(\n          %base: !llvm.ptr, %outer: i64, %middle: i64, %inner: i64)\n      ctrl (%ctrl: none) {\n    %value = \"loom.spatial_region\"(%outer, %middle, %inner, %base)\n        <{operandSegmentSizes = array<i32: 4, 0, 0, 0>,\n          resultSegmentSizes = array<i32: 1, 0>}> ({\n      ^bb0(%i: i64, %j: i64, %k: i64, %memory: !llvm.ptr):\n        %first = llvm.getelementptr inbounds %memory[%i]\n            : (!llvm.ptr, i64) -> !llvm.ptr, !llvm.array<4 x i8>\n        %second = llvm.getelementptr inbounds %first[%j]\n            : (!llvm.ptr, i64) -> !llvm.ptr, !llvm.array<4 x i8>\n        %third = llvm.getelementptr inbounds %second[%k]\n            : (!llvm.ptr, i64) -> !llvm.ptr, !llvm.array<4 x i8>\n        %loaded = llvm.load %third : !llvm.ptr -> f32\n        \"loom.spatial_yield\"(%loaded)\n            <{operandSegmentSizes = array<i32: 1, 0>}> : (f32) -> ()\n    }) {graph_name = \"pointer_chain_graph\", source_maps = []} :\n        (i64, i64, i64, !llvm.ptr) -> f32\n    dataflow.thread.yield\n  }\n}\n\n// Static ranked memrefs use their exact offset and per-dimension strides.\n\n// RANKED-LABEL: dataflow.graph private @rank3_row_major(","why":"Accepted spelling of the module-scope dataflow.thread header with domain(#dataflow.thread_domain<dense>), the ctrl block argument, and the spatial region's operand/result segment attributes."}],"primary_bundle_sha256":"f83dadb2236b9f0d439cf663bd10f63641d693859042ae26698a4c4a7e5a998e","project":"PolyArch/loom","revision":"48615bc5925ef4b9db8b4550b5d4322933cf4b7b","schema":"spectriad.authoring-context/v1","selection_sha256":"01d43cfdaf56969375c7c7e51582ae6de4b2c9217e048fee1b04384ffbbfd583"}
generator source-blind backtranslation · sessions/reverse-generator/session-evidence/result-events.json
[
  {
    "api_error_status": null,
    "duration_api_ms": 56568,
    "duration_ms": 56614,
    "fast_mode_disabled_reason": "sdk_opt_in_required",
    "fast_mode_state": "off",
    "first_content_frame_ms": 1584,
    "is_error": false,
    "modelUsage": {
      "claude-opus-5": {
        "cacheCreationInputTokens": 5588,
        "cacheReadInputTokens": 0,
        "canonicalModel": "claude-opus-5",
        "contextWindow": 1000000,
        "costBasis": "list",
        "costUSD": 0.16199000000000002,
        "inputTokens": 2,
        "maxOutputTokens": 64000,
        "outputTokens": 4244,
        "provider": "firstParty",
        "thinkingTokens": 827,
        "webSearchRequests": 0
      }
    },
    "num_turns": 1,
    "permission_denials": [],
    "queued_turn_count": 0,
    "result": "## Preconditions\n\n1. Every emitted program is a single MLIR module body consisting of zero or more ownership-neutral callable declarations/definitions followed by one or more `dataflow.thread` definitions, with no other top-level constructs.\n2. Callable code, when present, appears only as an `llvm.func` declaration with an `(i64) -> i64` signature and a `func.func private` definition whose body consists solely of a `return` of its own block argument at the declared type, so that no callable creates, owns, or authorizes a dataflow graph.\n3. Each thread is declared as `dataflow.thread private @<name>` carrying a `domain(#dataflow.thread_domain<dense>)` attribute, a data parameter list `(%limit: index, %memory: memref<?xindex>)`, a control parameter list `ctrl (%ctrl: none)`, and a body region terminated by `dataflow.thread.yield`.\n4. Thread symbol names are unique within the module, and the `graph_name` attribute of a thread's spatial region is derived from that same thread index, so graph names are likewise unique.\n5. A thread body is either entirely InstructionCore-resident code containing no spatial construct at all, or contains exactly one explicit `\"loom.spatial_region\"` operation; a thread never contains more than one spatial region and never nests one spatial region inside another.\n6. The spatial region is written in generic form with operands `(%limit, %memory)`, `operandSegmentSizes = array<i32: 1, 0, 1, 0>`, `resultSegmentSizes = array<i32: 0, 0>`, a discardable attribute dictionary supplying `graph_name` (a string) and `source_maps = []`, and the function type `(index, memref<?xindex>) -> ()`, i.e. the region produces no results.\n7. The spatial region's single entry block `^bb0` takes exactly two arguments, an `index` and a `memref<?xindex>`, positionally matching the two operands, and its region is terminated by `\"loom.spatial_yield\"()` with `operandSegmentSizes = array<i32: 0, 0>` and type `() -> ()`, yielding no values.\n8. The spatial region is treated as IsolatedFromAbove: every SSA value referenced anywhere inside the region is either one of the two entry block arguments, a constant defined in the region body, an induction variable or block argument of an enclosing SCF construct in the region, or a value defined earlier in the same region; no value defined outside the region (including `%limit`, `%memory`, `%ctrl`) is referenced from within it.\n9. All SSA names in the emitted program are distinct at their point of definition and every use is dominated by its definition, with the numeric suffixes of region-internal names drawn from a single module-wide counter so that no two SCF constructs or leaf operations share a suffix.\n10. The spatial region body begins with index constants and a boolean condition value defined before any control-flow construct that uses them, so the loop bounds and `scf.if` condition are always already-defined region-local values.\n11. Every `scf.for` uses compile-time constant lower bound, upper bound, and step of type `index`, carries no iteration arguments, and its body region has no explicit `scf.yield` operands (a value-free, source-sequential loop).\n12. Every `scf.if` is conditioned on an `i1` produced by `arith.cmpi` inside the region, produces no results, and has either a then-region only or both a then-region and an else-region; both forms are result-free.\n13. Every `scf.parallel` is in effect form: constant lower bound, upper bound, and step tuples of `index`, exactly one induction variable, no reduction init operands, no results, and a body region terminated by an argument-less `scf.reduce`.\n14. Every `scf.forall` is in effect form: a constant upper bound, exactly one induction variable, no `shared_outs`, no results, and no explicit `in_parallel` terminator operands.\n15. The first operations in the body of every `scf.parallel` and `scf.forall` compute a lane-disjoint element index by multiplying the enclosing index expression by the lane width and adding the lane's induction variable, so every memory access performed by that lane and by anything nested under it addresses that lane-private index.\n16. All memory accesses inside the spatial region go through the region's `memref<?xindex>` entry argument, use exactly one `index` subscript, and store only `index`-typed values, so load and store element types agree with the memref element type.\n17. Every `scf.while` has an `(index) -> index` signature: a `before` region that computes an `i1` with `arith.cmpi` and terminates with `scf.condition` forwarding its own block argument, and an `after` region whose `^bb0` takes one `index` argument, ends with `scf.yield` of a single `index` value, and whose loop-carried value is initialized from a region-local constant.\n18. Every region introduced by an SCF construct contains at least one operation before its terminator; no emitted block is empty.\n19. Control-flow nesting inside the spatial region is finite and acyclic in structure: constructs may be arbitrarily interleaved and nested but the nesting depth is bounded, guaranteeing a terminating program text.\n20. The non-spatial thread body form consists only of index constants and a `memref.store` through the thread's own `%memory` parameter, using an `index` subscript and an `index` value, and contains no SCF construct, no call, and no spatial operation.\n\n## Sampling conventions\n\n1. The module contains one or two threads, never zero and never more than two.\n2. The callable preamble is emitted as an all-or-nothing block: either both the `llvm.func @imported_callable` declaration and the `func.func private @native_callable` definition appear, or neither does; intermediate combinations are never produced.\n3. The callable signatures are fixed: `@imported_callable` is always `(i64) -> i64` and `@native_callable` always takes `%arg_a: i32` and returns it as `i32`; no other callable names, arities, or types occur.\n4. Thread names are always `@thread_<k>` and graph names always `\"g_thread_<k>\"` for the zero-based thread index `k`.\n5. Thread parameter names are fixed as `%limit`, `%memory`, and `%ctrl`, and the thread domain attribute is always `dense`; no other domain kind is emitted.\n6. Each thread independently chooses between the non-spatial body and the spatial body, so a module may mix spatial and non-spatial threads; both choices are possible for every thread.\n7. The non-spatial body is a fixed three-line skeleton defining `%izero = arith.constant 0`, `%ione = arith.constant 1`, and storing `%ione` into `%memory[%izero]`; nothing else is ever emitted in that form.\n8. The spatial region preamble is a fixed four-constant skeleton: `%zero = 0`, `%one = 1`, `%two = 2` (all `index`) and `%flag = arith.cmpi ult, %zero, %two`, so the `scf.if` condition is always this one comparison and is always statically true.\n9. Nesting depth inside the spatial region is chosen from 1 to 3; at depth 0 only leaf statements may be emitted, and each nested SCF construct consumes exactly one level.\n10. Every statement block (the region body and each SCF body) contains exactly one or two statements, never zero and never more than two.\n11. At any depth greater than zero the grammar picks uniformly among six statement forms \u2014 `scf.for`, `scf.if`, `scf.parallel`, `scf.forall`, `scf.while`, and a leaf \u2014 so all five SCF constructs and both leaf shapes can appear in any combination.\n12. All loop bounds are the fixed constants `%zero` to `%two` with step `%one`, and `scf.forall` always uses the literal upper bound `2`, giving a fixed trip count and a fixed lane width of two for every parallel construct.\n13. SSA suffixes come from one monotonically increasing module-wide counter, consumed by every SCF construct and every leaf statement (including the store-only leaf, which then leaves its number unused), yielding names such as `%iv3`, `%mx3`, `%ix3`, `%wr5`, `%ld7`.\n14. Name prefixes are fixed by role: `%iv` for induction variables, `%mx`/`%ix` for the lane index multiply/add pair, `%wr`/`%wa`/`%wc`/`%wb`/`%wn` for the while result, init, condition, body argument, and next value, and `%ld`/`%ad` for the load and its increment.\n15. The index expression used for memory accesses starts as `%zero` at the top of the spatial region and is replaced by the current construct's `%ix<n>` only inside `scf.parallel` and `scf.forall` bodies; `scf.for`, `scf.if`, and `scf.while` bodies inherit the enclosing expression unchanged.\n16. The lane index is always computed as `enclosing_index * %two + %iv<n>`, i.e. a multiply-by-two followed by an add, and never any other disjointness scheme.\n17. Leaf statements take one of exactly two shapes: a bare `memref.store %one, %target[idx]`, or a read-modify-write of `memref.load` followed by `arith.addi ..., %one` and a store of the incremented value at the same subscript.\n18. The `scf.while` skeleton is fixed: initial value `%zero`, condition `arith.cmpi ult, %wa<n>, %two`, and body increment `arith.addi %wb<n>, %one`, with the loop result always left unused.\n19. `scf.if` is emitted with or without an else region, both alternatives being possible; the else region, when present, is an independently sampled statement block.\n20. Only the generic assembly form is used for `loom.spatial_region` and `loom.spatial_yield`, while all SCF, arith, memref, and func operations are emitted in custom (pretty) form.\n21. The region entry block arguments are named `%lim` and `%target`, and `%lim` is never referenced by any emitted operation; only `%target` is used.\n22. Indentation is fixed by role (six spaces for statements directly in the region, eight spaces for lane-index and reduce lines, two spaces for thread-level lines) and is purely cosmetic.",
    "result_index": 0,
    "session_id": "259782f2-5a0c-4e79-82ec-3789f7f5e440",
    "stop_reason": "end_turn",
    "subagent_stats": {
      "by_type": {},
      "completed": 0,
      "failed": 0,
      "killed": {
        "parent": 0,
        "system": 0,
        "user": 0
      },
      "max_depth": 0,
      "refused": {
        "budget": 0,
        "concurrency_limit": 0,
        "depth_limit": 0
      },
      "requested": {
        "background": 0,
        "foreground": 0,
        "unset": 0
      },
      "spawned": 0,
      "spawned_by_subagents": 0,
      "started_in_background": 0
    },
    "subtype": "success",
    "terminal_reason": "completed",
    "time_to_request_ms": 46,
    "total_cost_usd": 0.16199000000000002,
    "ttft_ms": 13716,
    "ttft_stream_ms": 1152,
    "type": "result",
    "usage": {
      "cache_creation": {
        "ephemeral_1h_input_tokens": 5588,
        "ephemeral_5m_input_tokens": 0
      },
      "cache_creation_input_tokens": 5588,
      "cache_read_input_tokens": 0,
      "inference_geo": "not_available",
      "input_tokens": 2,
      "iterations": [],
      "output_tokens": 4244,
      "output_tokens_details": {
        "thinking_tokens": 827
      },
      "server_tool_use": {
        "web_fetch_requests": 0,
        "web_search_requests": 0
      },
      "service_tier": "standard",
      "speed": "standard"
    },
    "uuid": "53331fc2-e782-401c-9cd6-73d20955f862"
  }
]
postcondition source-blind backtranslation · sessions/reverse-postcondition/session-evidence/result-events.json
[
  {
    "api_error_status": null,
    "duration_api_ms": 14264,
    "duration_ms": 14291,
    "fast_mode_disabled_reason": "sdk_opt_in_required",
    "fast_mode_state": "off",
    "first_content_frame_ms": 1626,
    "is_error": false,
    "modelUsage": {
      "claude-opus-5": {
        "cacheCreationInputTokens": 5709,
        "cacheReadInputTokens": 0,
        "canonicalModel": "claude-opus-5",
        "contextWindow": 1000000,
        "costBasis": "list",
        "costUSD": 0.0804,
        "inputTokens": 2,
        "maxOutputTokens": 64000,
        "outputTokens": 932,
        "provider": "firstParty",
        "thinkingTokens": 362,
        "webSearchRequests": 0
      }
    },
    "num_turns": 1,
    "permission_denials": [],
    "queued_turn_count": 0,
    "result": "This postcondition looks only at the subject's output program; the `input` root is never mentioned, so nothing is compared across the two programs. From `output.operations` \u2014 which enumerates every operation at every depth, including the root `builtin.module` \u2014 it selects four groups by name: `dataflow.thread` ops, `dataflow.graph` ops, `dataflow.graph.launch` ops, and callables whose name is exactly `llvm.func` or `func.func`. Three separate universally quantified blocks require that every selected callable, every thread, and every graph have a parent operation that exists and is named `builtin.module`, so any such op nested inside a function body, a graph body, a thread body, or any other region is rejected, as is one with no parent at all. For each graph it additionally requires that among all transitive descendants of that graph there is no operation whose dialect (the text before the first dot in its name) is `scf`, which rejects any `scf.*` op at any nesting depth inside the graph, including inside nested ops and nested regions. A fourth block requires, for every `dataflow.graph.launch` op anywhere in the output, that there exists at least one selected thread that structurally and transitively contains that launch; a launch sitting in a module, a plain function, or a graph body with no enclosing `dataflow.thread` fails. All value sources are the output program's own structure \u2014 operation names, dialects, parent links, and containment \u2014 with no attributes, types, operands, results, symbol resolution, or counts consulted. Each of the four blocks is vacuously satisfied when its selected sequence is empty, so an output containing none of these four op kinds passes everything, and an output with launches but zero `dataflow.thread` ops fails the containment assert for every launch. The postcondition never demands that any of these operations exist.",
    "result_index": 0,
    "session_id": "dbf5a01d-7469-4879-9655-44c0283715fb",
    "stop_reason": "end_turn",
    "subagent_stats": {
      "by_type": {},
      "completed": 0,
      "failed": 0,
      "killed": {
        "parent": 0,
        "system": 0,
        "user": 0
      },
      "max_depth": 0,
      "refused": {
        "budget": 0,
        "concurrency_limit": 0,
        "depth_limit": 0
      },
      "requested": {
        "background": 0,
        "foreground": 0,
        "unset": 0
      },
      "spawned": 0,
      "spawned_by_subagents": 0,
      "started_in_background": 0
    },
    "subtype": "success",
    "terminal_reason": "completed",
    "time_to_request_ms": 27,
    "total_cost_usd": 0.0804,
    "ttft_ms": 6803,
    "ttft_stream_ms": 1131,
    "type": "result",
    "usage": {
      "cache_creation": {
        "ephemeral_1h_input_tokens": 5709,
        "ephemeral_5m_input_tokens": 0
      },
      "cache_creation_input_tokens": 5709,
      "cache_read_input_tokens": 0,
      "inference_geo": "not_available",
      "input_tokens": 2,
      "iterations": [],
      "output_tokens": 932,
      "output_tokens_details": {
        "thinking_tokens": 362
      },
      "server_tool_use": {
        "web_fetch_requests": 0,
        "web_search_requests": 0
      },
      "service_tier": "standard",
      "speed": "standard"
    },
    "uuid": "1bb7481d-9a76-40d2-be48-4416856ab743"
  }
]

Activation review

This paired revision was activated by an explicit partial-scope team review bound to both executable artifact hashes.

Approved for execution and public reporting; translation accuracy and completeness remain separately unvalidated.

Run and triage

Work progress