MS1V3 mlir-stage-12-v1 passing 5000/5000

Selected stage: loom-lower-forall-to-thread. Test exactly output obligation mlir-obligation:d1dc2174ff936b5d9497d7eb with its governing context; report any stag

Test report

5000generated samples
100.0%input coverage
100.0%output coverage
+57lines added
+38branches added
63.2%confidence
5000/5000checker passes
Confidence details

Estimated confidence: 63.2%. Conservative lower bound: 1.7% (95% level).

uniform over observed structural partitions. observed partitions; unseen partitions have no supplied target weight. Partitions use recursive production counts and derivation depth. Behavioral classes combine each input’s compiler coverage and assertion decision paths. Catalog partitions with no observations retain maximal missing mass.

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/DataflowDialect.cppMS1V
22/32lines68.8%
4/10branches40.0%
25/32lines78.1%+3
7/10branches70.0%+3
+3 lines · +3 branchesseed 0 · 18 → 16 linesOpen PBT Review PR
+3 lines · +3 branchesseed 0 · 18 → 16 linesOpen PBT Review PR
+3 lines · +3 branchesseed 135 · 24 → 22 linesOpen PBT Review PR
3 newly covered lines · 3 newly covered branches
24                         std::optional<uint64_t> workItemArgOrdinal) {25  switch (kind) {26  case ThreadDomainKind::DenseRectangular:false branch27    if (workItemArgOrdinal)28      return emitError()⋮30                "ordinal";31    return success();32  case ThreadDomainKind::DynamicWork:true branch33    if (!workItemArgOrdinal)false branch34      return emitError()35             << "dynamic-work thread domain requires a work-item argument "36                "ordinal";37    return success();38  }39  return emitError() << "unknown thread domain kind";
…/lib/Dataflow/IR/DataflowFunctionLikeOps.cppMS1V
693/1097lines63.2%
264/592branches44.6%
747/1097lines68.1%+54
298/592branches50.3%+34
+54 lines · +34 branchesseed 0 · 18 → 16 linesOpen PBT Review PR
+54 lines · +34 branchesseed 0 · 18 → 16 linesOpen PBT Review PR
+54 lines · +34 branchesseed 135 · 24 → 22 linesOpen PBT Review PR
54 newly covered lines · 34 newly covered branches
102enum class ExtentExprKind { Unsupported, Constant, AddI, IndexCast };103104static bool isScalarNonzeroSignlessIntegerOrIndex(Type type) {105  if (isa<IndexType>(type))true branch106    return true;107  auto integerType = dyn_cast<IntegerType>(type);108  return integerType && integerType.isSignless() && integerType.getWidth() != 0;109}110111static unsigned getScalarIntegerBitWidth(Type type) {⋮115}116117static ExtentExprKind classifyExtentExpr(Operation *op) {118  if (op->getNumRegions() != 0 || op->getNumSuccessors() != 0)false branchfalse branch119    return ExtentExprKind::Unsupported;120121  if (isa<arith::ConstantOp>(op)) {true branch122    if (op->getNumOperands() != 0 || op->getNumResults() != 1)false branchfalse branch123      return ExtentExprKind::Unsupported;124    Type resultType = op->getResult(0).getType();125    auto value = dyn_cast_or_null<IntegerAttr>(126        cast<arith::ConstantOp>(op).getProperties().value);127    if (!isScalarNonzeroSignlessIntegerOrIndex(resultType) || !value ||false branchfalse branchfalse branch128        value.getType() != resultType)false branch129      return ExtentExprKind::Unsupported;130    return ExtentExprKind::Constant;131  }132133  if (isa<arith::AddIOp>(op)) {⋮170    SmallVector<Frame> stack;171    schedule(value, stack);172    while (!stack.empty()) {true branch173      Frame &frame = stack.back();174      if (constants.contains(frame.value)) {false branch175        active.erase(frame.value);176        stack.pop_back();⋮178      }179180      Operation *definingOp = cast<OpResult>(frame.value).getOwner();181      bool descended = false;182      while (frame.nextOperand < definingOp->getNumOperands()) {false branch183        Value operand = definingOp->getOperand(frame.nextOperand++);184        if (constants.contains(operand))⋮189        }190      }191      if (descended)false branch192        continue;193194      evaluateOperation(definingOp, frame.kind);195      active.erase(frame.value);196      stack.pop_back();197    }198199    return constants.lookup(value);⋮217218    auto result = dyn_cast<OpResult>(value);219    if (!result) {false branch220      constants.try_emplace(value, Attribute{});221      return false;222    }223224    Operation *definingOp = result.getOwner();225    ExtentExprKind kind = classifyExtentExpr(definingOp);226    if (kind == ExtentExprKind::Unsupported) {false branch227      cacheUnknown(definingOp);228      return false;229    }230    if (!active.insert(value).second) {false branch231      cacheUnknown(definingOp);232      return false;233    }234235    stack.push_back({value, 0, kind});236    return true;237  }238239  void evaluateOperation(Operation *op, ExtentExprKind kind) {240    if (kind == ExtentExprKind::Constant) {true branch241      constants.try_emplace(242          op->getResult(0),243          cast<IntegerAttr>(cast<arith::ConstantOp>(op).getProperties().value));244      return;245    }246247    auto operandConstant = [&](unsigned index) {⋮329          auto constant =330              dyn_cast_or_null<IntegerAttr>(evaluator.evaluate(extent));331          if (constant && constant.getValue().isNegative()) {true branchfalse branch332            launch.emitOpError("grid upper bound #")333                << index << " must be nonnegative";⋮471    if (parseOne())472      return failure();473    while (succeeded(parser.parseOptionalComma()))true branch474      if (parseOne())false branch475        return failure();476    return parser.parseRParen();⋮539      p << " iv (";540      for (size_t i = N + 1, e = entry->getNumArguments(); i < e; ++i) {541        if (i > N + 1)true branch542          p << ", ";543        p.printRegionArgument(entry->getArgument(i));544      }⋮567    return emitOpError("must not declare function results");568569  if (getDomain().getKind() == ThreadDomainKind::DynamicWork) {true branch570    uint64_t ordinal = *getDomain().getWorkItemArgOrdinal();571    ArrayRef<Type> inputs = getFunctionType().getInputs();572    if (ordinal >= inputs.size())false branch573      return emitOpError("dynamic-work item argument ordinal ")574             << ordinal << " is out of bounds for " << inputs.size()575             << " thread inputs";576    for (auto [index, type] : llvm::enumerate(inputs))false branchtrue branch577      if (DataflowDialect::containsChannelOrThreadToken(type))false branch578        return emitOpError("dynamic-work thread input #")579               << index << " must not contain a channel or thread token";580  }581  if (!ownsThreadLaunchExtentAnalysis(*this))582    return success();⋮654//===----------------------------------------------------------------------===//655656LogicalResult ThreadWaitOp::verify() {657  if ((*this)->getParentOfType<ThreadOp>() ||false branchfalse branch658      (*this)->getParentOfType<GraphOp>())false branch659    return emitOpError(660        "must appear outside any dataflow.thread or dataflow.graph "661        "definition");662663  for (auto [index, token] : llvm::enumerate(getAsyncDependencies()))false branchtrue branch664    if (!token.getDefiningOp<ThreadLaunchOp>())false branch665      return emitOpError("operand #") << index666                                      << " must be produced directly by "667                                         "dataflow.thread.launch";668  return success();669}670671//===----------------------------------------------------------------------===//
…/lib/Frontend/Lowering/LowerForallToThreadPass.cppMS1V
30/34lines88.2%
2/4branches50.0%
30/34lines88.2%+0
3/4branches75.0%+1
+1 branchseed 0 · 18 → 16 linesOpen PBT Review PR
+1 branchseed 0 · 18 → 16 linesOpen PBT Review PR
+1 branchseed 135 · 24 → 22 linesOpen PBT Review PR
1 newly covered branch
45      rejected = true;46    });47    if (rejected)false branch48      signalPassFailure();49  }
Files without added coverage
…/lib/Dataflow/IR/DataflowChannelOps.cppMS1V
59/88lines67.0%
13/38branches34.2%
59/88lines67.0%+0
13/38branches34.2%+0
Open PBT
…/lib/Dataflow/IR/OperationSchema.cppMS1V
274/716lines38.3%
127/350branches36.3%
274/716lines38.3%+0
127/350branches36.3%+0
Open PBT
…/lib/Dataflow/Transforms/DataflowRewritePass.cppMS1V
338/559lines60.5%
172/340branches50.6%
338/559lines60.5%+0
172/340branches50.6%+0
Open PBT
…/lib/Frontend/Lowering/ExpandGraphMemrefCopyPass.cppMS1V
79/90lines87.8%
20/22branches90.9%
79/90lines87.8%+0
20/22branches90.9%+0
Open PBT
…/lib/Frontend/Lowering/LowerForToGraphPass.cppMS1V
1033/1240lines83.3%
374/540branches69.3%
1033/1240lines83.3%+0
374/540branches69.3%+0
Open PBT
…/lib/Frontend/Lowering/LowerGraphConstantsPass.cppMS1V
80/83lines96.4%
18/24branches75.0%
80/83lines96.4%+0
18/24branches75.0%+0
Open PBT
…/lib/Frontend/Lowering/LowerGraphMemoryPass.cppMS1V
525/841lines62.4%
208/400branches52.0%
525/841lines62.4%+0
208/400branches52.0%+0
Open PBT
…/lib/Frontend/Lowering/Pipeline.cppMS1V
18/21lines85.7%
branchesnot measured
18/21lines85.7%+0
branchesnot measured
Open PBT
…/lib/Frontend/Raising/DeduplicateSCFWhileStatePass.cppMS1V
13/135lines9.6%
0/60branches0.0%
13/135lines9.6%+0
0/60branches0.0%+0
Open PBT
…/lib/Frontend/Raising/LLVMArithToArithPass.cppMS1V
300/319lines94.0%
94/116branches81.0%
300/319lines94.0%+0
94/116branches81.0%+0
Open PBT
…/lib/Frontend/Raising/LLVMCfToCfPass.cppMS1V
77/80lines96.2%
8/8branches100.0%
77/80lines96.2%+0
8/8branches100.0%+0
Open PBT
…/lib/Frontend/Raising/LiftCFToSCFPass.cppMS1V
616/694lines88.8%
293/386branches75.9%
616/694lines88.8%+0
293/386branches75.9%+0
Open PBT
…/lib/Frontend/Raising/MaterializeFMulAddPass.cppMS1V
70/106lines66.0%
11/26branches42.3%
70/106lines66.0%+0
11/26branches42.3%+0
Open PBT
…/lib/Frontend/Raising/NormalizeLiftedSCFExitPass.cppMS1V
232/250lines92.8%
120/182branches65.9%
232/250lines92.8%+0
120/182branches65.9%+0
Open PBT
…/lib/Frontend/Raising/Pipeline.cppMS1V
10/19lines52.6%
branchesnot measured
10/19lines52.6%+0
branchesnot measured
Open PBT
…/lib/Frontend/Raising/SCFForToForallPass.cppMS1V
494/738lines66.9%
241/458branches52.6%
494/738lines66.9%+0
241/458branches52.6%+0
Open PBT
…/lib/Frontend/Raising/SCFWhileToForPass.cppMS1V
164/176lines93.2%
70/94branches74.5%
164/176lines93.2%+0
70/94branches74.5%+0
Open PBT
…/loom/tools/loom-raise-opt/loom-raise-opt.cppMS1V
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 0

Review PR: Regression test from seed 135

Source passages for this PBT
  • function_type is a FunctionType whose inputs are the kernel's user-data operand types (T0, ..., TN) and whose results are empty. The thread definition has no SSA data results; the per-launch completion token is launch-side, not part of the callable signature. Asynchronous execution is expressed by launch dependencies and the mandatory launch completion token, not by the function type.

docs/spec-compiler-part-3-dfg.md lines 991–997

Minimized conforming example

16lines−2lines removed

Review regression test PR

Minimized passing input
dataflow.thread private @t_0 domain(#dataflow.thread_domain<dynamic_work, work_item_arg = 0>)(%arg_0: index, %arg_1: memref<?xf32>, %arg_2: i32) ctrl (%thread_ctrl: none) {
  dataflow.thread.yield
}

dataflow.thread private @t_1 domain(#dataflow.thread_domain<dense>)() ctrl (%thread_ctrl: none) iv (%coord_0: index, %coord_1: index) {
  dataflow.thread.yield %thread_ctrl : none
}

func.func @host(%m_ref: memref<?xf32>) {
  %c_i32 = arith.constant 1 : i32
  %c_idx = arith.constant 4 : index
  %token_0 = dataflow.thread.launch @t_0(%c_idx, %m_ref, %c_i32) : (index, memref<?xf32>, i32) -> !dataflow.thread_token
  dataflow.thread.wait %token_0 : !dataflow.thread_token
  %token_1 = dataflow.thread.launch @t_1() grid(%c_idx, %c_idx) : () -> !dataflow.thread_token
  return
}

Conditions

input conditions — what generated inputs satisfy

Conforming input

dataflow.thread private @t_0 domain(#dataflow.thread_domain<dynamic_work, work_item_arg = 0>)(%arg_0: index, %arg_1: memref<?xf32>, %arg_2: i32) ctrl (%thread_ctrl: none) {
  dataflow.thread.yield
}

dataflow.thread private @t_1 domain(#dataflow.thread_domain<dense>)() ctrl (%thread_ctrl: none) iv (%coord_0: index, %coord_1: index) {
  dataflow.thread.yield %thread_ctrl : none
}

func.func @host(%m_ref: memref<?xf32>) {
  %c_i32 = arith.constant 1 : i32
  %c_f32 = arith.constant 1.000000e+00 : f32
  %c_i64 = arith.constant 1 : i64
  %c_idx = arith.constant 4 : index
  %token_0 = dataflow.thread.launch @t_0(%c_idx, %m_ref, %c_i32) : (index, memref<?xf32>, i32) -> !dataflow.thread_token
  dataflow.thread.wait %token_0 : !dataflow.thread_token
  %token_1 = dataflow.thread.launch @t_1() grid(%c_idx, %c_idx) : () -> !dataflow.thread_token
  return
}

2 linked-input-4 · linked input 4

Part 3 rejects this form before graph mutation. It never drops the combining region or publishes a dataflow.graph that omits the aggregation.

docs/spec-compiler-part-3-dfg.md lines 2052–2055

3 linked-input-40 · linked input 40

When the selected nest is inside an already materialized rank-zero Spatial ownership carrier, the same atomic decision promotes the new forall to the carrier's dense logical thread domain.

docs/spec-compiler-part-2-scf.md lines 934–937

4 linked-input-44 · linked input 44

Code inside the thread definition remains InstructionCore code unless the selected Structured Program Candidate explicitly wraps it in loom.spatial_region. That compiler-internal region remains the temporary SpatialCore ownership carrier until Part 3 atomically replaces it with a finalized dataflow.graph definition and launch.

docs/spec-compiler-part-3-dfg.md lines 2096–2100

5 linked-input-49 · linked input 49

If Part 2 selects an effect-form forall as an AccCore thread domain, the input accepted by Part 3 is already the definition-and-launch carrier shape below.

docs/spec-compiler-part-3-dfg.md lines 2057–2061

6 linked-input-51 · linked input 51

An unprojectable bound rejects only that candidate. The transformation never weakens the fixed-domain requirement for a retained graph-owned parallel form.

docs/spec-compiler-part-2-scf.md lines 940–942

7 linked-input-79 · linked input 79

retained a graph-owned forall only as a mapping-free, effect-form, compile-time fixed-domain construct whose P[] width, ownership, and cross-lane legality are materialized in semantic IR and can be re-proved;

docs/spec-compiler-part-3-dfg.md lines 2008–2010

8 linked-input-139 · linked input 139

A dynamic domain, mapping attribute, shared output, result, combining action, or failed legality re-proof causes atomic failure before canonical graph publication. Cached provenance never changes this result.

docs/spec-compiler-part-3-dfg.md lines 2017–2020

9 linked-input-199 · linked input 199

For this boundary, an accepted effect-form forall has no shared_outs, no op results, and an empty scf.forall.in_parallel terminator.

docs/spec-compiler-part-3-dfg.md lines 2022–2023

10 linked-input-208 · linked input 208

materialized every supported aggregation or reduction into accepted semantics, or failed finalizability truthfully.

docs/spec-compiler-part-3-dfg.md lines 2012–2013

Generator grammar · candidate.pg
// Input domain: the definition-and-launch carrier shape that Part 3 accepts
// for an effect-form forall selected as an AccCore thread domain
// (docs/spec-compiler-part-3-dfg.md lines 2057-2061).  Each module carries one
// or more module-scope `dataflow.thread` definitions (private visibility, a
// closed dense or dynamic-work domain, the `(args_*, thread_ctrl, coord_*)`
// entry block) and one host `func.func` holding the matching
// `dataflow.thread.launch` ops.  No `scf.forall` is emitted: a graph-owned
// forall retained by Part 2 is mapping-free, effect-form and fixed-domain, and
// this boundary carries no shared_outs, results or combining action.

start: {new TYPE_NAMES = ['i32', 'f32', 'i64', 'index', 'memref<?xf32>', 'i32', 'f32', 'i64', 'index', 'memref<?xf32>']; new VALUE_NAMES = ['%c_i32', '%c_f32', '%c_i64', '%c_idx', '%m_ref', '%c_i32', '%c_f32', '%c_i64', '%c_idx', '%m_ref']; new NUM = random.randint(1, 3); new ARITIES = []; new OFFSETS = []; new RANKS = []; new IDX = 0}
       thread_defs
       {IDX = 0}
       'func.func @host(%m_ref: memref<?xf32>) {\n'
       '  %c_i32 = arith.constant 1 : i32\n'
       '  %c_f32 = arith.constant 1.000000e+00 : f32\n'
       '  %c_i64 = arith.constant 1 : i64\n'
       '  %c_idx = arith.constant 4 : index\n'
       launches
       '  return\n'
       '}\n';

thread_defs: (IDX < NUM) thread_def {IDX += 1} thread_defs
           | (IDX == NUM) '';

// Arity, argument types and coordinate rank are sampled per definition and
// recorded so the launch side can reproduce the same signature.
thread_def: {new ARITY = random.randint(0, 3); new OFFSET = random.randint(0, 4); new RANK = random.randint(0, 2); new DYN_SEL = random.choice([0, 1]); new ORDINAL = 0}
            thread_shape;

thread_shape: (ARITY > 0 and DYN_SEL == 1) {RANK = 0; ORDINAL = random.randint(0, ARITY - 1)} dynamic_def
            | (ARITY == 0 or DYN_SEL == 0) dense_def;

// A dynamic definition has coordinate rank zero and its ordinal selects
// exactly one function_type input.
dynamic_def: {ARITIES.append(ARITY); OFFSETS.append(OFFSET); RANKS.append(0)}
             'dataflow.thread private @' def_symbol
             ' domain(#dataflow.thread_domain<dynamic_work, work_item_arg = ' ordinal_text '>)'
             def_args
             ' ctrl (%thread_ctrl: none) {\n'
             terminator
             '}\n\n';

// A dense definition has no work-item ordinal and carries one `index`
// coordinate argument per launch-domain dimension.
dense_def: {ARITIES.append(ARITY); OFFSETS.append(OFFSET); RANKS.append(RANK)}
           'dataflow.thread private @' def_symbol
           ' domain(#dataflow.thread_domain<dense>)'
           def_args
           ' ctrl (%thread_ctrl: none)'
           coord_clause
           ' {\n'
           terminator
           '}\n\n';

def_symbol: 't_' index_text;

index_text: [str(IDX)];

ordinal_text: [str(ORDINAL)];

terminator: '  dataflow.thread.yield\n'
          | '  dataflow.thread.yield %thread_ctrl : none\n';

def_args: {new J = 0} '(' def_arg_list ')';

def_arg_list: (J < ARITY) arg_sep def_arg {J += 1} def_arg_list
            | (J == ARITY) '';

arg_sep: (J == 0) '' | (J > 0) ', ';

def_arg: '%arg_' arg_index ': ' arg_type;

arg_index: [str(J)];

arg_type: [TYPE_NAMES[OFFSET + J]];

coord_clause: (RANK == 0) ''
            | (RANK > 0) {new K = 0} ' iv (' coord_list ')';

coord_list: (K < RANK) coord_sep coord_arg {K += 1} coord_list
          | (K == RANK) '';

coord_sep: (K == 0) '' | (K > 0) ', ';

coord_arg: '%coord_' coord_index ': index';

coord_index: [str(K)];

// One launch per definition; body operands reproduce function_type.inputs and
// the grid upper bounds match the definition's coordinate rank.
launches: (IDX < NUM) launch {IDX += 1} launches
        | (IDX == NUM) '';

launch: {new ARITY = ARITIES[IDX]; new OFFSET = OFFSETS[IDX]; new RANK = RANKS[IDX]}
        '  %token_' index_text ' = dataflow.thread.launch @t_' index_text
        launch_operands
        grid_clause
        ' : ' launch_signature ' -> !dataflow.thread_token\n'
        wait_clause;

wait_clause: ''
           | '  dataflow.thread.wait %token_' index_text ' : !dataflow.thread_token\n';

launch_operands: {new J = 0} '(' launch_operand_list ')';

launch_operand_list: (J < ARITY) arg_sep launch_operand {J += 1} launch_operand_list
                   | (J == ARITY) '';

launch_operand: operand_name;

operand_name: [VALUE_NAMES[OFFSET + J]];

grid_clause: (RANK == 0) ''
           | (RANK > 0) {new K = 0} ' grid(' grid_list ')';

grid_list: (K < RANK) coord_sep grid_bound {K += 1} grid_list
         | (K == RANK) '';

grid_bound: '%c_idx';

launch_signature: {new J = 0} '(' launch_type_list ')';

launch_type_list: (J < ARITY) arg_sep launch_type {J += 1} launch_type_list
                | (J == ARITY) '';

launch_type: arg_type;

output condition — what every compiled pair must satisfy

thread_function_type_signature · 4 assertion sites

derived from 1 passage: 1selected-output

function_type is a FunctionType whose inputs are the kernel's user-data operand types (T0, ..., TN) and whose results are empty. The thread definition has no SSA data results; the per-launch completion token is launch-side, not part of the callable signature.

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

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

  constraints {
    let threads = seq { op | op in output.operations where op.name == "dataflow.thread" };

    forall t in threads {
      assert function_type_has_no_results:
        cardinality(t.attributes["function_type"].type.results) == 0;

      assert no_ssa_data_results:
        cardinality(t.results) == 0;

      assert completion_token_not_in_signature:
        forall ty in t.attributes["function_type"].type.inputs
          where ty.canonical_text != "!dataflow.thread_token";
    }

    let launches = seq { op | op in output.operations where op.name == "dataflow.thread.launch" };

    forall l in launches {
      forall t in mlir::resolve_symbol_reference(output, l, "callee")
        where t.name == "dataflow.thread"
      {
        assert function_type_inputs_are_user_data_operand_types:
          forall p in zip_exact(t.attributes["function_type"].type.inputs,
                                seq { v.type | v in mlir::operand_segment(l, 0) })
            where p.left == p.right;
      }
    }
  }
}
Minimized passing input
dataflow.thread private @t_0 domain(#dataflow.thread_domain<dynamic_work, work_item_arg = 0>)(%arg_0: index, %arg_1: memref<?xf32>, %arg_2: i32) ctrl (%thread_ctrl: none) {
  dataflow.thread.yield
}

