MS1V2 mlir-stage-11-v1 passing 5000/5000

Selected stage: loom-lower-graph-memory. Test exactly output obligation mlir-obligation:fbc14afa5b8a77427b8b9322 with its governing context; report any stage at

Test report

5000generated samples
100.0%input coverage
100.0%output coverage
+147lines added
+71branches added
56.2%confidence
5000/5000checker passes
Confidence details

Estimated confidence: 56.2%. Conservative lower bound: 16.9% (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/DataflowActorSemantics.cppMS1V
1089/1621lines67.2%
747/1330branches56.2%
1110/1621lines68.5%+21
761/1330branches57.2%+14
+21 lines · +14 branchesseed 1 · 30 → 19 linesOpen PBT Review PR
+21 lines · +14 branchesseed 1 · 30 → 28 linesOpen PBT Review PR
21 newly covered lines · 14 newly covered branches
1397          std::errc::invalid_argument,1398          "mask is only valid for a vector memory access");1399  } else if (auto pointer =false branch1400                 llvm::dyn_cast<mlir::LLVM::LLVMPointerType>(dataType)) {1401    if (maskType)⋮1417          "P(AS) bits");1418    access.dataPointerLayout = *layout;1419  } else if (llvm::isa<mlir::VectorType>(dataType)) {true branch1420    auto vector = analyzeFixedRankDataVector(dataType, VectorRank::AnyFixed);1421    if (!vector)false branch1422      return vector.takeError();1423    if (vector->getElementType() != elementType)false branch1424      return llvm::createStringError(1425          std::errc::invalid_argument,⋮1427          typeToString(vector->getElementType()).c_str(),1428          typeToString(elementType).c_str());1429    if (maskType)false branchtrue branch1430      if (llvm::Error error = validateVectorMaskType(*vector, maskType))false branch1431        return std::move(error);1432    access.vectorType = *vector;1433  } else {1434    return llvm::createStringError(1435        std::errc::invalid_argument,⋮1440    return access;14411442  if (auto pointer = llvm::dyn_cast<mlir::LLVM::LLVMPointerType>(addressType)) {false branch1443    auto layout = loom::resolvePointerLayout(scope, pointer.getAddressSpace());1444    if (!layout)⋮1449  }14501451  auto addressVector = llvm::dyn_cast<mlir::VectorType>(addressType);1452  if (!addressVector)false branch1453    return llvm::createStringError(1454        std::errc::invalid_argument,1455        "operand #1 must be index, LLVM pointer, or a fixed-size vector of "1456        "one of those types");1457  if (addressVector.isScalable())false branch1458    return llvm::createStringError(std::errc::invalid_argument,1459                                   "address vector must be a fixed-size "1460                                   "vector");1461  const bool indexAddress =1462      llvm::isa<mlir::IndexType>(addressVector.getElementType());1463  auto pointerAddress = llvm::dyn_cast<mlir::LLVM::LLVMPointerType>(1464      addressVector.getElementType());1465  if (!indexAddress && !pointerAddress)false branch1466    return llvm::createStringError(std::errc::invalid_argument,1467                                   "address vector element type must be "1468                                   "'index' or an LLVM pointer");1469  if (!access.isVector())false branch1470    return llvm::createStringError(1471        std::errc::invalid_argument,1472        "vector address requires a fixed-size vector data type");1473  if (addressVector.getShape() != access.vectorType.getShape())false branch1474    return llvm::createStringError(1475        std::errc::invalid_argument,⋮1477        typeToString(addressVector).c_str(),1478        typeToString(access.vectorType).c_str());1479  access.addressVectorType = addressVector;1480  if (pointerAddress) {false branch1481    auto layout =1482        loom::resolvePointerLayout(scope, pointerAddress.getAddressSpace());⋮1486    access.pointerLayout = *layout;1487  }1488  return access;1489}14901491llvm::Expected<dataflow::semantics::StreamTransition>
…/lib/Dataflow/IR/DataflowOps.cppMS1V
270/410lines65.9%
103/228branches45.2%
304/410lines74.1%+34
124/228branches54.4%+21
+34 lines · +21 branchesseed 1 · 30 → 19 linesOpen PBT Review PR
+34 lines · +21 branchesseed 1 · 30 → 28 linesOpen PBT Review PR
34 newly covered lines · 21 newly covered branches
194  types.addressType = parser.getBuilder().getIndexType();195  types.dataType = types.memoryType.getElementType();196  if (failed(parser.parseOptionalComma()))false branch197    return success();198199  Type firstExplicitType;200  if (parser.parseType(firstExplicitType))false branch201    return failure();202  auto isAddressType = [](Type type) {203    if (isa<IndexType, LLVM::LLVMPointerType>(type))false branch204      return true;205    auto vector = dyn_cast<VectorType>(type);206    return vector &&true branch207           isa<IndexType, LLVM::LLVMPointerType>(vector.getElementType());true branch208  };209  if (failed(parser.parseOptionalComma())) {false branch210    if (isAddressType(firstExplicitType))211      types.addressType = firstExplicitType;⋮214    return success();215  }216  if (!isAddressType(firstExplicitType))false branch217    return parser.emitError(parser.getCurrentLocation(),218                            "first explicit type must be an address type");219220  types.addressType = firstExplicitType;221  return parser.parseType(types.dataType);222}223224FailureOr<VectorType> getParsedDataVector(OpAsmParser &parser, Type dataType) {225  auto vector = dyn_cast<VectorType>(dataType);226  if (!vector)false branch227    return parser.emitError(228        parser.getCurrentLocation(),229        "masked memory access requires an explicit vector data type");230  return vector;231}232233Type getMaskType(OpAsmParser &parser, VectorType dataVector) {234  return VectorType::get(dataVector.getShape(), parser.getBuilder().getI1Type(),235                         dataVector.getScalableDims());236}237238bool hasExplicitMemoryDataType(Value memory, Type dataType) {⋮240}241242bool isMemoryAddressType(Type type) {243  if (isa<IndexType, LLVM::LLVMPointerType>(type))false branch244    return true;245  auto vector = dyn_cast<VectorType>(type);246  return vector &&true branch247         isa<IndexType, LLVM::LLVMPointerType>(vector.getElementType());false branch248}249250/// Parses the grammar shared by every addressed memory actor:⋮270271  bool hasMask = succeeded(parser.parseOptionalKeyword("mask"));272  if (hasMask && parser.parseOperand(mask))false branchtrue branch273    return failure();274  if (parser.parseOptionalAttrDict(result.attributes) ||⋮282                            result.operands))283    return failure();284  if (hasMask) {true branch285    FailureOr<VectorType> vector = getParsedDataVector(parser, types.dataType);286    if (failed(vector) ||false branchfalse branch287        parser.resolveOperand(mask, getMaskType(parser, *vector),false branch288                              result.operands))289      return failure();290  }291  return success();292}⋮299    printer << ' ' << value;300  printer << ' ' << control;301  if (mask)true branch302    printer << " mask " << mask;303  printer.printOptionalAttrDict(op->getAttrs());304  printer << " : " << memory.getType();⋮308  // unambiguous and round-trippable.309  if (!isa<IndexType>(address.getType()) ||310      (explicitData && isMemoryAddressType(dataType)))false branchtrue branch311    printer << ", " << address.getType();312  if (explicitData)⋮321  auto access = semantics::analyzeMemoryAccessType(322      cast<MemRefType>(memory.getType()), dataType, address.getType(), op,323      mask ? mask.getType() : Type{});true branch324  if (!access)325    return op->emitOpError(llvm::toString(access.takeError()));
…/lib/Dataflow/IR/DataflowVectorSemantics.cppMS1V
81/121lines66.9%
53/106branches50.0%
81/121lines66.9%+0
54/106branches50.9%+1
+1 branchseed 1 · 30 → 19 linesOpen PBT Review PR
+1 branchseed 1 · 30 → 28 linesOpen PBT Review PR
1 newly covered branch
42  auto vector = llvm::dyn_cast<mlir::VectorType>(type);43  const bool admitted = vector && !vector.isScalable() &&44                        (rank == VectorRank::AnyFixed ? vector.getRank() > 0true branch45                                                      : vector.getRank() == 1);46  if (!admitted)
…/lib/Frontend/Lowering/GraphRegionLowering.cppMS1V
1416/1626lines87.1%
532/680branches78.2%
1462/1626lines89.9%+46
540/680branches79.4%+8
+46 lines · +8 branchesseed 1 · 30 → 19 linesOpen PBT Review PR
+46 lines · +8 branchesseed 1 · 30 → 28 linesOpen PBT Review PR
46 newly covered lines · 8 newly covered branches
167              store, store.getMemRefType(), store.getIndices(), indexBits)))168        return ::mlir::WalkResult::interrupt();169    } else if (auto read =true branch170                   ::llvm::dyn_cast<::mlir::vector::TransferReadOp>(op)) {171      if (::mlir::failed(false branch172              ::loom::lowering::detail::checkRankedVectorTransferRead(173                  read, indexBits)))174        return ::mlir::WalkResult::interrupt();175    } else if (auto write =true branch176                   ::llvm::dyn_cast<::mlir::vector::TransferWriteOp>(op)) {177      if (::mlir::failed(false branch178              ::loom::lowering::detail::checkRankedVectorTransferWrite(179                  write, indexBits)))180        return ::mlir::WalkResult::interrupt();181    } else if (auto dealloc = ::llvm::dyn_cast<::mlir::memref::DeallocOp>(op)) {⋮707    if (auto store = ::llvm::dyn_cast<::mlir::memref::StoreOp>(op))708      return store.getMemref();709    if (auto read = ::llvm::dyn_cast<::mlir::vector::TransferReadOp>(op))true branch710      return read.getBase();711    if (auto write = ::llvm::dyn_cast<::mlir::vector::TransferWriteOp>(op))true branch712      return write.getBase();713    return {};714  }⋮1144        continue;1145      }1146      if (auto read = ::llvm::dyn_cast<::mlir::vector::TransferReadOp>(op)) {true branch1147        lowerVectorRead(read, execution, memory);1148        continue;1149      }1150      if (auto write = ::llvm::dyn_cast<::mlir::vector::TransferWriteOp>(op)) {true branch1151        lowerVectorWrite(write, execution, memory);1152        continue;1153      }1154      if (auto dealloc = ::llvm::dyn_cast<::mlir::memref::DeallocOp>(op)) {1155        dealloc.erase();⋮13891390  void lowerVectorRead(::mlir::vector::TransferReadOp read,1391                       ::mlir::Value execution, MemoryState &memory) {1392    ::llvm::SmallVector<unsigned, 4> membership = partitionsFor(read);1393    ::mlir::Value ctrl = readControl(read, execution, memory);1394    setInsertionPoint(read.getLoc());1395    auto memoryType =1396        ::llvm::cast<::mlir::MemRefType>(read.getBase().getType());1397    ::mlir::Value address = ::loom::lowering::detail::buildExactLinearIndex(1398        builder, read.getLoc(), memoryType, read.getIndices(), execution);1399    auto lowered = ::dataflow::LoadOp::create(1400        builder, read.getLoc(), read.getVectorType(), builder.getNoneType(),1401        read.getBase(), address, ctrl, read.getMask(), ::mlir::Attribute{});1402    partitionsByAccess.try_emplace(lowered, std::move(membership));1403    read.getResult().replaceAllUsesWith(lowered.getData());1404    updateReadFrontiers(lowered, lowered.getDone(), memory);1405    read.erase();1406  }14071408  void lowerVectorWrite(::mlir::vector::TransferWriteOp write,1409                        ::mlir::Value execution, MemoryState &memory) {1410    ::llvm::SmallVector<unsigned, 4> membership = partitionsFor(write);1411    ::mlir::Value ctrl = writeControl(write, execution, memory);1412    setInsertionPoint(write.getLoc());1413    auto memoryType =1414        ::llvm::cast<::mlir::MemRefType>(write.getBase().getType());1415    ::mlir::Value address = ::loom::lowering::detail::buildExactLinearIndex(1416        builder, write.getLoc(), memoryType, write.getIndices(), execution);1417    auto lowered = ::dataflow::StoreOp::create(1418        builder, write.getLoc(), builder.getNoneType(), write.getBase(),1419        address, write.getValueToStore(), ctrl, write.getMask(),1420        ::mlir::Attribute{});1421    partitionsByAccess.try_emplace(lowered, std::move(membership));1422    updateWriteFrontiers(lowered, lowered.getDone(), memory);1423    write.erase();1424  }14251426  void lowerDataflowLoad(::dataflow::LoadOp load, ::mlir::Value execution,
…/lib/Frontend/Lowering/RankedMemRefLowering.cppMS1V
60/133lines45.1%
27/94branches28.7%
106/133lines79.7%+46
54/94branches57.4%+27
+46 lines · +27 branchesseed 1 · 30 → 19 linesOpen PBT Review PR
+46 lines · +27 branchesseed 1 · 30 → 28 linesOpen PBT Review PR
46 newly covered lines · 27 newly covered branches
17namespace {1819bool allTransferDimensionsInBounds(::mlir::ArrayAttr attribute) {20  return attribute && ::llvm::all_of(attribute, [](::mlir::Attribute value) {true branchtrue branch21           return ::llvm::cast<::mlir::BoolAttr>(value).getValue();22         });23}2425bool resultIsMaskGuarded(::mlir::vector::TransferReadOp read) {26  ::mlir::Value mask = read.getMask();27  return mask && !read.getResult().use_empty() &&true branchtrue branch28         ::llvm::all_of(false branch29             read.getResult().getUsers(), [&](::mlir::Operation *user) {30               auto select = ::llvm::dyn_cast<::mlir::arith::SelectOp>(user);31               return select && select.getCondition() == mask &&false branch32                      select.getTrueValue() == read.getResult() &&33                      select.getFalseValue() != read.getResult();34             });35}3637::mlir::LogicalResult checkRankedVectorTransfer(::mlir::Operation *operation,⋮41                                                ::mlir::AffineMap permutation,42                                                ::mlir::ArrayAttr inBounds,43                                                unsigned indexBits) {44  ::llvm::SmallVector<std::int64_t> strides;45  std::int64_t offset = 0;46  if (vector.isScalable() || vector.getRank() != 1 || memory.getRank() != 1 ||false branchfalse branchfalse branchfalse branch47      memory.getElementType() != vector.getElementType() ||false branch48      ::mlir::failed(memory.getStridesAndOffset(strides, offset)) ||false branch49      strides.size() != 1 || strides.front() != 1 ||false branchfalse branch50      permutation !=false branch51          ::mlir::AffineMap::getMultiDimIdentityMap(1, operation->getContext()))52    return operation->emitError(53        "loom-lower-graph-memory: vector transfer requires a fixed rank-one "54        "minor-identity access over a unit-stride scalar memref");55  if (!allTransferDimensionsInBounds(inBounds))false branch56    return operation->emitError(57        "loom-lower-graph-memory: vector transfer requires every lane to be "58        "proven in-bounds");59  return checkRankedMemRefAccess(operation, memory, indices, indexBits);60}6162} // namespace⋮115::mlir::LogicalResult116checkRankedVectorTransferRead(::mlir::vector::TransferReadOp read,117                              unsigned indexBits) {118  auto memory = ::llvm::dyn_cast<::mlir::MemRefType>(read.getBase().getType());119  if (!memory)false branch120    return read.emitOpError(121        "loom-lower-graph-memory: vector read requires a ranked memref base");122  const bool paddingCanBeObserved =123      read.getMask() && !resultIsMaskGuarded(read);true branchfalse branchtrue branch124  if (paddingCanBeObserved &&false branchtrue branchfalse branch125      !::mlir::matchPattern(read.getPadding(), ::mlir::m_Zero()))false branch126    return read.emitOpError(127        "loom-lower-graph-memory: observable vector read padding must be "128        "zero");129  return checkRankedVectorTransfer(130      read, memory, read.getIndices(), read.getVectorType(),131      read.getPermutationMap(), read.getInBounds(), indexBits);132}133134::mlir::LogicalResult135checkRankedVectorTransferWrite(::mlir::vector::TransferWriteOp write,136                               unsigned indexBits) {137  auto memory = ::llvm::dyn_cast<::mlir::MemRefType>(write.getBase().getType());138  if (!memory || write.getResult())false branchfalse branchfalse branch139    return write.emitOpError(140        "loom-lower-graph-memory: vector write requires a ranked memref base");141  return checkRankedVectorTransfer(142      write, memory, write.getIndices(), write.getVectorType(),143      write.getPermutationMap(), write.getInBounds(), indexBits);144}145146::mlir::Value buildExactLinearIndex(::mlir::OpBuilder &builder,
Files without added coverage
…/loom/include/Common/Artifact.hMS1V
13/37lines35.1%
3/18branches16.7%
13/37lines35.1%+0
3/18branches16.7%+0
Open PBT
…/include/Dataflow/IR/DataflowActorSemantics.hMS1V
9/160lines5.6%
1/60branches1.7%
9/160lines5.6%+0
1/60branches1.7%+0
Open PBT
…/include/Frontend/Lowering/StreamLoopAttrs.hMS1V
31/41lines75.6%
10/14branches71.4%
31/41lines75.6%+0
10/14branches71.4%+0
Open PBT
…/loom/lib/Common/IndexWidth.cppMS1V
63/84lines75.0%
28/42branches66.7%
63/84lines75.0%+0
28/42branches66.7%+0
Open PBT
…/lib/Dataflow/IR/DataflowChannelOps.cppMS1V
59/88lines67.0%
13/38branches34.2%
59/88lines67.0%+0
13/38branches34.2%+0
Open PBT
…/lib/Dataflow/IR/DataflowDialect.cppMS1V
22/32lines68.8%
4/10branches40.0%
22/32lines68.8%+0
4/10branches40.0%+0
Open PBT
…/lib/Dataflow/IR/DataflowFunctionLikeOps.cppMS1V
693/1097lines63.2%
264/592branches44.6%
693/1097lines63.2%+0
264/592branches44.6%+0
Open PBT
…/lib/Dataflow/IR/DataflowMemoryContracts.cppMS1V
198/371lines53.4%
98/218branches45.0%
198/371lines53.4%+0
98/218branches45.0%+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/IR/OperationSchemaCodecInternal.hMS1V
28/120lines23.3%
4/44branches9.1%
28/120lines23.3%+0
4/44branches9.1%+0
Open PBT
…/lib/Dataflow/IR/OperationSchemaTypeCodec.cppMS1V
85/516lines16.5%
55/374branches14.7%
85/516lines16.5%+0
55/374branches14.7%+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/ExactMemRefLayout.cppMS1V
61/143lines42.7%
26/80branches32.5%
61/143lines42.7%+0
26/80branches32.5%+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/GraphIndexLowering.cppMS1V
260/288lines90.3%
129/168branches76.8%
260/288lines90.3%+0
129/168branches76.8%+0
Open PBT
…/lib/Frontend/Lowering/GraphParallelLowering.cppMS1V
651/1243lines52.4%
284/786branches36.1%
651/1243lines52.4%+0
284/786branches36.1%+0
Open PBT
…/lib/Frontend/Lowering/GraphRegionAdmission.cppMS1V
58/110lines52.7%
29/92branches31.5%
58/110lines52.7%+0
29/92branches31.5%+0
Open PBT
…/lib/Frontend/Lowering/GraphStreamBoundaryLowering.cppMS1V
934/1072lines87.1%
299/432branches69.2%
934/1072lines87.1%+0
299/432branches69.2%+0
Open PBT
…/lib/Frontend/Lowering/GraphStreamBoundaryLowering.hMS1V
4/4lines100.0%
4/4branches100.0%
4/4lines100.0%+0
4/4branches100.0%+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/LowerForallToThreadPass.cppMS1V
30/34lines88.2%
2/4branches50.0%
30/34lines88.2%+0
2/4branches50.0%+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 1

Review PR: Regression test from seed 1

Source passages for this PBT

One vector addressed memory actor is one canonical firing. Its active lanes do not create independent frontier records or an implicit lane order. P(access) is the conservative union of alias partitions that any active lane may access. A dynamic mask or address vector cannot weaken that set merely because one observed execution disables a lane. A statically proven all-zero mask may be simplified by an ordinary semantics-preserving Dataflow rewrite; otherwise the firing retains its explicit ctrl and done obligations.

docs/spec-compiler-part-3-mem.md lines 245–251

Minimized conforming example

19lines−11lines removed

Review regression test PR

Minimized passing input
module {
  dataflow.graph private @graph_0(
      %start: none, %i: index, %c: i1, %m: vector<4xi1>,
      %av: vector<4xindex>, %val: i32,
      %a: memref<16xi32>, %b: memref<16xi32>) -> ()
      attributes {input_segments = array<i32: 5, 0, 2>,
                  result_segments = array<i32: 0, 0, 0>} {
    %pad = arith.constant 0 : i32
    %g0, %gd0 = dataflow.load %a[%av] %start mask %m : memref<16xi32>, vector<4xindex>, vector<4xi32>
    scf.if %c {
    %v1 = vector.transfer_read %b[%i], %pad {in_bounds = [true]} : memref<16xi32>, vector<4xi32>
    }
    scf.if %c {
    %v5 = vector.transfer_read %b[%i], %pad, %m {in_bounds = [true]} : memref<16xi32>, vector<4xi32>
    vector.transfer_write %v5, %a[%i], %m {in_bounds = [true]} : vector<4xi32>, memref<16xi32>
    }
    dataflow.graph.return %start : none
  }
}

Conditions

input conditions — what generated inputs satisfy

Conforming input

module {
  dataflow.graph private @graph_0(
      %start: none, %i: index, %c: i1, %m: vector<4xi1>,
      %av: vector<4xindex>, %val: i32,
      %a: memref<16xi32>, %b: memref<16xi32>) -> ()
      attributes {input_segments = array<i32: 5, 0, 2>,
                  result_segments = array<i32: 0, 0, 0>} {
    %pad = arith.constant 0 : i32
    %lb0 = arith.constant 0 : index
    %ub0 = arith.constant 4 : index
    %sp0 = arith.constant 1 : index
    scf.for %k0 = %lb0 to %ub0 step %sp0 {
    %v1 = vector.transfer_read %b[%i], %pad {in_bounds = [true]} : memref<16xi32>, vector<4xi32>
    vector.transfer_write %v1, %a[%i] {in_bounds = [true]} : vector<4xi32>, memref<16xi32>
    }
    %lb2 = arith.constant 0 : index
    %ub2 = arith.constant 4 : index
    %sp2 = arith.constant 1 : index
    scf.for %k2 = %lb2 to %ub2 step %sp2 {
    %v3 = vector.transfer_read %b[%i], %pad {in_bounds = [true]} : memref<16xi32>, vector<4xi32>
    vector.transfer_write %v3, %b[%i] {in_bounds = [true]} : vector<4xi32>, memref<16xi32>
    }
    %lb4 = arith.constant 0 : index
    %ub4 = arith.constant 4 : index
    %sp4 = arith.constant 1 : index
    scf.for %k4 = %lb4 to %ub4 step %sp4 {
    %v5 = vector.transfer_read %b[%i], %pad {in_bounds = [true]} : memref<16xi32>, vector<4xi32>
    vector.transfer_write %v5, %b[%i] {in_bounds = [true]} : vector<4xi32>, memref<16xi32>
    }
    %lb6 = arith.constant 0 : index
    %ub6 = arith.constant 4 : index
    %sp6 = arith.constant 1 : index
    scf.for %k6 = %lb6 to %ub6 step %sp6 {
    %v7 = vector.transfer_read %b[%i], %pad, %m {in_bounds = [true]} : memref<16xi32>, vector<4xi32>
    vector.transfer_write %v7, %a[%i], %m {in_bounds = [true]} : vector<4xi32>, memref<16xi32>
    }
    %lb8 = arith.constant 0 : index
    %ub8 = arith.constant 4 : index
    %sp8 = arith.constant 1 : index
    scf.for %k8 = %lb8 to %ub8 step %sp8 {
    %v9 = vector.transfer_read %a[%i], %pad {in_bounds = [true]} : memref<16xi32>, vector<4xi32>
    vector.transfer_write %v9, %b[%i] {in_bounds = [true]} : vector<4xi32>, memref<16xi32>
    }
    dataflow.graph.return %start : none
  }
  dataflow.graph private @graph_1(
      %start: none, %i: index, %c: i1, %m: vector<4xi1>,
      %av: vector<4xindex>, %val: i32,
      %a: memref<16xi32>, %b: memref<16xi32>) -> ()
      attributes {input_segments = array<i32: 5, 0, 2>,
                  result_segments = array<i32: 0, 0, 0>} {
    %pad = arith.constant 0 : i32
    scf.if %c {
    %v0 = vector.transfer_read %a[%i], %pad, %m {in_bounds = [true]} : memref<16xi32>, vector<4xi32>
    vector.transfer_write %v0, %b[%i], %m {in_bounds = [true]} : vector<4xi32>, memref<16xi32>
    }
    scf.if %c {
    %v1 = vector.transfer_read %a[%i], %pad, %m {in_bounds = [true]} : memref<16xi32>, vector<4xi32>
    vector.transfer_write %v1, %b[%i], %m {in_bounds = [true]} : vector<4xi32>, memref<16xi32>
    }
    dataflow.graph.return %start : none
  }
}

2 linked-input-29 · linked input 29

LLVM memcpy, memmove, and memset intrinsics are expanded into their exact structured loop semantics before ownership selection. Supported LLVM load/store (including volatile and atomic contracts), atomicrmw, cmpxchg, and fence forms are then normalized before recursive region lowering, after which the same frontier rules apply.

docs/spec-compiler-part-3-mem.md lines 482–486

3 linked-input-32 · linked input 32

When graph publication can trace every captured memory capability to a known root, an exact service rooted at a unique thread argument mechanically inherits that argument's llvm.noalias fact. If a root is unknown, appears through more than one captured capability, or does not resolve to that argument, publication must omit the fact.

docs/spec-compiler-part-3-mem.md lines 92–97

4 linked-input-50 · linked input 50

memref.get_global, memref.alloca, globals, static pointer bases, and unrecognized capability producers are not canonical roots. A pre-final analysis may conservatively group an unresolved access while building an event network, but finalization rejects any such residual producer rather than granting it an external-memory authority.

docs/spec-compiler-part-3-mem.md lines 148–152

5 linked-input-59 · linked input 59

A memory input binds an established external memref capability through an exact graph-launch type match. An LLVM pointer never satisfies a graph memory port.

docs/spec-compiler-part-3-mem.md lines 136–140

6 linked-input-66 · linked input 66

The finalized-graph gate also rejects residual memref.load/memref.store, memref.get_global, raw pointer arithmetic, pointer-bearing operations, builtin.unrealized_conversion_cast, and unknown memory-capability producers. An unsupported effectful operation inside a structured region must likewise fail closed instead of being hoisted.

docs/spec-compiler-part-3-mem.md lines 489–493

7 linked-input-67 · linked input 67

This document is the memory-order source of truth for graph-local SCF to Dataflow lowering. The concrete owner is loom-lower-graph-memory; it normalizes supported memory leaves and recursively lowers structured graph regions in one traversal.

docs/spec-compiler-part-3-mem.md lines 3–6

8 linked-input-68 · linked input 68

A canonical root is found by peeling an accepted side-effect-free memref view until reaching an explicit storage or boundary root. The finalized surface recognizes:

  • a graph memory input, whose root identity comes from its launch binding;
  • a dataflow.memory.service result at that binding, which preserves the root of its exact pointer operand while changing only the value-plane pointer into a memory-plane capability;
  • a fresh memref.alloc result, whose root is unique for each invocation;
  • a verified side-effect-free view that preserves the source root.

docs/spec-compiler-part-3-mem.md lines 79–90

9 linked-input-80 · linked input 80

Graph launch memory bindings require exact memref capability types. An LLVM pointer cannot bind a graph memref through a conversion, inferred base, or special address-space-zero rule.

docs/spec-compiler-part-3-mem.md lines 99–106

10 linked-input-102 · linked input 102

Until the typed producer and verifier establish this provenance, the boundary fails closed. Forged, malformed, foreign-owner, or domain-mismatched provenance is invalid even when the residual SCF shape is otherwise supported.

docs/spec-compiler-part-3-mem.md lines 389–393

11 linked-input-104 · linked input 104

The owner rejects before mutation when:

  • raw or unverifiably owned parallel SCF reaches a graph;
  • an effectful or unmodeled nested operation reaches a graph;
  • a residual LLVM load, store, atomicrmw, cmpxchg, fence, memcpy, memmove, or memset remains after normalization and therefore has no explicit completion event;
  • a source memory access has not been normalized to the canonical linear memory-space form required by its scalar or vector Dataflow actor;
  • structured control carries a memref result or memref loop state;
  • the graph entry lacks the leading none execution value.

docs/spec-compiler-part-3-mem.md lines 470–480

12 linked-input-115 · linked input 115

LLVM target-specific sync scopes without a compiler-target owner and atomic accesses without an explicit power-of-two source alignment fail closed. Every residual raw LLVM memory operation fails closed.

docs/spec-compiler-part-3-mem.md lines 486–489

13 linked-input-126 · linked input 126

Distinct graph memory inputs are conservatively may-alias unless explicit no-alias evidence distinguishes them. Distinct fresh allocations are independent roots.

docs/spec-compiler-part-3-mem.md lines 142–146

14 linked-input-149 · linked input 149

The lowering does not select parallel width, ownership, serialization, unrolling, reduction order, or any other schedule policy. Those decisions must be made before graph-region lowering and normalized into supported structured input.

docs/spec-compiler-part-3-mem.md lines 43–46

15 linked-input-170 · linked input 170

A source-origin llvm.alloca accepted by the Structured PromoteOrderedBufferToChannel decision is not an exception to this rule. That decision must remove the complete proved allocation closure before D0; a residual allocation or pointer use remains non-canonical and is rejected.

docs/spec-compiler-part-3-mem.md lines 154–157

16 linked-input-182 · linked input 182

Residual scf.parallel or scf.forall is checked across every graph before the pass mutates any graph. Raw or unowned parallel input fails.

docs/spec-compiler-part-3-mem.md lines 382–387

17 linked-input-184 · linked input 184

arbitrary nesting of scf.if, source-sequential scf.for, and scf.while;

docs/spec-compiler-part-3-mem.md lines 34–35

18 linked-input-195 · linked input 195

Access-to-partition membership is kept in a transient operation map before SCF operands are projected. Selector demuxing must not change alias identity.

docs/spec-compiler-part-3-mem.md lines 159–161

19 linked-input-200 · linked input 200

pre-mutation rejection of residual scf.parallel and scf.forall that reach a graph without an already materialized schedule boundary.

docs/spec-compiler-part-3-mem.md lines 40–41

20 linked-input-202 · linked input 202

normalized scalar memref.load and memref.store leaves over a canonical linear memory space;

docs/spec-compiler-part-3-mem.md lines 31–32

21 linked-input-211 · linked input 211

One vector addressed memory actor is one canonical firing. Its active lanes do not create independent frontier records or an implicit lane order.

docs/spec-compiler-part-3-mem.md lines 245–251

Generator grammar · candidate.pg
// Graph-local SCF/vector memory inputs for loom-lower-graph-memory.
// Each module holds finalized-surface dataflow.graph definitions whose bodies
// carry supported memory leaves: fixed rank-one vector transfers (masked and
// unmasked) over graph memref capability inputs, normalized scalar
// memref.load/memref.store leaves, and nesting in scf.if / source-sequential
// scf.for.  No residual scf.parallel, scf.forall, LLVM memory op, pointer,
// memref.alloca, memref.get_global, or unrealized conversion cast is emitted.

start: {new NUM_GRAPHS = random.randint(1, 2); new G = 0}
       'module {\n' graphs '}\n';

graphs: (G < NUM_GRAPHS) one_graph {G += 1} graphs
      | (G == NUM_GRAPHS) '';

one_graph: {new NUM_STMTS = random.randint(1, 4); new S = 0; new N = 0}
       '  dataflow.graph private @graph_' gid '(\n'
       '      %start: none, %i: index, %c: i1, %m: vector<4xi1>,\n'
       '      %av: vector<4xindex>, %val: i32,\n'
       '      %a: memref<16xi32>, %b: memref<16xi32>) -> ()\n'
       '      attributes {input_segments = array<i32: 5, 0, 2>,\n'
       '                  result_segments = array<i32: 0, 0, 0>} {\n'
       '    %pad = arith.constant 0 : i32\n'
       lead_stmt
       stmts
       '    dataflow.graph.return %start : none\n'
       '  }\n';

gid: [str(G)];

stmts: (S < NUM_STMTS) stmt {S += 1} stmts
     | (S == NUM_STMTS) '';

// Sampling convention: every graph carries at least one vector addressed
// access, so the governed construct is present in every sample.
lead_stmt: vec_pair
         | gather_pair
         | if_stmt
         | for_stmt;

stmt: vec_pair
    | gather_pair
    | scalar_pair
    | if_stmt
    | for_stmt;

// One canonical vector addressed access pair: a masked or unmasked
// fixed rank-one contiguous in-bounds transfer read feeding a transfer write.
vec_pair: {new K = N}
       {new MASKED = random.choice([0, 1])}
       {new SRC = random.choice(['a', 'b'])}
       {new DST = random.choice(['a', 'b'])}
       {N += 1}
       '    %v' vid ' = vector.transfer_read %' src_mem '[%i], %pad' rmask
       ' {in_bounds = [true]} : memref<16xi32>, vector<4xi32>\n'
       '    vector.transfer_write %v' vid ', %' dst_mem '[%i]' wmask
       ' {in_bounds = [true]} : vector<4xi32>, memref<16xi32>\n';

vid: [str(K)];
src_mem: [SRC];
dst_mem: [DST];
rmask: (MASKED == 1) ', %m' | (MASKED == 0) '';
wmask: (MASKED == 1) ', %m' | (MASKED == 0) '';

// Normalized scalar leaves over the same canonical linear memory space.
scalar_pair: {new SK = N}
       {new SMEM = random.choice(['a', 'b'])}
       {N += 1}
       '    memref.store %val, %' scalar_mem '[%i] : memref<16xi32>\n'
       '    %s' sid ' = memref.load %' scalar_mem '[%i] : memref<16xi32>\n';

sid: [str(SK)];
scalar_mem: [SMEM];

if_stmt: '    scf.if %c {\n' vec_pair '    }\n';

for_stmt: {new FK = N}
       {N += 1}
       '    %lb' fid ' = arith.constant 0 : index\n'
       '    %ub' fid ' = arith.constant 4 : index\n'
       '    %sp' fid ' = arith.constant 1 : index\n'
       '    scf.for %k' fid ' = %lb' fid ' to %ub' fid ' step %sp' fid ' {\n'
       vec_pair
       '    }\n';

fid: [str(FK)];

// A canonical gather/scatter pair already spelled as vector addressed
// dataflow memory actors: one address vector per lane with a lane mask.
gather_pair: {new GK = N}
       {N += 1}
       '    %g' gix ', %gd' gix ' = dataflow.load %a[%av] %start mask %m'
       ' : memref<16xi32>, vector<4xindex>, vector<4xi32>\n'
       '    %sc' gix ' = dataflow.store %b[%av] %g' gix ' %start mask %m'
       ' : memref<16xi32>, vector<4xindex>, vector<4xi32>\n';

gix: [str(GK)];

output condition — what every compiled pair must satisfy

vector_memory_actor_retains_ctrl_and_done · 8 assertion sites

derived from 1 passage: 1selected-output

One vector addressed memory actor is one canonical firing. Its active lanes do not create independent frontier records or an implicit lane order.

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

  metadata {
    project = "PolyArch/loom";
    revision = "48615bc5925ef4b9db8b4550b5d4322933cf4b7b";
    source = "docs/spec-compiler-part-3-mem.md:L245-L251";
  }

  constraints {
    // A vector addressed memory actor: a canonical dataflow memory actor
    // whose address operand is an address vector (gather/scatter) or whose
    // access payload is a fixed vector distinct from the memref element type
    // (contiguous vector access), optionally lane masked.
    let vector_loads = seq { op | op in output.operations
      where op.name == "dataflow.load"
        and (op.operands[1].type.kind == "vector"
             or (op.results[0].type.kind == "vector"
                 and op.results[0].type != op.operands[0].type.element_type)) };

    let vector_stores = seq { op | op in output.operations
      where op.name == "dataflow.store"
        and (op.operands[1].type.kind == "vector"
             or (op.operands[2].type.kind == "vector"
                 and op.operands[2].type != op.operands[0].type.element_type)) };

    // One vector addressed memory actor is one canonical firing that retains
    // its explicit `ctrl` and `done` obligations: exactly one explicit `none`
    // control token is consumed and exactly one explicit `none` completion
    // token is published, with no per-lane frontier records.
    forall op in vector_loads {
      assert load_explicit_ctrl:
        cardinality(op.operands) >= 3 and op.operands[2].type == mlir::none;
      assert load_one_firing_ctrl:
        cardinality(seq { v | v in op.operands where v.type == mlir::none }) == 1;
      assert load_explicit_done:
        cardinality(op.results) == 2 and op.results[1].type == mlir::none;
      assert load_one_firing_done:
        cardinality(seq { v | v in op.results where v.type == mlir::none }) == 1;
    }

    forall op in vector_stores {
      assert store_explicit_ctrl:
        cardinality(op.operands) >= 4 and op.operands[3].type == mlir::none;
      assert store_one_firing_ctrl:
        cardinality(seq { v | v in op.operands where v.type == mlir::none }) == 1;
      assert store_explicit_done:
        cardinality(op.results) == 1 and op.results[0].type == mlir::none;
      assert store_one_firing_done:
        cardinality(seq { v | v in op.results where v.type == mlir::none }) == 1;
    }
  }
}
Minimized passing input
module {
  dataflow.graph private @graph_0(
      %start: none, %i: index, %c: i1, %m: vector<4xi1>,
      %av: vector<4xindex>, %val: i32,
      %a: memref<16xi32>, %b: memref<16xi32>) -> ()
      attributes {input_segments = array<i32: 5, 0, 2>,
                  result_segments = array<i32: 0, 0, 0>} {
    %pad = arith.constant 0 : i32
    %g0, %gd0 = dataflow.load %a[%av] %start mask %m : memref<16xi32>, vector<4xindex>, vector<4xi32>
    scf.if %c {
    %v1 = vector.transfer_read %b[%i], %pad {in_bounds = [true]} : memref<16xi32>, vector<4xi32>
    }
    scf.if %c {
    %v5 = vector.transfer_read %b[%i], %pad, %m {in_bounds = [true]} : memref<16xi32>, vector<4xi32>
    vector.transfer_write %v5, %a[%i], %m {in_bounds = [true]} : vector<4xi32>, memref<16xi32>
    }
    dataflow.graph.return %start : none
  }
}

Evidence

run20260911-083241started2026-09-11T08:32:42Zsubjectloom-raise-optsubject revision48615bc5925e

run results

5000saved inputs
5000accepted

output condition verdicts

5000pass
Additional trace diagnostics

raw trace evidence

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

generated input

module {
  dataflow.graph private @graph_0(
      %start: none, %i: index, %c: i1, %m: vector<4xi1>,
      %av: vector<4xindex>, %val: i32,
      %a: memref<16xi32>, %b: memref<16xi32>) -> ()
      attributes {input_segments = array<i32: 5, 0, 2>,
                  result_segments = array<i32: 0, 0, 0>} {
    %pad = arith.constant 0 : i32
    %lb0 = arith.constant 0 : index
    %ub0 = arith.constant 4 : index
    %sp0 = arith.constant 1 : index
    scf.for %k0 = %lb0 to %ub0 step %sp0 {
    %v1 = vector.transfer_read %b[%i], %pad {in_bounds = [true]} : memref<16xi32>, vector<4xi32>
    vector.transfer_write %v1, %a[%i] {in_bounds = [true]} : vector<4xi32>, memref<16xi32>
    }
    %lb2 = arith.constant 0 : index
    %ub2 = arith.constant 4 : index
    %sp2 = arith.constant 1 : index
    scf.for %k2 = %lb2 to %ub2 step %sp2 {
    %v3 = vector.transfer_read %b[%i], %pad {in_bounds = [true]} : memref<16xi32>, vector<4xi32>
    vector.transfer_write %v3, %b[%i] {in_bounds = [true]} : vector<4xi32>, memref<16xi32>
    }
    %lb4 = arith.constant 0 : index
    %ub4 = arith.constant 4 : index
    %sp4 = arith.constant 1 : index
    scf.for %k4 = %lb4 to %ub4 step %sp4 {
    %v5 = vector.transfer_read %b[%i], %pad {in_bounds = [true]} : memref<16xi32>, vector<4xi32>
    vector.transfer_write %v5, %b[%i] {in_bounds = [true]} : vector<4xi32>, memref<16xi32>
    }
    %lb6 = arith.constant 0 : index
    %ub6 = arith.constant 4 : index
    %sp6 = arith.constant 1 : index
    scf.for %k6 = %lb6 to %ub6 step %sp6 {
    %v7 = vector.transfer_read %b[%i], %pad, %m {in_bounds = [true]} : memref<16xi32>, vector<4xi32>
    vector.transfer_write %v7, %a[%i], %m {in_bounds = [true]} : vector<4xi32>, memref<16xi32>
    }
    %lb8 = arith.constant 0 : index
    %ub8 = arith.constant 4 : index
    %sp8 = arith.constant 1 : index
    scf.for %k8 = %lb8 to %ub8 step %sp8 {
    %v9 = vector.transfer_read %a[%i], %pad {in_bounds = [true]} : memref<16xi32>, vector<4xi32>
    vector.transfer_write %v9, %b[%i] {in_bounds = [true]} : vector<4xi32>, memref<16xi32>
    }
    dataflow.graph.return %start : none
  }
  dataflow.graph private @graph_1(
      %start: none, %i: index, %c: i1, %m: vector<4xi1>,
      %av: vector<4xindex>, %val: i32,
      %a: memref<16xi32>, %b: memref<16xi32>) -> ()
      attributes {input_segments = array<i32: 5, 0, 2>,
                  result_segments = array<i32: 0, 0, 0>} {
    %pad = arith.constant 0 : i32
    scf.if %c {
    %v0 = vector.transfer_read %a[%i], %pad, %m {in_bounds = [true]} : memref<16xi32>, vector<4xi32>
    vector.transfer_write %v0, %b[%i], %m {in_bounds = [true]} : vector<4xi32>, memref<16xi32>
    }
    scf.if %c {
    %v1 = vector.transfer_read %a[%i], %pad, %m {in_bounds = [true]} : memref<16xi32>, vector<4xi32>
    vector.transfer_write %v1, %b[%i], %m {in_bounds = [true]} : vector<4xi32>, memref<16xi32>
    }
    dataflow.graph.return %start : none
  }
}

observed generic output

"builtin.module"() ({
  "dataflow.graph"() <{function_type = (index, i1, vector<4xi1>, vector<4xindex>, i32, memref<16xi32>, memref<16xi32>) -> (), input_segments = array<i32: 5, 0, 2>, result_segments = array<i32: 0, 0, 0>, sym_name = "graph_0", sym_visibility = "private"}> ({
  ^bb0(%arg8: none, %arg9: index, %arg10: i1, %arg11: vector<4xi1>, %arg12: vector<4xindex>, %arg13: i32, %arg14: memref<16xi32>, %arg15: memref<16xi32>):
    %26 = "arith.constant"() <{value = 0 : i32}> : () -> i32
    %27 = "arith.constant"() <{value = 0 : index}> : () -> index
    %28 = "arith.constant"() <{value = 4 : index}> : () -> index
    %29 = "arith.constant"() <{value = 1 : index}> : () -> index
    %30 = "arith.constant"() <{value = 0 : index}> : () -> index
    %31 = "arith.constant"() <{value = 4 : index}> : () -> index
    %32 = "arith.constant"() <{value = 1 : index}> : () -> index
    %33 = "arith.constant"() <{value = 0 : index}> : () -> index
    %34 = "arith.constant"() <{value = 4 : index}> : () -> index
    %35 = "arith.constant"() <{value = 1 : index}> : () -> index
    %36 = "arith.constant"() <{value = 0 : index}> : () -> index
    %37 = "arith.constant"() <{value = 4 : index}> : () -> index
    %38 = "arith.constant"() <{value = 1 : index}> : () -> index
    %39 = "arith.constant"() <{value = 0 : index}> : () -> index
    %40 = "arith.constant"() <{value = 4 : index}> : () -> index
    %41 = "arith.constant"() <{value = 1 : index}> : () -> index
    %42 = "arith.index_cast"(%27) : (index) -> i32
    %43 = "arith.index_cast"(%28) : (index) -> i32
    %44 = "arith.index_cast"(%29) : (index) -> i32
    %45:2 = "dataflow.stream"(%42, %43, %44) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %46 = "dataflow.carry"(%45#1, %arg8, %47#1) : (i1, none, none) -> none
    %47:2 = "dataflow.demux"(%45#1, %46) : (i1, none) -> (none, none)
    %48 = "dataflow.invariant"(%45#1, %arg9) : (i1, index) -> index
    %49:2 = "dataflow.gate"(%45#1, %48) : (i1, index) -> (i1, index)
    %50:2 = "dataflow.demux"(%49#0, %49#1) : (i1, index) -> (index, index)
    %51 = "dataflow.invariant"(%45#1, %26) : (i1, i32) -> i32
    %52:2 = "dataflow.gate"(%45#1, %51) : (i1, i32) -> (i1, i32)
    %53:2 = "dataflow.demux"(%52#0, %52#1) : (i1, i32) -> (i32, i32)
    %54 = "dataflow.carry"(%45#1, %arg8, %61) : (i1, none, none) -> none
    %55 = "dataflow.carry"(%45#1, %arg8, %61) : (i1, none, none) -> none
    %56:2 = "dataflow.demux"(%45#1, %54) : (i1, none) -> (none, none)
    %57:2 = "dataflow.demux"(%45#1, %55) : (i1, none) -> (none, none)
    %58:2 = "dataflow.sync"(%47#1, %56#1) : (none, none) -> (none, none)
    %59:2 = "dataflow.load"(%arg15, %49#1, %58#0) : (memref<16xi32>, index, none) -> (vector<4xi32>, none)
    %60:2 = "dataflow.sync"(%57#1, %59#1) : (none, none) -> (none, none)
    %61 = "dataflow.store"(%arg14, %49#1, %59#0, %60#0) : (memref<16xi32>, index, vector<4xi32>, none) -> none
    %62 = "arith.cmpi"(%42, %43) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %63:2 = "dataflow.demux"(%62, %47#0) : (i1, none) -> (none, none)
    %64:3 = "dataflow.sync"(%63#1, %50#0, %53#0) : (none, index, i32) -> (none, index, i32)
    %65 = "dataflow.mux"(%62, %63#0, %64#0) : (i1, none, none) -> none
    %66 = "arith.index_cast"(%30) : (index) -> i32
    %67 = "arith.index_cast"(%31) : (index) -> i32
    %68 = "arith.index_cast"(%32) : (index) -> i32
    %69:2 = "dataflow.stream"(%66, %67, %68) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %70 = "dataflow.carry"(%69#1, %65, %71#1) : (i1, none, none) -> none
    %71:2 = "dataflow.demux"(%69#1, %70) : (i1, none) -> (none, none)
    %72 = "dataflow.invariant"(%69#1, %arg9) : (i1, index) -> index
    %73:2 = "dataflow.gate"(%69#1, %72) : (i1, index) -> (i1, index)
    %74:2 = "dataflow.demux"(%73#0, %73#1) : (i1, index) -> (index, index)
    %75 = "dataflow.invariant"(%69#1, %26) : (i1, i32) -> i32
    %76:2 = "dataflow.gate"(%69#1, %75) : (i1, i32) -> (i1, i32)
    %77:2 = "dataflow.demux"(%76#0, %76#1) : (i1, i32) -> (i32, i32)
    %78 = "dataflow.carry"(%69#1, %56#0, %85) : (i1, none, none) -> none
    %79 = "dataflow.carry"(%69#1, %57#0, %85) : (i1, none, none) -> none
    %80:2 = "dataflow.demux"(%69#1, %78) : (i1, none) -> (none, none)
    %81:2 = "dataflow.demux"(%69#1, %79) : (i1, none) -> (none, none)
    %82:2 = "dataflow.sync"(%71#1, %80#1) : (none, none) -> (none, none)
    %83:2 = "dataflow.load"(%arg15, %73#1, %82#0) : (memref<16xi32>, index, none) -> (vector<4xi32>, none)
    %84:2 = "dataflow.sync"(%81#1, %83#1) : (none, none) -> (none, none)
    %85 = "dataflow.store"(%arg15, %73#1, %83#0, %84#0) : (memref<16xi32>, index, vector<4xi32>, none) -> none
    %86 = "arith.cmpi"(%66, %67) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %87:2 = "dataflow.demux"(%86, %71#0) : (i1, none) -> (none, none)
    %88:3 = "dataflow.sync"(%87#1, %74#0, %77#0) : (none, index, i32) -> (none, index, i32)
    %89 = "dataflow.mux"(%86, %87#0, %88#0) : (i1, none, none) -> none
    %90 = "arith.index_cast"(%33) : (index) -> i32
    %91 = "arith.index_cast"(%34) : (index) -> i32
    %92 = "arith.index_cast"(%35) : (index) -> i32
    %93:2 = "dataflow.stream"(%90, %91, %92) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %94 = "dataflow.carry"(%93#1, %89, %95#1) : (i1, none, none) -> none
    %95:2 = "dataflow.demux"(%93#1, %94) : (i1, none) -> (none, none)
    %96 = "dataflow.invariant"(%93#1, %arg9) : (i1, index) -> index
    %97:2 = "dataflow.gate"(%93#1, %96) : (i1, index) -> (i1, index)
    %98:2 = "dataflow.demux"(%97#0, %97#1) : (i1, index) -> (index, index)
    %99 = "dataflow.invariant"(%93#1, %26) : (i1, i32) -> i32
    %100:2 = "dataflow.gate"(%93#1, %99) : (i1, i32) -> (i1, i32)
    %101:2 = "dataflow.demux"(%100#0, %100#1) : (i1, i32) -> (i32, i32)
    %102 = "dataflow.carry"(%93#1, %80#0, %109) : (i1, none, none) -> none
    %103 = "dataflow.carry"(%93#1, %81#0, %109) : (i1, none, none) -> none
    %104:2 = "dataflow.demux"(%93#1, %102) : (i1, none) -> (none, none)
    %105:2 = "dataflow.demux"(%93#1, %103) : (i1, none) -> (none, none)
    %106:2 = "dataflow.sync"(%95#1, %104#1) : (none, none) -> (none, none)
    %107:2 = "dataflow.load"(%arg15, %97#1, %106#0) : (memref<16xi32>, index, none) -> (vector<4xi32>, none)
    %108:2 = "dataflow.sync"(%105#1, %107#1) : (none, none) -> (none, none)
    %109 = "dataflow.store"(%arg15, %97#1, %107#0, %108#0) : (memref<16xi32>, index, vector<4xi32>, none) -> none
    %110 = "arith.cmpi"(%90, %91) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %111:2 = "dataflow.demux"(%110, %95#0) : (i1, none) -> (none, none)
    %112:3 = "dataflow.sync"(%111#1, %98#0, %101#0) : (none, index, i32) -> (none, index, i32)
    %113 = "dataflow.mux"(%110, %111#0, %112#0) : (i1, none, none) -> none
    %114 = "arith.index_cast"(%36) : (index) -> i32
    %115 = "arith.index_cast"(%37) : (index) -> i32
    %116 = "arith.index_cast"(%38) : (index) -> i32
    %117:2 = "dataflow.stream"(%114, %115, %116) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %118 = "dataflow.carry"(%117#1, %113, %119#1) : (i1, none, none) -> none
    %119:2 = "dataflow.demux"(%117#1, %118) : (i1, none) -> (none, none)
    %120 = "dataflow.invariant"(%117#1, %arg9) : (i1, index) -> index
    %121:2 = "dataflow.gate"(%117#1, %120) : (i1, index) -> (i1, index)
    %122:2 = "dataflow.demux"(%121#0, %121#1) : (i1, index) -> (index, index)
    %123 = "dataflow.invariant"(%117#1, %26) : (i1, i32) -> i32
    %124:2 = "dataflow.gate"(%117#1, %123) : (i1, i32) -> (i1, i32)
    %125:2 = "dataflow.demux"(%124#0, %124#1) : (i1, i32) -> (i32, i32)
    %126 = "dataflow.invariant"(%117#1, %arg11) : (i1, vector<4xi1>) -> vector<4xi1>
    %127:2 = "dataflow.gate"(%117#1, %126) : (i1, vector<4xi1>) -> (i1, vector<4xi1>)
    %128:2 = "dataflow.demux"(%127#0, %127#1) : (i1, vector<4xi1>) -> (vector<4xi1>, vector<4xi1>)
    %129 = "dataflow.carry"(%117#1, %104#0, %136) : (i1, none, none) -> none
    %130 = "dataflow.carry"(%117#1, %105#0, %136) : (i1, none, none) -> none
    %131:2 = "dataflow.demux"(%117#1, %129) : (i1, none) -> (none, none)
    %132:2 = "dataflow.demux"(%117#1, %130) : (i1, none) -> (none, none)
    %133:2 = "dataflow.sync"(%119#1, %131#1) : (none, none) -> (none, none)
    %134:2 = "dataflow.load"(%arg15, %121#1, %133#0, %127#1) : (memref<16xi32>, index, none, vector<4xi1>) -> (vector<4xi32>, none)
    %135:2 = "dataflow.sync"(%132#1, %134#1) : (none, none) -> (none, none)
    %136 = "dataflow.store"(%arg14, %121#1, %134#0, %135#0, %127#1) : (memref<16xi32>, index, vector<4xi32>, none, vector<4xi1>) -> none
    %137 = "arith.cmpi"(%114, %115) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %138:2 = "dataflow.demux"(%137, %119#0) : (i1, none) -> (none, none)
    %139:4 = "dataflow.sync"(%138#1, %122#0, %125#0, %128#0) : (none, index, i32, vector<4xi1>) -> (none, index, i32, vector<4xi1>)
    %140 = "dataflow.mux"(%137, %138#0, %139#0) : (i1, none, none) -> none
    %141 = "arith.index_cast"(%39) : (index) -> i32
    %142 = "arith.index_cast"(%40) : (index) -> i32
    %143 = "arith.index_cast"(%41) : (index) -> i32
    %144:2 = "dataflow.stream"(%141, %142, %143) <{predicate = 2 : i64, step_kind = 0 : i32}> : (i32, i32, i32) -> (i32, i1)
    %145 = "dataflow.carry"(%144#1, %140, %146#1) : (i1, none, none) -> none
    %146:2 = "dataflow.demux"(%144#1, %145) : (i1, none) -> (none, none)
    %147 = "dataflow.invariant"(%144#1, %arg9) : (i1, index) -> index
    %148:2 = "dataflow.gate"(%144#1, %147) : (i1, index) -> (i1, index)
    %149:2 = "dataflow.demux"(%148#0, %148#1) : (i1, index) -> (index, index)
    %150 = "dataflow.invariant"(%144#1, %26) : (i1, i32) -> i32
    %151:2 = "dataflow.gate"(%144#1, %150) : (i1, i32) -> (i1, i32)
    %152:2 = "dataflow.demux"(%151#0, %151#1) : (i1, i32) -> (i32, i32)
    %153 = "dataflow.carry"(%144#1, %131#0, %160) : (i1, none, none) -> none
    %154 = "dataflow.carry"(%144#1, %132#0, %160) : (i1, none, none) -> none
    %155:2 = "dataflow.demux"(%144#1, %153) : (i1, none) -> (none, none)
    %156:2 = "dataflow.demux"(%144#1, %154) : (i1, none) -> (none, none)
    %157:2 = "dataflow.sync"(%146#1, %155#1) : (none, none) -> (none, none)
    %158:2 = "dataflow.load"(%arg14, %148#1, %157#0) : (memref<16xi32>, index, none) -> (vector<4xi32>, none)
    %159:2 = "dataflow.sync"(%156#1, %158#1) : (none, none) -> (none, none)
    %160 = "dataflow.store"(%arg15, %148#1, %158#0, %159#0) : (memref<16xi32>, index, vector<4xi32>, none) -> none
    %161 = "arith.cmpi"(%141, %142) <{predicate = 2 : i64}> : (i32, i32) -> i1
    %162:2 = "dataflow.demux"(%161, %146#0) : (i1, none) -> (none, none)
    %163:3 = "dataflow.sync"(%162#1, %149#0, %152#0) : (none, index, i32) -> (none, index, i32)
    %164 = "dataflow.mux"(%161, %162#0, %163#0) : (i1, none, none) -> none
    "dataflow.graph.return"(%164, %156#0) <{operandSegmentSizes = array<i32: 0, 0, 0, 2>}> : (none, none) -> ()
  }) : () -> ()
  "dataflow.graph"() <{function_type = (index, i1, vector<4xi1>, vector<4xindex>, i32, memref<16xi32>, memref<16xi32>) -> (), input_segments = array<i32: 5, 0, 2>, result_segments = array<i32: 0, 0, 0>, sym_name = "graph_1", sym_visibility = "private"}> ({
  ^bb0(%arg0: none, %arg1: index, %arg2: i1, %arg3: vector<4xi1>, %arg4: vector<4xindex>, %arg5: i32, %arg6: memref<16xi32>, %arg7: memref<16xi32>):
    %0 = "arith.constant"() <{value = 0 : i32}> : () -> i32
    %1:2 = "dataflow.demux"(%arg2, %arg0) : (i1, none) -> (none, none)
    %2:2 = "dataflow.demux"(%arg2, %arg0) : (i1, none) -> (none, none)
    %3:2 = "dataflow.demux"(%arg2, %arg0) : (i1, none) -> (none, none)
    %4:2 = "dataflow.demux"(%arg2, %arg1) : (i1, index) -> (index, index)
    %5:2 = "dataflow.demux"(%arg2, %0) : (i1, i32) -> (i32, i32)
    %6:2 = "dataflow.demux"(%arg2, %arg3) : (i1, vector<4xi1>) -> (vector<4xi1>, vector<4xi1>)
    %7:2 = "dataflow.sync"(%1#1, %2#1) : (none, none) -> (none, none)
    %8:2 = "dataflow.load"(%arg6, %4#1, %7#0, %6#1) : (memref<16xi32>, index, none, vector<4xi1>) -> (vector<4xi32>, none)
    %9:2 = "dataflow.sync"(%3#1, %8#1) : (none, none) -> (none, none)
    %10 = "dataflow.store"(%arg7, %4#1, %8#0, %9#0, %6#1) : (memref<16xi32>, index, vector<4xi32>, none, vector<4xi1>) -> none
    %11 = "dataflow.mux"(%arg2, %2#0, %10) : (i1, none, none) -> none
    %12 = "dataflow.mux"(%arg2, %3#0, %10) : (i1, none, none) -> none
    %13 = "dataflow.mux"(%arg2, %1#0, %1#1) : (i1, none, none) -> none
    %14:2 = "dataflow.demux"(%arg2, %13) : (i1, none) -> (none, none)
    %15:2 = "dataflow.demux"(%arg2, %11) : (i1, none) -> (none, none)
    %16:2 = "dataflow.demux"(%arg2, %12) : (i1, none) -> (none, none)
    %17:2 = "dataflow.demux"(%arg2, %arg1) : (i1, index) -> (index, index)
    %18:2 = "dataflow.demux"(%arg2, %0) : (i1, i32) -> (i32, i32)
    %19:2 = "dataflow.demux"(%arg2, %arg3) : (i1, vector<4xi1>) -> (vector<4xi1>, vector<4xi1>)
    %20:2 = "dataflow.sync"(%14#1, %15#1) : (none, none) -> (none, none)
    %21:2 = "dataflow.load"(%arg6, %17#1, %20#0, %19#1) : (memref<16xi32>, index, none, vector<4xi1>) -> (vector<4xi32>, none)
    %22:2 = "dataflow.sync"(%16#1, %21#1) : (none, none) -> (none, none)
    %23 = "dataflow.store"(%arg7, %17#1, %21#0, %22#0, %19#1) : (memref<16xi32>, index, vector<4xi32>, none, vector<4xi1>) -> none
    %24 = "dataflow.mux"(%arg2, %16#0, %23) : (i1, none, none) -> none
    %25 = "dataflow.mux"(%arg2, %14#0, %14#1) : (i1, none, none) -> none
    "dataflow.graph.return"(%25, %24) <{operandSegmentSizes = array<i32: 0, 0, 0, 2>}> : (none, none) -> ()
  }) : () -> ()
}) : () -> ()

per-seed evidence (1000 seeds)
seedsubjectverdictartifacts
0accepted exit 0 · 0.6141745580025599sPASSinput · generic input · output · check report
1accepted exit 0 · 0.6375696530012647sPASSinput · generic input · output · check report
2accepted exit 0 · 0.5929439999999886sPASSinput · generic input · output · check report
3accepted exit 0 · 0.6274071719999483sPASSinput · generic input · output · check report
4accepted exit 0 · 0.6874947169999359sPASSinput · generic input · output · check report
5accepted exit 0 · 0.6335791319979762sPASSinput · generic input · output · check report
6accepted exit 0 · 0.6179270030006592sPASSinput · generic input · output · check report
7accepted exit 0 · 0.6794903879999765sPASSinput · generic input · output · check report
8accepted exit 0 · 0.6617590770001698sPASSinput · generic input · output · check report
9accepted exit 0 · 0.6124969169977703sPASSinput · generic input · output · check report
10accepted exit 0 · 0.7985184579993074sPASSinput · generic input · output · check report
11accepted exit 0 · 0.6203369949980697sPASSinput · generic input · output · check report
12accepted exit 0 · 0.6281930370023474sPASSinput · generic input · output · check report
13accepted exit 0 · 0.6505816390017571sPASSinput · generic input · output · check report
14accepted exit 0 · 0.6552391479999642sPASSinput · generic input · output · check report
15accepted exit 0 · 0.6170226889989863sPASSinput · generic input · output · check report
16accepted exit 0 · 0.6311070170013409sPASSinput · generic input · output · check report
17accepted exit 0 · 0.5964789669997117sPASSinput · generic input · output · check report
18accepted exit 0 · 0.6106201530019462sPASSinput · generic input · output · check report
19accepted exit 0 · 0.6375015869998606sPASSinput · generic input · output · check report
20accepted exit 0 · 0.6230456010016496sPASSinput · generic input · output · check report
21accepted exit 0 · 0.5975983270000143sPASSinput · generic input · output · check report
22accepted exit 0 · 0.6466885709996859sPASSinput · generic input · output · check report
23accepted exit 0 · 0.6142921350001416sPASSinput · generic input · output · check report
24accepted exit 0 · 0.6122804279984848sPASSinput · generic input · output · check report
25accepted exit 0 · 0.6297340889977932sPASSinput · generic input · output · check report
26accepted exit 0 · 0.618100247997063sPASSinput · generic input · output · check report
27accepted exit 0 · 0.6321941550013435sPASSinput · generic input · output · check report
28accepted exit 0 · 0.6392703149977024sPASSinput · generic input · output · check report
29accepted exit 0 · 0.610784197000612sPASSinput · generic input · output · check report
30accepted exit 0 · 0.6220042700006161sPASSinput · generic input · output · check report
31accepted exit 0 · 0.6146810610007378sPASSinput · generic input · output · check report
32accepted exit 0 · 0.5818230040022172sPASSinput · generic input · output · check report
33accepted exit 0 · 0.586591048995615sPASSinput · generic input · output · check report
34accepted exit 0 · 0.5691171950020362sPASSinput · generic input · output · check report
35accepted exit 0 · 0.6325802040009876sPASSinput · generic input · output · check report
36accepted exit 0 · 0.5767297580023296sPASSinput · generic input · output · check report
37accepted exit 0 · 0.6196989259988186sPASSinput · generic input · output · check report
38accepted exit 0 · 0.6130270919966279sPASSinput · generic input · output · check report
39accepted exit 0 · 0.6121633180009667sPASSinput · generic input · output · check report
40accepted exit 0 · 0.5929454450015328sPASSinput · generic input · output · check report
41accepted exit 0 · 0.612630725998315sPASSinput · generic input · output · check report
42accepted exit 0 · 0.6216567670053337sPASSinput · generic input · output · check report
43accepted exit 0 · 0.6804049310012488sPASSinput · generic input · output · check report
44accepted exit 0 · 0.6117874909978127sPASSinput · generic input · output · check report
45accepted exit 0 · 0.5828632800039486sPASSinput · generic input · output · check report
46accepted exit 0 · 0.634843740001088sPASSinput · generic input · output · check report
47accepted exit 0 · 0.5951525350028533sPASSinput · generic input · output · check report
48accepted exit 0 · 0.6188225980004063sPASSinput · generic input · output · check report
49accepted exit 0 · 0.6338440600011381sPASSinput · generic input · output · check report
50accepted exit 0 · 0.5885818210008438sPASSinput · generic input · output · check report
51accepted exit 0 · 0.6184803450014442sPASSinput · generic input · output · check report
52accepted exit 0 · 0.5924046780055505sPASSinput · generic input · output · check report
53accepted exit 0 · 0.5902554979984416sPASSinput · generic input · output · check report
54accepted exit 0 · 0.5747860129995388sPASSinput · generic input · output · check report
55accepted exit 0 · 0.6200699229957536sPASSinput · generic input · output · check report
56accepted exit 0 · 0.5718859309999971sPASSinput · generic input · output · check report
57accepted exit 0 · 0.5593229510050151sPASSinput · generic input · output · check report
58accepted exit 0 · 0.5721874180017039sPASSinput · generic input · output · check report
59accepted exit 0 · 0.575438641004439sPASSinput · generic input · output · check report
60accepted exit 0 · 0.6419321670036879sPASSinput · generic input · output · check report
61accepted exit 0 · 0.5686196599999676sPASSinput · generic input · output · check report
62accepted exit 0 · 0.6221511059993645sPASSinput · generic input · output · check report
63accepted exit 0 · 0.5734569640044356sPASSinput · generic input · output · check report
64accepted exit 0 · 0.5989228539983742sPASSinput · generic input · output · check report
65accepted exit 0 · 0.6084070849974523sPASSinput · generic input · output · check report
66accepted exit 0 · 0.5747399769970798sPASSinput · generic input · output · check report
67accepted exit 0 · 0.5815984619985102sPASSinput · generic input · output · check report
68accepted exit 0 · 0.5711180870057433sPASSinput · generic input · output · check report
69accepted exit 0 · 0.7903035339986673sPASSinput · generic input · output · check report
70accepted exit 0 · 0.5985767829988617sPASSinput · generic input · output · check report
71accepted exit 0 · 0.5593612930024392sPASSinput · generic input · output · check report
72accepted exit 0 · 0.559728823005571sPASSinput · generic input · output · check report
73accepted exit 0 · 0.5902170760018635sPASSinput · generic input · output · check report
74accepted exit 0 · 0.5858100699988427sPASSinput · generic input · output · check report
75accepted exit 0 · 0.631480026000645sPASSinput · generic input · output · check report
76accepted exit 0 · 0.5949034259974724sPASSinput · generic input · output · check report
77accepted exit 0 · 0.5651551060000202sPASSinput · generic input · output · check report
78accepted exit 0 · 0.6128847139989375sPASSinput · generic input · output · check report
79accepted exit 0 · 0.6444137319995207sPASSinput · generic input · output · check report
80accepted exit 0 · 0.6250400880016969sPASSinput · generic input · output · check report
81accepted exit 0 · 0.5845462839934044sPASSinput · generic input · output · check report
82accepted exit 0 · 0.6151965399985784sPASSinput · generic input · output · check report
83accepted exit 0 · 0.5904019629961113sPASSinput · generic input · output · check report
84accepted exit 0 · 0.6362280419998569sPASSinput · generic input · output · check report
85accepted exit 0 · 0.6142994039983023sPASSinput · generic input · output · check report
86accepted exit 0 · 0.632202453998616sPASSinput · generic input · output · check report
87accepted exit 0 · 0.5679034330023569sPASSinput · generic input · output · check report
88accepted exit 0 · 0.5896055260018329sPASSinput · generic input · output · check report
89accepted exit 0 · 0.5710186309952405sPASSinput · generic input · output · check report
90accepted exit 0 · 0.6050121020016377sPASSinput · generic input · output · check report
91accepted exit 0 · 0.5588387499956298sPASSinput · generic input · output · check report
92accepted exit 0 · 0.5982765189983184sPASSinput · generic input · output · check report
93accepted exit 0 · 0.5866374259931035sPASSinput · generic input · output · check report
94accepted exit 0 · 0.6149336669986951sPASSinput · generic input · output · check report
95accepted exit 0 · 0.5963687730036327sPASSinput · generic input · output · check report
96accepted exit 0 · 0.5717826570034958sPASSinput · generic input · output · check report
97accepted exit 0 · 0.5703985140062287sPASSinput · generic input · output · check report
98accepted exit 0 · 0.5571818450043793sPASSinput · generic input · output · check report
99accepted exit 0 · 0.5442876919987611sPASSinput · generic input · output · check report
100accepted exit 0 · 0.4737820320001447sPASSinput · generic input · output · check report
101accepted exit 0 · 0.614192804999675sPASSinput · generic input · output · check report
102accepted exit 0 · 0.41512773300019035sPASSinput · generic input · output · check report
103accepted exit 0 · 0.5048609880000186sPASSinput · generic input · output · check report
104accepted exit 0 · 0.4415439970002808sPASSinput · generic input · output · check report
105accepted exit 0 · 0.5352773569998135sPASSinput · generic input · output · check report
106accepted exit 0 · 0.4176888820002205sPASSinput · generic input · output · check report
107accepted exit 0 · 0.07666916500011212sPASSinput · generic input · output · check report
108accepted exit 0 · 0.06645254600016415sPASSinput · generic input · output · check report
109accepted exit 0 · 0.05055476200004705sPASSinput · generic input · output · check report
110accepted exit 0 · 0.07392458699996496sPASSinput · generic input · output · check report
111accepted exit 0 · 0.05158706499969412sPASSinput · generic input · output · check report
112accepted exit 0 · 0.05946048799978598sPASSinput · generic input · output · check report
113accepted exit 0 · 0.09688032199983354sPASSinput · generic input · output · check report
114accepted exit 0 · 0.06239221899977565sPASSinput · generic input · output · check report
115accepted exit 0 · 0.05856107299996438sPASSinput · generic input · output · check report
116accepted exit 0 · 0.05683901900010824sPASSinput · generic input · output · check report
117accepted exit 0 · 0.05460647500012783sPASSinput · generic input · output · check report
118accepted exit 0 · 0.04616933399984191sPASSinput · generic input · output · check report
119accepted exit 0 · 0.050131719000091834sPASSinput · generic input · output · check report
120accepted exit 0 · 0.05438871800015477sPASSinput · generic input · output · check report
121accepted exit 0 · 0.06055885199975819sPASSinput · generic input · output · check report
122accepted exit 0 · 0.04960658499976489sPASSinput · generic input · output · check report
123accepted exit 0 · 0.05266377999987526sPASSinput · generic input · output · check report
124accepted exit 0 · 0.05137182299995402sPASSinput · generic input · output · check report
125accepted exit 0 · 0.049623007999798574sPASSinput · generic input · output · check report
126accepted exit 0 · 0.07364522399984708sPASSinput · generic input · output · check report
127accepted exit 0 · 0.05463262100010979sPASSinput · generic input · output · check report
128accepted exit 0 · 0.051615463999951317sPASSinput · generic input · output · check report
129accepted exit 0 · 0.05217068799993285sPASSinput · generic input · output · check report
130accepted exit 0 · 0.04269198699967092sPASSinput · generic input · output · check report
131accepted exit 0 · 0.05400987399980295sPASSinput · generic input · output · check report
132accepted exit 0 · 0.13208966699994562sPASSinput · generic input · output · check report
133accepted exit 0 · 0.10285254200016425sPASSinput · generic input · output · check report
134accepted exit 0 · 0.062723890000143sPASSinput · generic input · output · check report
135accepted exit 0 · 0.0574244730000828sPASSinput · generic input · output · check report
136accepted exit 0 · 0.04635187699977905sPASSinput · generic input · output · check report
137accepted exit 0 · 0.06825780000008308sPASSinput · generic input · output · check report
138accepted exit 0 · 0.06585850200008281sPASSinput · generic input · output · check report
139accepted exit 0 · 0.06849958600014361sPASSinput · generic input · output · check report
140accepted exit 0 · 0.08885335400009353sPASSinput · generic input · output · check report
141accepted exit 0 · 0.05638961099975859sPASSinput · generic input · output · check report
142accepted exit 0 · 0.07413916599989534sPASSinput · generic input · output · check report
143accepted exit 0 · 0.10319649899975047sPASSinput · generic input · output · check report
144accepted exit 0 · 0.08765555600029984sPASSinput · generic input · output · check report
145accepted exit 0 · 0.04999290400019163sPASSinput · generic input · output · check report
146accepted exit 0 · 0.04783787500036851sPASSinput · generic input · output · check report
147accepted exit 0 · 0.07672215500042512sPASSinput · generic input · output · check report
148accepted exit 0 · 0.04991401899997072sPASSinput · generic input · output · check report
149accepted exit 0 · 0.060543465000137076sPASSinput · generic input · output · check report
150accepted exit 0 · 0.05822806500009392sPASSinput · generic input · output · check report
151accepted exit 0 · 0.0977531739999904sPASSinput · generic input · output · check report
152accepted exit 0 · 0.04837642300026346sPASSinput · generic input · output · check report
153accepted exit 0 · 0.0771302809998815sPASSinput · generic input · output · check report
154accepted exit 0 · 0.04826196900012292sPASSinput · generic input · output · check report
155accepted exit 0 · 0.06086958300011247sPASSinput · generic input · output · check report
156accepted exit 0 · 0.04970510200018907sPASSinput · generic input · output · check report
157accepted exit 0 · 0.05037891900019531sPASSinput · generic input · output · check report
158accepted exit 0 · 0.054167839999990974sPASSinput · generic input · output · check report
159accepted exit 0 · 0.04956724499970733sPASSinput · generic input · output · check report
160accepted exit 0 · 0.11485788000027242sPASSinput · generic input · output · check report
161accepted exit 0 · 0.040669583000180864sPASSinput · generic input · output · check report
162accepted exit 0 · 0.05168246100038232sPASSinput · generic input · output · check report
163accepted exit 0 · 0.055231952000212914sPASSinput · generic input · output · check report
164accepted exit 0 · 0.05342187999985981sPASSinput · generic input · output · check report
165accepted exit 0 · 0.09264672900008009sPASSinput · generic input · output · check report
166accepted exit 0 · 0.09174123900038467sPASSinput · generic input · output · check report
167accepted exit 0 · 0.10565848600026584sPASSinput · generic input · output · check report
168accepted exit 0 · 0.05763583199995992sPASSinput · generic input · output · check report
169accepted exit 0 · 0.05166379799993592sPASSinput · generic input · output · check report
170accepted exit 0 · 0.0748505669998849sPASSinput · generic input · output · check report
171accepted exit 0 · 0.053025679999791464sPASSinput · generic input · output · check report
172accepted exit 0 · 0.08497484800000166sPASSinput · generic input · output · check report
173accepted exit 0 · 0.07943794199991316sPASSinput · generic input · output · check report
174accepted exit 0 · 0.05893966699977682sPASSinput · generic input · output · check report
175accepted exit 0 · 0.052926515999843105sPASSinput · generic input · output · check report
176accepted exit 0 · 0.050001609999981156sPASSinput · generic input · output · check report
177accepted exit 0 · 0.0627569449998191sPASSinput · generic input · output · check report
178accepted exit 0 · 0.05168289099992762sPASSinput · generic input · output · check report
179accepted exit 0 · 0.12348307499996736sPASSinput · generic input · output · check report
180accepted exit 0 · 0.05253939200019886sPASSinput · generic input · output · check report
181accepted exit 0 · 0.07072313100024985sPASSinput · generic input · output · check report
182accepted exit 0 · 0.08351016699998581sPASSinput · generic input · output · check report
183accepted exit 0 · 0.050856611999734014sPASSinput · generic input · output · check report
184accepted exit 0 · 0.08836963299972922sPASSinput · generic input · output · check report
185accepted exit 0 · 0.04890662799971324sPASSinput · generic input · output · check report
186accepted exit 0 · 0.04984665499978291sPASSinput · generic input · output · check report
187accepted exit 0 · 0.05290078600000925sPASSinput · generic input · output · check report
188accepted exit 0 · 0.08566688700011582sPASSinput · generic input · output · check report
189accepted exit 0 · 0.10401219200002743sPASSinput · generic input · output · check report
190accepted exit 0 · 0.04882396500033792sPASSinput · generic input · output · check report
191accepted exit 0 · 0.05258469399996102sPASSinput · generic input · output · check report
192accepted exit 0 · 0.0753289690001111sPASSinput · generic input · output · check report
193accepted exit 0 · 0.09811643400007597sPASSinput · generic input · output · check report
194accepted exit 0 · 0.0924090769999566sPASSinput · generic input · output · check report
195accepted exit 0 · 0.057036755999888555sPASSinput · generic input · output · check report
196accepted exit 0 · 0.04266482000002725sPASSinput · generic input · output · check report
197accepted exit 0 · 0.08969971699980306sPASSinput · generic input · output · check report
198accepted exit 0 · 0.052448202000050514sPASSinput · generic input · output · check report
199accepted exit 0 · 0.05600783399995635sPASSinput · generic input · output · check report
200accepted exit 0 · 0.057525137000084214sPASSinput · generic input · output · check report
201accepted exit 0 · 0.0523760369997035sPASSinput · generic input · output · check report
202accepted exit 0 · 0.09410025899978791sPASSinput · generic input · output · check report
203accepted exit 0 · 0.05346742899973833sPASSinput · generic input · output · check report
204accepted exit 0 · 0.04928952499994921sPASSinput · generic input · output · check report
205accepted exit 0 · 0.05499649399962436sPASSinput · generic input · output · check report
206accepted exit 0 · 0.05736947500008682sPASSinput · generic input · output · check report
207accepted exit 0 · 0.05317566099984106sPASSinput · generic input · output · check report
208accepted exit 0 · 0.0858206739999332sPASSinput · generic input · output · check report
209accepted exit 0 · 0.0910048599998845sPASSinput · generic input · output · check report
210accepted exit 0 · 0.0542914689999634sPASSinput · generic input · output · check report
211accepted exit 0 · 0.048328287999993336sPASSinput · generic input · output · check report
212accepted exit 0 · 0.09045885499972428sPASSinput · generic input · output · check report
213accepted exit 0 · 0.06876381800020681sPASSinput · generic input · output · check report
214accepted exit 0 · 0.05213172899993879sPASSinput · generic input · output · check report
215accepted exit 0 · 0.054754700000103185sPASSinput · generic input · output · check report
216accepted exit 0 · 0.04883535099997971sPASSinput · generic input · output · check report
217accepted exit 0 · 0.09102625200011971sPASSinput · generic input · output · check report
218accepted exit 0 · 0.04986431599991192sPASSinput · generic input · output · check report
219accepted exit 0 · 0.05691141499983132sPASSinput · generic input · output · check report
220accepted exit 0 · 0.11163668100016366sPASSinput · generic input · output · check report
221accepted exit 0 · 0.049223802000142314sPASSinput · generic input · output · check report
222accepted exit 0 · 0.08458798799983924sPASSinput · generic input · output · check report
223accepted exit 0 · 0.11517131600021457sPASSinput · generic input · output · check report
224accepted exit 0 · 0.08434728700012784sPASSinput · generic input · output · check report
225accepted exit 0 · 0.05423065500008306sPASSinput · generic input · output · check report
226accepted exit 0 · 0.05999470200003998sPASSinput · generic input · output · check report
227accepted exit 0 · 0.07034653499977139sPASSinput · generic input · output · check report
228accepted exit 0 · 0.09321268400026383sPASSinput · generic input · output · check report
229accepted exit 0 · 0.1274673050002093sPASSinput · generic input · output · check report
230accepted exit 0 · 0.06447087900005499sPASSinput · generic input · output · check report
231accepted exit 0 · 0.05062026899986449sPASSinput · generic input · output · check report
232accepted exit 0 · 0.10323101999983919sPASSinput · generic input · output · check report
233accepted exit 0 · 0.04955762200006575sPASSinput · generic input · output · check report
234accepted exit 0 · 0.05683581499988577sPASSinput · generic input · output · check report
235accepted exit 0 · 0.09562926899980084sPASSinput · generic input · output · check report
236accepted exit 0 · 0.06267309099985141sPASSinput · generic input · output · check report
237accepted exit 0 · 0.09523384800013446sPASSinput · generic input · output · check report
238accepted exit 0 · 0.11473003199989762sPASSinput · generic input · output · check report
239accepted exit 0 · 0.0746346200003245sPASSinput · generic input · output · check report
240accepted exit 0 · 0.06281211200030157sPASSinput · generic input · output · check report
241accepted exit 0 · 0.05731766299959418sPASSinput · generic input · output · check report
242accepted exit 0 · 0.0544782550000491sPASSinput · generic input · output · check report
243accepted exit 0 · 0.05761406999999963sPASSinput · generic input · output · check report
244accepted exit 0 · 0.0687382159999288sPASSinput · generic input · output · check report
245accepted exit 0 · 0.058231730999978026sPASSinput · generic input · output · check report
246accepted exit 0 · 0.05301202900000135sPASSinput · generic input · output · check report
247accepted exit 0 · 0.08891043199992055sPASSinput · generic input · output · check report
248accepted exit 0 · 0.06230444999982865sPASSinput · generic input · output · check report
249accepted exit 0 · 0.051346488000035606sPASSinput · generic input · output · check report
250accepted exit 0 · 0.07398818599995138sPASSinput · generic input · output · check report
251accepted exit 0 · 0.06768810099993061sPASSinput · generic input · output · check report
252accepted exit 0 · 0.07119645800003127sPASSinput · generic input · output · check report
253accepted exit 0 · 0.045924063000256865sPASSinput · generic input · output · check report
254accepted exit 0 · 0.04440619900015008sPASSinput · generic input · output · check report
255accepted exit 0 · 0.05001846100003604sPASSinput · generic input · output · check report
256accepted exit 0 · 0.09182421100013016sPASSinput · generic input · output · check report
257accepted exit 0 · 0.05254868800011536sPASSinput · generic input · output · check report
258accepted exit 0 · 0.04622047999964707sPASSinput · generic input · output · check report
259accepted exit 0 · 0.05670453099992301sPASSinput · generic input · output · check report
260accepted exit 0 · 0.051686897999843495sPASSinput · generic input · output · check report
261accepted exit 0 · 0.052098512000156916sPASSinput · generic input · output · check report
262accepted exit 0 · 0.05113897799992628sPASSinput · generic input · output · check report
263accepted exit 0 · 0.050633067000035226sPASSinput · generic input · output · check report
264accepted exit 0 · 0.04678507200014792sPASSinput · generic input · output · check report
265accepted exit 0 · 0.0542390069999783sPASSinput · generic input · output · check report
266accepted exit 0 · 0.09056394300023385sPASSinput · generic input · output · check report
267accepted exit 0 · 0.0514430800003538sPASSinput · generic input · output · check report
268accepted exit 0 · 0.04894641600003524sPASSinput · generic input · output · check report
269accepted exit 0 · 0.06939204699983748sPASSinput · generic input · output · check report
270accepted exit 0 · 0.0597105140000167sPASSinput · generic input · output · check report
271accepted exit 0 · 0.04641338400006134sPASSinput · generic input · output · check report
272accepted exit 0 · 0.06431151500009946sPASSinput · generic input · output · check report
273accepted exit 0 · 0.051489077000042016sPASSinput · generic input · output · check report
274accepted exit 0 · 0.04689196400022411sPASSinput · generic input · output · check report
275accepted exit 0 · 0.04564540000001216sPASSinput · generic input · output · check report
276accepted exit 0 · 0.04749288399989382sPASSinput · generic input · output · check report
277accepted exit 0 · 0.05442140099967219sPASSinput · generic input · output · check report
278accepted exit 0 · 0.05707741400010491sPASSinput · generic input · output · check report
279accepted exit 0 · 0.08683767799993802sPASSinput · generic input · output · check report
280accepted exit 0 · 0.051027739999881305sPASSinput · generic input · output · check report
281accepted exit 0 · 0.05416417700007514sPASSinput · generic input · output · check report
282accepted exit 0 · 0.06355305999977645sPASSinput · generic input · output · check report
283accepted exit 0 · 0.0503431429997363sPASSinput · generic input · output · check report
284accepted exit 0 · 0.0570135139996637sPASSinput · generic input · output · check report
285accepted exit 0 · 0.07570433699993373sPASSinput · generic input · output · check report
286accepted exit 0 · 0.09140174999993178sPASSinput · generic input · output · check report
287accepted exit 0 · 0.048832473999937065sPASSinput · generic input · output · check report
288accepted exit 0 · 0.054378660999645945sPASSinput · generic input · output · check report
289accepted exit 0 · 0.07041294800001197sPASSinput · generic input · output · check report
290accepted exit 0 · 0.0617912669999896sPASSinput · generic input · output · check report
291accepted exit 0 · 0.05954055700021854sPASSinput · generic input · output · check report
292accepted exit 0 · 0.09703364999995756sPASSinput · generic input · output · check report
293accepted exit 0 · 0.06390926099993521sPASSinput · generic input · output · check report
294accepted exit 0 · 0.05490671400002611sPASSinput · generic input · output · check report
295accepted exit 0 · 0.07303424700012329sPASSinput · generic input · output · check report
296accepted exit 0 · 0.0626900989996102sPASSinput · generic input · output · check report
297accepted exit 0 · 0.07977544300001682sPASSinput · generic input · output · check report
298accepted exit 0 · 0.058132750000368105sPASSinput · generic input · output · check report
299accepted exit 0 · 0.05802919600000678sPASSinput · generic input · output · check report
300accepted exit 0 · 0.05025746000046638sPASSinput · generic input · output · check report
301accepted exit 0 · 0.04946294000001217sPASSinput · generic input · output · check report
302accepted exit 0 · 0.10193731399976969sPASSinput · generic input · output · check report
303accepted exit 0 · 0.09401701600017986sPASSinput · generic input · output · check report
304accepted exit 0 · 0.09250341899951309sPASSinput · generic input · output · check report
305accepted exit 0 · 0.0560156610008562sPASSinput · generic input · output · check report
306accepted exit 0 · 0.05556130000059056sPASSinput · generic input · output · check report
307accepted exit 0 · 0.05997551400014345sPASSinput · generic input · output · check report
308accepted exit 0 · 0.08235768099984853sPASSinput · generic input · output · check report
309accepted exit 0 · 0.05013252699973236sPASSinput · generic input · output · check report
310accepted exit 0 · 0.06909012999949482sPASSinput · generic input · output · check report
311accepted exit 0 · 0.050105658999200386sPASSinput · generic input · output · check report
312accepted exit 0 · 0.05523649800034036sPASSinput · generic input · output · check report
313accepted exit 0 · 0.05550090500037186sPASSinput · generic input · output · check report
314accepted exit 0 · 0.05315705799966963sPASSinput · generic input · output · check report
315accepted exit 0 · 0.06051283300075738sPASSinput · generic input · output · check report
316accepted exit 0 · 0.053028409000035026sPASSinput · generic input · output · check report
317accepted exit 0 · 0.05671092199918348sPASSinput · generic input · output · check report
318accepted exit 0 · 0.05438686199977383sPASSinput · generic input · output · check report
319accepted exit 0 · 0.05543920699983573sPASSinput · generic input · output · check report
320accepted exit 0 · 0.04930475699984527sPASSinput · generic input · output · check report
321accepted exit 0 · 0.10473231600008148sPASSinput · generic input · output · check report
322accepted exit 0 · 0.0701129380004204sPASSinput · generic input · output · check report
323accepted exit 0 · 0.05178024499946332sPASSinput · generic input · output · check report
324accepted exit 0 · 0.0918502049999006sPASSinput · generic input · output · check report
325accepted exit 0 · 0.04880991099980747sPASSinput · generic input · output · check report
326accepted exit 0 · 0.04946446099984314sPASSinput · generic input · output · check report
327accepted exit 0 · 0.05026425300002302sPASSinput · generic input · output · check report
328accepted exit 0 · 0.05949053799940884sPASSinput · generic input · output · check report
329accepted exit 0 · 0.06382628600022144sPASSinput · generic input · output · check report
330accepted exit 0 · 0.05584864499996911sPASSinput · generic input · output · check report
331accepted exit 0 · 0.07436413499999617sPASSinput · generic input · output · check report
332accepted exit 0 · 0.054653844999847934sPASSinput · generic input · output · check report
333accepted exit 0 · 0.05785462299991195sPASSinput · generic input · output · check report
334accepted exit 0 · 0.05530869500034896sPASSinput · generic input · output · check report
335accepted exit 0 · 0.09253225799966458sPASSinput · generic input · output · check report
336accepted exit 0 · 0.056252198000038334sPASSinput · generic input · output · check report
337accepted exit 0 · 0.07602255499932653sPASSinput · generic input · output · check report
338accepted exit 0 · 0.0545257390003826sPASSinput · generic input · output · check report
339accepted exit 0 · 0.09699875700061966sPASSinput · generic input · output · check report
340accepted exit 0 · 0.09532276199934131sPASSinput · generic input · output · check report
341accepted exit 0 · 0.05892132000008132sPASSinput · generic input · output · check report
342accepted exit 0 · 0.04858434000016132sPASSinput · generic input · output · check report
343accepted exit 0 · 0.06336406100035674sPASSinput · generic input · output · check report
344accepted exit 0 · 0.05947806800031685sPASSinput · generic input · output · check report
345accepted exit 0 · 0.09401813899967237sPASSinput · generic input · output · check report
346accepted exit 0 · 0.058262247999664396sPASSinput · generic input · output · check report
347accepted exit 0 · 0.06911945699994249sPASSinput · generic input · output · check report
348accepted exit 0 · 0.053207510999527585sPASSinput · generic input · output · check report
349accepted exit 0 · 0.10479917999964528sPASSinput · generic input · output · check report
350accepted exit 0 · 0.049680903000080434sPASSinput · generic input · output · check report
351accepted exit 0 · 0.05865559899939399sPASSinput · generic input · output · check report
352accepted exit 0 · 0.06097636600043188sPASSinput · generic input · output · check report
353accepted exit 0 · 0.053189450999525434sPASSinput · generic input · output · check report
354accepted exit 0 · 0.05829051599994273sPASSinput · generic input · output · check report
355accepted exit 0 · 0.05635532400083321sPASSinput · generic input · output · check report
356accepted exit 0 · 0.09715459899962298sPASSinput · generic input · output · check report
357accepted exit 0 · 0.05416690800029755sPASSinput · generic input · output · check report
358accepted exit 0 · 0.09547136099990894sPASSinput · generic input · output · check report
359accepted exit 0 · 0.06621488400014641sPASSinput · generic input · output · check report
360accepted exit 0 · 0.05569066899988684sPASSinput · generic input · output · check report
361accepted exit 0 · 0.052962368999942555sPASSinput · generic input · output · check report
362accepted exit 0 · 0.07606635899992398sPASSinput · generic input · output · check report
363accepted exit 0 · 0.06810723899980076sPASSinput · generic input · output · check report
364accepted exit 0 · 0.09066184899984364sPASSinput · generic input · output · check report
365accepted exit 0 · 0.049906254000234185sPASSinput · generic input · output · check report
366accepted exit 0 · 0.08492275700064056sPASSinput · generic input · output · check report
367accepted exit 0 · 0.06090487100027531sPASSinput · generic input · output · check report
368accepted exit 0 · 0.10718532999999297sPASSinput · generic input · output · check report
369accepted exit 0 · 0.05393570999967778sPASSinput · generic input · output · check report
370accepted exit 0 · 0.05236095399959595sPASSinput · generic input · output · check report
371accepted exit 0 · 0.059311322000212385sPASSinput · generic input · output · check report
372accepted exit 0 · 0.07848347400067723sPASSinput · generic input · output · check report
373accepted exit 0 · 0.052623026999754074sPASSinput · generic input · output · check report
374accepted exit 0 · 0.05179083500024717sPASSinput · generic input · output · check report
375accepted exit 0 · 0.04961377900053776sPASSinput · generic input · output · check report
376accepted exit 0 · 0.047170392999760224sPASSinput · generic input · output · check report
377accepted exit 0 · 0.052633569999670726sPASSinput · generic input · output · check report
378accepted exit 0 · 0.05395584199959558sPASSinput · generic input · output · check report
379accepted exit 0 · 0.04944423300003109sPASSinput · generic input · output · check report
380accepted exit 0 · 0.09596175199931167sPASSinput · generic input · output · check report
381accepted exit 0 · 0.05299775399998907sPASSinput · generic input · output · check report
382accepted exit 0 · 0.05174138700022013sPASSinput · generic input · output · check report
383accepted exit 0 · 0.10002895999969041sPASSinput · generic input · output · check report
384accepted exit 0 · 0.052561788000275556sPASSinput · generic input · output · check report
385accepted exit 0 · 0.057075792999967234sPASSinput · generic input · output · check report
386accepted exit 0 · 0.052286902000560076sPASSinput · generic input · output · check report
387accepted exit 0 · 0.08732349999991129sPASSinput · generic input · output · check report
388accepted exit 0 · 0.06524200700005167sPASSinput · generic input · output · check report
389accepted exit 0 · 0.06758356299997104sPASSinput · generic input · output · check report
390accepted exit 0 · 0.07191596899974684sPASSinput · generic input · output · check report
391accepted exit 0 · 0.056025916999715264sPASSinput · generic input · output · check report
392accepted exit 0 · 0.06943799799955741sPASSinput · generic input · output · check report
393accepted exit 0 · 0.067767141999866sPASSinput · generic input · output · check report
394accepted exit 0 · 0.08002188199952798sPASSinput · generic input · output · check report
395accepted exit 0 · 0.0808932289992299sPASSinput · generic input · output · check report
396accepted exit 0 · 0.07309540000005654sPASSinput · generic input · output · check report
397accepted exit 0 · 0.06424203799997485sPASSinput · generic input · output · check report
398accepted exit 0 · 0.1265050620004331sPASSinput · generic input · output · check report
399accepted exit 0 · 0.061773014000209514sPASSinput · generic input · output · check report
400accepted exit 0 · 0.060075348999816924sPASSinput · generic input · output · check report
401accepted exit 0 · 0.06557467200036626sPASSinput · generic input · output · check report
402accepted exit 0 · 0.05911490499966021sPASSinput · generic input · output · check report
403accepted exit 0 · 0.06337386799987144sPASSinput · generic input · output · check report
404accepted exit 0 · 0.06303238599957695sPASSinput · generic input · output · check report
405accepted exit 0 · 0.08997237600033259sPASSinput · generic input · output · check report
406accepted exit 0 · 0.06296603100054199sPASSinput · generic input · output · check report
407accepted exit 0 · 0.06416965399967012sPASSinput · generic input · output · check report
408accepted exit 0 · 0.06837414399979025sPASSinput · generic input · output · check report
409accepted exit 0 · 0.06212670500008244sPASSinput · generic input · output · check report
410accepted exit 0 · 0.06123014999957377sPASSinput · generic input · output · check report
411accepted exit 0 · 0.060129591999611876sPASSinput · generic input · output · check report
412accepted exit 0 · 0.05645917599940731sPASSinput · generic input · output · check report
413accepted exit 0 · 0.06606250099957833sPASSinput · generic input · output · check report
414accepted exit 0 · 0.06851535999976477sPASSinput · generic input · output · check report
415accepted exit 0 · 0.06282648099931976sPASSinput · generic input · output · check report
416accepted exit 0 · 0.06377759800034255sPASSinput · generic input · output · check report
417accepted exit 0 · 0.06542958199952409sPASSinput · generic input · output · check report
418accepted exit 0 · 0.06736676199943759sPASSinput · generic input · output · check report
419accepted exit 0 · 0.06441772200014384sPASSinput · generic input · output · check report
420accepted exit 0 · 0.08111694000035641sPASSinput · generic input · output · check report
421accepted exit 0 · 0.06795262499963428sPASSinput · generic input · output · check report
422accepted exit 0 · 0.06504269699962606sPASSinput · generic input · output · check report
423accepted exit 0 · 0.056264022000505065sPASSinput · generic input · output · check report
424accepted exit 0 · 0.06397370800004865sPASSinput · generic input · output · check report
425accepted exit 0 · 0.058526022000478406sPASSinput · generic input · output · check report
426accepted exit 0 · 0.06259694199980004sPASSinput · generic input · output · check report
427accepted exit 0 · 0.06815185000050406sPASSinput · generic input · output · check report
428accepted exit 0 · 0.07030527700044331sPASSinput · generic input · output · check report
429accepted exit 0 · 0.10387983500004339sPASSinput · generic input · output · check report
430accepted exit 0 · 0.058569956000610546sPASSinput · generic input · output · check report
431accepted exit 0 · 0.06730161300038162sPASSinput · generic input · output · check report
432accepted exit 0 · 0.06697240499943291sPASSinput · generic input · output · check report
433accepted exit 0 · 0.06706852599927515sPASSinput · generic input · output · check report
434accepted exit 0 · 0.06753254799969sPASSinput · generic input · output · check report
435accepted exit 0 · 0.06166563400074665sPASSinput · generic input · output · check report
436accepted exit 0 · 0.06782749299964053sPASSinput · generic input · output · check report
437accepted exit 0 · 0.13960248399962438sPASSinput · generic input · output · check report
438accepted exit 0 · 0.06821597399994062sPASSinput · generic input · output · check report
439accepted exit 0 · 0.06477920500037726sPASSinput · generic input · output · check report
440accepted exit 0 · 0.057669675999932224sPASSinput · generic input · output · check report
441accepted exit 0 · 0.06940850499995577sPASSinput · generic input · output · check report
442accepted exit 0 · 0.09792937800011714sPASSinput · generic input · output · check report
443accepted exit 0 · 0.09658028300054866sPASSinput · generic input · output · check report
444accepted exit 0 · 0.06691227499959496sPASSinput · generic input · output · check report
445accepted exit 0 · 0.060780793000049016sPASSinput · generic input · output · check report
446accepted exit 0 · 0.0651037070001621sPASSinput · generic input · output · check report
447accepted exit 0 · 0.09117210199929104sPASSinput · generic input · output · check report
448accepted exit 0 · 0.06126455300000089sPASSinput · generic input · output · check report
449accepted exit 0 · 0.09707081700071285sPASSinput · generic input · output · check report
450accepted exit 0 · 0.06441226799961441sPASSinput · generic input · output · check report
451accepted exit 0 · 0.09920011900067038sPASSinput · generic input · output · check report
452accepted exit 0 · 0.06614499499937665sPASSinput · generic input · output · check report
453accepted exit 0 · 0.06279210399952717sPASSinput · generic input · output · check report
454accepted exit 0 · 0.06829604699942138sPASSinput · generic input · output · check report
455accepted exit 0 · 0.09847921499931545sPASSinput · generic input · output · check report
456accepted exit 0 · 0.0702668599997196sPASSinput · generic input · output · check report
457accepted exit 0 · 0.10417718299959233sPASSinput · generic input · output · check report
458accepted exit 0 · 0.06496123099987017sPASSinput · generic input · output · check report
459accepted exit 0 · 0.06497242200020992sPASSinput · generic input · output · check report
460accepted exit 0 · 0.09552107799936493sPASSinput · generic input · output · check report
461accepted exit 0 · 0.06994078899970191sPASSinput · generic input · output · check report
462accepted exit 0 · 0.09824878499966871sPASSinput · generic input · output · check report
463accepted exit 0 · 0.06242346399994858sPASSinput · generic input · output · check report
464accepted exit 0 · 0.06074869599979138sPASSinput · generic input · output · check report
465accepted exit 0 · 0.06045740899935481sPASSinput · generic input · output · check report
466accepted exit 0 · 0.11394959999961429sPASSinput · generic input · output · check report
467accepted exit 0 · 0.05967627199970593sPASSinput · generic input · output · check report
468accepted exit 0 · 0.05840212800012523sPASSinput · generic input · output · check report
469accepted exit 0 · 0.06872180000027583sPASSinput · generic input · output · check report
470accepted exit 0 · 0.0996538369990958sPASSinput · generic input · output · check report
471accepted exit 0 · 0.07499971800007188sPASSinput · generic input · output · check report
472accepted exit 0 · 0.06048418099999253sPASSinput · generic input · output · check report
473accepted exit 0 · 0.07028265400003875sPASSinput · generic input · output · check report
474accepted exit 0 · 0.06256136399952084sPASSinput · generic input · output · check report
475accepted exit 0 · 0.06095821199960483sPASSinput · generic input · output · check report
476accepted exit 0 · 0.06625463500040496sPASSinput · generic input · output · check report
477accepted exit 0 · 0.06262921199959237sPASSinput · generic input · output · check report
478accepted exit 0 · 0.05996522700024798sPASSinput · generic input · output · check report
479accepted exit 0 · 0.06517895299930387sPASSinput · generic input · output · check report
480accepted exit 0 · 0.06703386000026512sPASSinput · generic input · output · check report
481accepted exit 0 · 0.0791585249999116sPASSinput · generic input · output · check report
482accepted exit 0 · 0.06907967499955703sPASSinput · generic input · output · check report
483accepted exit 0 · 0.06556574099977297sPASSinput · generic input · output · check report
484accepted exit 0 · 0.09521898599996348sPASSinput · generic input · output · check report
485accepted exit 0 · 0.07269792500028416sPASSinput · generic input · output · check report
486accepted exit 0 · 0.06303904300057184sPASSinput · generic input · output · check report
487accepted exit 0 · 0.09946141999989777sPASSinput · generic input · output · check report
488accepted exit 0 · 0.07127845800005161sPASSinput · generic input · output · check report
489accepted exit 0 · 0.055844753999735985sPASSinput · generic input · output · check report
490accepted exit 0 · 0.06141590399965935sPASSinput · generic input · output · check report
491accepted exit 0 · 0.06165097600023728sPASSinput · generic input · output · check report
492accepted exit 0 · 0.10212799199962319sPASSinput · generic input · output · check report
493accepted exit 0 · 0.069917551000799sPASSinput · generic input · output · check report
494accepted exit 0 · 0.100498200000402sPASSinput · generic input · output · check report
495accepted exit 0 · 0.060790609999457956sPASSinput · generic input · output · check report
496accepted exit 0 · 0.0655153590005284sPASSinput · generic input · output · check report
497accepted exit 0 · 0.06132851100028347sPASSinput · generic input · output · check report
498accepted exit 0 · 0.06485058999987814sPASSinput · generic input · output · check report
499accepted exit 0 · 0.06765867700050876sPASSinput · generic input · output · check report
500accepted exit 0 · 0.053989855000509124sPASSinput · generic input · output · check report
501accepted exit 0 · 0.1008292070000607sPASSinput · generic input · output · check report
502accepted exit 0 · 0.057089517999884265sPASSinput · generic input · output · check report
503accepted exit 0 · 0.09589549800057284sPASSinput · generic input · output · check report
504accepted exit 0 · 0.06525841599977866sPASSinput · generic input · output · check report
505accepted exit 0 · 0.10061995200067031sPASSinput · generic input · output · check report
506accepted exit 0 · 0.10486003299956792sPASSinput · generic input · output · check report
507accepted exit 0 · 0.08038115299950732sPASSinput · generic input · output · check report
508accepted exit 0 · 0.05636486099956528sPASSinput · generic input · output · check report
509accepted exit 0 · 0.05740553799932968sPASSinput · generic input · output · check report
510accepted exit 0 · 0.10466024600009405sPASSinput · generic input · output · check report
511accepted exit 0 · 0.060079533999669366sPASSinput · generic input · output · check report
512accepted exit 0 · 0.061436970000613655sPASSinput · generic input · output · check report
513accepted exit 0 · 0.05854596599965589sPASSinput · generic input · output · check report
514accepted exit 0 · 0.06271069499962323sPASSinput · generic input · output · check report
515accepted exit 0 · 0.06078369500028202sPASSinput · generic input · output · check report
516accepted exit 0 · 0.09856203799972718sPASSinput · generic input · output · check report
517accepted exit 0 · 0.06036283299999923sPASSinput · generic input · output · check report
518accepted exit 0 · 0.059033425000052375sPASSinput · generic input · output · check report
519accepted exit 0 · 0.06370028400033334sPASSinput · generic input · output · check report
520accepted exit 0 · 0.08060982999995758sPASSinput · generic input · output · check report
521accepted exit 0 · 0.08711811200009834sPASSinput · generic input · output · check report
522accepted exit 0 · 0.09630979000030493sPASSinput · generic input · output · check report
523accepted exit 0 · 0.05543253899941192sPASSinput · generic input · output · check report
524accepted exit 0 · 0.05919214099958481sPASSinput · generic input · output · check report
525accepted exit 0 · 0.09870795599999838sPASSinput · generic input · output · check report
526accepted exit 0 · 0.05751248799970199sPASSinput · generic input · output · check report
527accepted exit 0 · 0.061485983000238775sPASSinput · generic input · output · check report
528accepted exit 0 · 0.05753569699936634sPASSinput · generic input · output · check report
529accepted exit 0 · 0.05687244999990071sPASSinput · generic input · output · check report
530accepted exit 0 · 0.07858778099944175sPASSinput · generic input · output · check report
531accepted exit 0 · 0.05345179400046618sPASSinput · generic input · output · check report
532accepted exit 0 · 0.06908881300023495sPASSinput · generic input · output · check report
533accepted exit 0 · 0.07960061699941434sPASSinput · generic input · output · check report
534accepted exit 0 · 0.0682575849996283sPASSinput · generic input · output · check report
535accepted exit 0 · 0.10062627000024804sPASSinput · generic input · output · check report
536accepted exit 0 · 0.06385621099980199sPASSinput · generic input · output · check report
537accepted exit 0 · 0.06375852200017107sPASSinput · generic input · output · check report
538accepted exit 0 · 0.07078758399984508sPASSinput · generic input · output · check report
539accepted exit 0 · 0.06232177799938654sPASSinput · generic input · output · check report
540accepted exit 0 · 0.06609935999949812sPASSinput · generic input · output · check report
541accepted exit 0 · 0.06849967499965715sPASSinput · generic input · output · check report
542accepted exit 0 · 0.05619042200032709sPASSinput · generic input · output · check report
543accepted exit 0 · 0.10066535100031615sPASSinput · generic input · output · check report
544accepted exit 0 · 0.0637442409997675sPASSinput · generic input · output · check report
545accepted exit 0 · 0.0705628820005586sPASSinput · generic input · output · check report
546accepted exit 0 · 0.059922796999671846sPASSinput · generic input · output · check report
547accepted exit 0 · 0.06411157500042464sPASSinput · generic input · output · check report
548accepted exit 0 · 0.07068534400059434sPASSinput · generic input · output · check report
549accepted exit 0 · 0.061385704999338486sPASSinput · generic input · output · check report
550accepted exit 0 · 0.06631292800011579sPASSinput · generic input · output · check report
551accepted exit 0 · 0.05945795299976453sPASSinput · generic input · output · check report
552accepted exit 0 · 0.06397004199970979sPASSinput · generic input · output · check report
553accepted exit 0 · 0.09220050300064031sPASSinput · generic input · output · check report
554accepted exit 0 · 0.07468184800018207sPASSinput · generic input · output · check report
555accepted exit 0 · 0.09983756299970992sPASSinput · generic input · output · check report
556accepted exit 0 · 0.06223808499998995sPASSinput · generic input · output · check report
557accepted exit 0 · 0.06858347799970943sPASSinput · generic input · output · check report
558accepted exit 0 · 0.1049801210001533sPASSinput · generic input · output · check report
559accepted exit 0 · 0.10055236700009118sPASSinput · generic input · output · check report
560accepted exit 0 · 0.06335328099976323sPASSinput · generic input · output · check report
561accepted exit 0 · 0.10197310500007006sPASSinput · generic input · output · check report
562accepted exit 0 · 0.06259666599999036sPASSinput · generic input · output · check report
563accepted exit 0 · 0.05819068500022695sPASSinput · generic input · output · check report
564accepted exit 0 · 0.056097225000485196sPASSinput · generic input · output · check report
565accepted exit 0 · 0.0679080170002635sPASSinput · generic input · output · check report
566accepted exit 0 · 0.06044236300022021sPASSinput · generic input · output · check report
567accepted exit 0 · 0.0592460090001623sPASSinput · generic input · output · check report
568accepted exit 0 · 0.06476150199978292sPASSinput · generic input · output · check report
569accepted exit 0 · 0.07872733300064283sPASSinput · generic input · output · check report
570accepted exit 0 · 0.06976745600059076sPASSinput · generic input · output · check report
571accepted exit 0 · 0.06960414500008483sPASSinput · generic input · output · check report
572accepted exit 0 · 0.10763045600015175sPASSinput · generic input · output · check report
573accepted exit 0 · 0.062161101999663515sPASSinput · generic input · output · check report
574accepted exit 0 · 0.060321643999486696sPASSinput · generic input · output · check report
575accepted exit 0 · 0.0691835080006058sPASSinput · generic input · output · check report
576accepted exit 0 · 0.06595670699971379sPASSinput · generic input · output · check report
577accepted exit 0 · 0.062025775999245525sPASSinput · generic input · output · check report
578accepted exit 0 · 0.07004207000045426sPASSinput · generic input · output · check report
579accepted exit 0 · 0.07013067600018985sPASSinput · generic input · output · check report
580accepted exit 0 · 0.0815771509996921sPASSinput · generic input · output · check report
581accepted exit 0 · 0.10426416400059679sPASSinput · generic input · output · check report
582accepted exit 0 · 0.0625024430000849sPASSinput · generic input · output · check report
583accepted exit 0 · 0.06297613700007787sPASSinput · generic input · output · check report
584accepted exit 0 · 0.06170721700073045sPASSinput · generic input · output · check report
585accepted exit 0 · 0.07947816800060536sPASSinput · generic input · output · check report
586accepted exit 0 · 0.05716794599993591sPASSinput · generic input · output · check report
587accepted exit 0 · 0.08007600200016896sPASSinput · generic input · output · check report
588accepted exit 0 · 0.05590839199976472sPASSinput · generic input · output · check report
589accepted exit 0 · 0.05727949000083754sPASSinput · generic input · output · check report
590accepted exit 0 · 0.06260906599982263sPASSinput · generic input · output · check report
591accepted exit 0 · 0.06694742800027598sPASSinput · generic input · output · check report
592accepted exit 0 · 0.06104415399931895sPASSinput · generic input · output · check report
593accepted exit 0 · 0.06546425099986664sPASSinput · generic input · output · check report
594accepted exit 0 · 0.06718942699990293sPASSinput · generic input · output · check report
595accepted exit 0 · 0.06897104000017862sPASSinput · generic input · output · check report
596accepted exit 0 · 0.10505785099940113sPASSinput · generic input · output · check report
597accepted exit 0 · 0.057976017000328284sPASSinput · generic input · output · check report
598accepted exit 0 · 0.10604748300011124sPASSinput · generic input · output · check report
599accepted exit 0 · 0.05816816500009736sPASSinput · generic input · output · check report
600accepted exit 0 · 0.05714970999997604sPASSinput · generic input · output · check report
601accepted exit 0 · 0.06046410100043431sPASSinput · generic input · output · check report
602accepted exit 0 · 0.05907298100009939sPASSinput · generic input · output · check report
603accepted exit 0 · 0.06255225199947745sPASSinput · generic input · output · check report
604accepted exit 0 · 0.05372511099994881sPASSinput · generic input · output · check report
605accepted exit 0 · 0.0589807460000884sPASSinput · generic input · output · check report
606accepted exit 0 · 0.055805506999604404sPASSinput · generic input · output · check report
607accepted exit 0 · 0.061989800999981526sPASSinput · generic input · output · check report
608accepted exit 0 · 0.10799736899934942sPASSinput · generic input · output · check report
609accepted exit 0 · 0.06168995600000926sPASSinput · generic input · output · check report
610accepted exit 0 · 0.055146886999864364sPASSinput · generic input · output · check report
611accepted exit 0 · 0.10134519300027023sPASSinput · generic input · output · check report
612accepted exit 0 · 0.09435222499996598sPASSinput · generic input · output · check report
613accepted exit 0 · 0.060486749000119744sPASSinput · generic input · output · check report
614accepted exit 0 · 0.12678838800002268sPASSinput · generic input · output · check report
615accepted exit 0 · 0.06111674499970832sPASSinput · generic input · output · check report
616accepted exit 0 · 0.06243045900009747sPASSinput · generic input · output · check report
617accepted exit 0 · 0.05649315899972862sPASSinput · generic input · output · check report
618accepted exit 0 · 0.058129008999458165sPASSinput · generic input · output · check report
619accepted exit 0 · 0.05297304099985922sPASSinput · generic input · output · check report
620accepted exit 0 · 0.054791032999673916sPASSinput · generic input · output · check report
621accepted exit 0 · 0.09788741700049286sPASSinput · generic input · output · check report
622accepted exit 0 · 0.0974793490004231sPASSinput · generic input · output · check report
623accepted exit 0 · 0.056355087000156345sPASSinput · generic input · output · check report
624accepted exit 0 · 0.058227221999914036sPASSinput · generic input · output · check report
625accepted exit 0 · 0.05456789199979539sPASSinput · generic input · output · check report
626accepted exit 0 · 0.05687422400023934sPASSinput · generic input · output · check report
627accepted exit 0 · 0.06091937000019243sPASSinput · generic input · output · check report
628accepted exit 0 · 0.05631468999945355sPASSinput · generic input · output · check report
629accepted exit 0 · 0.05431428300016705sPASSinput · generic input · output · check report
630accepted exit 0 · 0.06718613900011405sPASSinput · generic input · output · check report
631accepted exit 0 · 0.05580797599941434sPASSinput · generic input · output · check report
632accepted exit 0 · 0.0567410519997793sPASSinput · generic input · output · check report
633accepted exit 0 · 0.05900942200059944sPASSinput · generic input · output · check report
634accepted exit 0 · 0.05909552499997517sPASSinput · generic input · output · check report
635accepted exit 0 · 0.059144697000192537sPASSinput · generic input · output · check report
636accepted exit 0 · 0.05988582200006931sPASSinput · generic input · output · check report
637accepted exit 0 · 0.06072983100057172sPASSinput · generic input · output · check report
638accepted exit 0 · 0.0688710379999975sPASSinput · generic input · output · check report
639accepted exit 0 · 0.060379791999366716sPASSinput · generic input · output · check report
640accepted exit 0 · 0.06414153399964562sPASSinput · generic input · output · check report
641accepted exit 0 · 0.06406237499959389sPASSinput · generic input · output · check report
642accepted exit 0 · 0.06349818099988624sPASSinput · generic input · output · check report
643accepted exit 0 · 0.056367245999354054sPASSinput · generic input · output · check report
644accepted exit 0 · 0.05983881100019062sPASSinput · generic input · output · check report
645accepted exit 0 · 0.05655805500009592sPASSinput · generic input · output · check report
646accepted exit 0 · 0.06331598799988569sPASSinput · generic input · output · check report
647accepted exit 0 · 0.1067261870002767sPASSinput · generic input · output · check report
648accepted exit 0 · 0.05981637800050521sPASSinput · generic input · output · check report
649accepted exit 0 · 0.056615592000525794sPASSinput · generic input · output · check report
650accepted exit 0 · 0.05891987900031381sPASSinput · generic input · output · check report
651accepted exit 0 · 0.05636930799937545sPASSinput · generic input · output · check report
652accepted exit 0 · 0.06250090100002126sPASSinput · generic input · output · check report
653accepted exit 0 · 0.057625632000053884sPASSinput · generic input · output · check report
654accepted exit 0 · 0.06045500999971409sPASSinput · generic input · output · check report
655accepted exit 0 · 0.09393388899934507sPASSinput · generic input · output · check report
656accepted exit 0 · 0.05872929999986809sPASSinput · generic input · output · check report
657accepted exit 0 · 0.05848961900028371sPASSinput · generic input · output · check report
658accepted exit 0 · 0.05600867700013623sPASSinput · generic input · output · check report
659accepted exit 0 · 0.0561060810005074sPASSinput · generic input · output · check report
660accepted exit 0 · 0.10009878500022751sPASSinput · generic input · output · check report
661accepted exit 0 · 0.0541966050004703sPASSinput · generic input · output · check report
662accepted exit 0 · 0.053582107999318396sPASSinput · generic input · output · check report
663accepted exit 0 · 0.06233282299945131sPASSinput · generic input · output · check report
664accepted exit 0 · 0.06925159799993708sPASSinput · generic input · output · check report
665accepted exit 0 · 0.062153564000254846sPASSinput · generic input · output · check report
666accepted exit 0 · 0.06671849899976223sPASSinput · generic input · output · check report
667accepted exit 0 · 0.060684538999339566sPASSinput · generic input · output · check report
668accepted exit 0 · 0.05922235500020179sPASSinput · generic input · output · check report
669accepted exit 0 · 0.06763789800061204sPASSinput · generic input · output · check report
670accepted exit 0 · 0.055571111000062956sPASSinput · generic input · output · check report
671accepted exit 0 · 0.0569992890004869sPASSinput · generic input · output · check report
672accepted exit 0 · 0.0647770510004193sPASSinput · generic input · output · check report
673accepted exit 0 · 0.06443967699942732sPASSinput · generic input · output · check report
674accepted exit 0 · 0.10419526099940413sPASSinput · generic input · output · check report
675accepted exit 0 · 0.09959777600033703sPASSinput · generic input · output · check report
676accepted exit 0 · 0.0989291059995594sPASSinput · generic input · output · check report
677accepted exit 0 · 0.07021810300011566sPASSinput · generic input · output · check report
678accepted exit 0 · 0.07226454600004217sPASSinput · generic input · output · check report
679accepted exit 0 · 0.06267464199936512sPASSinput · generic input · output · check report
680accepted exit 0 · 0.06196137900042231sPASSinput · generic input · output · check report
681accepted exit 0 · 0.05598331400051393sPASSinput · generic input · output · check report
682accepted exit 0 · 0.057424085999628005sPASSinput · generic input · output · check report
683accepted exit 0 · 0.06582664500001556sPASSinput · generic input · output · check report
684accepted exit 0 · 0.11110045699933835sPASSinput · generic input · output · check report
685accepted exit 0 · 0.09358816900021338sPASSinput · generic input · output · check report
686accepted exit 0 · 0.09765233899997838sPASSinput · generic input · output · check report
687accepted exit 0 · 0.053622418000486505sPASSinput · generic input · output · check report
688accepted exit 0 · 0.055370740000398655sPASSinput · generic input · output · check report
689accepted exit 0 · 0.060651030000371975sPASSinput · generic input · output · check report
690accepted exit 0 · 0.06594746099926851sPASSinput · generic input · output · check report
691accepted exit 0 · 0.05897358200036251sPASSinput · generic input · output · check report
692accepted exit 0 · 0.05893008000020927sPASSinput · generic input · output · check report
693accepted exit 0 · 0.052978895999331144sPASSinput · generic input · output · check report
694accepted exit 0 · 0.05728944099973887sPASSinput · generic input · output · check report
695accepted exit 0 · 0.05652542200004973sPASSinput · generic input · output · check report
696accepted exit 0 · 0.05874459000006027sPASSinput · generic input · output · check report
697accepted exit 0 · 0.097257892000016sPASSinput · generic input · output · check report
698accepted exit 0 · 0.05924910900012037sPASSinput · generic input · output · check report
699accepted exit 0 · 0.08640857800037338sPASSinput · generic input · output · check report
700accepted exit 0 · 0.057162641000104486sPASSinput · generic input · output · check report
701accepted exit 0 · 0.06618493300084083sPASSinput · generic input · output · check report
702accepted exit 0 · 0.057438751000518096sPASSinput · generic input · output · check report
703accepted exit 0 · 0.06222611699922709sPASSinput · generic input · output · check report
704accepted exit 0 · 0.09572621600091225sPASSinput · generic input · output · check report
705accepted exit 0 · 0.09912769400034449sPASSinput · generic input · output · check report
706accepted exit 0 · 0.12480520499957493sPASSinput · generic input · output · check report
707accepted exit 0 · 0.05232744699969771sPASSinput · generic input · output · check report
708accepted exit 0 · 0.11303887900066911sPASSinput · generic input · output · check report
709accepted exit 0 · 0.09232393500133185sPASSinput · generic input · output · check report
710accepted exit 0 · 0.09535322199917573sPASSinput · generic input · output · check report
711accepted exit 0 · 0.0892540969998663sPASSinput · generic input · output · check report
712accepted exit 0 · 0.09707931799857761sPASSinput · generic input · output · check report
713accepted exit 0 · 0.07650776499940548sPASSinput · generic input · output · check report
714accepted exit 0 · 0.09990463699978136sPASSinput · generic input · output · check report
715accepted exit 0 · 0.10715095300110988sPASSinput · generic input · output · check report
716accepted exit 0 · 0.09808441799941647sPASSinput · generic input · output · check report
717accepted exit 0 · 0.06061294800019823sPASSinput · generic input · output · check report
718accepted exit 0 · 0.06476184799976181sPASSinput · generic input · output · check report
719accepted exit 0 · 0.09096578699973179sPASSinput · generic input · output · check report
720accepted exit 0 · 0.06036590899930161sPASSinput · generic input · output · check report
721accepted exit 0 · 0.06560717100001057sPASSinput · generic input · output · check report
722accepted exit 0 · 0.09210605499902158sPASSinput · generic input · output · check report
723accepted exit 0 · 0.0575961289996485sPASSinput · generic input · output · check report
724accepted exit 0 · 0.05543825499989907sPASSinput · generic input · output · check report
725accepted exit 0 · 0.05997086900060822sPASSinput · generic input · output · check report
726accepted exit 0 · 0.05580802099939319sPASSinput · generic input · output · check report
727accepted exit 0 · 0.06267411999942851sPASSinput · generic input · output · check report
728accepted exit 0 · 0.05679072499879112sPASSinput · generic input · output · check report
729accepted exit 0 · 0.05531386700022267sPASSinput · generic input · output · check report
730accepted exit 0 · 0.098808425000243sPASSinput · generic input · output · check report
731accepted exit 0 · 0.09307079499922111sPASSinput · generic input · output · check report
732accepted exit 0 · 0.09745283400116023sPASSinput · generic input · output · check report
733accepted exit 0 · 0.053188152000075206sPASSinput · generic input · output · check report
734accepted exit 0 · 0.05831185100032599sPASSinput · generic input · output · check report
735accepted exit 0 · 0.0970227280013205sPASSinput · generic input · output · check report
736accepted exit 0 · 0.05521040500025265sPASSinput · generic input · output · check report
737accepted exit 0 · 0.0558096859986108sPASSinput · generic input · output · check report
738accepted exit 0 · 0.056411389999993844sPASSinput · generic input · output · check report
739accepted exit 0 · 0.05620833700049843sPASSinput · generic input · output · check report
740accepted exit 0 · 0.06016511300003913sPASSinput · generic input · output · check report
741accepted exit 0 · 0.10304152699973201sPASSinput · generic input · output · check report
742accepted exit 0 · 0.06740481300039391sPASSinput · generic input · output · check report
743accepted exit 0 · 0.06064431500089995sPASSinput · generic input · output · check report
744accepted exit 0 · 0.10080843899959291sPASSinput · generic input · output · check report
745accepted exit 0 · 0.05719333100023505sPASSinput · generic input · output · check report
746accepted exit 0 · 0.08562379100112594sPASSinput · generic input · output · check report
747accepted exit 0 · 0.07187847099885403sPASSinput · generic input · output · check report
748accepted exit 0 · 0.06795192000026873sPASSinput · generic input · output · check report
749accepted exit 0 · 0.0625634309999441sPASSinput · generic input · output · check report
750accepted exit 0 · 0.061283474999072496sPASSinput · generic input · output · check report
751accepted exit 0 · 0.07004010799937532sPASSinput · generic input · output · check report
752accepted exit 0 · 0.0780523160010489sPASSinput · generic input · output · check report
753accepted exit 0 · 0.06276275399977749sPASSinput · generic input · output · check report
754accepted exit 0 · 0.05841640099970391sPASSinput · generic input · output · check report
755accepted exit 0 · 0.06084601499969722sPASSinput · generic input · output · check report
756accepted exit 0 · 0.061120091000702814sPASSinput · generic input · output · check report
757accepted exit 0 · 0.06282966599974316sPASSinput · generic input · output · check report
758accepted exit 0 · 0.08648720600103843sPASSinput · generic input · output · check report
759accepted exit 0 · 0.0591849579996051sPASSinput · generic input · output · check report
760accepted exit 0 · 0.0788114900005894sPASSinput · generic input · output · check report
761accepted exit 0 · 0.05630016299983254sPASSinput · generic input · output · check report
762accepted exit 0 · 0.07089521200032323sPASSinput · generic input · output · check report
763accepted exit 0 · 0.06406892999984848sPASSinput · generic input · output · check report
764accepted exit 0 · 0.06278247199952602sPASSinput · generic input · output · check report
765accepted exit 0 · 0.06253447299968684sPASSinput · generic input · output · check report
766accepted exit 0 · 0.06997139499981131sPASSinput · generic input · output · check report
767accepted exit 0 · 0.05526839200138056sPASSinput · generic input · output · check report
768accepted exit 0 · 0.05753745299989532sPASSinput · generic input · output · check report
769accepted exit 0 · 0.10717222200037213sPASSinput · generic input · output · check report
770accepted exit 0 · 0.07923583099909592sPASSinput · generic input · output · check report
771accepted exit 0 · 0.09719518499878177sPASSinput · generic input · output · check report
772accepted exit 0 · 0.05539498699909018sPASSinput · generic input · output · check report
773accepted exit 0 · 0.05549553700075194sPASSinput · generic input · output · check report
774accepted exit 0 · 0.0557459680003376sPASSinput · generic input · output · check report
775accepted exit 0 · 0.0572148589999415sPASSinput · generic input · output · check report
776accepted exit 0 · 0.08454714599974977sPASSinput · generic input · output · check report
777accepted exit 0 · 0.09996582600069814sPASSinput · generic input · output · check report
778accepted exit 0 · 0.053194431000520126sPASSinput · generic input · output · check report
779accepted exit 0 · 0.09984442399945692sPASSinput · generic input · output · check report
780accepted exit 0 · 0.05691964900142921sPASSinput · generic input · output · check report
781accepted exit 0 · 0.06058547400061798sPASSinput · generic input · output · check report
782accepted exit 0 · 0.05925475200092478sPASSinput · generic input · output · check report
783accepted exit 0 · 0.10308530399925075sPASSinput · generic input · output · check report
784accepted exit 0 · 0.05780311200032884sPASSinput · generic input · output · check report
785accepted exit 0 · 0.08149077099915303sPASSinput · generic input · output · check report
786accepted exit 0 · 0.06419789499886974sPASSinput · generic input · output · check report
787accepted exit 0 · 0.058606205000614864sPASSinput · generic input · output · check report
788accepted exit 0 · 0.05816866900022433sPASSinput · generic input · output · check report
789accepted exit 0 · 0.0553965489998518sPASSinput · generic input · output · check report
790accepted exit 0 · 0.06247711600008188sPASSinput · generic input · output · check report
791accepted exit 0 · 0.054861588001585915sPASSinput · generic input · output · check report
792accepted exit 0 · 0.05445531100122025sPASSinput · generic input · output · check report
793accepted exit 0 · 0.05784443400079908sPASSinput · generic input · output · check report
794accepted exit 0 · 0.05926133600041794sPASSinput · generic input · output · check report
795accepted exit 0 · 0.057322668999404414sPASSinput · generic input · output · check report
796accepted exit 0 · 0.0993031929992867sPASSinput · generic input · output · check report
797accepted exit 0 · 0.0979713199994876sPASSinput · generic input · output · check report
798accepted exit 0 · 0.05827291999958106sPASSinput · generic input · output · check report
799accepted exit 0 · 0.05644475000008242sPASSinput · generic input · output · check report
800accepted exit 0 · 0.05854767900018487sPASSinput · generic input · output · check report
801accepted exit 0 · 0.05567679799969483sPASSinput · generic input · output · check report
802accepted exit 0 · 0.057152669000060996sPASSinput · generic input · output · check report
803accepted exit 0 · 0.0535509519995685sPASSinput · generic input · output · check report
804accepted exit 0 · 0.0972276630000124sPASSinput · generic input · output · check report
805accepted exit 0 · 0.05551381999976002sPASSinput · generic input · output · check report
806accepted exit 0 · 0.06352946599872666sPASSinput · generic input · output · check report
807accepted exit 0 · 0.056537939999543596sPASSinput · generic input · output · check report
808accepted exit 0 · 0.05589501800022845sPASSinput · generic input · output · check report
809accepted exit 0 · 0.05727980699884938sPASSinput · generic input · output · check report
810accepted exit 0 · 0.0580985310007236sPASSinput · generic input · output · check report
811accepted exit 0 · 0.05848420700021961sPASSinput · generic input · output · check report
812accepted exit 0 · 0.056013068999163806sPASSinput · generic input · output · check report
813accepted exit 0 · 0.09216841700072109sPASSinput · generic input · output · check report
814accepted exit 0 · 0.056535563999204896sPASSinput · generic input · output · check report
815accepted exit 0 · 0.058056890999068855sPASSinput · generic input · output · check report
816accepted exit 0 · 0.05271423200065328sPASSinput · generic input · output · check report
817accepted exit 0 · 0.05744329399931303sPASSinput · generic input · output · check report
818accepted exit 0 · 0.055873826999231824sPASSinput · generic input · output · check report
819accepted exit 0 · 0.05718075000004319sPASSinput · generic input · output · check report
820accepted exit 0 · 0.057172573999196175sPASSinput · generic input · output · check report
821accepted exit 0 · 0.05725221399916336sPASSinput · generic input · output · check report
822accepted exit 0 · 0.09710120999989158sPASSinput · generic input · output · check report
823accepted exit 0 · 0.05575679499997932sPASSinput · generic input · output · check report
824accepted exit 0 · 0.08472109900139912sPASSinput · generic input · output · check report
825accepted exit 0 · 0.09629468899947824sPASSinput · generic input · output · check report
826accepted exit 0 · 0.05558479100000113sPASSinput · generic input · output · check report
827accepted exit 0 · 0.1038584929992794sPASSinput · generic input · output · check report
828accepted exit 0 · 0.060610821999944164sPASSinput · generic input · output · check report
829accepted exit 0 · 0.09865090899984352sPASSinput · generic input · output · check report
830accepted exit 0 · 0.05941412600077456sPASSinput · generic input · output · check report
831accepted exit 0 · 0.06149263299994345sPASSinput · generic input · output · check report
832accepted exit 0 · 0.0670174639999459sPASSinput · generic input · output · check report
833accepted exit 0 · 0.10718807500052208sPASSinput · generic input · output · check report
834accepted exit 0 · 0.05613853199974983sPASSinput · generic input · output · check report
835accepted exit 0 · 0.060139041999718756sPASSinput · generic input · output · check report
836accepted exit 0 · 0.10064288099965779sPASSinput · generic input · output · check report
837accepted exit 0 · 0.06022380100148439sPASSinput · generic input · output · check report
838accepted exit 0 · 0.06095024899877899sPASSinput · generic input · output · check report
839accepted exit 0 · 0.058758129000125336sPASSinput · generic input · output · check report
840accepted exit 0 · 0.0756270769998082sPASSinput · generic input · output · check report
841accepted exit 0 · 0.06570220399953541sPASSinput · generic input · output · check report
842accepted exit 0 · 0.05686903800051368sPASSinput · generic input · output · check report
843accepted exit 0 · 0.10163242400085437sPASSinput · generic input · output · check report
844accepted exit 0 · 0.05727617600132362sPASSinput · generic input · output · check report
845accepted exit 0 · 0.058016159000544576sPASSinput · generic input · output · check report
846accepted exit 0 · 0.06267767399913282sPASSinput · generic input · output · check report
847accepted exit 0 · 0.10864310299984936sPASSinput · generic input · output · check report
848accepted exit 0 · 0.06140412300010212sPASSinput · generic input · output · check report
849accepted exit 0 · 0.05824251600097341sPASSinput · generic input · output · check report
850accepted exit 0 · 0.06219734799924481sPASSinput · generic input · output · check report
851accepted exit 0 · 0.058426261000931845sPASSinput · generic input · output · check report
852accepted exit 0 · 0.06467556700044952sPASSinput · generic input · output · check report
853accepted exit 0 · 0.06388879400037695sPASSinput · generic input · output · check report
854accepted exit 0 · 0.05686707200038654sPASSinput · generic input · output · check report
855accepted exit 0 · 0.06241323300127988sPASSinput · generic input · output · check report
856accepted exit 0 · 0.10482654800034652sPASSinput · generic input · output · check report
857accepted exit 0 · 0.10117484699912893sPASSinput · generic input · output · check report
858accepted exit 0 · 0.0637898770000902sPASSinput · generic input · output · check report
859accepted exit 0 · 0.09861690599973372sPASSinput · generic input · output · check report
860accepted exit 0 · 0.0630623260003631sPASSinput · generic input · output · check report
861accepted exit 0 · 0.059832098999322625sPASSinput · generic input · output · check report
862accepted exit 0 · 0.05971600999873772sPASSinput · generic input · output · check report
863accepted exit 0 · 0.10311295700012124sPASSinput · generic input · output · check report
864accepted exit 0 · 0.06360943700019561sPASSinput · generic input · output · check report
865accepted exit 0 · 0.06254343700129539sPASSinput · generic input · output · check report
866accepted exit 0 · 0.05574115899980825sPASSinput · generic input · output · check report
867accepted exit 0 · 0.05933766599991941sPASSinput · generic input · output · check report
868accepted exit 0 · 0.06666984199910075sPASSinput · generic input · output · check report
869accepted exit 0 · 0.06595428400032688sPASSinput · generic input · output · check report
870accepted exit 0 · 0.06056477799938875sPASSinput · generic input · output · check report
871accepted exit 0 · 0.056904981000116095sPASSinput · generic input · output · check report
872accepted exit 0 · 0.07647571999950742sPASSinput · generic input · output · check report
873accepted exit 0 · 0.055886272000861936sPASSinput · generic input · output · check report
874accepted exit 0 · 0.06243660499967518sPASSinput · generic input · output · check report
875accepted exit 0 · 0.10313155000039842sPASSinput · generic input · output · check report
876accepted exit 0 · 0.06502485199962393sPASSinput · generic input · output · check report
877accepted exit 0 · 0.05739103599989903sPASSinput · generic input · output · check report
878accepted exit 0 · 0.09604201999900397sPASSinput · generic input · output · check report
879accepted exit 0 · 0.05621680399963225sPASSinput · generic input · output · check report
880accepted exit 0 · 0.07994034799958172sPASSinput · generic input · output · check report
881accepted exit 0 · 0.060719188000803115sPASSinput · generic input · output · check report
882accepted exit 0 · 0.059543612000197754sPASSinput · generic input · output · check report
883accepted exit 0 · 0.05535531000168703sPASSinput · generic input · output · check report
884accepted exit 0 · 0.05968508800106065sPASSinput · generic input · output · check report
885accepted exit 0 · 0.05886158700013766sPASSinput · generic input · output · check report
886accepted exit 0 · 0.10213817499970901sPASSinput · generic input · output · check report
887accepted exit 0 · 0.05573417300001893sPASSinput · generic input · output · check report
888accepted exit 0 · 0.06229954399896087sPASSinput · generic input · output · check report
889accepted exit 0 · 0.06331273400064674sPASSinput · generic input · output · check report
890accepted exit 0 · 0.10336320299938961sPASSinput · generic input · output · check report
891accepted exit 0 · 0.06909729299877654sPASSinput · generic input · output · check report
892accepted exit 0 · 0.06741217699891422sPASSinput · generic input · output · check report
893accepted exit 0 · 0.056807584998750826sPASSinput · generic input · output · check report
894accepted exit 0 · 0.09826565600087633sPASSinput · generic input · output · check report
895accepted exit 0 · 0.06431719499960309sPASSinput · generic input · output · check report
896accepted exit 0 · 0.10206210900105361sPASSinput · generic input · output · check report
897accepted exit 0 · 0.06172130400045717sPASSinput · generic input · output · check report
898accepted exit 0 · 0.05929950900099357sPASSinput · generic input · output · check report
899accepted exit 0 · 0.07345102499857603sPASSinput · generic input · output · check report
900accepted exit 0 · 0.05734311299966066sPASSinput · generic input · output · check report
901accepted exit 0 · 0.05647465699985332sPASSinput · generic input · output · check report
902accepted exit 0 · 0.0979983400011406sPASSinput · generic input · output · check report
903accepted exit 0 · 0.10426388300038525sPASSinput · generic input · output · check report
904accepted exit 0 · 0.08671704799962754sPASSinput · generic input · output · check report
905accepted exit 0 · 0.07435349700062943sPASSinput · generic input · output · check report
906accepted exit 0 · 0.05680127300001914sPASSinput · generic input · output · check report
907accepted exit 0 · 0.0656438000005437sPASSinput · generic input · output · check report
908accepted exit 0 · 0.05635507199986023sPASSinput · generic input · output · check report
909accepted exit 0 · 0.06281236600079865sPASSinput · generic input · output · check report
910accepted exit 0 · 0.060306175000732765sPASSinput · generic input · output · check report
911accepted exit 0 · 0.05661542199959513sPASSinput · generic input · output · check report
912accepted exit 0 · 0.10080169100001513sPASSinput · generic input · output · check report
913accepted exit 0 · 0.05434239999885904sPASSinput · generic input · output · check report
914accepted exit 0 · 0.055851463999715634sPASSinput · generic input · output · check report
915accepted exit 0 · 0.09408393600097043sPASSinput · generic input · output · check report
916accepted exit 0 · 0.06050367699936032sPASSinput · generic input · output · check report
917accepted exit 0 · 0.056474246999641764sPASSinput · generic input · output · check report
918accepted exit 0 · 0.05342740600099205sPASSinput · generic input · output · check report
919accepted exit 0 · 0.09952284099927056sPASSinput · generic input · output · check report
920accepted exit 0 · 0.053852787999858265sPASSinput · generic input · output · check report
921accepted exit 0 · 0.06202037399998517sPASSinput · generic input · output · check report
922accepted exit 0 · 0.05470826899909298sPASSinput · generic input · output · check report
923accepted exit 0 · 0.09301541199965868sPASSinput · generic input · output · check report
924accepted exit 0 · 0.05567771599999105sPASSinput · generic input · output · check report
925accepted exit 0 · 0.05874044499978481sPASSinput · generic input · output · check report
926accepted exit 0 · 0.052698663999763085sPASSinput · generic input · output · check report
927accepted exit 0 · 0.06426361000012548sPASSinput · generic input · output · check report
928accepted exit 0 · 0.06148366299930785sPASSinput · generic input · output · check report
929accepted exit 0 · 0.062385572000493994sPASSinput · generic input · output · check report
930accepted exit 0 · 0.057885424999767565sPASSinput · generic input · output · check report
931accepted exit 0 · 0.06325693400140153sPASSinput · generic input · output · check report
932accepted exit 0 · 0.05594007000036072sPASSinput · generic input · output · check report
933accepted exit 0 · 0.055580803000339074sPASSinput · generic input · output · check report
934accepted exit 0 · 0.05373893300020427sPASSinput · generic input · output · check report
935accepted exit 0 · 0.05755423099981272sPASSinput · generic input · output · check report
936accepted exit 0 · 0.09741133399984392sPASSinput · generic input · output · check report
937accepted exit 0 · 0.058514329999525216sPASSinput · generic input · output · check report
938accepted exit 0 · 0.05652820800059999sPASSinput · generic input · output · check report
939accepted exit 0 · 0.057244797999373986sPASSinput · generic input · output · check report
940accepted exit 0 · 0.05365196999991895sPASSinput · generic input · output · check report
941accepted exit 0 · 0.05550318699897616sPASSinput · generic input · output · check report
942accepted exit 0 · 0.057257041000411846sPASSinput · generic input · output · check report
943accepted exit 0 · 0.055826105000960524sPASSinput · generic input · output · check report
944accepted exit 0 · 0.10110949999943841sPASSinput · generic input · output · check report
945accepted exit 0 · 0.05250710300060746sPASSinput · generic input · output · check report
946accepted exit 0 · 0.05797893099952489sPASSinput · generic input · output · check report
947accepted exit 0 · 0.05378822599959676sPASSinput · generic input · output · check report
948accepted exit 0 · 0.09974201500153868sPASSinput · generic input · output · check report
949accepted exit 0 · 0.06853081900044344sPASSinput · generic input · output · check report
950accepted exit 0 · 0.06363411399979668sPASSinput · generic input · output · check report
951accepted exit 0 · 0.05515994999950635sPASSinput · generic input · output · check report
952accepted exit 0 · 0.10721958999965864sPASSinput · generic input · output · check report
953accepted exit 0 · 0.06083365900121862sPASSinput · generic input · output · check report
954accepted exit 0 · 0.07469654399938008sPASSinput · generic input · output · check report
955accepted exit 0 · 0.07409734499924525sPASSinput · generic input · output · check report
956accepted exit 0 · 0.10680714299996907sPASSinput · generic input · output · check report
957accepted exit 0 · 0.06825781399857078sPASSinput · generic input · output · check report
958accepted exit 0 · 0.07197466599973268sPASSinput · generic input · output · check report
959accepted exit 0 · 0.07049857499987411sPASSinput · generic input · output · check report
960accepted exit 0 · 0.05383239900038461sPASSinput · generic input · output · check report
961accepted exit 0 · 0.08047756400083017sPASSinput · generic input · output · check report
962accepted exit 0 · 0.09773219800081279sPASSinput · generic input · output · check report
963accepted exit 0 · 0.062427732000287506sPASSinput · generic input · output · check report
964accepted exit 0 · 0.05417293100072129sPASSinput · generic input · output · check report
965accepted exit 0 · 0.06569730099909066sPASSinput · generic input · output · check report
966accepted exit 0 · 0.10091599599945766sPASSinput · generic input · output · check report
967accepted exit 0 · 0.10450494699944102sPASSinput · generic input · output · check report
968accepted exit 0 · 0.07069052699989697sPASSinput · generic input · output · check report
969accepted exit 0 · 0.10047330199995486sPASSinput · generic input · output · check report
970accepted exit 0 · 0.06806693399994401sPASSinput · generic input · output · check report
971accepted exit 0 · 0.05401744799928565sPASSinput · generic input · output · check report
972accepted exit 0 · 0.09554746200046793sPASSinput · generic input · output · check report
973accepted exit 0 · 0.06246485100018617sPASSinput · generic input · output · check report
974accepted exit 0 · 0.06644377700104087sPASSinput · generic input · output · check report
975accepted exit 0 · 0.05980183400060923sPASSinput · generic input · output · check report
976accepted exit 0 · 0.06019412400019064sPASSinput · generic input · output · check report
977accepted exit 0 · 0.06647470500138297sPASSinput · generic input · output · check report
978accepted exit 0 · 0.10222327799965569sPASSinput · generic input · output · check report
979accepted exit 0 · 0.05712778700035415sPASSinput · generic input · output · check report
980accepted exit 0 · 0.10039437300110876sPASSinput · generic input · output · check report
981accepted exit 0 · 0.08712712999840733sPASSinput · generic input · output · check report
982accepted exit 0 · 0.07564359699972556sPASSinput · generic input · output · check report
983accepted exit 0 · 0.06041444800030149sPASSinput · generic input · output · check report
984accepted exit 0 · 0.0551980319996801sPASSinput · generic input · output · check report
985accepted exit 0 · 0.05991965599969262sPASSinput · generic input · output · check report
986accepted exit 0 · 0.08156832799977565sPASSinput · generic input · output · check report
987accepted exit 0 · 0.06089419199997792sPASSinput · generic input · output · check report
988accepted exit 0 · 0.06503831900045043sPASSinput · generic input · output · check report
989accepted exit 0 · 0.055778935999114765sPASSinput · generic input · output · check report
990accepted exit 0 · 0.0658146019995911sPASSinput · generic input · output · check report
991accepted exit 0 · 0.09477188100026979sPASSinput · generic input · output · check report
992accepted exit 0 · 0.05333024300125544sPASSinput · generic input · output · check report
993accepted exit 0 · 0.08904819900089933sPASSinput · generic input · output · check report
994accepted exit 0 · 0.056947025999761536sPASSinput · generic input · output · check report
995accepted exit 0 · 0.06948756099882303sPASSinput · generic input · output · check report
996accepted exit 0 · 0.10211873299886065sPASSinput · generic input · output · check report
997accepted exit 0 · 0.09200324999983422sPASSinput · generic input · output · check report
998accepted exit 0 · 0.061240003999046166sPASSinput · generic input · output · check report
999accepted exit 0 · 0.05302228799882869sPASSinput · 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

  • Explicit single ctrl/done token structure for the checker-selected vector load/store actors.

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":"6410a79f49a8948c0858239ee95ae88854c74469afe91ec0e22773de50fba131","kind":"documentation_input","lines":"3-6","path":"docs/spec-compiler-part-3-mem.md","roles":["applicability"],"text":"This document is the memory-order source of truth for graph-local SCF to\nDataflow lowering. The concrete owner is `loom-lower-graph-memory`; it\nnormalizes supported memory leaves and recursively lowers structured graph\nregions in one traversal.","why":"Names loom-lower-graph-memory as the concrete owner of graph-local SCF to Dataflow memory lowering, fixing the pass under test and the graph-local scope of the sampled inputs."},{"file_sha256":"6410a79f49a8948c0858239ee95ae88854c74469afe91ec0e22773de50fba131","kind":"documentation_input","lines":"23-46","path":"docs/spec-compiler-part-3-mem.md","roles":["input_construction","input_well_formedness"],"text":"The lowering contract covers:\n\n* scalar and fixed-ranked vector forms of canonical `dataflow.load` and\n  `dataflow.store`, including the masked contiguous and gather/scatter forms\n  defined by `docs/spec-dataflow-vectorization.md`;\n* canonical atomic load/store, `dataflow.atomic_rmw`,\n  `dataflow.cmpxchg`, `dataflow.fence`, and volatile access contracts defined\n  by `docs/spec-dataflow-memory-consistency.md`;\n* normalized scalar `memref.load` and `memref.store` leaves over a canonical\n  linear memory space;\n* sequential composition;\n* arbitrary nesting of `scf.if`, source-sequential `scf.for`, and\n  `scf.while`;\n* basic graph-local alias-root partitions;\n* conservative unknown accesses;\n* value, execution, write-frontier, and read-frontier projection through the\n  same structured selectors;\n* pre-mutation rejection of residual `scf.parallel` and `scf.forall` that\n  reach a graph without an already materialized schedule boundary.\n\nThe lowering does not select parallel width, ownership, serialization,\nunrolling, reduction order, or any other schedule policy. Those decisions\nmust be made before graph-region lowering and normalized into supported\nstructured input.","why":"Defines the supported input surface the grammar samples: fixed-ranked vector dataflow.load/store including masked contiguous and gather/scatter forms, normalized scalar memref.load/store leaves over a canonical linear memory space, sequential composition, scf.if/scf.for nesting, and the exclusion of residual scf.parallel/scf.forall and of schedule-policy decisions."},{"file_sha256":"6410a79f49a8948c0858239ee95ae88854c74469afe91ec0e22773de50fba131","kind":"documentation_input","lines":"79-106","path":"docs/spec-compiler-part-3-mem.md","roles":["input_well_formedness"],"text":"A canonical root is found by peeling an accepted side-effect-free memref view\nuntil reaching an explicit storage or boundary root. The finalized surface\nrecognizes:\n\n* a graph memory input, whose root identity comes from its launch binding;\n* a `dataflow.memory.service` result at that binding, which preserves the root\n  of its exact pointer operand while changing only the value-plane pointer into\n  a memory-plane capability;\n* a fresh `memref.alloc` result, whose root is unique for each invocation;\n* a verified side-effect-free view that preserves the source root. The initial\n  accepted set contains `memref.cast`; adding another view form requires one\n  matching root, region, and simulator contract before admission.\n\nWhen graph publication can trace every captured memory capability to a known\nroot, an exact service rooted at a unique thread argument mechanically inherits\nthat argument's `llvm.noalias` fact. If a root is unknown, appears through more\nthan one captured capability, or does not resolve to that argument, publication\nmust omit the fact. The service result does not independently assert aliasing,\nand graph publication does not perform another alias analysis.\n\nGraph launch memory bindings require exact memref capability types. An LLVM\npointer cannot bind a graph memref through a conversion, inferred base, or\nspecial address-space-zero rule. SCF optimization may first prove and\nmaterialize a rooted memref capability plus integer offset, or it may retain\nthe pointer as a value consumed by a `PointerAddressed` memory actor together\nwith an independently bound service capability. Neither path materializes a\ngraph-body bridge. `builtin.unrealized_conversion_cast` is never a canonical\nroot, view, actor, or boundary bridge.","why":"Canonical roots and graph launch bindings: graph memref capability inputs are canonical roots with exact memref types, so the grammar binds every access to graph memref inputs and never to LLVM pointers, conversions, or bridges."},{"file_sha256":"6410a79f49a8948c0858239ee95ae88854c74469afe91ec0e22773de50fba131","kind":"documentation_input","lines":"136-161","path":"docs/spec-compiler-part-3-mem.md","roles":["input_construction","input_well_formedness"],"text":"A memory input binds an established external memref capability through an\nexact graph-launch type match. An LLVM pointer never satisfies a graph memory\nport. A first-class pointer value used by a `PointerAddressed` actor resolves\nthrough the runtime object registry to one object and byte offset independently\nof the service-capability binding.\n\nDistinct graph memory inputs are conservatively may-alias unless explicit\nno-alias evidence distinguishes them. Distinct fresh allocations are\nindependent roots. The analysis does not use address ranges, affine\ndisjointness, bank identity, physical ports, or element-type compatibility to\nsplit a root.\n\n`memref.get_global`, `memref.alloca`, globals, static pointer bases, and\nunrecognized capability producers are not canonical roots. A pre-final\nanalysis may conservatively group an unresolved access while building an event\nnetwork, but finalization rejects any such residual producer rather than\ngranting it an external-memory authority.\n\nA source-origin `llvm.alloca` accepted by the Structured\n`PromoteOrderedBufferToChannel` decision is not an exception to this rule. That\ndecision must remove the complete proved allocation closure before D0; a\nresidual allocation or pointer use remains non-canonical and is rejected.\n\nAccess-to-partition membership is kept in a transient operation map before\nSCF operands are projected. Selector demuxing must not change alias identity.\nThe map is discarded after explicit event edges are emitted.","why":"Distinct graph memory inputs are conservatively may-alias and memref.get_global/memref.alloca/global/static pointer bases are not canonical roots; justifies sampling two may-alias memref inputs and excluding non-root producers."},{"file_sha256":"6410a79f49a8948c0858239ee95ae88854c74469afe91ec0e22773de50fba131","kind":"documentation_input","lines":"245-251","path":"docs/spec-compiler-part-3-mem.md","roles":["applicability","context"],"text":"One vector addressed memory actor is one canonical firing. Its active lanes do\nnot create independent frontier records or an implicit lane order.\n`P(access)` is the conservative union of alias partitions that any active lane\nmay access. A dynamic mask or address vector cannot weaken that set merely\nbecause one observed execution disables a lane. A statically proven all-zero\nmask may be simplified by an ordinary semantics-preserving Dataflow rewrite;\notherwise the firing retains its explicit `ctrl` and `done` obligations.","why":"The sampled output obligation with its governing context: one vector addressed memory actor is one canonical firing that retains its explicit ctrl and done obligations; determines both the selection of vector addressed actors and the ctrl/done assertions."},{"file_sha256":"6410a79f49a8948c0858239ee95ae88854c74469afe91ec0e22773de50fba131","kind":"documentation_input","lines":"470-493","path":"docs/spec-compiler-part-3-mem.md","roles":["input_well_formedness"],"text":"The owner rejects before mutation when:\n\n* raw or unverifiably owned parallel SCF reaches a graph;\n* an effectful or unmodeled nested operation reaches a graph;\n* a residual LLVM load, store, atomicrmw, cmpxchg, fence, memcpy, memmove, or\n  memset remains after\n  normalization and therefore has no explicit completion event;\n* a source memory access has not been normalized to the canonical linear\n  memory-space form required by its scalar or vector Dataflow actor;\n* structured control carries a memref result or memref loop state;\n* the graph entry lacks the leading `none` execution value.\n\nLLVM memcpy, memmove, and memset intrinsics are expanded into their exact\nstructured loop semantics before ownership selection. Supported LLVM\nload/store (including volatile and atomic contracts), `atomicrmw`, `cmpxchg`,\nand `fence` forms are then normalized before recursive region lowering, after\nwhich the same frontier rules apply. LLVM target-specific sync scopes without\na compiler-target owner and atomic accesses without an explicit power-of-two\nsource alignment fail closed. Every residual raw LLVM memory operation fails\nclosed. The finalized-graph gate also rejects residual\n`memref.load`/`memref.store`, `memref.get_global`, raw pointer arithmetic,\npointer-bearing operations, `builtin.unrealized_conversion_cast`, and unknown\nmemory-capability producers. An unsupported effectful operation inside a\nstructured region must likewise fail closed instead of being hoisted.","why":"Pre-mutation rejection list and finalized-graph gate (raw parallel SCF, residual LLVM memory ops, unnormalized accesses, memref results on structured control, missing leading none entry value, residual memref.load/store at the gate); the grammar avoids every rejected construct and always emits the leading none graph-entry value."},{"file_sha256":"f4e60b2e62b496c3714437bd100ab5236540abebd3685dfbd25eeddb37cb7160","kind":"language_definition","lines":"412-527","path":"include/Dataflow/IR/DataflowOps.td","roles":["input_construction","input_well_formedness"],"text":"//===----------------------------------------------------------------------===//\n// Memory Ops\n//\n// Streaming accesses against a memref, orchestrated by none-typed ctrl / done\n// tokens. The memref's element type constrains the element data type or the\n// access vector's element type.\n//===----------------------------------------------------------------------===//\n\n// The canonical memory actors. Each projects the standard MLIR memory effects\n// through the one shared implementation in `DataflowMemoryContracts.cpp`; no\n// actor classifies its own effects. That projection names the memory operand\n// for the addressed access and reads the atomic and volatile facts back from\n// the actor's one aggregate contract to add conservative unbound effects.\nclass Dataflow_MemoryActorOp<string mnemonic, list<Trait> traits = []>\n    : Dataflow_Op<mnemonic, !listconcat(traits, [\n        CanonicalDataflowActor,\n        DeclareOpInterfaceMethods<MemoryEffectsOpInterface>])> {\n  let extraClassDefinition = [{\n    void $cppClass::getEffects(\n        ::llvm::SmallVectorImpl<::mlir::MemoryEffects::EffectInstance>\n            &effects) {\n      ::dataflow::semantics::getMemoryActorEffects(getOperation(), effects);\n    }\n  }];\n}\n\ndef Dataflow_LoadOp : Dataflow_MemoryActorOp<\"load\"> {\n  let summary = \"streaming element, contiguous vector, or gather load\";\n  let description = [{\n    On the simultaneous arrival of an address token and a `%ctrl : none`\n    token, consumes both and fires one memory actor.\n    A result type exactly equal to the memref element type loads one\n    memory element, including when that element type is itself a vector.\n    Otherwise, a fixed-size vector result of any positive rank loads that many\n    elements in canonical row-major lane order, contiguously from a scalar\n    `%addr : index` or, with a same-shape `%addr : vector<...xindex>`, one\n    element per lane from the corresponding element-index address. A vector\n    access requires the memref element type as its vector element type.\n\n    An optional same-shape `i1` mask restricts a vector load to active lanes.\n    Inactive lanes do not access memory and are deterministically zero-filled.\n    After all active lanes retire, the op emits one data token and one `none`\n    token on `%done`.\n\n    The optional `contract` attribute is this actor's single\n    `MemoryAccessContract`; its absence is the canonical plain non-volatile\n    contract.\n  }];\n\n  let arguments = (ins AnyMemRef:$mem, AnyType:$addr, NoneType:$ctrl,\n                       Optional<AnyVectorOfAnyRank>:$mask,\n                       OptionalAttr<Dataflow_MemoryAccessContract>:$contract);\n  let results = (outs AnyType:$data, NoneType:$done);\n\n  let hasCustomAssemblyFormat = 1;\n  let hasVerifier = 1;\n  let builders = [\n    OpBuilder<(ins\n        \"::mlir::Type\":$data,\n        \"::mlir::Type\":$done,\n        \"::mlir::Value\":$mem,\n        \"::mlir::Value\":$addr,\n        \"::mlir::Value\":$ctrl)>,\n    OpBuilder<(ins\n        \"::mlir::Value\":$mem,\n        \"::mlir::Value\":$addr,\n        \"::mlir::Value\":$ctrl)>\n  ];\n}\n\ndef Dataflow_StoreOp : Dataflow_MemoryActorOp<\"store\"> {\n  let summary = \"streaming element, contiguous vector, or scatter store\";\n  let description = [{\n    On the simultaneous arrival of an address token, a `%data` value\n    and a `%ctrl : none`, consumes all three and fires one memory actor.\n    Data whose type exactly equals the memref element type writes one\n    memory element, including when that element type is itself a vector.\n    Otherwise, fixed-size vector data of any positive rank writes that many\n    elements in canonical row-major lane order, contiguously from a scalar\n    `%addr : index` or, with a same-shape `%addr : vector<...xindex>`, one\n    element per lane. A vector access requires the memref element type as its\n    vector element type.\n\n    An optional same-shape `i1` mask restricts a vector store to active lanes.\n    Inactive lanes do not access memory. After all active lanes retire, the op\n    emits one `none` token on `%done`.\n\n    The optional `contract` attribute is this actor's single\n    `MemoryAccessContract`; its absence is the canonical plain non-volatile\n    contract.\n  }];\n\n  let arguments = (ins AnyMemRef:$mem, AnyType:$addr, AnyType:$data,\n                       NoneType:$ctrl,\n                       Optional<AnyVectorOfAnyRank>:$mask,\n                       OptionalAttr<Dataflow_MemoryAccessContract>:$contract);\n  let results = (outs NoneType:$done);\n\n  let hasCustomAssemblyFormat = 1;\n  let hasVerifier = 1;\n  let builders = [\n    OpBuilder<(ins\n        \"::mlir::Type\":$done,\n        \"::mlir::Value\":$mem,\n        \"::mlir::Value\":$addr,\n        \"::mlir::Value\":$data,\n        \"::mlir::Value\":$ctrl)>,\n    OpBuilder<(ins\n        \"::mlir::Value\":$mem,\n        \"::mlir::Value\":$addr,\n        \"::mlir::Value\":$data,\n        \"::mlir::Value\":$ctrl)>\n  ];\n}","why":"TableGen definition of the canonical memory actors dataflow.load and dataflow.store: operand order (mem, addr, ctrl:none, optional mask) and result order (data, done:none / done:none), which fixes both the gather/scatter input spelling and the operand/result positions read by the postcondition."},{"file_sha256":"f4e60b2e62b496c3714437bd100ab5236540abebd3685dfbd25eeddb37cb7160","kind":"language_definition","lines":"839-950","path":"include/Dataflow/IR/DataflowOps.td","roles":["input_well_formedness"],"text":"def Dataflow_GraphOp : Dataflow_Op<\"graph\", [\n    IsolatedFromAbove,\n    HasParent<\"::mlir::ModuleOp\">,\n    SingleBlockImplicitTerminator<\"GraphReturnOp\">,\n    FunctionOpInterface,\n    RecursiveMemoryEffects,\n    DeclareOpInterfaceMethods<RegionKindInterface>\n]> {\n  let summary = \"Symbol-bearing function-like SpatialCore graph definition\";\n  let description = [{\n    Module-scope, function-like callable holding the SpatialCore body\n    of a leaf dataflow graph. It does not itself execute; one or more\n    `dataflow.graph.launch` ops materialise launches of it inside the\n    body of a `dataflow.thread` definition.\n\n    `function_type` contains only application payload ports. Normalized\n    `input_segments` and `result_segments` classify those payloads as value,\n    stream, and memory ports. The body's distinguished leading `none` block\n    argument is the invocation start protocol endpoint, while launch `done`\n    is derived exclusively from `dataflow.graph.return.complete`; neither is\n    stored in the function type.\n\n    This is the only canonical graph definition surface.\n  }];\n\n  let arguments = (ins\n      SymbolNameAttr:$sym_name,\n      TypeAttrOf<FunctionType>:$function_type,\n      DenseI32ArrayAttr:$input_segments,\n      DenseI32ArrayAttr:$result_segments,\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        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    ::mlir::BlockArgument getStart();\n    ::llvm::ArrayRef<int32_t> getInputSegmentSizes();\n    ::llvm::ArrayRef<int32_t> getResultSegmentSizes();\n    GraphPortKind getInputPortKind(unsigned index);\n    GraphPortKind getResultPortKind(unsigned index);\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      if (entry.getNumArguments() != inputs.size() + 1)\n        return emitOpError(\"entry block must have one start argument plus \")\n               << inputs.size() << \" application inputs\";\n      if (!::llvm::isa<::mlir::NoneType>(entry.getArgument(0).getType()))\n        return emitOpError(\"entry block argument #0 must be start type none\");\n      for (size_t i = 0, e = inputs.size(); i < e; ++i) {\n        if (entry.getArgument(i + 1).getType() != inputs[i])\n          return emitOpError(\"entry block argument #\")\n                 << (i + 1) << \" type \"\n                 << entry.getArgument(i + 1).getType()\n                 << \" must match function input type \" << inputs[i];\n      }\n      return ::mlir::success();\n    }\n  }];\n}\n\ndef Dataflow_GraphReturnOp : Dataflow_Op<\"graph.return\", [\n    AttrSizedOperandSegments,\n    Terminator,\n    ParentOneOf<[\"::dataflow::GraphOp\"]>,\n    Pure\n]> {\n  let summary = \"Terminator for a dataflow.graph body\";\n  let description = [{\n    Structurally declares the enclosing graph's value, stream, and memory\n    outputs together with its mandatory retirement frontier. `complete` is\n    an unordered all-of set of one or more `none` values; the launch `done`\n    event is derived from that set and is not itself a return operand.\n\n    The compact assembly form `%complete, %values... : none, types...` is\n    retained for the common case with one completion witness and no stream\n    or memory outputs. Other shapes print all four named segments.\n  }];\n\n  let arguments = (ins\n      Variadic<AnyType>:$values,\n      Variadic<AnyType>:$streams,\n      Variadic<AnyType>:$memories,\n      Variadic<NoneType>:$complete);\n\n  let hasCustomAssemblyFormat = 1;\n\n  let skipDefaultBuilders = 1;","why":"dataflow.graph and dataflow.graph.return definitions: the leading none start block argument, the input_segments/result_segments value-stream-memory classification, and the compact return form used by every sampled graph."},{"file_sha256":"8df97a8d593919ad549cd11f13281c367f306cb3dc073d1a2793b28f8182db2a","kind":"verifier","lines":"36-59,116-146","path":"lib/Frontend/Lowering/RankedMemRefLowering.cpp","roles":["input_well_formedness"],"text":"::mlir::LogicalResult checkRankedVectorTransfer(::mlir::Operation *operation,\n                                                ::mlir::MemRefType memory,\n                                                ::mlir::ValueRange indices,\n                                                ::mlir::VectorType vector,\n                                                ::mlir::AffineMap permutation,\n                                                ::mlir::ArrayAttr inBounds,\n                                                unsigned indexBits) {\n  ::llvm::SmallVector<std::int64_t> strides;\n  std::int64_t offset = 0;\n  if (vector.isScalable() || vector.getRank() != 1 || memory.getRank() != 1 ||\n      memory.getElementType() != vector.getElementType() ||\n      ::mlir::failed(memory.getStridesAndOffset(strides, offset)) ||\n      strides.size() != 1 || strides.front() != 1 ||\n      permutation !=\n          ::mlir::AffineMap::getMultiDimIdentityMap(1, operation->getContext()))\n    return operation->emitError(\n        \"loom-lower-graph-memory: vector transfer requires a fixed rank-one \"\n        \"minor-identity access over a unit-stride scalar memref\");\n  if (!allTransferDimensionsInBounds(inBounds))\n    return operation->emitError(\n        \"loom-lower-graph-memory: vector transfer requires every lane to be \"\n        \"proven in-bounds\");\n  return checkRankedMemRefAccess(operation, memory, indices, indexBits);\ncheckRankedVectorTransferRead(::mlir::vector::TransferReadOp read,\n                              unsigned indexBits) {\n  auto memory = ::llvm::dyn_cast<::mlir::MemRefType>(read.getBase().getType());\n  if (!memory)\n    return read.emitOpError(\n        \"loom-lower-graph-memory: vector read requires a ranked memref base\");\n  const bool paddingCanBeObserved =\n      read.getMask() && !resultIsMaskGuarded(read);\n  if (paddingCanBeObserved &&\n      !::mlir::matchPattern(read.getPadding(), ::mlir::m_Zero()))\n    return read.emitOpError(\n        \"loom-lower-graph-memory: observable vector read padding must be \"\n        \"zero\");\n  return checkRankedVectorTransfer(\n      read, memory, read.getIndices(), read.getVectorType(),\n      read.getPermutationMap(), read.getInBounds(), indexBits);\n}\n\n::mlir::LogicalResult\ncheckRankedVectorTransferWrite(::mlir::vector::TransferWriteOp write,\n                               unsigned indexBits) {\n  auto memory = ::llvm::dyn_cast<::mlir::MemRefType>(write.getBase().getType());\n  if (!memory || write.getResult())\n    return write.emitOpError(\n        \"loom-lower-graph-memory: vector write requires a ranked memref base\");\n  return checkRankedVectorTransfer(\n      write, memory, write.getIndices(), write.getVectorType(),\n      write.getPermutationMap(), write.getInBounds(), indexBits);\n}\n\n::mlir::Value buildExactLinearIndex(::mlir::OpBuilder &builder,","why":"Acceptance conditions for vector transfers in a graph: fixed rank-one minor-identity access over a unit-stride rank-one memref whose element type equals the vector element type, every lane proven in-bounds, and zero padding when masked padding is observable; the grammar emits exactly this shape."},{"file_sha256":"4295a7f0089a5b35f7f7f538032b31f51ca3966d4279faa030a2d493a8f76385","kind":"implementation","lines":"1390-1440","path":"lib/Frontend/Lowering/GraphRegionLowering.cpp","roles":["applicability"],"text":"void lowerVectorRead(::mlir::vector::TransferReadOp read,\n                       ::mlir::Value execution, MemoryState &memory) {\n    ::llvm::SmallVector<unsigned, 4> membership = partitionsFor(read);\n    ::mlir::Value ctrl = readControl(read, execution, memory);\n    setInsertionPoint(read.getLoc());\n    auto memoryType =\n        ::llvm::cast<::mlir::MemRefType>(read.getBase().getType());\n    ::mlir::Value address = ::loom::lowering::detail::buildExactLinearIndex(\n        builder, read.getLoc(), memoryType, read.getIndices(), execution);\n    auto lowered = ::dataflow::LoadOp::create(\n        builder, read.getLoc(), read.getVectorType(), builder.getNoneType(),\n        read.getBase(), address, ctrl, read.getMask(), ::mlir::Attribute{});\n    partitionsByAccess.try_emplace(lowered, std::move(membership));\n    read.getResult().replaceAllUsesWith(lowered.getData());\n    updateReadFrontiers(lowered, lowered.getDone(), memory);\n    read.erase();\n  }\n\n  void lowerVectorWrite(::mlir::vector::TransferWriteOp write,\n                        ::mlir::Value execution, MemoryState &memory) {\n    ::llvm::SmallVector<unsigned, 4> membership = partitionsFor(write);\n    ::mlir::Value ctrl = writeControl(write, execution, memory);\n    setInsertionPoint(write.getLoc());\n    auto memoryType =\n        ::llvm::cast<::mlir::MemRefType>(write.getBase().getType());\n    ::mlir::Value address = ::loom::lowering::detail::buildExactLinearIndex(\n        builder, write.getLoc(), memoryType, write.getIndices(), execution);\n    auto lowered = ::dataflow::StoreOp::create(\n        builder, write.getLoc(), builder.getNoneType(), write.getBase(),\n        address, write.getValueToStore(), ctrl, write.getMask(),\n        ::mlir::Attribute{});\n    partitionsByAccess.try_emplace(lowered, std::move(membership));\n    updateWriteFrontiers(lowered, lowered.getDone(), memory);\n    write.erase();\n  }\n\n  void lowerDataflowLoad(::dataflow::LoadOp load, ::mlir::Value execution,\n                         MemoryState &memory) {\n    load.getCtrlMutable().assign(readControl(load, execution, memory));\n    updateReadFrontiers(load, load.getDone(), memory);\n    if (load->getBlock() != &entry)\n      load->moveBefore(anchor);\n  }\n\n  void lowerDataflowStore(::dataflow::StoreOp store, ::mlir::Value execution,\n                          MemoryState &memory) {\n    store.getCtrlMutable().assign(writeControl(store, execution, memory));\n    updateWriteFrontiers(store, store.getDone(), memory);\n    if (store->getBlock() != &entry)\n      store->moveBefore(anchor);\n  }","why":"Shows that vector.transfer_read/transfer_write become vector-addressed dataflow.load/store actors and that pre-existing dataflow.load/store actors only get their ctrl reassigned, establishing which output operations the sampled obligation governs."},{"file_sha256":"11d4b44ce36afb532b1ba720012841c38babad2962aadee232609a04fc28dbc4","kind":"test","lines":"1-23","path":"test/raise/scf-to-dfg-memory-frontier.mlir","roles":["input_construction"],"text":"// RUN: loom-raise-opt --split-input-file --loom-lower-graph-memory %s | FileCheck %s\n\n// CHECK-LABEL: dataflow.graph private @frontier_straight\n// CHECK: %[[R0:.*]], %[[D0:.*]] = dataflow.load %arg4[%arg1] %arg0 : memref<16xi32>\n// CHECK: %[[R1:.*]], %[[D1:.*]] = dataflow.load %arg4[%arg2] %arg0 : memref<16xi32>\n// CHECK: %[[WRITE:.*]] = dataflow.store %arg4[%arg1] %arg3 [[READS:%[^# ]+]]#0 : memref<16xi32>\n// CHECK: %[[R2:.*]], %[[D2:.*]] = dataflow.load %arg4[%arg2] %[[WRITE]] : memref<16xi32>\n// CHECK: [[READS]]:2 = dataflow.sync %[[D0]], %[[D1]] : (none, none) -> (none, none)\n// CHECK: %[[RB:.*]], %[[DB:.*]] = dataflow.load %arg5[%arg1] %[[WRITE]] : memref<16xi32>\n// CHECK: %[[RETIRE:.*]]:2 = dataflow.sync %[[D2]], %[[DB]] : (none, none) -> (none, none)\n// CHECK: dataflow.graph.return %[[RETIRE]]#0 : none\ndataflow.graph private @frontier_straight(\n    %start: none, %i: index, %j: index, %value: i32,\n    %a: memref<16xi32>, %b: memref<16xi32>) -> ()\n    attributes {input_segments = array<i32: 3, 0, 2>,\n                result_segments = array<i32: 0, 0, 0>} {\n  %r0, %read0_done = dataflow.load %a[%i] %start : memref<16xi32>\n  %r1, %read1_done = dataflow.load %a[%j] %start : memref<16xi32>\n  %write_done = dataflow.store %a[%i] %value %start : memref<16xi32>\n  %r2, %read2_done = dataflow.load %a[%j] %start : memref<16xi32>\n  %rb = memref.load %b[%i] : memref<16xi32>\n  dataflow.graph.return %start : none\n}","why":"Non-normative evidence for the accepted module spelling under this pass: a private dataflow.graph with a leading none start argument, may-alias memref inputs, memory leaves in the body, and dataflow.graph.return."},{"file_sha256":"d161de7a4a08f9902236e14b73808fc9caeadf88e4b2f2e15d61000cb648ebb0","kind":"example","lines":"69-80","path":"test/raise/scf-to-dfg-graph-memory.mlir","roles":["input_construction"],"text":"//--- ranked.mlir\nmodule {\n  dataflow.graph private @rank3_row_major(\n      %start: none, %i: index, %j: index, %k: index,\n      %memory: memref<3x5x7xf32>) -> ()\n      attributes {input_segments = array<i32: 3, 0, 1>,\n                  result_segments = array<i32: 0, 0, 0>} {\n    %value = memref.load %memory[%i, %j, %k] : memref<3x5x7xf32>\n    memref.store %value, %memory[%i, %j, %k] : memref<3x5x7xf32>\n    dataflow.graph.return %start : none\n  }\n}","why":"One accepted spelling of the graph attribute dictionary (input_segments/result_segments arrays) used verbatim in shape by the generated graphs."},{"file_sha256":"2eff2258b85959a00302a5bee9240d30ea330a85061eaedae51a3fad2f9e37f4","kind":"example","lines":"46-64","path":"test/dataflow/unit/load/valid.mlir","roles":["input_construction"],"text":"// CHECK-LABEL: @load_masked_vector_i32\nfunc.func @load_masked_vector_i32(\n    %mem: memref<10xi32>, %addr: index, %mask: vector<4xi1>, %ctrl: none)\n    -> (vector<4xi32>, none) {\n  // CHECK: dataflow.load %{{.*}}[%{{.*}}] %{{.*}} mask %{{.*}} : memref<10xi32>, vector<4xi32>\n  %data, %done = dataflow.load %mem[%addr] %ctrl mask %mask\n      : memref<10xi32>, vector<4xi32>\n  return %data, %done : vector<4xi32>, none\n}\n\n// CHECK-LABEL: @load_gather_i32\nfunc.func @load_gather_i32(\n    %mem: memref<10xi32>, %addr: vector<4xindex>, %mask: vector<4xi1>,\n    %ctrl: none) -> (vector<4xi32>, none) {\n  // CHECK: dataflow.load %{{.*}}[%{{.*}}] %{{.*}} mask %{{.*}} : memref<10xi32>, vector<4xindex>, vector<4xi32>\n  %data, %done = dataflow.load %mem[%addr] %ctrl mask %mask\n      : memref<10xi32>, vector<4xindex>, vector<4xi32>\n  return %data, %done : vector<4xi32>, none\n}","why":"Accepted textual spelling of masked contiguous and gather dataflow.load, used for the gather alternative emitted directly by the grammar."},{"file_sha256":"3b048f487c94803ff885832a4d9ade824e1f58c396e2838dac0cd0628c145333","kind":"example","lines":"46-64","path":"test/dataflow/unit/store/valid.mlir","roles":["input_construction"],"text":"// CHECK-LABEL: @store_masked_vector_i32\nfunc.func @store_masked_vector_i32(\n    %mem: memref<10xi32>, %addr: index, %data: vector<4xi32>,\n    %mask: vector<4xi1>, %ctrl: none) -> none {\n  // CHECK: dataflow.store %{{.*}}[%{{.*}}] %{{.*}} %{{.*}} mask %{{.*}} : memref<10xi32>, vector<4xi32>\n  %done = dataflow.store %mem[%addr] %data %ctrl mask %mask\n      : memref<10xi32>, vector<4xi32>\n  return %done : none\n}\n\n// CHECK-LABEL: @store_multi_rank_scatter\nfunc.func @store_multi_rank_scatter(\n    %mem: memref<10xi32>, %addr: vector<2x3xindex>, %data: vector<2x3xi32>,\n    %mask: vector<2x3xi1>, %ctrl: none) -> none {\n  // CHECK: dataflow.store %{{.*}}[%{{.*}}] %{{.*}} %{{.*}} mask %{{.*}} : memref<10xi32>, vector<2x3xindex>, vector<2x3xi32>\n  %done = dataflow.store %mem[%addr] %data %ctrl mask %mask\n      : memref<10xi32>, vector<2x3xindex>, vector<2x3xi32>\n  return %done : none\n}","why":"Accepted textual spelling of masked contiguous and scatter dataflow.store, used for the scatter alternative emitted directly by the grammar."}],"primary_bundle_sha256":"82b7fabd40d78b956f5f6ff6dffecb7e5318aa105f1072eb2a3c349cab37de52","project":"PolyArch/loom","revision":"48615bc5925ef4b9db8b4550b5d4322933cf4b7b","schema":"spectriad.authoring-context/v1","selection_sha256":"c33a8a8330f1ceb49ed04550b36e928f86ea79b389eb91a24fb818168e05b833"}
generator source-blind backtranslation · sessions/reverse-generator/session-evidence/result-events.json
[
  {
    "api_error_status": null,
    "duration_api_ms": 45902,
    "duration_ms": 45956,
    "fast_mode_disabled_reason": "sdk_opt_in_required",
    "fast_mode_state": "off",
    "first_content_frame_ms": 1525,
    "is_error": false,
    "modelUsage": {
      "claude-opus-5": {
        "cacheCreationInputTokens": 4740,
        "cacheReadInputTokens": 0,
        "canonicalModel": "claude-opus-5",
        "contextWindow": 1000000,
        "costBasis": "list",
        "costUSD": 0.13253500000000001,
        "inputTokens": 2,
        "maxOutputTokens": 64000,
        "outputTokens": 3405,
        "provider": "firstParty",
        "thinkingTokens": 618,
        "webSearchRequests": 0
      }
    },
    "num_turns": 1,
    "permission_denials": [],
    "queued_turn_count": 0,
    "result": "## Preconditions\n\n1. Every emitted program is a single MLIR `module { ... }` containing only `dataflow.graph` definitions at the top level and nothing else.\n2. Each graph is declared as `dataflow.graph private @graph_<n>` with an empty result list `-> ()`, so no graph returns values.\n3. Every graph's entry block takes a `none`-typed token operand named `%start` as its first parameter, and the graph body is terminated by `dataflow.graph.return %start : none`, i.e. the incoming token is threaded straight to the terminator.\n4. Each graph carries both a `input_segments` and a `result_segments` `array<i32: ...>` attribute whose entries sum consistently with the declared operands and results (five non-token scalar/vector inputs, zero of the middle class, two memref inputs; zero results of every class).\n5. Memref-typed graph parameters are plain statically shaped `memref<16xi32>` capability inputs supplied by the graph signature; the body never allocates, declares, or otherwise materializes memory (`memref.alloca`, `memref.get_global`, globals, pointers, `unrealized_conversion_cast` are all absent).\n6. Every memory operation in a body addresses one of the graph's own memref parameters by name; there are no cross-graph or externally defined memory references.\n7. Vector memory traffic occurs only as a matched pair: a `vector.transfer_read` producing a value that is immediately consumed as the value operand of a following `vector.transfer_write`; a read never appears without its dependent write and the write's data operand is never an unrelated SSA value.\n8. Every `vector.transfer_read`/`vector.transfer_write` is rank-one, uses the single index operand `%i`, carries `{in_bounds = [true]}`, and transfers exactly `vector<4xi32>` to/from `memref<16xi32>` \u2014 no transposing permutation maps, no multi-dimensional indices, no out-of-bounds transfers.\n9. A `vector.transfer_read` supplies a scalar padding operand (`%pad`) of the memref element type, and the padding value is available in the graph before any transfer that uses it.\n10. Masking on a transfer pair is all-or-nothing: either both the read and the write carry the `vector<4xi1>` mask operand `%m`, or neither does; a mixed masked-read/unmasked-write pair never occurs.\n11. The mask operand's vector length matches the transfer vector length (4 lanes), and the mask is a graph parameter, not a locally computed value.\n12. Scalar memory traffic likewise occurs only as a store followed by a load, both normalized to the same single index `%i` on the same memref and with element type `i32`; the stored value is the graph's `%val` parameter.\n13. Gather/scatter traffic is expressed exclusively through `dataflow.load` / `dataflow.store` actors, each taking a `vector<4xindex>` address vector, the `%start` token, and a `mask %m` operand; the gathered result is the value operand of the paired scatter, making the scatter data-dependent on the load.\n14. `dataflow.load` yields two results (a data vector and a dependency/token result) and `dataflow.store` yields one result, and these results are bound to distinct SSA names.\n15. Nesting of memory leaves is permitted only inside `scf.if` and `scf.for`; no `scf.parallel`, `scf.forall`, `scf.while`, or LLVM-dialect memory operation appears anywhere.\n16. `scf.if` regions used here are value-free: the condition is an `i1` graph parameter, there is no `else` region, and no results are yielded.\n17. `scf.for` loops are value-free as well: no `iter_args`, no yielded results, and lower bound, upper bound, and step are `index`-typed SSA values defined by constants dominating the loop in the same block.\n18. All SSA names defined within a graph body are unique, and every use of a value is dominated by its definition (constants for a loop precede that loop, a transfer read precedes its write, a store precedes the matching load, a gather precedes its scatter).\n19. Each graph body contains at least one vector-addressed memory access (a transfer pair, a `dataflow.load`/`store` pair, or one of these nested in a region), so no graph is free of the governed construct.\n\n## Sampling conventions\n\n1. The module holds either one or two graphs, never zero and never more than two.\n2. Graphs are named by position, `@graph_0` and `@graph_1`, using a counter that starts at zero and increments per graph.\n3. Every graph uses one fixed, identical signature \u2014 `%start: none, %i: index, %c: i1, %m: vector<4xi1>, %av: vector<4xindex>, %val: i32, %a: memref<16xi32>, %b: memref<16xi32>` \u2014 rather than varying arity, types, or parameter order.\n4. The attribute preamble is a constant: `input_segments = array<i32: 5, 0, 2>` and `result_segments = array<i32: 0, 0, 0>` on every graph.\n5. Each body opens with a fixed constant preamble `%pad = arith.constant 0 : i32`, so the transfer padding value is always the integer zero and is emitted even when no unmasked/masked read follows.\n6. Exactly one leading statement is emitted, chosen from transfer pair, gather/scatter pair, `scf.if`, or `scf.for` \u2014 the scalar store/load pair is deliberately never chosen as the leading statement.\n7. After the leading statement, between zero and four further statements are emitted, each chosen freely from transfer pair, gather/scatter pair, scalar pair, `scf.if`, or `scf.for`; the maximum body length is therefore five statements plus the constant preamble and terminator.\n8. Memref element type and shape are fixed at `memref<16xi32>`, and the vector shape is fixed at four lanes (`vector<4xi32>`, `vector<4xi1>`, `vector<4xindex>`); no other widths, ranks, or element types are sampled.\n9. All memory accesses use the single graph parameter `%i` as the (only) index, even inside `scf.for`, whose induction variable is never used as an address.\n10. Masking of a transfer pair is sampled as a binary choice per pair; both the fully masked and fully unmasked forms are produced, and the mask, when present, is always the parameter `%m` rather than a constructed mask.\n11. The source and destination memrefs of a transfer pair are independently chosen from `{%a, %b}`, so read-and-write-to-the-same-memref pairs as well as `%a`\u2192`%b` and `%b`\u2192`%a` pairs all occur.\n12. The scalar pair chooses one memref from `{%a, %b}` and uses it for both the store and the load, never crossing between the two.\n13. The gather/scatter pair is fixed in its operands: it always loads from `%a` and stores to `%b`, always uses the address vector `%av`, and is always masked with `%m` \u2014 unmasked or `%b`\u2192`%a` gather/scatter forms are never emitted.\n14. A single per-graph counter supplies the numeric suffix for every named entity (`%v<k>`, `%s<k>`, `%g<k>`/`%gd<k>`/`%sc<k>`, `%lb<k>`/`%ub<k>`/`%sp<k>`/`%k<k>`), incrementing once per statement or nested pair, which guarantees unique names without reusing a per-kind counter.\n15. `scf.if` regions contain exactly one transfer pair and nothing else, and the condition is always the parameter `%c`; scalar pairs, gather pairs, and further nesting never appear inside an `if`.\n16. `scf.for` bodies likewise contain exactly one transfer pair and nothing else, so nesting depth never exceeds one region inside a graph body.\n17. Loop trip counts are fixed by a constant triple emitted immediately before each loop \u2014 lower bound `0`, upper bound `4`, step `1` \u2014 matching the vector lane count and keeping loops finite.\n18. The loop induction variable `%k<k>` is bound but unused in the loop body, exercising the loop-nesting shape without introducing loop-varying addresses.\n19. Indentation and formatting are fixed: two spaces for graph headers, four for body statements, with the multi-line signature and attribute block broken at constant positions.",
    "result_index": 0,
    "session_id": "f199b8a2-d994-4064-ae20-7b693fd0a0bb",
    "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": 55,
    "total_cost_usd": 0.13253500000000001,
    "ttft_ms": 9932,
    "ttft_stream_ms": 1081,
    "type": "result",
    "usage": {
      "cache_creation": {
        "ephemeral_1h_input_tokens": 4740,
        "ephemeral_5m_input_tokens": 0
      },
      "cache_creation_input_tokens": 4740,
      "cache_read_input_tokens": 0,
      "inference_geo": "not_available",
      "input_tokens": 2,
      "iterations": [],
      "output_tokens": 3405,
      "output_tokens_details": {
        "thinking_tokens": 618
      },
      "server_tool_use": {
        "web_fetch_requests": 0,
        "web_search_requests": 0
      },
      "service_tier": "standard",
      "speed": "standard"
    },
    "uuid": "1f059237-d372-47bc-b781-edf1b16accf9"
  }
]
postcondition source-blind backtranslation · sessions/reverse-postcondition/session-evidence/result-events.json
[
  {
    "api_error_status": null,
    "duration_api_ms": 13976,
    "duration_ms": 14000,
    "fast_mode_disabled_reason": "sdk_opt_in_required",
    "fast_mode_state": "off",
    "first_content_frame_ms": 1872,
    "is_error": false,
    "modelUsage": {
      "claude-opus-5": {
        "cacheCreationInputTokens": 5973,
        "cacheReadInputTokens": 0,
        "canonicalModel": "claude-opus-5",
        "contextWindow": 1000000,
        "costBasis": "list",
        "costUSD": 0.08454,
        "inputTokens": 2,
        "maxOutputTokens": 64000,
        "outputTokens": 992,
        "provider": "firstParty",
        "thinkingTokens": 417,
        "webSearchRequests": 0
      }
    },
    "num_turns": 1,
    "permission_denials": [],
    "queued_turn_count": 0,
    "result": "This postcondition looks only at the subject's output program, never at the input, and it scans every operation at every nesting depth of that program. It first selects two groups by name and type shape: `dataflow.load` operations whose second operand has type kind `vector`, or whose first result is a vector type differing from the first operand type's element type; and `dataflow.store` operations whose second operand has type kind `vector`, or whose third operand is a vector type differing from the first operand type's element type. Every selected load must then satisfy four things: it has at least three operands with the third one typed `none`, it has exactly one `none`-typed operand in total, it has exactly two results with the second one typed `none`, and it has exactly one `none`-typed result in total. Every selected store must likewise have at least four operands with the fourth typed `none`, exactly one `none`-typed operand overall, exactly one result, that result typed `none`, and exactly one `none`-typed result overall. A load or store is rejected if it is missing the `none` operand at the required position, carries a second `none` operand anywhere, has the wrong result count, or produces a result that is not `none` at the required position or an extra `none` result.\n\nAll values consulted come from operand and result positions, their types, type `kind`, and a vector/memref-style `element_type` projection; no attributes, symbols, regions, or block arguments are read, and no counts are compared against the input program. Operations of any other name, and loads or stores whose operand and result types do not match the vector-shaped selection predicate, are never examined and are neither accepted nor rejected by the asserts. If the output contains no operation matching either selection predicate, both `forall` blocks range over empty sequences and the postcondition holds vacuously, so an output with no `dataflow.load` or `dataflow.store` at all passes.",
    "result_index": 0,
    "session_id": "27b13e86-411a-4e8c-acbe-5a7518049645",
    "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": 25,
    "total_cost_usd": 0.08454,
    "ttft_ms": 6352,
    "ttft_stream_ms": 1321,
    "type": "result",
    "usage": {
      "cache_creation": {
        "ephemeral_1h_input_tokens": 5973,
        "ephemeral_5m_input_tokens": 0
      },
      "cache_creation_input_tokens": 5973,
      "cache_read_input_tokens": 0,
      "inference_geo": "not_available",
      "input_tokens": 2,
      "iterations": [],
      "output_tokens": 992,
      "output_tokens_details": {
        "thinking_tokens": 417
      },
      "server_tool_use": {
        "web_fetch_requests": 0,
        "web_search_requests": 0
      },
      "service_tier": "standard",
      "speed": "standard"
    },
    "uuid": "80b61ad9-8ac2-452d-af17-6261fb6617b3"
  }
]

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