dataflow.thread private @t_1 domain(#dataflow.thread_domain<dense>)() ctrl (%thread_ctrl: none) iv (%coord_0: index, %coord_1: index) {
  dataflow.thread.yield %thread_ctrl : none
}

func.func @host(%m_ref: memref<?xf32>) {
  %c_i32 = arith.constant 1 : i32
  %c_idx = arith.constant 4 : index
  %token_0 = dataflow.thread.launch @t_0(%c_idx, %m_ref, %c_i32) : (index, memref<?xf32>, i32) -> !dataflow.thread_token
  dataflow.thread.wait %token_0 : !dataflow.thread_token
  %token_1 = dataflow.thread.launch @t_1() grid(%c_idx, %c_idx) : () -> !dataflow.thread_token
  return
}

Evidence

run20260911-083547started2026-09-11T08:35:48Zsubjectloom-raise-optsubject revision48615bc5925e

run results

5000saved inputs
5000accepted

output condition verdicts

5000pass
Additional trace diagnostics

raw trace evidence

1000accepted trace samples
21distinct trace classes
0classes seen once
sample pair · seed 0

generated input

dataflow.thread private @t_0 domain(#dataflow.thread_domain<dynamic_work, work_item_arg = 0>)(%arg_0: index, %arg_1: memref<?xf32>, %arg_2: i32) ctrl (%thread_ctrl: none) {
  dataflow.thread.yield
}

dataflow.thread private @t_1 domain(#dataflow.thread_domain<dense>)() ctrl (%thread_ctrl: none) iv (%coord_0: index, %coord_1: index) {
  dataflow.thread.yield %thread_ctrl : none
}

func.func @host(%m_ref: memref<?xf32>) {
  %c_i32 = arith.constant 1 : i32
  %c_f32 = arith.constant 1.000000e+00 : f32
  %c_i64 = arith.constant 1 : i64
  %c_idx = arith.constant 4 : index
  %token_0 = dataflow.thread.launch @t_0(%c_idx, %m_ref, %c_i32) : (index, memref<?xf32>, i32) -> !dataflow.thread_token
  dataflow.thread.wait %token_0 : !dataflow.thread_token
  %token_1 = dataflow.thread.launch @t_1() grid(%c_idx, %c_idx) : () -> !dataflow.thread_token
  return
}

observed generic output

"builtin.module"() ({
  "dataflow.thread"() <{domain = #dataflow.thread_domain<dynamic_work, work_item_arg = 0>, function_type = (index, memref<?xf32>, i32) -> (), sym_name = "t_0", sym_visibility = "private"}> ({
  ^bb0(%arg4: index, %arg5: memref<?xf32>, %arg6: i32, %arg7: none):
    "dataflow.thread.yield"() : () -> ()
  }) : () -> ()
  "dataflow.thread"() <{domain = #dataflow.thread_domain<dense>, function_type = () -> (), sym_name = "t_1", sym_visibility = "private"}> ({
  ^bb0(%arg1: none, %arg2: index, %arg3: index):
    "dataflow.thread.yield"(%arg1) : (none) -> ()
  }) : () -> ()
  "func.func"() <{function_type = (memref<?xf32>) -> (), sym_name = "host"}> ({
  ^bb0(%arg0: memref<?xf32>):
    %0 = "arith.constant"() <{value = 1 : i32}> : () -> i32
    %1 = "arith.constant"() <{value = 1.000000e+00 : f32}> : () -> f32
    %2 = "arith.constant"() <{value = 1 : i64}> : () -> i64
    %3 = "arith.constant"() <{value = 4 : index}> : () -> index
    %4 = "dataflow.thread.launch"(%3, %arg0, %0) <{callee = @t_0, operandSegmentSizes = array<i32: 3, 0, 0>}> : (index, memref<?xf32>, i32) -> !dataflow.thread_token
    "dataflow.thread.wait"(%4) : (!dataflow.thread_token) -> ()
    %5 = "dataflow.thread.launch"(%3, %3) <{callee = @t_1, operandSegmentSizes = array<i32: 0, 2, 0>}> : (index, index) -> !dataflow.thread_token
    "func.return"() : () -> ()
  }) : () -> ()
}) : () -> ()

per-seed evidence (1000 seeds)
seedsubjectverdictartifacts
0accepted exit 0 · 0.6689899740013061sPASSinput · generic input · output · check report
1accepted exit 0 · 0.6980047020006168sPASSinput · generic input · output · check report
2accepted exit 0 · 0.6383460469987767sPASSinput · generic input · output · check report
3accepted exit 0 · 0.6490407319979568sPASSinput · generic input · output · check report
4accepted exit 0 · 0.6914285150014621sPASSinput · generic input · output · check report
5accepted exit 0 · 0.6668010759967729sPASSinput · generic input · output · check report
6accepted exit 0 · 0.6771706469990022sPASSinput · generic input · output · check report
7accepted exit 0 · 0.6609893460008607sPASSinput · generic input · output · check report
8accepted exit 0 · 0.6537849609994737sPASSinput · generic input · output · check report
9accepted exit 0 · 0.6538797590001195sPASSinput · generic input · output · check report
10accepted exit 0 · 0.6814406529992993sPASSinput · generic input · output · check report
11accepted exit 0 · 0.6804246859974228sPASSinput · generic input · output · check report
12accepted exit 0 · 0.644009316998563sPASSinput · generic input · output · check report
13accepted exit 0 · 0.6130093389983813sPASSinput · generic input · output · check report
14accepted exit 0 · 0.6877180150004278sPASSinput · generic input · output · check report
15accepted exit 0 · 0.6931324129982386sPASSinput · generic input · output · check report
16accepted exit 0 · 0.6751316740010225sPASSinput · generic input · output · check report
17accepted exit 0 · 0.6867574120005884sPASSinput · generic input · output · check report
18accepted exit 0 · 0.6617793200020969sPASSinput · generic input · output · check report
19accepted exit 0 · 0.6656740930011438sPASSinput · generic input · output · check report
20accepted exit 0 · 0.6552215970004909sPASSinput · generic input · output · check report
21accepted exit 0 · 0.6540836329986632sPASSinput · generic input · output · check report
22accepted exit 0 · 0.6511810609990789sPASSinput · generic input · output · check report
23accepted exit 0 · 0.7223854799995024sPASSinput · generic input · output · check report
24accepted exit 0 · 0.6485072309988027sPASSinput · generic input · output · check report
25accepted exit 0 · 0.6619829169976583sPASSinput · generic input · output · check report
26accepted exit 0 · 0.6850787589974061sPASSinput · generic input · output · check report
27accepted exit 0 · 0.7019286950016976sPASSinput · generic input · output · check report
28accepted exit 0 · 0.6539806440014218sPASSinput · generic input · output · check report
29accepted exit 0 · 0.691861847997643sPASSinput · generic input · output · check report
30accepted exit 0 · 0.6821318279980915sPASSinput · generic input · output · check report
31accepted exit 0 · 0.6137570339997183sPASSinput · generic input · output · check report
32accepted exit 0 · 0.6423675050027668sPASSinput · generic input · output · check report
33accepted exit 0 · 0.5483333689990104sPASSinput · generic input · output · check report
34accepted exit 0 · 0.6416326739999931sPASSinput · generic input · output · check report
35accepted exit 0 · 0.5987865679999231sPASSinput · generic input · output · check report
36accepted exit 0 · 0.6313761900019017sPASSinput · generic input · output · check report
37accepted exit 0 · 0.6054558659961913sPASSinput · generic input · output · check report
38accepted exit 0 · 0.6147198440012289sPASSinput · generic input · output · check report
39accepted exit 0 · 0.6508612149991677sPASSinput · generic input · output · check report
40accepted exit 0 · 0.6152738359960495sPASSinput · generic input · output · check report
41accepted exit 0 · 0.6228431069976068sPASSinput · generic input · output · check report
42accepted exit 0 · 0.6287818030032213sPASSinput · generic input · output · check report
43accepted exit 0 · 0.6176965519989608sPASSinput · generic input · output · check report
44accepted exit 0 · 0.6097166070030653sPASSinput · generic input · output · check report
45accepted exit 0 · 0.6068559090053895sPASSinput · generic input · output · check report
46accepted exit 0 · 0.6568099400028586sPASSinput · generic input · output · check report
47accepted exit 0 · 0.6183298219984863sPASSinput · generic input · output · check report
48accepted exit 0 · 0.6385441669990541sPASSinput · generic input · output · check report
49accepted exit 0 · 0.5976539280018187sPASSinput · generic input · output · check report
50accepted exit 0 · 0.6121267189955688sPASSinput · generic input · output · check report
51accepted exit 0 · 0.6086131930060219sPASSinput · generic input · output · check report
52accepted exit 0 · 0.6209110140043776sPASSinput · generic input · output · check report
53accepted exit 0 · 0.6057457019996946sPASSinput · generic input · output · check report
54accepted exit 0 · 0.624530159002461sPASSinput · generic input · output · check report
55accepted exit 0 · 0.6772223580046557sPASSinput · generic input · output · check report
56accepted exit 0 · 0.6394435789989075sPASSinput · generic input · output · check report
57accepted exit 0 · 0.5596545939988573sPASSinput · generic input · output · check report
58accepted exit 0 · 0.6757997219974641sPASSinput · generic input · output · check report
59accepted exit 0 · 0.6027025999937905sPASSinput · generic input · output · check report
60accepted exit 0 · 0.6180814050021581sPASSinput · generic input · output · check report
61accepted exit 0 · 0.6339221179950982sPASSinput · generic input · output · check report
62accepted exit 0 · 0.6052311149978777sPASSinput · generic input · output · check report
63accepted exit 0 · 0.6224903739930596sPASSinput · generic input · output · check report
64accepted exit 0 · 0.6058485050016316sPASSinput · generic input · output · check report
65accepted exit 0 · 0.643359640998824sPASSinput · generic input · output · check report
66accepted exit 0 · 0.60311072699551sPASSinput · generic input · output · check report
67accepted exit 0 · 0.5839984340054798sPASSinput · generic input · output · check report
68accepted exit 0 · 0.6437691609971807sPASSinput · generic input · output · check report
69accepted exit 0 · 0.6181309470048291sPASSinput · generic input · output · check report
70accepted exit 0 · 0.6229507600000943sPASSinput · generic input · output · check report
71accepted exit 0 · 0.6164729910015012sPASSinput · generic input · output · check report
72accepted exit 0 · 0.5699239629975636sPASSinput · generic input · output · check report
73accepted exit 0 · 0.6441377840019413sPASSinput · generic input · output · check report
74accepted exit 0 · 0.6287951579943183sPASSinput · generic input · output · check report
75accepted exit 0 · 0.6193677330011269sPASSinput · generic input · output · check report
76accepted exit 0 · 0.6233921689999988sPASSinput · generic input · output · check report
77accepted exit 0 · 0.610138921001635sPASSinput · generic input · output · check report
78accepted exit 0 · 0.6327529800037155sPASSinput · generic input · output · check report
79accepted exit 0 · 0.6502556060004281sPASSinput · generic input · output · check report
80accepted exit 0 · 0.6185080159993959sPASSinput · generic input · output · check report
81accepted exit 0 · 0.6332683779983199sPASSinput · generic input · output · check report
82accepted exit 0 · 0.6095803919961327sPASSinput · generic input · output · check report
83accepted exit 0 · 0.6586068679971504sPASSinput · generic input · output · check report
84accepted exit 0 · 0.6037796460004756sPASSinput · generic input · output · check report
85accepted exit 0 · 0.6272245649961405sPASSinput · generic input · output · check report
86accepted exit 0 · 0.6186706430016784sPASSinput · generic input · output · check report
87accepted exit 0 · 0.6126580679992912sPASSinput · generic input · output · check report
88accepted exit 0 · 0.6233124899954419sPASSinput · generic input · output · check report
89accepted exit 0 · 0.6095842389986501sPASSinput · generic input · output · check report
90accepted exit 0 · 0.6078230870043626sPASSinput · generic input · output · check report
91accepted exit 0 · 0.662273711997841sPASSinput · generic input · output · check report
92accepted exit 0 · 0.611697872998775sPASSinput · generic input · output · check report
93accepted exit 0 · 0.6615037939991453sPASSinput · generic input · output · check report
94accepted exit 0 · 0.4295617450000009sPASSinput · generic input · output · check report
95accepted exit 0 · 0.4406975160000002sPASSinput · generic input · output · check report
96accepted exit 0 · 0.4599886450000099sPASSinput · generic input · output · check report
97accepted exit 0 · 0.440438945999972sPASSinput · generic input · output · check report
98accepted exit 0 · 0.4549137289999976sPASSinput · generic input · output · check report
99accepted exit 0 · 0.41560743600001615sPASSinput · generic input · output · check report
100accepted exit 0 · 0.05750937399989198sPASSinput · generic input · output · check report
101accepted exit 0 · 0.0918249280002783sPASSinput · generic input · output · check report
102accepted exit 0 · 0.04532245300015347sPASSinput · generic input · output · check report
103accepted exit 0 · 0.05566288899990468sPASSinput · generic input · output · check report
104accepted exit 0 · 0.0948730439999963sPASSinput · generic input · output · check report
105accepted exit 0 · 0.06201622899970971sPASSinput · generic input · output · check report
106accepted exit 0 · 0.09285621099979835sPASSinput · generic input · output · check report
107accepted exit 0 · 0.0972431250002046sPASSinput · generic input · output · check report
108accepted exit 0 · 0.10647283699972832sPASSinput · generic input · output · check report
109accepted exit 0 · 0.12222687799976484sPASSinput · generic input · output · check report
110accepted exit 0 · 0.0918460809998578sPASSinput · generic input · output · check report
111accepted exit 0 · 0.09178888499991444sPASSinput · generic input · output · check report
112accepted exit 0 · 0.04897416500034524sPASSinput · generic input · output · check report
113accepted exit 0 · 0.11514753500023289sPASSinput · generic input · output · check report
114accepted exit 0 · 0.06116907800014815sPASSinput · generic input · output · check report
115accepted exit 0 · 0.09103244900006757sPASSinput · generic input · output · check report
116accepted exit 0 · 0.08960224200018274sPASSinput · generic input · output · check report
117accepted exit 0 · 0.09734534200015332sPASSinput · generic input · output · check report
118accepted exit 0 · 0.060553244999937306sPASSinput · generic input · output · check report
119accepted exit 0 · 0.09329297000022052sPASSinput · generic input · output · check report
120accepted exit 0 · 0.08598656399999527sPASSinput · generic input · output · check report
121accepted exit 0 · 0.13839873500000976sPASSinput · generic input · output · check report
122accepted exit 0 · 0.0954945809999117sPASSinput · generic input · output · check report
123accepted exit 0 · 0.09849394799994116sPASSinput · generic input · output · check report
124accepted exit 0 · 0.10218145799990452sPASSinput · generic input · output · check report
125accepted exit 0 · 0.08693650299983346sPASSinput · generic input · output · check report
126accepted exit 0 · 0.09311761899971316sPASSinput · generic input · output · check report
127accepted exit 0 · 0.08567637799978911sPASSinput · generic input · output · check report
128accepted exit 0 · 0.09104564700010087sPASSinput · generic input · output · check report
129accepted exit 0 · 0.05751366100002997sPASSinput · generic input · output · check report
130accepted exit 0 · 0.10638149700025679sPASSinput · generic input · output · check report
131accepted exit 0 · 0.05147007499999745sPASSinput · generic input · output · check report
132accepted exit 0 · 0.08235183499982668sPASSinput · generic input · output · check report
133accepted exit 0 · 0.10579915599964806sPASSinput · generic input · output · check report
134accepted exit 0 · 0.12380599300013273sPASSinput · generic input · output · check report
135accepted exit 0 · 0.05085243699977582sPASSinput · generic input · output · check report
136accepted exit 0 · 0.056517041999995854sPASSinput · generic input · output · check report
137accepted exit 0 · 0.060312143999908585sPASSinput · generic input · output · check report
138accepted exit 0 · 0.06594918800010419sPASSinput · generic input · output · check report
139accepted exit 0 · 0.05937693800024135sPASSinput · generic input · output · check report
140accepted exit 0 · 0.06339928799980044sPASSinput · generic input · output · check report
141accepted exit 0 · 0.08831166400022994sPASSinput · generic input · output · check report
142accepted exit 0 · 0.06555382899978213sPASSinput · generic input · output · check report
143accepted exit 0 · 0.0805112090001785sPASSinput · generic input · output · check report
144accepted exit 0 · 0.09840414600012082sPASSinput · generic input · output · check report
145accepted exit 0 · 0.08828707500015298sPASSinput · generic input · output · check report
146accepted exit 0 · 0.10526231699986965sPASSinput · generic input · output · check report
147accepted exit 0 · 0.09287923800002318sPASSinput · generic input · output · check report
148accepted exit 0 · 0.05326965999984168sPASSinput · generic input · output · check report
149accepted exit 0 · 0.09568808799986073sPASSinput · generic input · output · check report
150accepted exit 0 · 0.09925702700002148sPASSinput · generic input · output · check report
151accepted exit 0 · 0.049179174000073544sPASSinput · generic input · output · check report
152accepted exit 0 · 0.09425586900033522sPASSinput · generic input · output · check report
153accepted exit 0 · 0.0950759420002214sPASSinput · generic input · output · check report
154accepted exit 0 · 0.09517051000011634sPASSinput · generic input · output · check report
155accepted exit 0 · 0.07165863399995942sPASSinput · generic input · output · check report
156accepted exit 0 · 0.08722950700030196sPASSinput · generic input · output · check report
157accepted exit 0 · 0.08974928399993587sPASSinput · generic input · output · check report
158accepted exit 0 · 0.07552119399997537sPASSinput · generic input · output · check report
159accepted exit 0 · 0.0993183779996798sPASSinput · generic input · output · check report
160accepted exit 0 · 0.10921944800020356sPASSinput · generic input · output · check report
161accepted exit 0 · 0.06930407100026059sPASSinput · generic input · output · check report
162accepted exit 0 · 0.053299021999919205sPASSinput · generic input · output · check report
163accepted exit 0 · 0.07317988600016179sPASSinput · generic input · output · check report
164accepted exit 0 · 0.054287350000322476sPASSinput · generic input · output · check report
165accepted exit 0 · 0.10165695000023334sPASSinput · generic input · output · check report
166accepted exit 0 · 0.19877664500018sPASSinput · generic input · output · check report
167accepted exit 0 · 0.08200449700007084sPASSinput · generic input · output · check report
168accepted exit 0 · 0.04731822399980956sPASSinput · generic input · output · check report
169accepted exit 0 · 0.09591764800006786sPASSinput · generic input · output · check report
170accepted exit 0 · 0.1197294549997423sPASSinput · generic input · output · check report
171accepted exit 0 · 0.09637181500011138sPASSinput · generic input · output · check report
172accepted exit 0 · 0.09406618200000594sPASSinput · generic input · output · check report
173accepted exit 0 · 0.05752852899968275sPASSinput · generic input · output · check report
174accepted exit 0 · 0.0984903899998244sPASSinput · generic input · output · check report
175accepted exit 0 · 0.05208050000010189sPASSinput · generic input · output · check report
176accepted exit 0 · 0.08956268300016745sPASSinput · generic input · output · check report
177accepted exit 0 · 0.09559272799970131sPASSinput · generic input · output · check report
178accepted exit 0 · 0.05599677400005021sPASSinput · generic input · output · check report
179accepted exit 0 · 0.09255590299972027sPASSinput · generic input · output · check report
180accepted exit 0 · 0.05739292899988868sPASSinput · generic input · output · check report
181accepted exit 0 · 0.09304909200000111sPASSinput · generic input · output · check report
182accepted exit 0 · 0.08619907799993598sPASSinput · generic input · output · check report
183accepted exit 0 · 0.09341210599995975sPASSinput · generic input · output · check report
184accepted exit 0 · 0.08387669400008235sPASSinput · generic input · output · check report
185accepted exit 0 · 0.09592123499987792sPASSinput · generic input · output · check report
186accepted exit 0 · 0.09757056700027533sPASSinput · generic input · output · check report
187accepted exit 0 · 0.11765550199970676sPASSinput · generic input · output · check report
188accepted exit 0 · 0.047079217999907996sPASSinput · generic input · output · check report
189accepted exit 0 · 0.08910027799993259sPASSinput · generic input · output · check report
190accepted exit 0 · 0.09393805299987434sPASSinput · generic input · output · check report
191accepted exit 0 · 0.11078172600036851sPASSinput · generic input · output · check report
192accepted exit 0 · 0.05968977500015171sPASSinput · generic input · output · check report
193accepted exit 0 · 0.1109852409999803sPASSinput · generic input · output · check report
194accepted exit 0 · 0.08318338999970365sPASSinput · generic input · output · check report
195accepted exit 0 · 0.08124294199978976sPASSinput · generic input · output · check report
196accepted exit 0 · 0.0571112389998234sPASSinput · generic input · output · check report
197accepted exit 0 · 0.09850924099964686sPASSinput · generic input · output · check report
198accepted exit 0 · 0.07384754099985003sPASSinput · generic input · output · check report
199accepted exit 0 · 0.0995776989998376sPASSinput · generic input · output · check report
200accepted exit 0 · 0.09651120700027604sPASSinput · generic input · output · check report
201accepted exit 0 · 0.09604891799972393sPASSinput · generic input · output · check report
202accepted exit 0 · 0.21662860500009629sPASSinput · generic input · output · check report
203accepted exit 0 · 0.1608088510001835sPASSinput · generic input · output · check report
204accepted exit 0 · 0.09607755299975906sPASSinput · generic input · output · check report
205accepted exit 0 · 0.051794557999983226sPASSinput · generic input · output · check report
206accepted exit 0 · 0.11261884199984706sPASSinput · generic input · output · check report
207accepted exit 0 · 0.09452881100014565sPASSinput · generic input · output · check report
208accepted exit 0 · 0.12879389400040964sPASSinput · generic input · output · check report
209accepted exit 0 · 0.09819554599971525sPASSinput · generic input · output · check report
210accepted exit 0 · 0.10160687999996298sPASSinput · generic input · output · check report
211accepted exit 0 · 0.10039461099995606sPASSinput · generic input · output · check report
212accepted exit 0 · 0.09308665200023825sPASSinput · generic input · output · check report
213accepted exit 0 · 0.08636378299979697sPASSinput · generic input · output · check report
214accepted exit 0 · 0.0594854790001591sPASSinput · generic input · output · check report
215accepted exit 0 · 0.0942341810000471sPASSinput · generic input · output · check report
216accepted exit 0 · 0.10824572399997123sPASSinput · generic input · output · check report
217accepted exit 0 · 0.06771406100006061sPASSinput · generic input · output · check report
218accepted exit 0 · 0.05549078900003224sPASSinput · generic input · output · check report
219accepted exit 0 · 0.09438537500000166sPASSinput · generic input · output · check report
220accepted exit 0 · 0.09506807900015701sPASSinput · generic input · output · check report
221accepted exit 0 · 0.09419958599983147sPASSinput · generic input · output · check report
222accepted exit 0 · 0.08817667299990717sPASSinput · generic input · output · check report
223accepted exit 0 · 0.08918700300000637sPASSinput · generic input · output · check report
224accepted exit 0 · 0.08916917899978216sPASSinput · generic input · output · check report
225accepted exit 0 · 0.09148670600006881sPASSinput · generic input · output · check report
226accepted exit 0 · 0.07043733099999372sPASSinput · generic input · output · check report
227accepted exit 0 · 0.1035318530002769sPASSinput · generic input · output · check report
228accepted exit 0 · 0.0872958979998657sPASSinput · generic input · output · check report
229accepted exit 0 · 0.10087825400023576sPASSinput · generic input · output · check report
230accepted exit 0 · 0.052009375000125146sPASSinput · generic input · output · check report
231accepted exit 0 · 0.0675875939996331sPASSinput · generic input · output · check report
232accepted exit 0 · 0.11196974799986492sPASSinput · generic input · output · check report
233accepted exit 0 · 0.049240319000091404sPASSinput · generic input · output · check report
234accepted exit 0 · 0.06005714499997339sPASSinput · generic input · output · check report
235accepted exit 0 · 0.0552126769998722sPASSinput · generic input · output · check report
236accepted exit 0 · 0.09703096099974573sPASSinput · generic input · output · check report
237accepted exit 0 · 0.14847280000003593sPASSinput · generic input · output · check report
238accepted exit 0 · 0.09184482099999514sPASSinput · generic input · output · check report
239accepted exit 0 · 0.0614648429996123sPASSinput · generic input · output · check report
240accepted exit 0 · 0.09177846700004011sPASSinput · generic input · output · check report
241accepted exit 0 · 0.08871725100016192sPASSinput · generic input · output · check report
242accepted exit 0 · 0.09059684500016374sPASSinput · generic input · output · check report
243accepted exit 0 · 0.052968798999700084sPASSinput · generic input · output · check report
244accepted exit 0 · 0.054523322000022745sPASSinput · generic input · output · check report
245accepted exit 0 · 0.08781806099977985sPASSinput · generic input · output · check report
246accepted exit 0 · 0.0904383179999968sPASSinput · generic input · output · check report
247accepted exit 0 · 0.09258582499978729sPASSinput · generic input · output · check report
248accepted exit 0 · 0.09049277099984465sPASSinput · generic input · output · check report
249accepted exit 0 · 0.08981183000014425sPASSinput · generic input · output · check report
250accepted exit 0 · 0.0931610070001625sPASSinput · generic input · output · check report
251accepted exit 0 · 0.07419562899985976sPASSinput · generic input · output · check report
252accepted exit 0 · 0.07116246599980514sPASSinput · generic input · output · check report
253accepted exit 0 · 0.08758026499981497sPASSinput · generic input · output · check report
254accepted exit 0 · 0.09946385800003554sPASSinput · generic input · output · check report
255accepted exit 0 · 0.0541089439998359sPASSinput · generic input · output · check report
256accepted exit 0 · 0.12177570799985915sPASSinput · generic input · output · check report
257accepted exit 0 · 0.09607745199991768sPASSinput · generic input · output · check report
258accepted exit 0 · 0.07202336600039416sPASSinput · generic input · output · check report
259accepted exit 0 · 0.09657336399959604sPASSinput · generic input · output · check report
260accepted exit 0 · 0.09562474099993779sPASSinput · generic input · output · check report
261accepted exit 0 · 0.11995553599990672sPASSinput · generic input · output · check report
262accepted exit 0 · 0.0969071320000694sPASSinput · generic input · output · check report
263accepted exit 0 · 0.09929325899975083sPASSinput · generic input · output · check report
264accepted exit 0 · 0.10993891399994027sPASSinput · generic input · output · check report
265accepted exit 0 · 0.09356694300004165sPASSinput · generic input · output · check report
266accepted exit 0 · 0.09739040199974625sPASSinput · generic input · output · check report
267accepted exit 0 · 0.09864896799990674sPASSinput · generic input · output · check report
268accepted exit 0 · 0.06593867699984912sPASSinput · generic input · output · check report
269accepted exit 0 · 0.09769892200029062sPASSinput · generic input · output · check report
270accepted exit 0 · 0.09679838900001414sPASSinput · generic input · output · check report
271accepted exit 0 · 0.0963743119996252sPASSinput · generic input · output · check report
272accepted exit 0 · 0.0990092559995901sPASSinput · generic input · output · check report
273accepted exit 0 · 0.09586731899980805sPASSinput · generic input · output · check report
274accepted exit 0 · 0.10090416200000618sPASSinput · generic input · output · check report
275accepted exit 0 · 0.06458068200026901sPASSinput · generic input · output · check report
276accepted exit 0 · 0.09692326500044146sPASSinput · generic input · output · check report
277accepted exit 0 · 0.06836617899989506sPASSinput · generic input · output · check report
278accepted exit 0 · 0.1002244379997137sPASSinput · generic input · output · check report
279accepted exit 0 · 0.1010400209997897sPASSinput · generic input · output · check report
280accepted exit 0 · 0.05270968500008166sPASSinput · generic input · output · check report
281accepted exit 0 · 0.09829309199994896sPASSinput · generic input · output · check report
282accepted exit 0 · 0.10367113400025119sPASSinput · generic input · output · check report
283accepted exit 0 · 0.06560420099958719sPASSinput · generic input · output · check report
284accepted exit 0 · 0.08886756199990486sPASSinput · generic input · output · check report
285accepted exit 0 · 0.08845806800036371sPASSinput · generic input · output · check report
286accepted exit 0 · 0.08747488700009853sPASSinput · generic input · output · check report
287accepted exit 0 · 0.08950355100023444sPASSinput · generic input · output · check report
288accepted exit 0 · 0.08332156899996335sPASSinput · generic input · output · check report
289accepted exit 0 · 0.09006978599973081sPASSinput · generic input · output · check report
290accepted exit 0 · 0.08969434600021486sPASSinput · generic input · output · check report
291accepted exit 0 · 0.09382366499994532sPASSinput · generic input · output · check report
292accepted exit 0 · 0.05015971500051819sPASSinput · generic input · output · check report
293accepted exit 0 · 0.0975158579994968sPASSinput · generic input · output · check report
294accepted exit 0 · 0.10887771299985616sPASSinput · generic input · output · check report
295accepted exit 0 · 0.08036824999999226sPASSinput · generic input · output · check report
296accepted exit 0 · 0.10222872799931793sPASSinput · generic input · output · check report
297accepted exit 0 · 0.05089119100011885sPASSinput · generic input · output · check report
298accepted exit 0 · 0.09412425400023494sPASSinput · generic input · output · check report
299accepted exit 0 · 0.09549430400056735sPASSinput · generic input · output · check report
300accepted exit 0 · 0.11877165399982914sPASSinput · generic input · output · check report
301accepted exit 0 · 0.09273905800000648sPASSinput · generic input · output · check report
302accepted exit 0 · 0.0855504490000385sPASSinput · generic input · output · check report
303accepted exit 0 · 0.05622577400026785sPASSinput · generic input · output · check report
304accepted exit 0 · 0.10154113199951098sPASSinput · generic input · output · check report
305accepted exit 0 · 0.10236948800047685sPASSinput · generic input · output · check report
306accepted exit 0 · 0.07504980500016245sPASSinput · generic input · output · check report
307accepted exit 0 · 0.08957187200030603sPASSinput · generic input · output · check report
308accepted exit 0 · 0.07003282200003014sPASSinput · generic input · output · check report
309accepted exit 0 · 0.05338305299937929sPASSinput · generic input · output · check report
310accepted exit 0 · 0.09089283499997691sPASSinput · generic input · output · check report
311accepted exit 0 · 0.09071382000001904sPASSinput · generic input · output · check report
312accepted exit 0 · 0.08758712300004845sPASSinput · generic input · output · check report
313accepted exit 0 · 0.11431091200029186sPASSinput · generic input · output · check report
314accepted exit 0 · 0.09666359099992405sPASSinput · generic input · output · check report
315accepted exit 0 · 0.07260650899934262sPASSinput · generic input · output · check report
316accepted exit 0 · 0.10184335600024497sPASSinput · generic input · output · check report
317accepted exit 0 · 0.09230450199993356sPASSinput · generic input · output · check report
318accepted exit 0 · 0.07666521899955114sPASSinput · generic input · output · check report
319accepted exit 0 · 0.13169882799957122sPASSinput · generic input · output · check report
320accepted exit 0 · 0.08653294299983827sPASSinput · generic input · output · check report
321accepted exit 0 · 0.09483675100000255sPASSinput · generic input · output · check report
322accepted exit 0 · 0.0558460140000534sPASSinput · generic input · output · check report
323accepted exit 0 · 0.055566351000379655sPASSinput · generic input · output · check report
324accepted exit 0 · 0.054408827999395726sPASSinput · generic input · output · check report
325accepted exit 0 · 0.06260359099997004sPASSinput · generic input · output · check report
326accepted exit 0 · 0.046156268999766326sPASSinput · generic input · output · check report
327accepted exit 0 · 0.08076442200035672sPASSinput · generic input · output · check report
328accepted exit 0 · 0.09209852799995133sPASSinput · generic input · output · check report
329accepted exit 0 · 0.07460272699972847sPASSinput · generic input · output · check report
330accepted exit 0 · 0.0909030859993436sPASSinput · generic input · output · check report
331accepted exit 0 · 0.09287944599964248sPASSinput · generic input · output · check report
332accepted exit 0 · 0.09009269599937397sPASSinput · generic input · output · check report
333accepted exit 0 · 0.09417163400030404sPASSinput · generic input · output · check report
334accepted exit 0 · 0.09253810799964413sPASSinput · generic input · output · check report
335accepted exit 0 · 0.09312075300022116sPASSinput · generic input · output · check report
336accepted exit 0 · 0.050268142000277294sPASSinput · generic input · output · check report
337accepted exit 0 · 0.0934899880003286sPASSinput · generic input · output · check report
338accepted exit 0 · 0.09255503399981535sPASSinput · generic input · output · check report
339accepted exit 0 · 0.12095694100025867sPASSinput · generic input · output · check report
340accepted exit 0 · 0.12105257099938171sPASSinput · generic input · output · check report
341accepted exit 0 · 0.09265585499997542sPASSinput · generic input · output · check report
342accepted exit 0 · 0.05112738699972397sPASSinput · generic input · output · check report
343accepted exit 0 · 0.09209308100071212sPASSinput · generic input · output · check report
344accepted exit 0 · 0.09148507100053394sPASSinput · generic input · output · check report
345accepted exit 0 · 0.09195761899991339sPASSinput · generic input · output · check report
346accepted exit 0 · 0.0904470739997123sPASSinput · generic input · output · check report
347accepted exit 0 · 0.08982311300042056sPASSinput · generic input · output · check report
348accepted exit 0 · 0.09445445900018967sPASSinput · generic input · output · check report
349accepted exit 0 · 0.08679966900035652sPASSinput · generic input · output · check report
350accepted exit 0 · 0.09195961600016744sPASSinput · generic input · output · check report
351accepted exit 0 · 0.11981179500071448sPASSinput · generic input · output · check report
352accepted exit 0 · 0.09302590999959648sPASSinput · generic input · output · check report
353accepted exit 0 · 0.08993031899990456sPASSinput · generic input · output · check report
354accepted exit 0 · 0.09104185700016387sPASSinput · generic input · output · check report
355accepted exit 0 · 0.04943795300005149sPASSinput · generic input · output · check report
356accepted exit 0 · 0.08929192300001887sPASSinput · generic input · output · check report
357accepted exit 0 · 0.05375711200031219sPASSinput · generic input · output · check report
358accepted exit 0 · 0.07466270999975677sPASSinput · generic input · output · check report
359accepted exit 0 · 0.08706544600045163sPASSinput · generic input · output · check report
360accepted exit 0 · 0.13991337300012674sPASSinput · generic input · output · check report
361accepted exit 0 · 0.09701584799950069sPASSinput · generic input · output · check report
362accepted exit 0 · 0.09038699499978975sPASSinput · generic input · output · check report
363accepted exit 0 · 0.13270572700002958sPASSinput · generic input · output · check report
364accepted exit 0 · 0.09070823000001837sPASSinput · generic input · output · check report
365accepted exit 0 · 0.08836611500009894sPASSinput · generic input · output · check report
366accepted exit 0 · 0.05068275699977676sPASSinput · generic input · output · check report
367accepted exit 0 · 0.1108550409999225sPASSinput · generic input · output · check report
368accepted exit 0 · 0.0685133950000818sPASSinput · generic input · output · check report
369accepted exit 0 · 0.10570929300047283sPASSinput · generic input · output · check report
370accepted exit 0 · 0.06316994499957218sPASSinput · generic input · output · check report
371accepted exit 0 · 0.09749020399976871sPASSinput · generic input · output · check report
372accepted exit 0 · 0.05527299999994284sPASSinput · generic input · output · check report
373accepted exit 0 · 0.09725364300084038sPASSinput · generic input · output · check report
374accepted exit 0 · 0.07154325999999855sPASSinput · generic input · output · check report
375accepted exit 0 · 0.0983474490003573sPASSinput · generic input · output · check report
376accepted exit 0 · 0.10011252499953116sPASSinput · generic input · output · check report
377accepted exit 0 · 0.1535920630003602sPASSinput · generic input · output · check report
378accepted exit 0 · 0.07222115799959283sPASSinput · generic input · output · check report
379accepted exit 0 · 0.10452792100022634sPASSinput · generic input · output · check report
380accepted exit 0 · 0.09642398500000127sPASSinput · generic input · output · check report
381accepted exit 0 · 0.05585864600016066sPASSinput · generic input · output · check report
382accepted exit 0 · 0.09499323099953472sPASSinput · generic input · output · check report
383accepted exit 0 · 0.10756519899950945sPASSinput · generic input · output · check report
384accepted exit 0 · 0.1079267280001659sPASSinput · generic input · output · check report
385accepted exit 0 · 0.07209451600010652sPASSinput · generic input · output · check report
386accepted exit 0 · 0.1002253999995446sPASSinput · generic input · output · check report
387accepted exit 0 · 0.11239639600080409sPASSinput · generic input · output · check report
388accepted exit 0 · 0.06528165599956992sPASSinput · generic input · output · check report
389accepted exit 0 · 0.10301428099955956sPASSinput · generic input · output · check report
390accepted exit 0 · 0.09895958800007065sPASSinput · generic input · output · check report
391accepted exit 0 · 0.10204133600018395sPASSinput · generic input · output · check report
392accepted exit 0 · 0.11157861599986063sPASSinput · generic input · output · check report
393accepted exit 0 · 0.10466313199958677sPASSinput · generic input · output · check report
394accepted exit 0 · 0.09781110600033571sPASSinput · generic input · output · check report
395accepted exit 0 · 0.09902662799959216sPASSinput · generic input · output · check report
396accepted exit 0 · 0.1137683430006291sPASSinput · generic input · output · check report
397accepted exit 0 · 0.10510560599959717sPASSinput · generic input · output · check report
398accepted exit 0 · 0.10083305399984965sPASSinput · generic input · output · check report
399accepted exit 0 · 0.09378540000034263sPASSinput · generic input · output · check report
400accepted exit 0 · 0.09571692499957862sPASSinput · generic input · output · check report
401accepted exit 0 · 0.06336430000010296sPASSinput · generic input · output · check report
402accepted exit 0 · 0.10320755199973064sPASSinput · generic input · output · check report
403accepted exit 0 · 0.10516720400028134sPASSinput · generic input · output · check report
404accepted exit 0 · 0.10499363800045103sPASSinput · generic input · output · check report
405accepted exit 0 · 0.09955484799957048sPASSinput · generic input · output · check report
406accepted exit 0 · 0.10059107600045536sPASSinput · generic input · output · check report
407accepted exit 0 · 0.10414480400049797sPASSinput · generic input · output · check report
408accepted exit 0 · 0.10627919499984273sPASSinput · generic input · output · check report
409accepted exit 0 · 0.10445465700013301sPASSinput · generic input · output · check report
410accepted exit 0 · 0.1011103720002211sPASSinput · generic input · output · check report
411accepted exit 0 · 0.10919467500025348sPASSinput · generic input · output · check report
412accepted exit 0 · 0.06588846500017098sPASSinput · generic input · output · check report
413accepted exit 0 · 0.10946947100001125sPASSinput · generic input · output · check report
414accepted exit 0 · 0.09997481000027619sPASSinput · generic input · output · check report
415accepted exit 0 · 0.10448731999986194sPASSinput · generic input · output · check report
416accepted exit 0 · 0.09317891899991082sPASSinput · generic input · output · check report
417accepted exit 0 · 0.09671012600028916sPASSinput · generic input · output · check report
418accepted exit 0 · 0.08205681000072218sPASSinput · generic input · output · check report
419accepted exit 0 · 0.06217332500000339sPASSinput · generic input · output · check report
420accepted exit 0 · 0.09962138699938805sPASSinput · generic input · output · check report
421accepted exit 0 · 0.059859017000235326sPASSinput · generic input · output · check report
422accepted exit 0 · 0.11121820999960619sPASSinput · generic input · output · check report
423accepted exit 0 · 0.10485666600015975sPASSinput · generic input · output · check report
424accepted exit 0 · 0.1025260669994168sPASSinput · generic input · output · check report
425accepted exit 0 · 0.11685802900046838sPASSinput · generic input · output · check report
426accepted exit 0 · 0.06735782899977494sPASSinput · generic input · output · check report
427accepted exit 0 · 0.12028013100007229sPASSinput · generic input · output · check report
428accepted exit 0 · 0.07049394299974665sPASSinput · generic input · output · check report
429accepted exit 0 · 0.09728901600010431sPASSinput · generic input · output · check report
430accepted exit 0 · 0.11642983700039622sPASSinput · generic input · output · check report
431accepted exit 0 · 0.06805323699973087sPASSinput · generic input · output · check report
432accepted exit 0 · 0.05781578799997078sPASSinput · generic input · output · check report
433accepted exit 0 · 0.07006914500016137sPASSinput · generic input · output · check report
434accepted exit 0 · 0.08823846999985108sPASSinput · generic input · output · check report
435accepted exit 0 · 0.08747743999992963sPASSinput · generic input · output · check report
436accepted exit 0 · 0.09851669500039861sPASSinput · generic input · output · check report
437accepted exit 0 · 0.10579186699942511sPASSinput · generic input · output · check report
438accepted exit 0 · 0.065440688000308sPASSinput · generic input · output · check report
439accepted exit 0 · 0.10407908900015173sPASSinput · generic input · output · check report
440accepted exit 0 · 0.07487849399967672sPASSinput · generic input · output · check report
441accepted exit 0 · 0.10136270400016656sPASSinput · generic input · output · check report
442accepted exit 0 · 0.10566131200084783sPASSinput · generic input · output · check report
443accepted exit 0 · 0.10645657799977926sPASSinput · generic input · output · check report
444accepted exit 0 · 0.12747196100008296sPASSinput · generic input · output · check report
445accepted exit 0 · 0.0972620590000588sPASSinput · generic input · output · check report
446accepted exit 0 · 0.09807763300068473sPASSinput · generic input · output · check report
447accepted exit 0 · 0.10014350400069816sPASSinput · generic input · output · check report
448accepted exit 0 · 0.10878532499918947sPASSinput · generic input · output · check report
449accepted exit 0 · 0.07487006999963342sPASSinput · generic input · output · check report
450accepted exit 0 · 0.09915146100047423sPASSinput · generic input · output · check report
451accepted exit 0 · 0.1030532429995219sPASSinput · generic input · output · check report
452accepted exit 0 · 0.10290040599920758sPASSinput · generic input · output · check report
453accepted exit 0 · 0.0578126649998012sPASSinput · generic input · output · check report
454accepted exit 0 · 0.0855062189993987sPASSinput · generic input · output · check report
455accepted exit 0 · 0.10742430800019065sPASSinput · generic input · output · check report
456accepted exit 0 · 0.11070540500077186sPASSinput · generic input · output · check report
457accepted exit 0 · 0.1346169110001938sPASSinput · generic input · output · check report
458accepted exit 0 · 0.13276797700018506sPASSinput · generic input · output · check report
459accepted exit 0 · 0.06433688599918241sPASSinput · generic input · output · check report
460accepted exit 0 · 0.10726125200017123sPASSinput · generic input · output · check report
461accepted exit 0 · 0.13255719999961002sPASSinput · generic input · output · check report
462accepted exit 0 · 0.08501137999974162sPASSinput · generic input · output · check report
463accepted exit 0 · 0.09777647800001432sPASSinput · generic input · output · check report
464accepted exit 0 · 0.08260710100057622sPASSinput · generic input · output · check report
465accepted exit 0 · 0.14708969200000865sPASSinput · generic input · output · check report
466accepted exit 0 · 0.14181071199982398sPASSinput · generic input · output · check report
467accepted exit 0 · 0.10644529000001057sPASSinput · generic input · output · check report
468accepted exit 0 · 0.10036813000078837sPASSinput · generic input · output · check report
469accepted exit 0 · 0.06320764600059192sPASSinput · generic input · output · check report
470accepted exit 0 · 0.09727997699974367sPASSinput · generic input · output · check report
471accepted exit 0 · 0.09847807899950567sPASSinput · generic input · output · check report
472accepted exit 0 · 0.10569157499958237sPASSinput · generic input · output · check report
473accepted exit 0 · 0.09906344899991382sPASSinput · generic input · output · check report
474accepted exit 0 · 0.10386152599949128sPASSinput · generic input · output · check report
475accepted exit 0 · 0.10149414699935733sPASSinput · generic input · output · check report
476accepted exit 0 · 0.06855496400021366sPASSinput · generic input · output · check report
477accepted exit 0 · 0.10565430499991635sPASSinput · generic input · output · check report
478accepted exit 0 · 0.0971253469997464sPASSinput · generic input · output · check report
479accepted exit 0 · 0.07558269299988751sPASSinput · generic input · output · check report
480accepted exit 0 · 0.06415442500019708sPASSinput · generic input · output · check report
481accepted exit 0 · 0.08988604200021655sPASSinput · generic input · output · check report
482accepted exit 0 · 0.10734615599994868sPASSinput · generic input · output · check report
483accepted exit 0 · 0.10150626100039517sPASSinput · generic input · output · check report
484accepted exit 0 · 0.09609712600013154sPASSinput · generic input · output · check report
485accepted exit 0 · 0.1346678019999672sPASSinput · generic input · output · check report
486accepted exit 0 · 0.09455088999948202sPASSinput · generic input · output · check report
487accepted exit 0 · 0.07872506799958501sPASSinput · generic input · output · check report
488accepted exit 0 · 0.06964075599989883sPASSinput · generic input · output · check report
489accepted exit 0 · 0.06625412199991842sPASSinput · generic input · output · check report
490accepted exit 0 · 0.05938632499965024sPASSinput · generic input · output · check report
491accepted exit 0 · 0.10019362499951967sPASSinput · generic input · output · check report
492accepted exit 0 · 0.10020587799954228sPASSinput · generic input · output · check report
493accepted exit 0 · 0.09205240499977663sPASSinput · generic input · output · check report
494accepted exit 0 · 0.05521137899995665sPASSinput · generic input · output · check report
495accepted exit 0 · 0.0875912720002816sPASSinput · generic input · output · check report
496accepted exit 0 · 0.11086660399996617sPASSinput · generic input · output · check report
497accepted exit 0 · 0.07514946999981476sPASSinput · generic input · output · check report
498accepted exit 0 · 0.10011798400046246sPASSinput · generic input · output · check report
499accepted exit 0 · 0.12457230100062588sPASSinput · generic input · output · check report
500accepted exit 0 · 0.09948576199985837sPASSinput · generic input · output · check report
501accepted exit 0 · 0.0771663109999281sPASSinput · generic input · output · check report
502accepted exit 0 · 0.09875037500023609sPASSinput · generic input · output · check report
503accepted exit 0 · 0.10336106399972778sPASSinput · generic input · output · check report
504accepted exit 0 · 0.10950108299948624sPASSinput · generic input · output · check report
505accepted exit 0 · 0.10921277299985377sPASSinput · generic input · output · check report
506accepted exit 0 · 0.10024203400007536sPASSinput · generic input · output · check report
507accepted exit 0 · 0.09445540399974561sPASSinput · generic input · output · check report
508accepted exit 0 · 0.06406983899978513sPASSinput · generic input · output · check report
509accepted exit 0 · 0.10233178099952056sPASSinput · generic input · output · check report
510accepted exit 0 · 0.10802323300049466sPASSinput · generic input · output · check report
511accepted exit 0 · 0.09781557899987092sPASSinput · generic input · output · check report
512accepted exit 0 · 0.10771763499997178sPASSinput · generic input · output · check report
513accepted exit 0 · 0.10427001799962454sPASSinput · generic input · output · check report
514accepted exit 0 · 0.09934197100028541sPASSinput · generic input · output · check report
515accepted exit 0 · 0.10443716400004632sPASSinput · generic input · output · check report
516accepted exit 0 · 0.12492794699937804sPASSinput · generic input · output · check report
517accepted exit 0 · 0.10507870800029195sPASSinput · generic input · output · check report
518accepted exit 0 · 0.10286655399977462sPASSinput · generic input · output · check report
519accepted exit 0 · 0.12016224699982558sPASSinput · generic input · output · check report
520accepted exit 0 · 0.10908336000011332sPASSinput · generic input · output · check report
521accepted exit 0 · 0.09665349300030357sPASSinput · generic input · output · check report
522accepted exit 0 · 0.09514682300050481sPASSinput · generic input · output · check report
523accepted exit 0 · 0.08799214200007555sPASSinput · generic input · output · check report
524accepted exit 0 · 0.06423112100037542sPASSinput · generic input · output · check report
525accepted exit 0 · 0.09377869600029953sPASSinput · generic input · output · check report
526accepted exit 0 · 0.09518927600038296sPASSinput · generic input · output · check report
527accepted exit 0 · 0.11098911900080566sPASSinput · generic input · output · check report
528accepted exit 0 · 0.10657414500019513sPASSinput · generic input · output · check report
529accepted exit 0 · 0.12241508399984014sPASSinput · generic input · output · check report
530accepted exit 0 · 0.09456095600035042sPASSinput · generic input · output · check report
531accepted exit 0 · 0.09634558400011883sPASSinput · generic input · output · check report
532accepted exit 0 · 0.09483405499941sPASSinput · generic input · output · check report
533accepted exit 0 · 0.05901795299996593sPASSinput · generic input · output · check report
534accepted exit 0 · 0.06209015299918974sPASSinput · generic input · output · check report
535accepted exit 0 · 0.10593631199935771sPASSinput · generic input · output · check report
536accepted exit 0 · 0.10025717400003487sPASSinput · generic input · output · check report
537accepted exit 0 · 0.10104639200017118sPASSinput · generic input · output · check report
538accepted exit 0 · 0.10370302499995887sPASSinput · generic input · output · check report
539accepted exit 0 · 0.12352422700041643sPASSinput · generic input · output · check report
540accepted exit 0 · 0.06333614400045917sPASSinput · generic input · output · check report
541accepted exit 0 · 0.05706255400036753sPASSinput · generic input · output · check report
542accepted exit 0 · 0.12444951299949025sPASSinput · generic input · output · check report
543accepted exit 0 · 0.09850210700005846sPASSinput · generic input · output · check report
544accepted exit 0 · 0.08693105300062598sPASSinput · generic input · output · check report
545accepted exit 0 · 0.1002223800005595sPASSinput · generic input · output · check report
546accepted exit 0 · 0.11666013699959876sPASSinput · generic input · output · check report
547accepted exit 0 · 0.0792126010001084sPASSinput · generic input · output · check report
548accepted exit 0 · 0.1123817820007389sPASSinput · generic input · output · check report
549accepted exit 0 · 0.0995382659993993sPASSinput · generic input · output · check report
550accepted exit 0 · 0.0940514929998244sPASSinput · generic input · output · check report
551accepted exit 0 · 0.1067738729998382sPASSinput · generic input · output · check report
552accepted exit 0 · 0.09669192399996973sPASSinput · generic input · output · check report
553accepted exit 0 · 0.09946735099947546sPASSinput · generic input · output · check report
554accepted exit 0 · 0.10430064400043193sPASSinput · generic input · output · check report
555accepted exit 0 · 0.09297920500011969sPASSinput · generic input · output · check report
556accepted exit 0 · 0.10109378400011337sPASSinput · generic input · output · check report
557accepted exit 0 · 0.0975809780002237sPASSinput · generic input · output · check report
558accepted exit 0 · 0.09752286599996296sPASSinput · generic input · output · check report
559accepted exit 0 · 0.09671263300060673sPASSinput · generic input · output · check report
560accepted exit 0 · 0.10186395700020512sPASSinput · generic input · output · check report
561accepted exit 0 · 0.09454580700003135sPASSinput · generic input · output · check report
562accepted exit 0 · 0.09499405099995784sPASSinput · generic input · output · check report
563accepted exit 0 · 0.09357392699985212sPASSinput · generic input · output · check report
564accepted exit 0 · 0.09527094899931399sPASSinput · generic input · output · check report
565accepted exit 0 · 0.0549092710007244sPASSinput · generic input · output · check report
566accepted exit 0 · 0.09572066300006554sPASSinput · generic input · output · check report
567accepted exit 0 · 0.09359995699924184sPASSinput · generic input · output · check report
568accepted exit 0 · 0.09536852499968518sPASSinput · generic input · output · check report
569accepted exit 0 · 0.09726134499942418sPASSinput · generic input · output · check report
570accepted exit 0 · 0.09694974400008505sPASSinput · generic input · output · check report
571accepted exit 0 · 0.09826404300019931sPASSinput · generic input · output · check report
572accepted exit 0 · 0.12091716299983091sPASSinput · generic input · output · check report
573accepted exit 0 · 0.09903683700031252sPASSinput · generic input · output · check report
574accepted exit 0 · 0.05507122399922082sPASSinput · generic input · output · check report
575accepted exit 0 · 0.09454945299967221sPASSinput · generic input · output · check report
576accepted exit 0 · 0.061818837999453535sPASSinput · generic input · output · check report
577accepted exit 0 · 0.09865726199950586sPASSinput · generic input · output · check report
578accepted exit 0 · 0.10223446200052422sPASSinput · generic input · output · check report
579accepted exit 0 · 0.09468731400011166sPASSinput · generic input · output · check report
580accepted exit 0 · 0.09755997399952321sPASSinput · generic input · output · check report
581accepted exit 0 · 0.09775102200001129sPASSinput · generic input · output · check report
582accepted exit 0 · 0.09541576300034649sPASSinput · generic input · output · check report
583accepted exit 0 · 0.09361118500055454sPASSinput · generic input · output · check report
584accepted exit 0 · 0.09515962600016792sPASSinput · generic input · output · check report
585accepted exit 0 · 0.09822603100019478sPASSinput · generic input · output · check report
586accepted exit 0 · 0.09504877200015471sPASSinput · generic input · output · check report
587accepted exit 0 · 0.0996471879998353sPASSinput · generic input · output · check report
588accepted exit 0 · 0.09804170600000361sPASSinput · generic input · output · check report
589accepted exit 0 · 0.057873493999977654sPASSinput · generic input · output · check report
590accepted exit 0 · 0.0989767369992478sPASSinput · generic input · output · check report
591accepted exit 0 · 0.10329465399991022sPASSinput · generic input · output · check report
592accepted exit 0 · 0.09831470300014189sPASSinput · generic input · output · check report
593accepted exit 0 · 0.1032628590000968sPASSinput · generic input · output · check report
594accepted exit 0 · 0.060009819999322644sPASSinput · generic input · output · check report
595accepted exit 0 · 0.10322729800009256sPASSinput · generic input · output · check report
596accepted exit 0 · 0.0996785480001563sPASSinput · generic input · output · check report
597accepted exit 0 · 0.09774500700041244sPASSinput · generic input · output · check report
598accepted exit 0 · 0.09541659099977551sPASSinput · generic input · output · check report
599accepted exit 0 · 0.10022014399964974sPASSinput · generic input · output · check report
600accepted exit 0 · 0.09938307599986729sPASSinput · generic input · output · check report
601accepted exit 0 · 0.05654397800026345sPASSinput · generic input · output · check report
602accepted exit 0 · 0.12221337600021798sPASSinput · generic input · output · check report
603accepted exit 0 · 0.1316401809999661sPASSinput · generic input · output · check report
604accepted exit 0 · 0.0851316760008558sPASSinput · generic input · output · check report
605accepted exit 0 · 0.07668914199985011sPASSinput · generic input · output · check report
606accepted exit 0 · 0.10462247799932811sPASSinput · generic input · output · check report
607accepted exit 0 · 0.13055963500028156sPASSinput · generic input · output · check report
608accepted exit 0 · 0.1266950999997789sPASSinput · generic input · output · check report
609accepted exit 0 · 0.09465902000010828sPASSinput · generic input · output · check report
610accepted exit 0 · 0.1235570219996589sPASSinput · generic input · output · check report
611accepted exit 0 · 0.10081842500039784sPASSinput · generic input · output · check report
612accepted exit 0 · 0.09757633099980012sPASSinput · generic input · output · check report
613accepted exit 0 · 0.09882737600037217sPASSinput · generic input · output · check report
614accepted exit 0 · 0.09397432999958255sPASSinput · generic input · output · check report
615accepted exit 0 · 0.09809178100022109sPASSinput · generic input · output · check report
616accepted exit 0 · 0.09634353000001283sPASSinput · generic input · output · check report
617accepted exit 0 · 0.09788012100034393sPASSinput · generic input · output · check report
618accepted exit 0 · 0.10135799899944686sPASSinput · generic input · output · check report
619accepted exit 0 · 0.09913330100062012sPASSinput · generic input · output · check report
620accepted exit 0 · 0.09510573800071143sPASSinput · generic input · output · check report
621accepted exit 0 · 0.10726970599989727sPASSinput · generic input · output · check report
622accepted exit 0 · 0.09593323499939288sPASSinput · generic input · output · check report
623accepted exit 0 · 0.09464501900038158sPASSinput · generic input · output · check report
624accepted exit 0 · 0.09480643299957592sPASSinput · generic input · output · check report
625accepted exit 0 · 0.103971365999314sPASSinput · generic input · output · check report
626accepted exit 0 · 0.08829231900017476sPASSinput · generic input · output · check report
627accepted exit 0 · 0.09806088899949827sPASSinput · generic input · output · check report
628accepted exit 0 · 0.10851724300027854sPASSinput · generic input · output · check report
629accepted exit 0 · 0.09960005599987198sPASSinput · generic input · output · check report
630accepted exit 0 · 0.09582473899990873sPASSinput · generic input · output · check report
631accepted exit 0 · 0.09448513600000297sPASSinput · generic input · output · check report
632accepted exit 0 · 0.09818844799974613sPASSinput · generic input · output · check report
633accepted exit 0 · 0.0919529490001878sPASSinput · generic input · output · check report
634accepted exit 0 · 0.09417844900053751sPASSinput · generic input · output · check report
635accepted exit 0 · 0.05125694900016242sPASSinput · generic input · output · check report
636accepted exit 0 · 0.09152824899956613sPASSinput · generic input · output · check report
637accepted exit 0 · 0.0965381489995707sPASSinput · generic input · output · check report
638accepted exit 0 · 0.09978905899970414sPASSinput · generic input · output · check report
639accepted exit 0 · 0.10264738900059456sPASSinput · generic input · output · check report
640accepted exit 0 · 0.09628566299943486sPASSinput · generic input · output · check report
641accepted exit 0 · 0.10301805599920044sPASSinput · generic input · output · check report
642accepted exit 0 · 0.09640595000018948sPASSinput · generic input · output · check report
643accepted exit 0 · 0.10131090300001233sPASSinput · generic input · output · check report
644accepted exit 0 · 0.0940885870004422sPASSinput · generic input · output · check report
645accepted exit 0 · 0.16928438800005097sPASSinput · generic input · output · check report
646accepted exit 0 · 0.07229242599987629sPASSinput · generic input · output · check report
647accepted exit 0 · 0.05228553400047531sPASSinput · generic input · output · check report
648accepted exit 0 · 0.054063291000602476sPASSinput · generic input · output · check report
649accepted exit 0 · 0.09274449500026094sPASSinput · generic input · output · check report
650accepted exit 0 · 0.0584674809997523sPASSinput · generic input · output · check report
651accepted exit 0 · 0.10268963599992276sPASSinput · generic input · output · check report
652accepted exit 0 · 0.1414459210000132sPASSinput · generic input · output · check report
653accepted exit 0 · 0.10059501300020202sPASSinput · generic input · output · check report
654accepted exit 0 · 0.0947166969999671sPASSinput · generic input · output · check report
655accepted exit 0 · 0.09314221200020256sPASSinput · generic input · output · check report
656accepted exit 0 · 0.098271627000031sPASSinput · generic input · output · check report
657accepted exit 0 · 0.09363916799975414sPASSinput · generic input · output · check report
658accepted exit 0 · 0.09684706500047469sPASSinput · generic input · output · check report
659accepted exit 0 · 0.09845960999973613sPASSinput · generic input · output · check report
660accepted exit 0 · 0.0956012999995437sPASSinput · generic input · output · check report
661accepted exit 0 · 0.12536002800061397sPASSinput · generic input · output · check report
662accepted exit 0 · 0.08584998399965116sPASSinput · generic input · output · check report
663accepted exit 0 · 0.10090086499985773sPASSinput · generic input · output · check report
664accepted exit 0 · 0.15544155199950183sPASSinput · generic input · output · check report
665accepted exit 0 · 0.09850812099921313sPASSinput · generic input · output · check report
666accepted exit 0 · 0.09370641199984675sPASSinput · generic input · output · check report
667accepted exit 0 · 0.10136488700027257sPASSinput · generic input · output · check report
668accepted exit 0 · 0.09502627599977131sPASSinput · generic input · output · check report
669accepted exit 0 · 0.061344734000158496sPASSinput · generic input · output · check report
670accepted exit 0 · 0.1012234610006999sPASSinput · generic input · output · check report
671accepted exit 0 · 0.10228417700000136sPASSinput · generic input · output · check report
672accepted exit 0 · 0.09814667799946619sPASSinput · generic input · output · check report
673accepted exit 0 · 0.10076321399992594sPASSinput · generic input · output · check report
674accepted exit 0 · 0.09736242200051493sPASSinput · generic input · output · check report
675accepted exit 0 · 0.09832233900033316sPASSinput · generic input · output · check report
676accepted exit 0 · 0.0563021910002135sPASSinput · generic input · output · check report
677accepted exit 0 · 0.05862866000006761sPASSinput · generic input · output · check report
678accepted exit 0 · 0.09940189999997529sPASSinput · generic input · output · check report
679accepted exit 0 · 0.06825908800055913sPASSinput · generic input · output · check report
680accepted exit 0 · 0.05992860700007441sPASSinput · generic input · output · check report
681accepted exit 0 · 0.05890527000065049sPASSinput · generic input · output · check report
682accepted exit 0 · 0.05299015599939594sPASSinput · generic input · output · check report
683accepted exit 0 · 0.09362438399966777sPASSinput · generic input · output · check report
684accepted exit 0 · 0.052237808999962sPASSinput · generic input · output · check report
685accepted exit 0 · 0.13249921900023764sPASSinput · generic input · output · check report
686accepted exit 0 · 0.09161806599968259sPASSinput · generic input · output · check report
687accepted exit 0 · 0.09913624799992249sPASSinput · generic input · output · check report
688accepted exit 0 · 0.09767179100072099sPASSinput · generic input · output · check report
689accepted exit 0 · 0.07973636099995929sPASSinput · generic input · output · check report
690accepted exit 0 · 0.08858037800018792sPASSinput · generic input · output · check report
691accepted exit 0 · 0.0916566480000256sPASSinput · generic input · output · check report
692accepted exit 0 · 0.09926015000019106sPASSinput · generic input · output · check report
693accepted exit 0 · 0.09638251300020784sPASSinput · generic input · output · check report
694accepted exit 0 · 0.08947541099951195sPASSinput · generic input · output · check report
695accepted exit 0 · 0.05144384300001548sPASSinput · generic input · output · check report
696accepted exit 0 · 0.05923562999942078sPASSinput · generic input · output · check report
697accepted exit 0 · 0.09369393200086051sPASSinput · generic input · output · check report
698accepted exit 0 · 0.09421255699999165sPASSinput · generic input · output · check report
699accepted exit 0 · 0.09819542399964121sPASSinput · generic input · output · check report
700accepted exit 0 · 0.11154349800017371sPASSinput · generic input · output · check report
701accepted exit 0 · 0.10005660999922839sPASSinput · generic input · output · check report
702accepted exit 0 · 0.0991853359992092sPASSinput · generic input · output · check report
703accepted exit 0 · 0.09987066699977731sPASSinput · generic input · output · check report
704accepted exit 0 · 0.09435945100085519sPASSinput · generic input · output · check report
705accepted exit 0 · 0.1002295119997143sPASSinput · generic input · output · check report
706accepted exit 0 · 0.09233068199864647sPASSinput · generic input · output · check report
707accepted exit 0 · 0.09638181300033466sPASSinput · generic input · output · check report
708accepted exit 0 · 0.05678999600058887sPASSinput · generic input · output · check report
709accepted exit 0 · 0.09526699800153438sPASSinput · generic input · output · check report
710accepted exit 0 · 0.09799719700095011sPASSinput · generic input · output · check report
711accepted exit 0 · 0.10457443100131059sPASSinput · generic input · output · check report
712accepted exit 0 · 0.10236372100007429sPASSinput · generic input · output · check report
713accepted exit 0 · 0.09157872799914912sPASSinput · generic input · output · check report
714accepted exit 0 · 0.10984444799942139sPASSinput · generic input · output · check report
715accepted exit 0 · 0.09955781600001501sPASSinput · generic input · output · check report
716accepted exit 0 · 0.09772110000085377sPASSinput · generic input · output · check report
717accepted exit 0 · 0.09529720700083999sPASSinput · generic input · output · check report
718accepted exit 0 · 0.10413201899973501sPASSinput · generic input · output · check report
719accepted exit 0 · 0.05793783399894892sPASSinput · generic input · output · check report
720accepted exit 0 · 0.09929910199934966sPASSinput · generic input · output · check report
721accepted exit 0 · 0.11942378700041445sPASSinput · generic input · output · check report
722accepted exit 0 · 0.09989007500007574sPASSinput · generic input · output · check report
723accepted exit 0 · 0.09480972300116264sPASSinput · generic input · output · check report
724accepted exit 0 · 0.09110847199917771sPASSinput · generic input · output · check report
725accepted exit 0 · 0.08972413899937237sPASSinput · generic input · output · check report
726accepted exit 0 · 0.10191741500057105sPASSinput · generic input · output · check report
727accepted exit 0 · 0.10443264800051111sPASSinput · generic input · output · check report
728accepted exit 0 · 0.16476437999881455sPASSinput · generic input · output · check report
729accepted exit 0 · 0.1001125980001234sPASSinput · generic input · output · check report
730accepted exit 0 · 0.09677529300097376sPASSinput · generic input · output · check report
731accepted exit 0 · 0.05930742999953509sPASSinput · generic input · output · check report
732accepted exit 0 · 0.10483298699909938sPASSinput · generic input · output · check report
733accepted exit 0 · 0.11436004299866909sPASSinput · generic input · output · check report
734accepted exit 0 · 0.09186308499920415sPASSinput · generic input · output · check report
735accepted exit 0 · 0.09929688400006853sPASSinput · generic input · output · check report
736accepted exit 0 · 0.09052802599944698sPASSinput · generic input · output · check report
737accepted exit 0 · 0.09885943699919153sPASSinput · generic input · output · check report
738accepted exit 0 · 0.10894616900077381sPASSinput · generic input · output · check report
739accepted exit 0 · 0.10260056100014481sPASSinput · generic input · output · check report
740accepted exit 0 · 0.0910678709988133sPASSinput · generic input · output · check report
741accepted exit 0 · 0.09578413400049612sPASSinput · generic input · output · check report
742accepted exit 0 · 0.09087706900027115sPASSinput · generic input · output · check report
743accepted exit 0 · 0.10035382000023674sPASSinput · generic input · output · check report
744accepted exit 0 · 0.09946704700087139sPASSinput · generic input · output · check report
745accepted exit 0 · 0.07370677700055239sPASSinput · generic input · output · check report
746accepted exit 0 · 0.087809462000223sPASSinput · generic input · output · check report
747accepted exit 0 · 0.09253597300084948sPASSinput · generic input · output · check report
748accepted exit 0 · 0.0694095210001251sPASSinput · generic input · output · check report
749accepted exit 0 · 0.09253454899953795sPASSinput · generic input · output · check report
750accepted exit 0 · 0.10098942300101044sPASSinput · generic input · output · check report
751accepted exit 0 · 0.05992082699958701sPASSinput · generic input · output · check report
752accepted exit 0 · 0.05685937300040678sPASSinput · generic input · output · check report
753accepted exit 0 · 0.09448797999903036sPASSinput · generic input · output · check report
754accepted exit 0 · 0.09337603199855948sPASSinput · generic input · output · check report
755accepted exit 0 · 0.08832254199842282sPASSinput · generic input · output · check report
756accepted exit 0 · 0.08862811700055317sPASSinput · generic input · output · check report
757accepted exit 0 · 0.09212414900139265sPASSinput · generic input · output · check report
758accepted exit 0 · 0.05023251300008269sPASSinput · generic input · output · check report
759accepted exit 0 · 0.05114140700061398sPASSinput · generic input · output · check report
760accepted exit 0 · 0.08926192999933846sPASSinput · generic input · output · check report
761accepted exit 0 · 0.09120831899963378sPASSinput · generic input · output · check report
762accepted exit 0 · 0.09282525799972063sPASSinput · generic input · output · check report
763accepted exit 0 · 0.09781575700071699sPASSinput · generic input · output · check report
764accepted exit 0 · 0.056389552000837284sPASSinput · generic input · output · check report
765accepted exit 0 · 0.10493934899932356sPASSinput · generic input · output · check report
766accepted exit 0 · 0.10163976600051683sPASSinput · generic input · output · check report
767accepted exit 0 · 0.10159268700044777sPASSinput · generic input · output · check report
768accepted exit 0 · 0.09678357699885964sPASSinput · generic input · output · check report
769accepted exit 0 · 0.05340072299986787sPASSinput · generic input · output · check report
770accepted exit 0 · 0.0921407010009716sPASSinput · generic input · output · check report
771accepted exit 0 · 0.09196643100040092sPASSinput · generic input · output · check report
772accepted exit 0 · 0.09247497000069416sPASSinput · generic input · output · check report
773accepted exit 0 · 0.05261966900070547sPASSinput · generic input · output · check report
774accepted exit 0 · 0.11094978399887623sPASSinput · generic input · output · check report
775accepted exit 0 · 0.08194298899979913sPASSinput · generic input · output · check report
776accepted exit 0 · 0.10377487299956556sPASSinput · generic input · output · check report
777accepted exit 0 · 0.0949970920009946sPASSinput · generic input · output · check report
778accepted exit 0 · 0.06674523100082297sPASSinput · generic input · output · check report
779accepted exit 0 · 0.10017414200046915sPASSinput · generic input · output · check report
780accepted exit 0 · 0.10815047100004449sPASSinput · generic input · output · check report
781accepted exit 0 · 0.09553056500044477sPASSinput · generic input · output · check report
782accepted exit 0 · 0.09507143900009396sPASSinput · generic input · output · check report
783accepted exit 0 · 0.0930836099996668sPASSinput · generic input · output · check report
784accepted exit 0 · 0.10268651500155102sPASSinput · generic input · output · check report
785accepted exit 0 · 0.13659295400066185sPASSinput · generic input · output · check report
786accepted exit 0 · 0.09140831900003832sPASSinput · generic input · output · check report
787accepted exit 0 · 0.09604797599968151sPASSinput · generic input · output · check report
788accepted exit 0 · 0.1220773229997576sPASSinput · generic input · output · check report
789accepted exit 0 · 0.10412127699964913sPASSinput · generic input · output · check report
790accepted exit 0 · 0.09739661700041324sPASSinput · generic input · output · check report
791accepted exit 0 · 0.056800694999765255sPASSinput · generic input · output · check report
792accepted exit 0 · 0.09765188599885732sPASSinput · generic input · output · check report
793accepted exit 0 · 0.09639627800061135sPASSinput · generic input · output · check report
794accepted exit 0 · 0.05640094999944267sPASSinput · generic input · output · check report
795accepted exit 0 · 0.07865780299835023sPASSinput · generic input · output · check report
796accepted exit 0 · 0.1454159989989421sPASSinput · generic input · output · check report
797accepted exit 0 · 0.07815699799903086sPASSinput · generic input · output · check report
798accepted exit 0 · 0.09547269300128391sPASSinput · generic input · output · check report
799accepted exit 0 · 0.08177705100024468sPASSinput · generic input · output · check report
800accepted exit 0 · 0.10089291900112585sPASSinput · generic input · output · check report
801accepted exit 0 · 0.11450989699915226sPASSinput · generic input · output · check report
802accepted exit 0 · 0.1059420819983643sPASSinput · generic input · output · check report
803accepted exit 0 · 0.09945905699896684sPASSinput · generic input · output · check report
804accepted exit 0 · 0.09366917700026534sPASSinput · generic input · output · check report
805accepted exit 0 · 0.09657313900061126sPASSinput · generic input · output · check report
806accepted exit 0 · 0.09152374400036933sPASSinput · generic input · output · check report
807accepted exit 0 · 0.0963396080005623sPASSinput · generic input · output · check report
808accepted exit 0 · 0.09608205299991823sPASSinput · generic input · output · check report
809accepted exit 0 · 0.09507997400032764sPASSinput · generic input · output · check report
810accepted exit 0 · 0.04979357400043227sPASSinput · generic input · output · check report
811accepted exit 0 · 0.09478807400046207sPASSinput · generic input · output · check report
812accepted exit 0 · 0.09333839200007787sPASSinput · generic input · output · check report
813accepted exit 0 · 0.0950221450002573sPASSinput · generic input · output · check report
814accepted exit 0 · 0.09167165200051386sPASSinput · generic input · output · check report
815accepted exit 0 · 0.0983649419995345sPASSinput · generic input · output · check report
816accepted exit 0 · 0.09290502499970898sPASSinput · generic input · output · check report
817accepted exit 0 · 0.09040879100029997sPASSinput · generic input · output · check report
818accepted exit 0 · 0.09736183200038795sPASSinput · generic input · output · check report
819accepted exit 0 · 0.09478333399965777sPASSinput · generic input · output · check report
820accepted exit 0 · 0.059135994999451214sPASSinput · generic input · output · check report
821accepted exit 0 · 0.09678808100034075sPASSinput · generic input · output · check report
822accepted exit 0 · 0.09118051500081492sPASSinput · generic input · output · check report
823accepted exit 0 · 0.09023104500010959sPASSinput · generic input · output · check report
824accepted exit 0 · 0.09797699000046123sPASSinput · generic input · output · check report
825accepted exit 0 · 0.09341944299922034sPASSinput · generic input · output · check report
826accepted exit 0 · 0.08838469600050303sPASSinput · generic input · output · check report
827accepted exit 0 · 0.10081821399944602sPASSinput · generic input · output · check report
828accepted exit 0 · 0.1026287950007827sPASSinput · generic input · output · check report
829accepted exit 0 · 0.09924253399913141sPASSinput · generic input · output · check report
830accepted exit 0 · 0.09817695599849685sPASSinput · generic input · output · check report
831accepted exit 0 · 0.10506207900107256sPASSinput · generic input · output · check report
832accepted exit 0 · 0.09450025799924333sPASSinput · generic input · output · check report
833accepted exit 0 · 0.09498372899906826sPASSinput · generic input · output · check report
834accepted exit 0 · 0.10192432599978929sPASSinput · generic input · output · check report
835accepted exit 0 · 0.10237777099973755sPASSinput · generic input · output · check report
836accepted exit 0 · 0.11640632300077414sPASSinput · generic input · output · check report
837accepted exit 0 · 0.09679005100042559sPASSinput · generic input · output · check report
838accepted exit 0 · 0.1011395170007745sPASSinput · generic input · output · check report
839accepted exit 0 · 0.10033468000074208sPASSinput · generic input · output · check report
840accepted exit 0 · 0.10017289500137849sPASSinput · generic input · output · check report
841accepted exit 0 · 0.0917691710001236sPASSinput · generic input · output · check report
842accepted exit 0 · 0.12215936100074032sPASSinput · generic input · output · check report
843accepted exit 0 · 0.09653575099946465sPASSinput · generic input · output · check report
844accepted exit 0 · 0.09340391099976841sPASSinput · generic input · output · check report
845accepted exit 0 · 0.09165724999911617sPASSinput · generic input · output · check report
846accepted exit 0 · 0.09577211199939484sPASSinput · generic input · output · check report
847accepted exit 0 · 0.10191428500002075sPASSinput · generic input · output · check report
848accepted exit 0 · 0.09698064900112513sPASSinput · generic input · output · check report
849accepted exit 0 · 0.09567741300088528sPASSinput · generic input · output · check report
850accepted exit 0 · 0.10163646100045298sPASSinput · generic input · output · check report
851accepted exit 0 · 0.0601182840000547sPASSinput · generic input · output · check report
852accepted exit 0 · 0.09735829000055674sPASSinput · generic input · output · check report
853accepted exit 0 · 0.11351832800028205sPASSinput · generic input · output · check report
854accepted exit 0 · 0.10723188300107722sPASSinput · generic input · output · check report
855accepted exit 0 · 0.10325641300005373sPASSinput · generic input · output · check report
856accepted exit 0 · 0.1027029090000724sPASSinput · generic input · output · check report
857accepted exit 0 · 0.0977865959994233sPASSinput · generic input · output · check report
858accepted exit 0 · 0.10709733900148422sPASSinput · generic input · output · check report
859accepted exit 0 · 0.10229736499968567sPASSinput · generic input · output · check report
860accepted exit 0 · 0.05854502900001535sPASSinput · generic input · output · check report
861accepted exit 0 · 0.0975660300009622sPASSinput · generic input · output · check report
862accepted exit 0 · 0.09484467299989774sPASSinput · generic input · output · check report
863accepted exit 0 · 0.1197965950013895sPASSinput · generic input · output · check report
864accepted exit 0 · 0.09633201500037103sPASSinput · generic input · output · check report
865accepted exit 0 · 0.09861108899895044sPASSinput · generic input · output · check report
866accepted exit 0 · 0.10385461800069606sPASSinput · generic input · output · check report
867accepted exit 0 · 0.09521553000013228sPASSinput · generic input · output · check report
868accepted exit 0 · 0.09998591900148313sPASSinput · generic input · output · check report
869accepted exit 0 · 0.09400573099992471sPASSinput · generic input · output · check report
870accepted exit 0 · 0.09522941700015508sPASSinput · generic input · output · check report
871accepted exit 0 · 0.09850456700041832sPASSinput · generic input · output · check report
872accepted exit 0 · 0.09529080199899909sPASSinput · generic input · output · check report
873accepted exit 0 · 0.09670356300011917sPASSinput · generic input · output · check report
874accepted exit 0 · 0.11521716499919421sPASSinput · generic input · output · check report
875accepted exit 0 · 0.12545409300037136sPASSinput · generic input · output · check report
876accepted exit 0 · 0.057535976000508526sPASSinput · generic input · output · check report
877accepted exit 0 · 0.09828534299958847sPASSinput · generic input · output · check report
878accepted exit 0 · 0.10499150900068344sPASSinput · generic input · output · check report
879accepted exit 0 · 0.09569041400027345sPASSinput · generic input · output · check report
880accepted exit 0 · 0.09985838600005081sPASSinput · generic input · output · check report
881accepted exit 0 · 0.10231399400072405sPASSinput · generic input · output · check report
882accepted exit 0 · 0.10310557400043763sPASSinput · generic input · output · check report
883accepted exit 0 · 0.09943677199953527sPASSinput · generic input · output · check report
884accepted exit 0 · 0.10561710600086371sPASSinput · generic input · output · check report
885accepted exit 0 · 0.09469830300076865sPASSinput · generic input · output · check report
886accepted exit 0 · 0.10037270500106388sPASSinput · generic input · output · check report
887accepted exit 0 · 0.10219007900013821sPASSinput · generic input · output · check report
888accepted exit 0 · 0.09966420999990078sPASSinput · generic input · output · check report
889accepted exit 0 · 0.09956414099906397sPASSinput · generic input · output · check report
890accepted exit 0 · 0.09753952599930926sPASSinput · generic input · output · check report
891accepted exit 0 · 0.0999754460008262sPASSinput · generic input · output · check report
892accepted exit 0 · 0.09565431400005764sPASSinput · generic input · output · check report
893accepted exit 0 · 0.09279870299906179sPASSinput · generic input · output · check report
894accepted exit 0 · 0.10653088700018998sPASSinput · generic input · output · check report
895accepted exit 0 · 0.10108802200011269sPASSinput · generic input · output · check report
896accepted exit 0 · 0.09683470699928876sPASSinput · generic input · output · check report
897accepted exit 0 · 0.09687886000028811sPASSinput · generic input · output · check report
898accepted exit 0 · 0.0982398349988216sPASSinput · generic input · output · check report
899accepted exit 0 · 0.09984159299892781sPASSinput · generic input · output · check report
900accepted exit 0 · 0.10374974200021825sPASSinput · generic input · output · check report
901accepted exit 0 · 0.10477239700048813sPASSinput · generic input · output · check report
902accepted exit 0 · 0.09490605199971469sPASSinput · generic input · output · check report
903accepted exit 0 · 0.1094723280002654sPASSinput · generic input · output · check report
904accepted exit 0 · 0.09350495800026692sPASSinput · generic input · output · check report
905accepted exit 0 · 0.1296808269999019sPASSinput · generic input · output · check report
906accepted exit 0 · 0.09619355699942389sPASSinput · generic input · output · check report
907accepted exit 0 · 0.10266311600025801sPASSinput · generic input · output · check report
908accepted exit 0 · 0.11208230199918034sPASSinput · generic input · output · check report
909accepted exit 0 · 0.10421755100105656sPASSinput · generic input · output · check report
910accepted exit 0 · 0.10112646900051914sPASSinput · generic input · output · check report
911accepted exit 0 · 0.10038257099949988sPASSinput · generic input · output · check report
912accepted exit 0 · 0.09582889699959196sPASSinput · generic input · output · check report
913accepted exit 0 · 0.10493575600048644sPASSinput · generic input · output · check report
914accepted exit 0 · 0.05784868400041887sPASSinput · generic input · output · check report
915accepted exit 0 · 0.09838373500133457sPASSinput · generic input · output · check report
916accepted exit 0 · 0.10587342299913871sPASSinput · generic input · output · check report
917accepted exit 0 · 0.09506587599935301sPASSinput · generic input · output · check report
918accepted exit 0 · 0.09311816400077078sPASSinput · generic input · output · check report
919accepted exit 0 · 0.10130907100028708sPASSinput · generic input · output · check report
920accepted exit 0 · 0.09284762700008287sPASSinput · generic input · output · check report
921accepted exit 0 · 0.09881171499910124sPASSinput · generic input · output · check report
922accepted exit 0 · 0.09827898399998958sPASSinput · generic input · output · check report
923accepted exit 0 · 0.1023158379994129sPASSinput · generic input · output · check report
924accepted exit 0 · 0.09614772699933383sPASSinput · generic input · output · check report
925accepted exit 0 · 0.10751010099920677sPASSinput · generic input · output · check report
926accepted exit 0 · 0.10805015699952492sPASSinput · generic input · output · check report
927accepted exit 0 · 0.1149645839996083sPASSinput · generic input · output · check report
928accepted exit 0 · 0.09382689599988225sPASSinput · generic input · output · check report
929accepted exit 0 · 0.09340726700065716sPASSinput · generic input · output · check report
930accepted exit 0 · 0.10298374100057117sPASSinput · generic input · output · check report
931accepted exit 0 · 0.10340274000009231sPASSinput · generic input · output · check report
932accepted exit 0 · 0.09974656400117965sPASSinput · generic input · output · check report
933accepted exit 0 · 0.10281524699894362sPASSinput · generic input · output · check report
934accepted exit 0 · 0.09736596800030384sPASSinput · generic input · output · check report
935accepted exit 0 · 0.06003074000000197sPASSinput · generic input · output · check report
936accepted exit 0 · 0.10177758800091397sPASSinput · generic input · output · check report
937accepted exit 0 · 0.10450223400039249sPASSinput · generic input · output · check report
938accepted exit 0 · 0.09944980100044631sPASSinput · generic input · output · check report
939accepted exit 0 · 0.09728207499938435sPASSinput · generic input · output · check report
940accepted exit 0 · 0.09047134400134382sPASSinput · generic input · output · check report
941accepted exit 0 · 0.0489278370005195sPASSinput · generic input · output · check report
942accepted exit 0 · 0.09708580700134917sPASSinput · generic input · output · check report
943accepted exit 0 · 0.09436987899971427sPASSinput · generic input · output · check report
944accepted exit 0 · 0.0837563239983865sPASSinput · generic input · output · check report
945accepted exit 0 · 0.1073103529997752sPASSinput · generic input · output · check report
946accepted exit 0 · 0.10145428800024092sPASSinput · generic input · output · check report
947accepted exit 0 · 0.10311983200153918sPASSinput · generic input · output · check report
948accepted exit 0 · 0.11258641099993838sPASSinput · generic input · output · check report
949accepted exit 0 · 0.10478414399949543sPASSinput · generic input · output · check report
950accepted exit 0 · 0.09236211799907323sPASSinput · generic input · output · check report
951accepted exit 0 · 0.0970635730009235sPASSinput · generic input · output · check report
952accepted exit 0 · 0.10889477999990049sPASSinput · generic input · output · check report
953accepted exit 0 · 0.10183347800011688sPASSinput · generic input · output · check report
954accepted exit 0 · 0.11908271799984504sPASSinput · generic input · output · check report
955accepted exit 0 · 0.09761882000020705sPASSinput · generic input · output · check report
956accepted exit 0 · 0.12699305000023742sPASSinput · generic input · output · check report
957accepted exit 0 · 0.10099140700003773sPASSinput · generic input · output · check report
958accepted exit 0 · 0.10021415599840111sPASSinput · generic input · output · check report
959accepted exit 0 · 0.10959723799896892sPASSinput · generic input · output · check report
960accepted exit 0 · 0.10235755900066579sPASSinput · generic input · output · check report
961accepted exit 0 · 0.061527198000476346sPASSinput · generic input · output · check report
962accepted exit 0 · 0.05693588099893532sPASSinput · generic input · output · check report
963accepted exit 0 · 0.11334090499985905sPASSinput · generic input · output · check report
964accepted exit 0 · 0.09653987800083996sPASSinput · generic input · output · check report
965accepted exit 0 · 0.11557075199925748sPASSinput · generic input · output · check report
966accepted exit 0 · 0.10009257300043828sPASSinput · generic input · output · check report
967accepted exit 0 · 0.09867199099971913sPASSinput · generic input · output · check report
968accepted exit 0 · 0.09483088600063638sPASSinput · generic input · output · check report
969accepted exit 0 · 0.05504926499997964sPASSinput · generic input · output · check report
970accepted exit 0 · 0.09702246000051673sPASSinput · generic input · output · check report
971accepted exit 0 · 0.09477043399965623sPASSinput · generic input · output · check report
972accepted exit 0 · 0.09813007599950652sPASSinput · generic input · output · check report
973accepted exit 0 · 0.1023512080009823sPASSinput · generic input · output · check report
974accepted exit 0 · 0.09503923200099962sPASSinput · generic input · output · check report
975accepted exit 0 · 0.10305535400038934sPASSinput · generic input · output · check report
976accepted exit 0 · 0.10210641900084738sPASSinput · generic input · output · check report
977accepted exit 0 · 0.09768249700027809sPASSinput · generic input · output · check report
978accepted exit 0 · 0.09798397500162537sPASSinput · generic input · output · check report
979accepted exit 0 · 0.10216926999964926sPASSinput · generic input · output · check report
980accepted exit 0 · 0.09372109600008116sPASSinput · generic input · output · check report
981accepted exit 0 · 0.09517994100133365sPASSinput · generic input · output · check report
982accepted exit 0 · 0.10808694600018498sPASSinput · generic input · output · check report
983accepted exit 0 · 0.05239498700029799sPASSinput · generic input · output · check report
984accepted exit 0 · 0.16552110600059677sPASSinput · generic input · output · check report
985accepted exit 0 · 0.09716775400011102sPASSinput · generic input · output · check report
986accepted exit 0 · 0.09726365599999554sPASSinput · generic input · output · check report
987accepted exit 0 · 0.10259933499946783sPASSinput · generic input · output · check report
988accepted exit 0 · 0.0974868269986473sPASSinput · generic input · output · check report
989accepted exit 0 · 0.10134474599908572sPASSinput · generic input · output · check report
990accepted exit 0 · 0.09884268899986637sPASSinput · generic input · output · check report
991accepted exit 0 · 0.09863634199973603sPASSinput · generic input · output · check report
992accepted exit 0 · 0.09917649899944081sPASSinput · generic input · output · check report
993accepted exit 0 · 0.11475023200000578sPASSinput · generic input · output · check report
994accepted exit 0 · 0.10017898600017361sPASSinput · generic input · output · check report
995accepted exit 0 · 0.10009734300001583sPASSinput · generic input · output · check report
996accepted exit 0 · 0.09804187700137845sPASSinput · generic input · output · check report
997accepted exit 0 · 0.0998288800001319sPASSinput · generic input · output · check report
998accepted exit 0 · 0.05223891899913724sPASSinput · generic input · output · check report
999accepted exit 0 · 0.09891640400019241sPASSinput · 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

  • Thread function signatures with no results/completion-token inputs, and input type matching against launch data operands.

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":"988-1037","path":"docs/spec-compiler-part-3-dfg.md","roles":["context"],"text":"* `dataflow.thread` is a Symbol-bearing, module-scope, function-\n  like callable. It does not itself execute; one or more\n  `dataflow.thread.launch` ops materialize launches of it.\n* `function_type` is a `FunctionType` whose inputs are the kernel's\n  user-data operand types `(T0, ..., TN)` and whose results are\n  empty. The thread definition has no SSA data results; the\n  per-launch completion token is launch-side, not part of the\n  callable signature. Asynchronous execution is expressed by launch\n  dependencies and the mandatory launch completion token, not by the\n  function type.\n* `sym_name` is required and module-unique. `sym_visibility` is\n  required and must equal `\"private\"` under the baseline visibility\n  policy. The verifier rejects `\"public\"` and `\"nested\"` unless\n  cross-module linkage is enabled by a separate spec.\n* `domain` is the closed `DenseRectangular` or\n  `DynamicWork { work_item_arg_ordinal }` value owned by Part 4. A dynamic\n  definition has coordinate rank zero and its ordinal must select exactly one\n  `function_type` input. A dense definition has no work-item ordinal.\n* A dense entry block has the layout `(args_*, thread_ctrl, coord_*)`; a\n  dynamic entry block has `(args_*, thread_ctrl)`:\n  - The first `N` block arguments mirror `function_type.inputs`\n    exactly (each user body operand). Putting the signature args\n    first preserves the upstream `FunctionOpInterface` invariant\n    that the entry block's first `N` arguments correspond to\n    `function_type.inputs[0..N]`. This matches the `gpu.func`\n    precedent of \"function args first, implicit extras after\".\n  - `thread_ctrl : none` is the per-launch AccCore start signal.\n    It is produced by the launch op once async dependencies are\n    satisfied and the AccCore instance begins execution. Root\n    `dataflow.graph.launch` ops with no InstructionCore predecessor use\n    this value as their `ctrl_in` operand.\n  - For a dense definition, `coord_0, ..., coord_{K-1} : index` are the\n    per-instance logical\n    coordinates, one per launch-domain dimension, in source-dimension order.\n    Their count is the definition's coordinate rank. Rank is derived from\n    this canonical suffix after the `function_type` inputs and unique\n    `thread_ctrl`; there is no duplicate rank, grid, or mapping attribute.\n  - For a dynamic definition, the designated ordinary argument carries the\n    current work-item payload. The runtime `WorkItemId` is execution identity,\n    not an additional SSA argument or payload wrapper.\n* `arg_attrs` is indexed only by the `args_*` payload prefix. Forall\n  promotion copies each captured source function argument dictionary,\n  including arbitrary attributes such as `llvm.noalias`, into capture order.\n  Locally defined captures have an empty dictionary. `thread_ctrl` and\n  `coord_*` are not payload arguments and never inherit source argument\n  metadata.\n* The body is `IsolatedFromAbove`. No SSA value defined outside\n  the def's body may be used inside it; the launch's body operands\n  are the only inputs.\n#### 5.4.2 `dataflow.thread.launch`","why":"Governing context for dataflow.thread: module-scope private callable, required domain attribute, the (args_*, thread_ctrl, coord_*) entry-block layout and IsolatedFromAbove body. Fixes the terminology and the shape every generated definition must have."},{"file_sha256":"d76b4cb1e888697d5f011a939e68cbc6230647c4d457c12d22689740aa43a44d","kind":"documentation_input","lines":"2052-2061","path":"docs/spec-compiler-part-3-dfg.md","roles":["input_construction","input_well_formedness"],"text":"Part 3 rejects this form before graph mutation. It never drops the combining\nregion or publishes a `dataflow.graph` that omits the aggregation. Any legal\nmaterialization belongs to the Part 2 owner; this document intentionally does\nnot define a bufferization or combining algorithm.\n\nIf Part 2 selects an effect-form forall as an AccCore thread domain, the input\naccepted by Part 3 is already the definition-and-launch carrier shape below.\nThe rank-one source sketch is retained only to relate the source induction\nvariable to the canonical logical-coordinate ABI; it is not a Part 3\ntransformation:","why":"States that when Part 2 selects an effect-form forall as an AccCore thread domain, the input accepted at this boundary is already the definition-and-launch carrier shape; this is why the grammar emits dataflow.thread definitions plus dataflow.thread.launch rather than a raw scf.forall."},{"file_sha256":"d76b4cb1e888697d5f011a939e68cbc6230647c4d457c12d22689740aa43a44d","kind":"documentation_input","lines":"2008-2023","path":"docs/spec-compiler-part-3-dfg.md","roles":["input_construction","input_well_formedness"],"text":"* retained a graph-owned forall only as a mapping-free, effect-form,\n  compile-time fixed-domain construct whose `P[]` width, ownership, and\n  cross-lane legality are materialized in semantic IR and can be re-proved;\n  and\n* materialized every supported aggregation or reduction into accepted\n  semantics, or failed finalizability truthfully.\n\nPart 3 does not convert aggregation form, decide thread ownership, rewrite\nforall to parallel as an optimization policy, infer `P[]`, serialize lanes, or\nselect a reduction strategy. A dynamic domain, mapping attribute, shared\noutput, result, combining action, or failed legality re-proof causes atomic\nfailure before canonical graph publication. Cached provenance never changes\nthis result.\n\nFor this boundary, an accepted effect-form forall has no `shared_outs`, no op\nresults, and an empty `scf.forall.in_parallel` terminator. In the example,","why":"Constrains the accepted boundary form: mapping-free, effect-form, compile-time fixed domain, no shared_outs, no op results, no combining action; a dynamic domain or mapping attribute fails before publication. The grammar therefore emits no shared_outs/result/mapping constructs."},{"file_sha256":"d76b4cb1e888697d5f011a939e68cbc6230647c4d457c12d22689740aa43a44d","kind":"documentation_input","lines":"2096-2100","path":"docs/spec-compiler-part-3-dfg.md","roles":["input_construction"],"text":"Code inside the thread definition remains InstructionCore code unless the\nselected Structured Program Candidate explicitly wraps it in\n`loom.spatial_region`. That compiler-internal region remains the temporary\nSpatialCore ownership carrier until Part 3 atomically replaces it with a\nfinalized `dataflow.graph` definition and launch. Memory operations outside","why":"Code inside the thread definition remains InstructionCore code unless explicitly wrapped in loom.spatial_region; justifies generating plain bodies with only the thread.yield terminator."},{"file_sha256":"bfc1e646e91fe0ba6d7d16e43994100b05c3b8ff79c2e07288e8955c43d9d79d","kind":"documentation_input","lines":"934-942","path":"docs/spec-compiler-part-2-scf.md","roles":["input_construction","input_well_formedness"],"text":"temporary joint proof do not survive in the child. When the selected nest is\ninside an already materialized rank-zero Spatial ownership carrier, the same\natomic decision promotes the new forall to the carrier's dense logical thread\ndomain. Ownership remains the sole owner of extent arithmetic and\nsource-induction reconstruction: every exact thread launch must project all\nbounds from its body operands, the thread and Spatial ABIs acquire the rank-N\ncoordinate suffix, and no graph-owned forall remains. An unprojectable bound\nrejects only that candidate. The transformation never weakens the fixed-domain\nrequirement for a retained graph-owned parallel form.","why":"Part 2 promotion into a dense logical thread domain and the fixed-domain requirement for a retained graph-owned parallel form; supports sampling dense coordinate ranks and rejecting unprojectable/offset-strided domains from the input domain."},{"file_sha256":"f4e60b2e62b496c3714437bd100ab5236540abebd3685dfbd25eeddb37cb7160","kind":"language_definition","lines":"614-739","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}","why":"ODS for dataflow.thread: sym_name/function_type/domain/sym_visibility/arg_attrs operands, SizedRegion body with implicit ThreadYieldOp terminator, the documented custom assembly format with domain(...), ctrl(...) and iv(...) clauses, and verifyBody's entry-block layout rules. Fixes the exact input spelling emitted by the grammar."},{"file_sha256":"f4e60b2e62b496c3714437bd100ab5236540abebd3685dfbd25eeddb37cb7160","kind":"language_definition","lines":"741-765","path":"include/Dataflow/IR/DataflowOps.td","roles":["input_construction"],"text":"def 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":"ODS for dataflow.thread.yield: the optional variadic none-typed completion frontier and its assembly format, used for both terminator spellings the grammar samples."},{"file_sha256":"f4e60b2e62b496c3714437bd100ab5236540abebd3685dfbd25eeddb37cb7160","kind":"language_definition","lines":"767-820","path":"include/Dataflow/IR/DataflowOps.td","roles":["input_construction","input_well_formedness"],"text":"def Dataflow_ThreadLaunchOp : Dataflow_Op<\"thread.launch\", [\n    AttrSizedOperandSegments,\n    DeclareOpInterfaceMethods<SymbolUserOpInterface>\n]> {\n  let summary = \"Async launch of a dataflow.thread callable\";\n  let description = [{\n    References a `dataflow.thread` definition by symbol and supplies\n    body operands and optional grid upper bounds. Always produces one\n    `!dataflow.thread_token` completion handle for all dynamic launch\n    instances.\n\n    Grid lower bounds and steps are not modeled; body operands, upper bounds,\n    and async dependencies are explicit.\n  }];\n\n  let arguments = (ins\n      FlatSymbolRefAttr:$callee,\n      Variadic<AnyType>:$bodyOperands,\n      Variadic<Index>:$gridUpperBounds,\n      Variadic<Dataflow_ThreadTokenType>:$asyncDependencies);\n\n  let results = (outs Dataflow_ThreadTokenType:$asyncToken);\n\n  let assemblyFormat = [{\n    $callee\n    `(` $bodyOperands `)`\n    ( `grid` `(` $gridUpperBounds^ `)` )?\n    ( `wait` `(` $asyncDependencies^ `)` )?\n    attr-dict `:`\n    functional-type($bodyOperands, results)\n  }];\n\n  let skipDefaultBuilders = 1;\n  let builders = [\n    OpBuilder<(ins\n        \"::mlir::FlatSymbolRefAttr\":$callee,\n        \"::mlir::ValueRange\":$bodyOperands,\n        \"::mlir::ValueRange\":$gridUpperBounds,\n        \"::mlir::ValueRange\":$asyncDependencies), [{\n      $_state.addOperands(bodyOperands);\n      $_state.addOperands(gridUpperBounds);\n      $_state.addOperands(asyncDependencies);\n      auto &properties = $_state.getOrAddProperties<Properties>();\n      properties.operandSegmentSizes = {\n          static_cast<int32_t>(bodyOperands.size()),\n          static_cast<int32_t>(gridUpperBounds.size()),\n          static_cast<int32_t>(asyncDependencies.size())};\n      properties.callee = callee;\n      $_state.addTypes(::dataflow::ThreadTokenType::get($_builder.getContext()));\n    }]>\n  ];\n\n  let hasVerifier = 1;\n}","why":"ODS for dataflow.thread.launch: callee symbol, bodyOperands/gridUpperBounds/asyncDependencies operand segments (AttrSizedOperandSegments, the segmentation the postcondition reads with mlir::operand_segment) and the assembly format with grid(...)/wait(...) clauses."},{"file_sha256":"0616db64bbc547b2c92dd9801dbf1dac5136f19fc11ebdd1019ffd9660af9534","kind":"verifier","lines":"413-509","path":"lib/Dataflow/IR/DataflowFunctionLikeOps.cpp","roles":["input_construction","input_well_formedness"],"text":"ParseResult ThreadOp::parse(OpAsmParser &parser, OperationState &result) {\n  ::mlir::Builder &builder = parser.getBuilder();\n  ::mlir::StringAttr visibilityAttr;\n  StringRef visibility;\n  if (succeeded(parser.parseOptionalKeyword(&visibility, {\"private\"}))) {\n    visibilityAttr = builder.getStringAttr(visibility);\n  }\n\n  StringAttr nameAttr;\n  if (parser.parseSymbolName(nameAttr, SymbolTable::getSymbolAttrName(),\n                             result.attributes))\n    return failure();\n\n  if (parser.parseKeyword(\"domain\") || parser.parseLParen())\n    return failure();\n  ThreadDomainAttr domain;\n  if (parser.parseAttribute(domain) || parser.parseRParen())\n    return failure();\n  result.addAttribute(getDomainAttrName(result.name), domain);\n\n  // Function arguments + (empty) results.\n  SmallVector<OpAsmParser::Argument> arguments;\n  SmallVector<Type> resultTypes;\n  SmallVector<DictionaryAttr> resultAttrs;\n  bool isVariadic = false;\n  if (function_interface_impl::parseFunctionSignatureWithArguments(\n          parser, /*allowVariadic=*/false, arguments, isVariadic, resultTypes,\n          resultAttrs))\n    return failure();\n  if (!resultTypes.empty())\n    return parser.emitError(parser.getNameLoc(),\n                            \"dataflow.thread does not have function results\");\n\n  SmallVector<Type, 4> argTypes;\n  for (auto &arg : arguments)\n    argTypes.push_back(arg.type);\n  auto funcType = builder.getFunctionType(argTypes, /*results=*/{});\n  result.addAttribute(getFunctionTypeAttrName(result.name),\n                      TypeAttr::get(funcType));\n  call_interface_impl::addArgAndResultAttrs(\n      builder, result, arguments, resultAttrs, getArgAttrsAttrName(result.name),\n      getResAttrsAttrName(result.name));\n\n  // Helper: parse a parenthesized comma-separated list of typed\n  // arguments into the given vector. Allows an empty list `()`.\n  auto parseTypedArgList =\n      [&](SmallVectorImpl<OpAsmParser::Argument> &out) -> ParseResult {\n    if (parser.parseLParen())\n      return failure();\n    if (succeeded(parser.parseOptionalRParen()))\n      return success();\n    auto parseOne = [&]() -> ParseResult {\n      OpAsmParser::Argument arg;\n      if (parser.parseArgument(arg, /*allowType=*/true))\n        return failure();\n      out.push_back(arg);\n      return success();\n    };\n    if (parseOne())\n      return failure();\n    while (succeeded(parser.parseOptionalComma()))\n      if (parseOne())\n        return failure();\n    return parser.parseRParen();\n  };\n\n  // Optional `ctrl ( <name> : <type> )` for the thread_ctrl slot.\n  SmallVector<OpAsmParser::Argument> ctrlArgs;\n  if (succeeded(parser.parseOptionalKeyword(\"ctrl\"))) {\n    if (parseTypedArgList(ctrlArgs))\n      return failure();\n  }\n\n  // Optional `iv ( <name> : <type> [, ...] )` for grid IV slots.\n  SmallVector<OpAsmParser::Argument> ivArgs;\n  if (succeeded(parser.parseOptionalKeyword(\"iv\"))) {\n    if (parseTypedArgList(ivArgs))\n      return failure();\n  }\n\n  if (visibilityAttr) {\n    result.addAttribute(getSymVisibilityAttrName(result.name), visibilityAttr);\n  }\n  if (parser.parseOptionalAttrDictWithKeyword(result.attributes))\n    return failure();\n\n  Region *body = result.addRegion();\n  SmallVector<OpAsmParser::Argument> allArgs(arguments);\n  for (auto &a : ctrlArgs)\n    allArgs.push_back(a);\n  for (auto &a : ivArgs)\n    allArgs.push_back(a);\n  if (parser.parseRegion(*body, allArgs, /*enableNameShadowing=*/false))\n    return failure();\n  ThreadOp::ensureTerminator(*body, builder, result.location);\n  return success();\n}","why":"ThreadOp::parse: how the private keyword, domain clause, function signature, ctrl and iv clauses are consumed and how function_type is built from the signature arguments only; determines the textual form the generated input must use to parse."},{"file_sha256":"0616db64bbc547b2c92dd9801dbf1dac5136f19fc11ebdd1019ffd9660af9534","kind":"verifier","lines":"563-584","path":"lib/Dataflow/IR/DataflowFunctionLikeOps.cpp","roles":["input_well_formedness"],"text":"LogicalResult ThreadOp::verify() {\n  if (!getSymVisibility() || *getSymVisibility() != \"private\")\n    return emitOpError(\"requires explicit 'private' visibility\");\n  if (getFunctionType().getNumResults() != 0)\n    return emitOpError(\"must not declare function results\");\n\n  if (getDomain().getKind() == ThreadDomainKind::DynamicWork) {\n    uint64_t ordinal = *getDomain().getWorkItemArgOrdinal();\n    ArrayRef<Type> inputs = getFunctionType().getInputs();\n    if (ordinal >= inputs.size())\n      return emitOpError(\"dynamic-work item argument ordinal \")\n             << ordinal << \" is out of bounds for \" << inputs.size()\n             << \" thread inputs\";\n    for (auto [index, type] : llvm::enumerate(inputs))\n      if (DataflowDialect::containsChannelOrThreadToken(type))\n        return emitOpError(\"dynamic-work thread input #\")\n               << index << \" must not contain a channel or thread token\";\n  }\n  if (!ownsThreadLaunchExtentAnalysis(*this))\n    return success();\n  return verifyThreadLaunchExtents(cast<ModuleOp>((*this)->getParentOp()));\n}","why":"ThreadOp::verify: requires explicit private visibility, rejects declared function results, bounds the dynamic-work ordinal against function_type inputs and forbids channel/thread-token inputs there. Keeps the sampled definitions verifier-accepted."},{"file_sha256":"0616db64bbc547b2c92dd9801dbf1dac5136f19fc11ebdd1019ffd9660af9534","kind":"verifier","lines":"313-348","path":"lib/Dataflow/IR/DataflowFunctionLikeOps.cpp","roles":["input_well_formedness"],"text":"static LogicalResult verifyThreadLaunchExtents(ModuleOp module) {\n  ExtentConstantEvaluator evaluator;\n  WalkResult result =\n      module.walk<WalkOrder::PreOrder>([&](Operation *op) -> WalkResult {\n        if (op != module.getOperation() && op->hasTrait<OpTrait::SymbolTable>())\n          return WalkResult::skip();\n\n        auto launch = dyn_cast<ThreadLaunchOp>(op);\n        if (!launch)\n          return WalkResult::advance();\n        // A launch whose segmentation cannot be read safely is diagnosed by\n        // its own verification; this analysis just leaves it alone.\n        if (!hasReadableOperandSegments(launch))\n          return WalkResult::advance();\n        for (auto [index, extent] :\n             llvm::enumerate(launch.getGridUpperBounds())) {\n          auto constant =\n              dyn_cast_or_null<IntegerAttr>(evaluator.evaluate(extent));\n          if (constant && constant.getValue().isNegative()) {\n            launch.emitOpError(\"grid upper bound #\")\n                << index << \" must be nonnegative\";\n            return WalkResult::interrupt();\n          }\n        }\n        return WalkResult::advance();\n      });\n  return success(!result.wasInterrupted());\n}\n\nstatic bool ownsThreadLaunchExtentAnalysis(ThreadOp thread) {\n  for (Operation *previous = thread->getPrevNode(); previous;\n       previous = previous->getPrevNode())\n    if (isa<ThreadOp>(previous))\n      return false;\n  return true;\n}","why":"Thread launch extent analysis rejecting negative constant grid upper bounds; the grammar only emits a nonnegative constant index extent per coordinate dimension."},{"file_sha256":"0616db64bbc547b2c92dd9801dbf1dac5136f19fc11ebdd1019ffd9660af9534","kind":"verifier","lines":"602-639","path":"lib/Dataflow/IR/DataflowFunctionLikeOps.cpp","roles":["input_well_formedness"],"text":"LogicalResult ThreadLaunchOp::verifySymbolUses(SymbolTableCollection &symbols) {\n  auto callee =\n      symbols.lookupNearestSymbolFrom<ThreadOp>(*this, getCalleeAttr());\n  if (!callee)\n    return emitOpError(\"'\")\n           << getCallee()\n           << \"' does not reference a valid 'dataflow.thread' op\";\n\n  // Body operand types must equal callee.function_type.inputs\n  // position-by-position.\n  ArrayRef<Type> calleeInputs = callee.getFunctionType().getInputs();\n  if (getBodyOperands().size() != calleeInputs.size())\n    return emitOpError(\"body operand count (\")\n           << getBodyOperands().size()\n           << \") does not match callee input count (\" << calleeInputs.size()\n           << \")\";\n  for (size_t i = 0, e = calleeInputs.size(); i < e; ++i) {\n    Type expected = calleeInputs[i];\n    Type actual = getBodyOperands()[i].getType();\n    if (actual != expected)\n      return emitOpError(\"body operand #\")\n             << i << \" type \" << actual << \" does not match callee input type \"\n             << expected;\n  }\n\n  size_t calleeRank = 0;\n  if (!callee.isExternal()) {\n    size_t entryArgumentCount = callee.getBody().front().getNumArguments();\n    size_t requiredArgumentCount = calleeInputs.size() + 1;\n    if (entryArgumentCount >= requiredArgumentCount)\n      calleeRank = entryArgumentCount - requiredArgumentCount;\n  }\n  if (getGridUpperBounds().size() != calleeRank)\n    return emitOpError(\"grid upper bound count (\")\n           << getGridUpperBounds().size() << \") must match callee rank (\"\n           << calleeRank << \")\";\n  return success();\n}","why":"ThreadLaunchOp::verifySymbolUses: body operand types must equal callee function_type inputs position-by-position and the grid upper bound count must equal the callee's derived coordinate rank; the grammar reproduces the sampled signature and rank on the launch side."},{"file_sha256":"7b2bea863a561d79b9cc6deb6f69e2c6e535d46e50f23d7fddb0e13d1a952c7d","kind":"test","lines":"1-57","path":"test/dataflow/unit/thread/valid.mlir","roles":["input_construction"],"text":"// RUN: loom %s | loom | FileCheck %s\n\n// Empty thread body carrying just the thread_ctrl slot per spec\n// section 5.4.1's `(args_*, thread_ctrl, iv_*)` layout.\n// CHECK-LABEL: dataflow.thread private @t_empty domain(#dataflow.thread_domain<dense>)() ctrl (%{{.*}}: none)\ndataflow.thread private @t_empty domain(#dataflow.thread_domain<dense>)() ctrl (%c: none) {\n  dataflow.thread.yield\n}\n\n// Thread definition with two body operands, the thread_ctrl slot,\n// and one trailing grid iv slot.\n// CHECK-LABEL: dataflow.thread private @t_two_args domain(#dataflow.thread_domain<dense>)(%{{.*}}: i32, %{{.*}}: f32) ctrl (%{{.*}}: none) iv (%{{.*}}: index)\ndataflow.thread private @t_two_args domain(#dataflow.thread_domain<dense>)(%a: i32, %b: f32) ctrl (%c: none) iv (%i: index) {\n  dataflow.thread.yield\n}\n\n// Every launch produces one completion token, including a launch carrying\n// mapped operands and a grid upper bound.\n// CHECK-LABEL: func.func @launch_demo\nfunc.func @launch_demo(%a: i32, %b: f32, %n: index) {\n  // CHECK: %{{.*}} = dataflow.thread.launch @t_two_args(%{{.*}}, %{{.*}}) grid(%{{.*}}) : (i32, f32) -> !dataflow.thread_token\n  %completion = dataflow.thread.launch @t_two_args(%a, %b) grid(%n) : (i32, f32) -> !dataflow.thread_token\n  return\n}\n\n// Launch dependencies and waits both express unordered all-of completion.\n// CHECK-LABEL: func.func @wait_for_launches\nfunc.func @wait_for_launches() {\n  // CHECK: %{{.*}} = dataflow.thread.launch @t_empty() : () -> !dataflow.thread_token\n  %first = dataflow.thread.launch @t_empty() : () -> !dataflow.thread_token\n  // CHECK: %{{.*}} = dataflow.thread.launch @t_empty() wait(%{{.*}}) : () -> !dataflow.thread_token\n  %second = dataflow.thread.launch @t_empty() wait(%first) : () -> !dataflow.thread_token\n  // CHECK: dataflow.thread.wait %{{.*}}, %{{.*}} : !dataflow.thread_token, !dataflow.thread_token\n  dataflow.thread.wait %first, %second : !dataflow.thread_token, !dataflow.thread_token\n  return\n}\n\n// Completion frontiers carry zero or more unordered none-typed values.\n// CHECK-LABEL: dataflow.thread private @t_frontier domain(#dataflow.thread_domain<dense>)() ctrl (%{{.*}}: none)\ndataflow.thread private @t_frontier domain(#dataflow.thread_domain<dense>)() ctrl (%ctrl: none) {\n  // CHECK: dataflow.thread.yield %{{.*}} : none\n  dataflow.thread.yield %ctrl : none\n}\n\n// A dynamic-work definition designates one ordinary input as its root payload\n// and has no coordinate suffix or launch extents.\n// CHECK-LABEL: dataflow.thread private @t_dynamic domain(#dataflow.thread_domain<dynamic_work, work_item_arg = 0>)\ndataflow.thread private @t_dynamic domain(#dataflow.thread_domain<dynamic_work, work_item_arg = 0>)(%work: i32) ctrl (%ctrl: none) {\n  dataflow.thread.yield\n}\n\n// CHECK-LABEL: func.func @launch_dynamic\nfunc.func @launch_dynamic(%root: i32) {\n  // CHECK: dataflow.thread.launch @t_dynamic(%{{.*}}) : (i32) -> !dataflow.thread_token\n  %completion = dataflow.thread.launch @t_dynamic(%root) : (i32) -> !dataflow.thread_token\n  return\n}","why":"Accepted spellings of dense and dynamic-work thread definitions, ctrl/iv clauses, and launches with grid(...)/wait(...) plus the thread_token result type; used as concrete syntax evidence for the generated modules."},{"file_sha256":"c6f79ffa52853dc0bfac5214fbc7f94b0dacc45f8e5cdf216b2f0812c02bdff2","kind":"implementation","lines":"36-49","path":"lib/Frontend/Lowering/LowerForallToThreadPass.cpp","roles":["applicability"],"text":"void runOnOperation() final {\n    bool rejected = false;\n    getOperation().walk([&](::mlir::scf::ForallOp forall) {\n      if (!forall->getParentOfType<::mlir::func::FuncOp>())\n        return;\n      forall.emitError(\n          \"loom-lower-forall-to-thread: raw scf.forall has no recognized \"\n          \"Loom thread mapping; preserve it until structured ownership and \"\n          \"its complete domain are selected\");\n      rejected = true;\n    });\n    if (rejected)\n      signalPassFailure();\n  }","why":"The named stage's whole behaviour: it emits an error for every func-nested scf.forall and otherwise leaves the module unchanged. Evidence that the stage never materializes a dataflow.thread, so the carrier must be supplied on the input side and inputs must contain no func-nested scf.forall for an output to exist."},{"file_sha256":"634d4f13677fbd71bdd190bbb48feb1619c6d88f387330c467c4e1fe84203407","kind":"test","lines":"1-26","path":"test/raise/scf-to-dfg-forall-to-thread.mlir","roles":["applicability"],"text":"// RUN: not loom-raise-opt --loom-lower-forall-to-thread \\\n// RUN:   --mlir-disable-threading --mlir-print-ir-after-failure \\\n// RUN:   --mlir-print-ir-module-scope %s 2>&1 | FileCheck %s\n\n// Thread promotion must not infer ownership for an unmapped forall. The\n// thread launch ABI cannot represent this offset, strided domain, so failure\n// must preserve the complete source domain rather than treating the upper\n// bound as a zero-based grid extent.\n\n// CHECK: error: loom-lower-forall-to-thread: raw scf.forall has no recognized Loom thread mapping\n// CHECK-LABEL: func.func @offset_strided(\n// CHECK: scf.forall\n// CHECK-SAME: (%{{.*}}) = (%{{.*}}) to (%{{.*}}) step (%{{.*}})\n// CHECK-NOT: dataflow.thread.launch\n// CHECK-NOT: dataflow.thread private\n\nfunc.func @offset_strided(%buffer: memref<?xi32>) {\n  %lower = arith.constant 5 : index\n  %upper = arith.constant 9 : index\n  %step = arith.constant 2 : index\n  %value = arith.constant 7 : i32\n  scf.forall (%index) = (%lower) to (%upper) step (%step) {\n    memref.store %value, %buffer[%index] : memref<?xi32>\n  }\n  return\n}","why":"The stage's own lit test confirming that a raw scf.forall input fails the pass and that no dataflow.thread or dataflow.thread.launch is produced by it."},{"file_sha256":"8a0c5049c3721e2ae00c8509a0e6366803279237fc0361d741d2d2af0c47c815","kind":"implementation","lines":"23-34","path":"tools/loom-raise-opt/loom-raise-opt.cpp","roles":["applicability"],"text":"int main(int argc, char **argv) {\n  ::mlir::DialectRegistry registry;\n  ::mlir::registerAllDialects(registry);\n  ::mlir::registerAllExtensions(registry);\n  ::mlir::registerAllPasses();\n  registry.insert<::dataflow::DataflowDialect, ::loom::LoomDialect>();\n  loom::raising::registerRaisingPasses();\n  loom::lowering::registerLoweringPasses();\n  dataflow::registerDataflowTransformsPasses();\n  return ::mlir::asMainReturnCode(::mlir::MlirOptMain(\n      argc, argv, \"Loom raising-pass MLIR optimizer driver\\n\", registry));\n}","why":"Driver registration showing the Dataflow and Loom dialects are available and which Loom passes exist; basis for keeping the pass pipeline unchanged in subject-command.json."}],"primary_bundle_sha256":"5201ac9412e4d3f764ed9c41f8e23e4eb011a85de3f78b06ce525d942d928600","project":"PolyArch/loom","revision":"48615bc5925ef4b9db8b4550b5d4322933cf4b7b","schema":"spectriad.authoring-context/v1","selection_sha256":"b63d11544e46a57fba3997340bc5aad16a854d29370ea98d296cf2f336a10f18"}
generator source-blind backtranslation · sessions/reverse-generator/session-evidence/result-events.json
[
  {
    "api_error_status": null,
    "duration_api_ms": 46800,
    "duration_ms": 46850,
    "fast_mode_disabled_reason": "sdk_opt_in_required",
    "fast_mode_state": "off",
    "first_content_frame_ms": 1324,
    "is_error": false,
    "modelUsage": {
      "claude-opus-5": {
        "cacheCreationInputTokens": 5282,
        "cacheReadInputTokens": 0,
        "canonicalModel": "claude-opus-5",
        "contextWindow": 1000000,
        "costBasis": "list",
        "costUSD": 0.14380500000000002,
        "inputTokens": 2,
        "maxOutputTokens": 64000,
        "outputTokens": 3639,
        "provider": "firstParty",
        "thinkingTokens": 1056,
        "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 one or more module-scope `dataflow.thread` definitions followed by exactly one `func.func` named `@host`, in that order.\n2. Every `dataflow.thread` definition is declared with `private` visibility and a symbol name, and every symbol name is distinct within the module.\n3. Every `dataflow.thread` definition carries exactly one `domain(#dataflow.thread_domain<...>)` clause, which is either a closed dense domain (`dense`) or a dynamic-work domain (`dynamic_work, work_item_arg = N`); no other domain kind appears.\n4. A `dynamic_work` domain always names a `work_item_arg` ordinal `N`, and that ordinal is a valid zero-based index into the definition's own declared argument list, so a dynamic-work definition always has at least one declared argument.\n5. A `dynamic_work` definition never carries a coordinate (`iv`) clause \u2014 its coordinate rank is zero.\n6. A `dense` definition never carries a `work_item_arg` ordinal, and it carries an `iv (...)` clause exactly when its coordinate rank is nonzero; every coordinate argument in that clause has type `index`.\n7. Every `dataflow.thread` definition's entry signature has the fixed three-part shape: a parenthesized data-argument list, then a control clause `ctrl (%thread_ctrl: none)`, then (dense only, rank > 0) the coordinate clause \u2014 in that fixed order.\n8. Every `dataflow.thread` definition has a non-empty region terminated by a `dataflow.thread.yield`, which either takes no operands or takes exactly the control value `%thread_ctrl` of type `none`; the region contains no other operations.\n9. Each `dataflow.thread` definition is accompanied by exactly one `dataflow.thread.launch` in the host function, and the launches appear in the same order as the definitions they target.\n10. Every `dataflow.thread.launch` references its definition by the definition's symbol via `@`-symbol reference, and that symbol is always defined in the same module.\n11. The operand list of every launch has exactly the same arity as the referenced definition's data-argument list, and the i-th operand's type equals the i-th declared argument type of the definition.\n12. The explicit type signature written on every launch, `(types...) -> !dataflow.thread_token`, lists exactly the referenced definition's data-argument types in order and always produces the single result type `!dataflow.thread_token`.\n13. Every launch carries a `grid(...)` clause exactly when the referenced definition is a dense definition of nonzero coordinate rank, and the number of grid upper bounds equals that coordinate rank; launches targeting rank-zero or dynamic-work definitions carry no grid clause.\n14. Every grid upper bound operand has type `index`.\n15. Every launch binds its token result to an SSA name, and each such token name is unique within the host function.\n16. Every `dataflow.thread.wait` operand is the token produced by a preceding launch in the same block, and is written with the result type `!dataflow.thread_token`.\n17. Every SSA value used as a launch operand or grid bound is defined earlier in the host function \u2014 either as the function's own block argument or by an `arith.constant` in the entry block \u2014 so all uses are dominated by their definitions.\n18. The host function is terminated by `return` and returns no results.\n19. No `scf.forall` appears anywhere in an emitted program; the carrier shape is purely definition-plus-launch, with no mapping attribute, no `shared_outs`, no forall results and no combining region.\n20. No launch produces or consumes results other than its thread token, and no value flows back out of a thread definition to the host.\n\n## Sampling conventions\n\n1. The grammar emits between 1 and 3 thread definitions per module, never zero and never more than three.\n2. Definition symbols follow the fixed scheme `t_<i>` where `<i>` is the definition's zero-based position, and launch tokens follow the parallel scheme `%token_<i>` for the same index.\n3. Each definition's data arity is sampled from 0 to 3 inclusive; arities above three are never emitted.\n4. Argument types are drawn from a fixed cyclic palette of five types \u2014 `i32`, `f32`, `i64`, `index`, `memref<?xf32>` \u2014 by taking a contiguous run starting at a per-definition offset of 0 to 4, so the argument type list of any definition is always a contiguous rotation-free slice of that palette rather than an arbitrary combination; with arity at most 3 and offset at most 4, only palette positions 0 through 6 are ever reached.\n5. Data arguments are named `%arg_0`, `%arg_1`, ... in ascending order with no gaps.\n6. Coordinate rank for dense definitions is sampled from 0 to 2 inclusive, so no dense domain of rank 3 or higher is ever emitted; coordinate arguments are named `%coord_0`, `%coord_1`, ... in order.\n7. Dynamic-work versus dense is chosen by an even binary selection, but the dynamic branch is only taken when arity is greater than zero; zero-arity definitions are therefore always dense, and choosing the dynamic branch also forces the definition's recorded coordinate rank to zero.\n8. The `work_item_arg` ordinal of a dynamic-work definition is drawn uniformly over the whole valid range `0 .. arity-1`, so it may select any declared argument, not only the first or last.\n9. The control argument is always spelled exactly `%thread_ctrl: none`; no other control name or type is emitted.\n10. Both yield forms \u2014 the bare `dataflow.thread.yield` and the operand form `dataflow.thread.yield %thread_ctrl : none` \u2014 are emitted, chosen independently per definition.\n11. Each definition block is followed by a blank line; definitions and the host function are separated by that fixed whitespace skeleton.\n12. The host function has the fixed signature `func.func @host(%m_ref: memref<?xf32>)`, so the only memref value in scope is the function's block argument rather than a locally allocated buffer.\n13. The host entry block always begins with the same four-constant preamble, regardless of what the launches actually need: `%c_i32 = arith.constant 1 : i32`, `%c_f32 = arith.constant 1.000000e+00 : f32`, `%c_i64 = arith.constant 1 : i64`, and `%c_idx = arith.constant 4 : index`.\n14. Launch operands are selected by a name palette that mirrors the type palette one-for-one (`%c_i32`, `%c_f32`, `%c_i64`, `%c_idx`, `%m_ref`) using the same offset and position, so operand identity is fully determined by the argument's type slot and the same constant is reused for every occurrence of a given type.\n15. Every grid upper bound is the single constant `%c_idx` (value 4), so all launch domains are square and no varying or non-constant extents are exercised.\n16. A `dataflow.thread.wait` is optionally emitted immediately after each launch, chosen independently per launch, so a program may mix awaited and un-awaited launches; waits are never grouped, reordered, or placed anywhere other than directly after their own launch.\n17. Launch bodies are emitted in a fixed textual order \u2014 operands, then optional grid clause, then the `: (types) -> !dataflow.thread_token` signature \u2014 and always with the explicit type signature spelled out rather than elided.\n18. All launches are placed in a single straight-line block between the constant preamble and `return`, with no control flow, nesting, or interleaved computation.\n19. Indentation is fixed at two spaces for all operations inside the host function and inside thread regions.",
    "result_index": 0,
    "session_id": "3aff1233-c70d-4b5f-9033-9e0240fbe7cc",
    "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": 50,
    "total_cost_usd": 0.14380500000000002,
    "ttft_ms": 14825,
    "ttft_stream_ms": 1070,
    "type": "result",
    "usage": {
      "cache_creation": {
        "ephemeral_1h_input_tokens": 5282,
        "ephemeral_5m_input_tokens": 0
      },
      "cache_creation_input_tokens": 5282,
      "cache_read_input_tokens": 0,
      "inference_geo": "not_available",
      "input_tokens": 2,
      "iterations": [],
      "output_tokens": 3639,
      "output_tokens_details": {
        "thinking_tokens": 1056
      },
      "server_tool_use": {
        "web_fetch_requests": 0,
        "web_search_requests": 0
      },
      "service_tier": "standard",
      "speed": "standard"
    },
    "uuid": "a170ca7c-ec71-49f5-be32-7f103c9458d5"
  }
]
postcondition source-blind backtranslation · sessions/reverse-postcondition/session-evidence/result-events.json
[
  {
    "api_error_status": null,
    "duration_api_ms": 15703,
    "duration_ms": 15730,
    "fast_mode_disabled_reason": "sdk_opt_in_required",
    "fast_mode_state": "off",
    "first_content_frame_ms": 1529,
    "is_error": false,
    "modelUsage": {
      "claude-opus-5": {
        "cacheCreationInputTokens": 5536,
        "cacheReadInputTokens": 0,
        "canonicalModel": "claude-opus-5",
        "contextWindow": 1000000,
        "costBasis": "list",
        "costUSD": 0.083045,
        "inputTokens": 2,
        "maxOutputTokens": 64000,
        "outputTokens": 1107,
        "provider": "firstParty",
        "thinkingTokens": 359,
        "webSearchRequests": 0
      }
    },
    "num_turns": 1,
    "permission_denials": [],
    "queued_turn_count": 0,
    "result": "This postcondition examines only the `output` program \u2014 the `input` root is never referenced \u2014 and it scans `output.operations`, so every operation at every nesting depth is in scope. It builds two selections by exact name: `threads` (ops named `dataflow.thread`) and `launches` (ops named `dataflow.thread.launch`); ops of any other name, including other `dataflow.*` ops, are ignored entirely. Universally over each thread, it rejects unless the `function_type` attribute's function type has exactly zero declared results, the operation itself has exactly zero SSA results, and every declared input type in that same `function_type` has a `canonical_text` different from the literal string `!dataflow.thread_token` \u2014 so a thread whose signature declares any result, or which produces any SSA value, or which takes a parameter whose canonical text is exactly that token string, is rejected. Universally over each launch, it resolves the launch's `callee` symbol attribute against the output program and, for each resolved target whose name is `dataflow.thread`, requires that the callee's declared `function_type` inputs correspond position by position with the types of the values in operand segment 0 of the launch (the segment decoded from the launch's `operandSegmentSizes`); each zipped pair must be equal as types, and a length mismatch between the two sequences makes that assert fail with both lengths reported. Allowed value sources are thus exclusively the output's operation names, SSA result lists, `function_type` attribute projections, type canonical text and type equality, symbol resolution, and segment-0 operand types; nothing is compared against the input and no counts relate the two programs. The check is vacuously satisfied when the output contains no `dataflow.thread` ops and no `dataflow.thread.launch` ops, and each launch's inner claim is likewise vacuous when its `callee` resolves to no operations or to no operation named `dataflow.thread`; a thread with an empty input-type list also passes the token assertion vacuously. No assertion demands that any thread or launch exist, so an output with none of these ops is accepted. Conversely, the postcondition does not pass but errs where a selected thread or a resolved callee lacks a `function_type` attribute, where that attribute is not a function type, or where a launch carries no `operandSegmentSizes` property to decode segment 0.",
    "result_index": 0,
    "session_id": "e6c12c44-c2b2-4342-8e30-d8b9fa5b996a",
    "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.083045,
    "ttft_ms": 5837,
    "ttft_stream_ms": 1078,
    "type": "result",
    "usage": {
      "cache_creation": {
        "ephemeral_1h_input_tokens": 5536,
        "ephemeral_5m_input_tokens": 0
      },
      "cache_creation_input_tokens": 5536,
      "cache_read_input_tokens": 0,
      "inference_geo": "not_available",
      "input_tokens": 2,
      "iterations": [],
      "output_tokens": 1107,
      "output_tokens_details": {
        "thinking_tokens": 359
      },
      "server_tool_use": {
        "web_fetch_requests": 0,
        "web_search_requests": 0
      },
      "service_tier": "standard",
      "speed": "standard"
    },
    "uuid": "62e3250c-ff41-42c7-a398-9133079cd289"
  }
]

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