kumi 0.0.25 → 0.0.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +9 -0
  3. data/README.md +70 -71
  4. data/data/functions/agg/boolean.yaml +6 -2
  5. data/data/functions/agg/numeric.yaml +32 -16
  6. data/data/functions/agg/string.yaml +4 -3
  7. data/data/functions/core/arithmetic.yaml +62 -14
  8. data/data/functions/core/boolean.yaml +12 -6
  9. data/data/functions/core/comparison.yaml +25 -13
  10. data/data/functions/core/constructor.yaml +16 -8
  11. data/data/functions/core/select.yaml +3 -1
  12. data/data/functions/core/stencil.yaml +14 -5
  13. data/data/functions/core/string.yaml +9 -4
  14. data/data/kernels/ruby/agg/numeric.yaml +1 -1
  15. data/docs/UNSAT_DETECTION.md +83 -0
  16. data/golden/array_element/expected/nast.txt +1 -1
  17. data/golden/array_element/expected/schema_ruby.rb +1 -1
  18. data/golden/array_index/expected/nast.txt +7 -7
  19. data/golden/array_index/expected/schema_ruby.rb +1 -1
  20. data/golden/array_operations/expected/nast.txt +2 -2
  21. data/golden/array_operations/expected/schema_ruby.rb +1 -1
  22. data/golden/array_operations/expected/snast.txt +3 -3
  23. data/golden/cascade_logic/expected/schema_ruby.rb +1 -1
  24. data/golden/cascade_logic/expected/snast.txt +2 -2
  25. data/golden/chained_fusion/expected/nast.txt +2 -2
  26. data/golden/chained_fusion/expected/schema_ruby.rb +1 -1
  27. data/golden/element_arrays/expected/nast.txt +2 -2
  28. data/golden/element_arrays/expected/schema_ruby.rb +1 -1
  29. data/golden/element_arrays/expected/snast.txt +1 -1
  30. data/golden/empty_and_null_inputs/expected/nast.txt +3 -3
  31. data/golden/empty_and_null_inputs/expected/schema_ruby.rb +1 -1
  32. data/golden/function_overload/expected/ast.txt +29 -0
  33. data/golden/function_overload/expected/input_plan.txt +4 -0
  34. data/golden/function_overload/expected/lir_00_unoptimized.txt +18 -0
  35. data/golden/function_overload/expected/lir_01_hoist_scalar_references.txt +18 -0
  36. data/golden/function_overload/expected/lir_02_inlined.txt +20 -0
  37. data/golden/function_overload/expected/lir_03_cse.txt +20 -0
  38. data/golden/function_overload/expected/lir_04_1_loop_fusion.txt +20 -0
  39. data/golden/function_overload/expected/lir_04_loop_invcm.txt +20 -0
  40. data/golden/function_overload/expected/lir_06_const_prop.txt +20 -0
  41. data/golden/function_overload/expected/nast.txt +22 -0
  42. data/golden/function_overload/expected/schema_javascript.mjs +12 -0
  43. data/golden/function_overload/expected/schema_ruby.rb +39 -0
  44. data/golden/function_overload/expected/snast.txt +22 -0
  45. data/golden/function_overload/input.json +8 -0
  46. data/golden/function_overload/schema.kumi +19 -0
  47. data/golden/game_of_life/expected/lir_00_unoptimized.txt +4 -4
  48. data/golden/game_of_life/expected/lir_01_hoist_scalar_references.txt +4 -4
  49. data/golden/game_of_life/expected/lir_02_inlined.txt +16 -16
  50. data/golden/game_of_life/expected/lir_03_cse.txt +20 -16
  51. data/golden/game_of_life/expected/lir_04_1_loop_fusion.txt +20 -16
  52. data/golden/game_of_life/expected/lir_04_loop_invcm.txt +20 -16
  53. data/golden/game_of_life/expected/lir_06_const_prop.txt +20 -16
  54. data/golden/game_of_life/expected/nast.txt +4 -4
  55. data/golden/game_of_life/expected/schema_javascript.mjs +4 -2
  56. data/golden/game_of_life/expected/schema_ruby.rb +5 -3
  57. data/golden/game_of_life/expected/snast.txt +10 -10
  58. data/golden/hash_keys/expected/schema_ruby.rb +1 -1
  59. data/golden/hash_value/expected/nast.txt +1 -1
  60. data/golden/hash_value/expected/schema_ruby.rb +1 -1
  61. data/golden/hash_value/expected/snast.txt +1 -1
  62. data/golden/hierarchical_complex/expected/nast.txt +3 -3
  63. data/golden/hierarchical_complex/expected/schema_ruby.rb +1 -1
  64. data/golden/hierarchical_complex/expected/snast.txt +3 -3
  65. data/golden/inline_rename_scope_leak/expected/nast.txt +3 -3
  66. data/golden/inline_rename_scope_leak/expected/schema_ruby.rb +1 -1
  67. data/golden/input_reference/expected/nast.txt +2 -2
  68. data/golden/input_reference/expected/schema_ruby.rb +1 -1
  69. data/golden/interleaved_fusion/expected/nast.txt +2 -2
  70. data/golden/interleaved_fusion/expected/schema_ruby.rb +1 -1
  71. data/golden/let_inline/expected/nast.txt +4 -4
  72. data/golden/let_inline/expected/schema_ruby.rb +1 -1
  73. data/golden/loop_fusion/expected/nast.txt +1 -1
  74. data/golden/loop_fusion/expected/schema_ruby.rb +1 -1
  75. data/golden/min_reduce_scope/expected/nast.txt +3 -3
  76. data/golden/min_reduce_scope/expected/schema_ruby.rb +1 -1
  77. data/golden/min_reduce_scope/expected/snast.txt +1 -1
  78. data/golden/mixed_dimensions/expected/nast.txt +2 -2
  79. data/golden/mixed_dimensions/expected/schema_ruby.rb +1 -1
  80. data/golden/multirank_hoisting/expected/nast.txt +7 -7
  81. data/golden/multirank_hoisting/expected/schema_ruby.rb +1 -1
  82. data/golden/nested_hash/expected/nast.txt +1 -1
  83. data/golden/nested_hash/expected/schema_ruby.rb +1 -1
  84. data/golden/reduction_broadcast/expected/nast.txt +3 -3
  85. data/golden/reduction_broadcast/expected/schema_ruby.rb +1 -1
  86. data/golden/reduction_broadcast/expected/snast.txt +1 -1
  87. data/golden/roll/expected/schema_ruby.rb +1 -1
  88. data/golden/shift/expected/schema_ruby.rb +1 -1
  89. data/golden/shift_2d/expected/schema_ruby.rb +1 -1
  90. data/golden/simple_math/expected/lir_00_unoptimized.txt +1 -1
  91. data/golden/simple_math/expected/lir_01_hoist_scalar_references.txt +1 -1
  92. data/golden/simple_math/expected/lir_02_inlined.txt +1 -1
  93. data/golden/simple_math/expected/lir_03_cse.txt +1 -1
  94. data/golden/simple_math/expected/lir_04_1_loop_fusion.txt +1 -1
  95. data/golden/simple_math/expected/lir_04_loop_invcm.txt +1 -1
  96. data/golden/simple_math/expected/lir_06_const_prop.txt +1 -1
  97. data/golden/simple_math/expected/nast.txt +5 -5
  98. data/golden/simple_math/expected/schema_ruby.rb +1 -1
  99. data/golden/simple_math/expected/snast.txt +2 -2
  100. data/golden/streaming_basics/expected/nast.txt +8 -8
  101. data/golden/streaming_basics/expected/schema_ruby.rb +1 -1
  102. data/golden/streaming_basics/expected/snast.txt +1 -1
  103. data/golden/tuples/expected/lir_00_unoptimized.txt +5 -5
  104. data/golden/tuples/expected/lir_01_hoist_scalar_references.txt +5 -5
  105. data/golden/tuples/expected/lir_02_inlined.txt +5 -5
  106. data/golden/tuples/expected/lir_03_cse.txt +5 -5
  107. data/golden/tuples/expected/lir_04_1_loop_fusion.txt +5 -5
  108. data/golden/tuples/expected/lir_04_loop_invcm.txt +5 -5
  109. data/golden/tuples/expected/lir_06_const_prop.txt +5 -5
  110. data/golden/tuples/expected/nast.txt +4 -4
  111. data/golden/tuples/expected/schema_ruby.rb +1 -1
  112. data/golden/tuples/expected/snast.txt +6 -6
  113. data/golden/tuples_and_arrays/expected/lir_00_unoptimized.txt +1 -1
  114. data/golden/tuples_and_arrays/expected/lir_01_hoist_scalar_references.txt +1 -1
  115. data/golden/tuples_and_arrays/expected/lir_02_inlined.txt +2 -2
  116. data/golden/tuples_and_arrays/expected/lir_03_cse.txt +2 -2
  117. data/golden/tuples_and_arrays/expected/lir_04_1_loop_fusion.txt +2 -2
  118. data/golden/tuples_and_arrays/expected/lir_04_loop_invcm.txt +2 -2
  119. data/golden/tuples_and_arrays/expected/lir_06_const_prop.txt +2 -2
  120. data/golden/tuples_and_arrays/expected/nast.txt +3 -3
  121. data/golden/tuples_and_arrays/expected/schema_ruby.rb +1 -1
  122. data/golden/tuples_and_arrays/expected/snast.txt +2 -2
  123. data/golden/us_tax_2024/expected/ast.txt +63 -670
  124. data/golden/us_tax_2024/expected/input_plan.txt +8 -45
  125. data/golden/us_tax_2024/expected/lir_00_unoptimized.txt +253 -863
  126. data/golden/us_tax_2024/expected/lir_01_hoist_scalar_references.txt +253 -863
  127. data/golden/us_tax_2024/expected/lir_02_inlined.txt +1215 -5139
  128. data/golden/us_tax_2024/expected/lir_03_cse.txt +587 -2460
  129. data/golden/us_tax_2024/expected/lir_04_1_loop_fusion.txt +632 -2480
  130. data/golden/us_tax_2024/expected/lir_04_loop_invcm.txt +587 -2460
  131. data/golden/us_tax_2024/expected/lir_06_const_prop.txt +587 -2460
  132. data/golden/us_tax_2024/expected/nast.txt +123 -826
  133. data/golden/us_tax_2024/expected/schema_javascript.mjs +127 -581
  134. data/golden/us_tax_2024/expected/schema_ruby.rb +135 -610
  135. data/golden/us_tax_2024/expected/snast.txt +155 -858
  136. data/golden/us_tax_2024/expected.json +120 -1
  137. data/golden/us_tax_2024/input.json +18 -9
  138. data/golden/us_tax_2024/schema.kumi +48 -178
  139. data/golden/with_constants/expected/lir_00_unoptimized.txt +1 -1
  140. data/golden/with_constants/expected/lir_01_hoist_scalar_references.txt +1 -1
  141. data/golden/with_constants/expected/lir_02_inlined.txt +1 -1
  142. data/golden/with_constants/expected/lir_03_cse.txt +1 -1
  143. data/golden/with_constants/expected/lir_04_1_loop_fusion.txt +1 -1
  144. data/golden/with_constants/expected/lir_04_loop_invcm.txt +1 -1
  145. data/golden/with_constants/expected/lir_06_const_prop.txt +1 -1
  146. data/golden/with_constants/expected/nast.txt +2 -2
  147. data/golden/with_constants/expected/schema_ruby.rb +1 -1
  148. data/golden/with_constants/expected/snast.txt +2 -2
  149. data/lib/kumi/analyzer.rb +12 -12
  150. data/lib/kumi/core/analyzer/passes/formal_constraint_propagator.rb +236 -0
  151. data/lib/kumi/core/analyzer/passes/input_collector.rb +22 -4
  152. data/lib/kumi/core/analyzer/passes/nast_dimensional_analyzer_pass.rb +64 -18
  153. data/lib/kumi/core/analyzer/passes/normalize_to_nast_pass.rb +9 -4
  154. data/lib/kumi/core/analyzer/passes/snast_pass.rb +3 -1
  155. data/lib/kumi/core/analyzer/passes/unsat_detector.rb +172 -198
  156. data/lib/kumi/core/error_reporter.rb +36 -1
  157. data/lib/kumi/core/errors.rb +33 -1
  158. data/lib/kumi/core/functions/function_spec.rb +5 -4
  159. data/lib/kumi/core/functions/loader.rb +17 -1
  160. data/lib/kumi/core/functions/overload_resolver.rb +164 -0
  161. data/lib/kumi/core/functions/type_error_reporter.rb +118 -0
  162. data/lib/kumi/core/functions/type_rules.rb +155 -35
  163. data/lib/kumi/core/types/inference.rb +29 -22
  164. data/lib/kumi/core/types/normalizer.rb +29 -45
  165. data/lib/kumi/core/types/validator.rb +16 -27
  166. data/lib/kumi/core/types/value_objects.rb +116 -0
  167. data/lib/kumi/core/types.rb +45 -37
  168. data/lib/kumi/registry_v2/loader.rb +90 -0
  169. data/lib/kumi/registry_v2.rb +18 -1
  170. data/lib/kumi/version.rb +1 -1
  171. metadata +21 -7
  172. data/lib/kumi/core/analyzer/unsat_constant_evaluator.rb +0 -59
  173. data/lib/kumi/core/atom_unsat_solver.rb +0 -396
  174. data/lib/kumi/core/constraint_relationship_solver.rb +0 -641
  175. data/lib/kumi/core/types/builder.rb +0 -23
  176. data/lib/kumi/core/types/compatibility.rb +0 -96
  177. data/lib/kumi/core/types/formatter.rb +0 -26
@@ -267,8 +267,8 @@
267
267
  %t240 = load_decl ne axes=[rows, col] :: integer
268
268
  %t241 = load_decl sw axes=[rows, col] :: integer
269
269
  %t242 = load_decl se axes=[rows, col] :: integer
270
- %t243 = make_tuple(%t235, %t236, %t237, %t238, %t239, %t240, %t241, %t242) :: tuple<integer>
271
- %t244 = fold %t243 fn="agg.sum" ::
270
+ %t243 = make_tuple(%t235, %t236, %t237, %t238, %t239, %t240, %t241, %t242) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
271
+ %t244 = fold %t243 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
272
272
  yield %t244
273
273
  end_loop
274
274
  end_loop
@@ -288,7 +288,7 @@
288
288
  %t253 = load_input "rows" :: array
289
289
  loop rows id=L23 in %t253 as el=%rows_el_254, idx=%rows_i_255
290
290
  loop col id=L24 in %rows_el_254 as el=%col_el_256, idx=%col_i_257
291
- %t258 = load_decl neighbors axes=[rows, col] ::
291
+ %t258 = load_decl neighbors axes=[rows, col] :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
292
292
  %t259 = const 3 :: integer
293
293
  %t260 = call core.eq(%t258, %t259) :: boolean
294
294
  yield %t260
@@ -299,7 +299,7 @@
299
299
  %t261 = load_input "rows" :: array
300
300
  loop rows id=L25 in %t261 as el=%rows_el_262, idx=%rows_i_263
301
301
  loop col id=L26 in %rows_el_262 as el=%col_el_264, idx=%col_i_265
302
- %t266 = load_decl neighbors axes=[rows, col] ::
302
+ %t266 = load_decl neighbors axes=[rows, col] :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
303
303
  %t267 = const 2 :: integer
304
304
  %t268 = call core.eq(%t266, %t267) :: boolean
305
305
  yield %t268
@@ -451,8 +451,8 @@
451
451
  %t483 = gather %t470, %t482 :: integer
452
452
  %t484 = const 0 :: integer
453
453
  %t485 = select %t478, %t483, %t484 :: integer
454
- %t243 = make_tuple(%t313, %t333, %t353, %t373, %t401, %t429, %t457, %t485) :: tuple<integer>
455
- %t244 = fold %t243 fn="agg.sum" ::
454
+ %t243 = make_tuple(%t313, %t333, %t353, %t373, %t401, %t429, %t457, %t485) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
455
+ %t244 = fold %t243 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
456
456
  yield %t244
457
457
  end_loop
458
458
  end_loop
@@ -665,8 +665,8 @@
665
665
  %t687 = gather %t674, %t686 :: integer
666
666
  %t688 = const 0 :: integer
667
667
  %t689 = select %t682, %t687, %t688 :: integer
668
- %t496 = make_tuple(%t517, %t537, %t557, %t577, %t605, %t633, %t661, %t689) :: tuple<integer>
669
- %t497 = fold %t496 fn="agg.sum" ::
668
+ %t496 = make_tuple(%t517, %t537, %t557, %t577, %t605, %t633, %t661, %t689) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
669
+ %t497 = fold %t496 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
670
670
  %t259 = const 3 :: integer
671
671
  %t260 = call core.eq(%t497, %t259) :: boolean
672
672
  yield %t260
@@ -870,8 +870,8 @@
870
870
  %t890 = gather %t877, %t889 :: integer
871
871
  %t891 = const 0 :: integer
872
872
  %t892 = select %t885, %t890, %t891 :: integer
873
- %t699 = make_tuple(%t720, %t740, %t760, %t780, %t808, %t836, %t864, %t892) :: tuple<integer>
874
- %t700 = fold %t699 fn="agg.sum" ::
873
+ %t699 = make_tuple(%t720, %t740, %t760, %t780, %t808, %t836, %t864, %t892) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
874
+ %t700 = fold %t699 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
875
875
  %t267 = const 2 :: integer
876
876
  %t268 = call core.eq(%t700, %t267) :: boolean
877
877
  yield %t268
@@ -1076,8 +1076,8 @@
1076
1076
  %t1097 = gather %t1084, %t1096 :: integer
1077
1077
  %t1098 = const 0 :: integer
1078
1078
  %t1099 = select %t1092, %t1097, %t1098 :: integer
1079
- %t906 = make_tuple(%t927, %t947, %t967, %t987, %t1015, %t1043, %t1071, %t1099) :: tuple<integer>
1080
- %t907 = fold %t906 fn="agg.sum" ::
1079
+ %t906 = make_tuple(%t927, %t947, %t967, %t987, %t1015, %t1043, %t1071, %t1099) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
1080
+ %t907 = fold %t906 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
1081
1081
  %t895 = const 2 :: integer
1082
1082
  %t896 = call core.eq(%t907, %t895) :: boolean
1083
1083
  %t1100 = load_input "rows" :: array
@@ -1287,8 +1287,8 @@
1287
1287
  %t1309 = gather %t1296, %t1308 :: integer
1288
1288
  %t1310 = const 0 :: integer
1289
1289
  %t1311 = select %t1304, %t1309, %t1310 :: integer
1290
- %t1118 = make_tuple(%t1139, %t1159, %t1179, %t1199, %t1227, %t1255, %t1283, %t1311) :: tuple<integer>
1291
- %t1119 = fold %t1118 fn="agg.sum" ::
1290
+ %t1118 = make_tuple(%t1139, %t1159, %t1179, %t1199, %t1227, %t1255, %t1283, %t1311) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
1291
+ %t1119 = fold %t1118 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
1292
1292
  %t1107 = const 3 :: integer
1293
1293
  %t1108 = call core.eq(%t1119, %t1107) :: boolean
1294
1294
  %t1312 = load_input "rows" :: array
@@ -1486,8 +1486,8 @@
1486
1486
  %t1520 = gather %t1507, %t1519 :: integer
1487
1487
  %t1521 = const 0 :: integer
1488
1488
  %t1522 = select %t1515, %t1520, %t1521 :: integer
1489
- %t1329 = make_tuple(%t1350, %t1370, %t1390, %t1410, %t1438, %t1466, %t1494, %t1522) :: tuple<integer>
1490
- %t1330 = fold %t1329 fn="agg.sum" ::
1489
+ %t1329 = make_tuple(%t1350, %t1370, %t1390, %t1410, %t1438, %t1466, %t1494, %t1522) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
1490
+ %t1330 = fold %t1329 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
1491
1491
  %t1318 = const 2 :: integer
1492
1492
  %t1319 = call core.eq(%t1330, %t1318) :: boolean
1493
1493
  %t1523 = load_input "rows" :: array
@@ -1699,8 +1699,8 @@
1699
1699
  %t1736 = gather %t1723, %t1735 :: integer
1700
1700
  %t1737 = const 0 :: integer
1701
1701
  %t1738 = select %t1731, %t1736, %t1737 :: integer
1702
- %t1545 = make_tuple(%t1566, %t1586, %t1606, %t1626, %t1654, %t1682, %t1710, %t1738) :: tuple<integer>
1703
- %t1546 = fold %t1545 fn="agg.sum" ::
1702
+ %t1545 = make_tuple(%t1566, %t1586, %t1606, %t1626, %t1654, %t1682, %t1710, %t1738) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
1703
+ %t1546 = fold %t1545 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
1704
1704
  %t1534 = const 3 :: integer
1705
1705
  %t1535 = call core.eq(%t1546, %t1534) :: boolean
1706
1706
  %t1739 = load_input "rows" :: array
@@ -1898,8 +1898,8 @@
1898
1898
  %t1947 = gather %t1934, %t1946 :: integer
1899
1899
  %t1948 = const 0 :: integer
1900
1900
  %t1949 = select %t1942, %t1947, %t1948 :: integer
1901
- %t1756 = make_tuple(%t1777, %t1797, %t1817, %t1837, %t1865, %t1893, %t1921, %t1949) :: tuple<integer>
1902
- %t1757 = fold %t1756 fn="agg.sum" ::
1901
+ %t1756 = make_tuple(%t1777, %t1797, %t1817, %t1837, %t1865, %t1893, %t1921, %t1949) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
1902
+ %t1757 = fold %t1756 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
1903
1903
  %t1745 = const 2 :: integer
1904
1904
  %t1746 = call core.eq(%t1757, %t1745) :: boolean
1905
1905
  %t1950 = load_input "rows" :: array
@@ -299,8 +299,8 @@
299
299
  %t482 = call core.clamp(%t362, %t298, %t452) :: integer
300
300
  %t483 = gather %t326, %t482 :: integer
301
301
  %t485 = select %t478, %t483, %t298 :: integer
302
- %t243 = make_tuple(%t313, %t333, %t353, %t373, %t401, %t429, %t457, %t485) :: tuple<integer>
303
- %t244 = fold %t243 fn="agg.sum" ::
302
+ %t243 = make_tuple(%t313, %t333, %t353, %t373, %t401, %t429, %t457, %t485) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
303
+ %t244 = fold %t243 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
304
304
  yield %t244
305
305
  end_loop
306
306
  end_loop
@@ -394,8 +394,8 @@
394
394
  %t686 = call core.clamp(%t566, %t502, %t656) :: integer
395
395
  %t687 = gather %t530, %t686 :: integer
396
396
  %t689 = select %t682, %t687, %t502 :: integer
397
- %t496 = make_tuple(%t517, %t537, %t557, %t577, %t605, %t633, %t661, %t689) :: tuple<integer>
398
- %t497 = fold %t496 fn="agg.sum" ::
397
+ %t496 = make_tuple(%t517, %t537, %t557, %t577, %t605, %t633, %t661, %t689) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
398
+ %t497 = fold %t496 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
399
399
  %t259 = const 3 :: integer
400
400
  %t260 = call core.eq(%t497, %t259) :: boolean
401
401
  yield %t260
@@ -481,8 +481,8 @@
481
481
  %t889 = call core.clamp(%t769, %t705, %t859) :: integer
482
482
  %t890 = gather %t733, %t889 :: integer
483
483
  %t892 = select %t885, %t890, %t705 :: integer
484
- %t699 = make_tuple(%t720, %t740, %t760, %t780, %t808, %t836, %t864, %t892) :: tuple<integer>
485
- %t700 = fold %t699 fn="agg.sum" ::
484
+ %t699 = make_tuple(%t720, %t740, %t760, %t780, %t808, %t836, %t864, %t892) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
485
+ %t700 = fold %t699 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
486
486
  %t267 = const 2 :: integer
487
487
  %t268 = call core.eq(%t700, %t267) :: boolean
488
488
  yield %t268
@@ -568,11 +568,12 @@
568
568
  %t1096 = call core.clamp(%t976, %t912, %t1066) :: integer
569
569
  %t1097 = gather %t940, %t1096 :: integer
570
570
  %t1099 = select %t1092, %t1097, %t912 :: integer
571
- %t906 = make_tuple(%t927, %t947, %t967, %t987, %t1015, %t1043, %t1071, %t1099) :: tuple<integer>
572
- %t907 = fold %t906 fn="agg.sum" ::
571
+ %t906 = make_tuple(%t927, %t947, %t967, %t987, %t1015, %t1043, %t1071, %t1099) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
572
+ %t907 = fold %t906 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
573
573
  %t895 = const 2 :: integer
574
574
  %t896 = call core.eq(%t907, %t895) :: boolean
575
- %t1103 = call core.gt(%col_el_272, %t912) :: boolean
575
+ %t1102 = const 0 :: integer
576
+ %t1103 = call core.gt(%col_el_272, %t1102) :: boolean
576
577
  %t276 = call core.and(%t896, %t1103) :: boolean
577
578
  yield %t276
578
579
  end_loop
@@ -657,13 +658,14 @@
657
658
  %t1308 = call core.clamp(%t1188, %t1124, %t1278) :: integer
658
659
  %t1309 = gather %t1152, %t1308 :: integer
659
660
  %t1311 = select %t1304, %t1309, %t1124 :: integer
660
- %t1118 = make_tuple(%t1139, %t1159, %t1179, %t1199, %t1227, %t1255, %t1283, %t1311) :: tuple<integer>
661
- %t1119 = fold %t1118 fn="agg.sum" ::
661
+ %t1118 = make_tuple(%t1139, %t1159, %t1179, %t1199, %t1227, %t1255, %t1283, %t1311) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
662
+ %t1119 = fold %t1118 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
662
663
  %t1107 = const 3 :: integer
663
664
  %t1108 = call core.eq(%t1119, %t1107) :: boolean
664
665
  %t1318 = const 2 :: integer
665
666
  %t1319 = call core.eq(%t1119, %t1318) :: boolean
666
- %t1526 = call core.gt(%col_el_280, %t1124) :: boolean
667
+ %t1525 = const 0 :: integer
668
+ %t1526 = call core.gt(%col_el_280, %t1525) :: boolean
667
669
  %t1315 = call core.and(%t1319, %t1526) :: boolean
668
670
  %t284 = call core.or(%t1108, %t1315) :: boolean
669
671
  yield %t284
@@ -749,16 +751,18 @@
749
751
  %t1735 = call core.clamp(%t1615, %t1551, %t1705) :: integer
750
752
  %t1736 = gather %t1579, %t1735 :: integer
751
753
  %t1738 = select %t1731, %t1736, %t1551 :: integer
752
- %t1545 = make_tuple(%t1566, %t1586, %t1606, %t1626, %t1654, %t1682, %t1710, %t1738) :: tuple<integer>
753
- %t1546 = fold %t1545 fn="agg.sum" ::
754
+ %t1545 = make_tuple(%t1566, %t1586, %t1606, %t1626, %t1654, %t1682, %t1710, %t1738) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
755
+ %t1546 = fold %t1545 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
754
756
  %t1534 = const 3 :: integer
755
757
  %t1535 = call core.eq(%t1546, %t1534) :: boolean
756
758
  %t1745 = const 2 :: integer
757
759
  %t1746 = call core.eq(%t1546, %t1745) :: boolean
758
- %t1953 = call core.gt(%col_el_288, %t1551) :: boolean
760
+ %t1952 = const 0 :: integer
761
+ %t1953 = call core.gt(%col_el_288, %t1952) :: boolean
759
762
  %t1742 = call core.and(%t1746, %t1953) :: boolean
760
763
  %t1531 = call core.or(%t1535, %t1742) :: boolean
761
- %t293 = select %t1531, %t1555, %t1551 :: integer
764
+ %t291 = const 1 :: integer
765
+ %t293 = select %t1531, %t291, %t1952 :: integer
762
766
  yield %t293
763
767
  end_loop
764
768
  end_loop
@@ -299,8 +299,8 @@
299
299
  %t482 = call core.clamp(%t362, %t298, %t452) :: integer
300
300
  %t483 = gather %t326, %t482 :: integer
301
301
  %t485 = select %t478, %t483, %t298 :: integer
302
- %t243 = make_tuple(%t313, %t333, %t353, %t373, %t401, %t429, %t457, %t485) :: tuple<integer>
303
- %t244 = fold %t243 fn="agg.sum" ::
302
+ %t243 = make_tuple(%t313, %t333, %t353, %t373, %t401, %t429, %t457, %t485) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
303
+ %t244 = fold %t243 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
304
304
  yield %t244
305
305
  end_loop
306
306
  end_loop
@@ -394,8 +394,8 @@
394
394
  %t686 = call core.clamp(%t566, %t502, %t656) :: integer
395
395
  %t687 = gather %t530, %t686 :: integer
396
396
  %t689 = select %t682, %t687, %t502 :: integer
397
- %t496 = make_tuple(%t517, %t537, %t557, %t577, %t605, %t633, %t661, %t689) :: tuple<integer>
398
- %t497 = fold %t496 fn="agg.sum" ::
397
+ %t496 = make_tuple(%t517, %t537, %t557, %t577, %t605, %t633, %t661, %t689) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
398
+ %t497 = fold %t496 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
399
399
  %t259 = const 3 :: integer
400
400
  %t260 = call core.eq(%t497, %t259) :: boolean
401
401
  yield %t260
@@ -481,8 +481,8 @@
481
481
  %t889 = call core.clamp(%t769, %t705, %t859) :: integer
482
482
  %t890 = gather %t733, %t889 :: integer
483
483
  %t892 = select %t885, %t890, %t705 :: integer
484
- %t699 = make_tuple(%t720, %t740, %t760, %t780, %t808, %t836, %t864, %t892) :: tuple<integer>
485
- %t700 = fold %t699 fn="agg.sum" ::
484
+ %t699 = make_tuple(%t720, %t740, %t760, %t780, %t808, %t836, %t864, %t892) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
485
+ %t700 = fold %t699 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
486
486
  %t267 = const 2 :: integer
487
487
  %t268 = call core.eq(%t700, %t267) :: boolean
488
488
  yield %t268
@@ -568,11 +568,12 @@
568
568
  %t1096 = call core.clamp(%t976, %t912, %t1066) :: integer
569
569
  %t1097 = gather %t940, %t1096 :: integer
570
570
  %t1099 = select %t1092, %t1097, %t912 :: integer
571
- %t906 = make_tuple(%t927, %t947, %t967, %t987, %t1015, %t1043, %t1071, %t1099) :: tuple<integer>
572
- %t907 = fold %t906 fn="agg.sum" ::
571
+ %t906 = make_tuple(%t927, %t947, %t967, %t987, %t1015, %t1043, %t1071, %t1099) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
572
+ %t907 = fold %t906 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
573
573
  %t895 = const 2 :: integer
574
574
  %t896 = call core.eq(%t907, %t895) :: boolean
575
- %t1103 = call core.gt(%col_el_272, %t912) :: boolean
575
+ %t1102 = const 0 :: integer
576
+ %t1103 = call core.gt(%col_el_272, %t1102) :: boolean
576
577
  %t276 = call core.and(%t896, %t1103) :: boolean
577
578
  yield %t276
578
579
  end_loop
@@ -657,13 +658,14 @@
657
658
  %t1308 = call core.clamp(%t1188, %t1124, %t1278) :: integer
658
659
  %t1309 = gather %t1152, %t1308 :: integer
659
660
  %t1311 = select %t1304, %t1309, %t1124 :: integer
660
- %t1118 = make_tuple(%t1139, %t1159, %t1179, %t1199, %t1227, %t1255, %t1283, %t1311) :: tuple<integer>
661
- %t1119 = fold %t1118 fn="agg.sum" ::
661
+ %t1118 = make_tuple(%t1139, %t1159, %t1179, %t1199, %t1227, %t1255, %t1283, %t1311) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
662
+ %t1119 = fold %t1118 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
662
663
  %t1107 = const 3 :: integer
663
664
  %t1108 = call core.eq(%t1119, %t1107) :: boolean
664
665
  %t1318 = const 2 :: integer
665
666
  %t1319 = call core.eq(%t1119, %t1318) :: boolean
666
- %t1526 = call core.gt(%col_el_280, %t1124) :: boolean
667
+ %t1525 = const 0 :: integer
668
+ %t1526 = call core.gt(%col_el_280, %t1525) :: boolean
667
669
  %t1315 = call core.and(%t1319, %t1526) :: boolean
668
670
  %t284 = call core.or(%t1108, %t1315) :: boolean
669
671
  yield %t284
@@ -749,16 +751,18 @@
749
751
  %t1735 = call core.clamp(%t1615, %t1551, %t1705) :: integer
750
752
  %t1736 = gather %t1579, %t1735 :: integer
751
753
  %t1738 = select %t1731, %t1736, %t1551 :: integer
752
- %t1545 = make_tuple(%t1566, %t1586, %t1606, %t1626, %t1654, %t1682, %t1710, %t1738) :: tuple<integer>
753
- %t1546 = fold %t1545 fn="agg.sum" ::
754
+ %t1545 = make_tuple(%t1566, %t1586, %t1606, %t1626, %t1654, %t1682, %t1710, %t1738) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
755
+ %t1546 = fold %t1545 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
754
756
  %t1534 = const 3 :: integer
755
757
  %t1535 = call core.eq(%t1546, %t1534) :: boolean
756
758
  %t1745 = const 2 :: integer
757
759
  %t1746 = call core.eq(%t1546, %t1745) :: boolean
758
- %t1953 = call core.gt(%col_el_288, %t1551) :: boolean
760
+ %t1952 = const 0 :: integer
761
+ %t1953 = call core.gt(%col_el_288, %t1952) :: boolean
759
762
  %t1742 = call core.and(%t1746, %t1953) :: boolean
760
763
  %t1531 = call core.or(%t1535, %t1742) :: boolean
761
- %t293 = select %t1531, %t1555, %t1551 :: integer
764
+ %t291 = const 1 :: integer
765
+ %t293 = select %t1531, %t291, %t1952 :: integer
762
766
  yield %t293
763
767
  end_loop
764
768
  end_loop
@@ -299,8 +299,8 @@
299
299
  %t482 = call core.clamp(%t362, %t298, %t452) :: integer
300
300
  %t483 = gather %t326, %t482 :: integer
301
301
  %t485 = select %t478, %t483, %t298 :: integer
302
- %t243 = make_tuple(%t313, %t333, %t353, %t373, %t401, %t429, %t457, %t485) :: tuple<integer>
303
- %t244 = fold %t243 fn="agg.sum" ::
302
+ %t243 = make_tuple(%t313, %t333, %t353, %t373, %t401, %t429, %t457, %t485) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
303
+ %t244 = fold %t243 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
304
304
  yield %t244
305
305
  end_loop
306
306
  end_loop
@@ -395,8 +395,8 @@
395
395
  %t686 = call core.clamp(%t566, %t502, %t656) :: integer
396
396
  %t687 = gather %t530, %t686 :: integer
397
397
  %t689 = select %t682, %t687, %t502 :: integer
398
- %t496 = make_tuple(%t517, %t537, %t557, %t577, %t605, %t633, %t661, %t689) :: tuple<integer>
399
- %t497 = fold %t496 fn="agg.sum" ::
398
+ %t496 = make_tuple(%t517, %t537, %t557, %t577, %t605, %t633, %t661, %t689) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
399
+ %t497 = fold %t496 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
400
400
  %t260 = call core.eq(%t497, %t259) :: boolean
401
401
  yield %t260
402
402
  end_loop
@@ -482,8 +482,8 @@
482
482
  %t889 = call core.clamp(%t769, %t705, %t859) :: integer
483
483
  %t890 = gather %t733, %t889 :: integer
484
484
  %t892 = select %t885, %t890, %t705 :: integer
485
- %t699 = make_tuple(%t720, %t740, %t760, %t780, %t808, %t836, %t864, %t892) :: tuple<integer>
486
- %t700 = fold %t699 fn="agg.sum" ::
485
+ %t699 = make_tuple(%t720, %t740, %t760, %t780, %t808, %t836, %t864, %t892) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
486
+ %t700 = fold %t699 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
487
487
  %t268 = call core.eq(%t700, %t267) :: boolean
488
488
  yield %t268
489
489
  end_loop
@@ -496,6 +496,7 @@
496
496
  %t912 = const 0 :: integer
497
497
  %t916 = const 1 :: integer
498
498
  %t895 = const 2 :: integer
499
+ %t1102 = const 0 :: integer
499
500
  %t917 = call core.sub(%t909, %t916) :: integer
500
501
  loop rows id=L27 in %t269 as el=%rows_el_270, idx=%rows_i_271
501
502
  %t911 = call core.sub(%rows_i_271, %t910) :: integer
@@ -569,10 +570,10 @@
569
570
  %t1096 = call core.clamp(%t976, %t912, %t1066) :: integer
570
571
  %t1097 = gather %t940, %t1096 :: integer
571
572
  %t1099 = select %t1092, %t1097, %t912 :: integer
572
- %t906 = make_tuple(%t927, %t947, %t967, %t987, %t1015, %t1043, %t1071, %t1099) :: tuple<integer>
573
- %t907 = fold %t906 fn="agg.sum" ::
573
+ %t906 = make_tuple(%t927, %t947, %t967, %t987, %t1015, %t1043, %t1071, %t1099) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
574
+ %t907 = fold %t906 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
574
575
  %t896 = call core.eq(%t907, %t895) :: boolean
575
- %t1103 = call core.gt(%col_el_272, %t912) :: boolean
576
+ %t1103 = call core.gt(%col_el_272, %t1102) :: boolean
576
577
  %t276 = call core.and(%t896, %t1103) :: boolean
577
578
  yield %t276
578
579
  end_loop
@@ -586,6 +587,7 @@
586
587
  %t1128 = const 1 :: integer
587
588
  %t1107 = const 3 :: integer
588
589
  %t1318 = const 2 :: integer
590
+ %t1525 = const 0 :: integer
589
591
  %t1129 = call core.sub(%t1121, %t1128) :: integer
590
592
  loop rows id=L29 in %t277 as el=%rows_el_278, idx=%rows_i_279
591
593
  %t1123 = call core.sub(%rows_i_279, %t1122) :: integer
@@ -659,11 +661,11 @@
659
661
  %t1308 = call core.clamp(%t1188, %t1124, %t1278) :: integer
660
662
  %t1309 = gather %t1152, %t1308 :: integer
661
663
  %t1311 = select %t1304, %t1309, %t1124 :: integer
662
- %t1118 = make_tuple(%t1139, %t1159, %t1179, %t1199, %t1227, %t1255, %t1283, %t1311) :: tuple<integer>
663
- %t1119 = fold %t1118 fn="agg.sum" ::
664
+ %t1118 = make_tuple(%t1139, %t1159, %t1179, %t1199, %t1227, %t1255, %t1283, %t1311) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
665
+ %t1119 = fold %t1118 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
664
666
  %t1108 = call core.eq(%t1119, %t1107) :: boolean
665
667
  %t1319 = call core.eq(%t1119, %t1318) :: boolean
666
- %t1526 = call core.gt(%col_el_280, %t1124) :: boolean
668
+ %t1526 = call core.gt(%col_el_280, %t1525) :: boolean
667
669
  %t1315 = call core.and(%t1319, %t1526) :: boolean
668
670
  %t284 = call core.or(%t1108, %t1315) :: boolean
669
671
  yield %t284
@@ -678,6 +680,8 @@
678
680
  %t1555 = const 1 :: integer
679
681
  %t1534 = const 3 :: integer
680
682
  %t1745 = const 2 :: integer
683
+ %t1952 = const 0 :: integer
684
+ %t291 = const 1 :: integer
681
685
  %t1556 = call core.sub(%t1548, %t1555) :: integer
682
686
  loop rows id=L31 in %t285 as el=%rows_el_286, idx=%rows_i_287
683
687
  %t1550 = call core.sub(%rows_i_287, %t1549) :: integer
@@ -751,14 +755,14 @@
751
755
  %t1735 = call core.clamp(%t1615, %t1551, %t1705) :: integer
752
756
  %t1736 = gather %t1579, %t1735 :: integer
753
757
  %t1738 = select %t1731, %t1736, %t1551 :: integer
754
- %t1545 = make_tuple(%t1566, %t1586, %t1606, %t1626, %t1654, %t1682, %t1710, %t1738) :: tuple<integer>
755
- %t1546 = fold %t1545 fn="agg.sum" ::
758
+ %t1545 = make_tuple(%t1566, %t1586, %t1606, %t1626, %t1654, %t1682, %t1710, %t1738) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
759
+ %t1546 = fold %t1545 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
756
760
  %t1535 = call core.eq(%t1546, %t1534) :: boolean
757
761
  %t1746 = call core.eq(%t1546, %t1745) :: boolean
758
- %t1953 = call core.gt(%col_el_288, %t1551) :: boolean
762
+ %t1953 = call core.gt(%col_el_288, %t1952) :: boolean
759
763
  %t1742 = call core.and(%t1746, %t1953) :: boolean
760
764
  %t1531 = call core.or(%t1535, %t1742) :: boolean
761
- %t293 = select %t1531, %t1555, %t1551 :: integer
765
+ %t293 = select %t1531, %t291, %t1952 :: integer
762
766
  yield %t293
763
767
  end_loop
764
768
  end_loop
@@ -299,8 +299,8 @@
299
299
  %t482 = call core.clamp(%t362, %t298, %t452) :: integer
300
300
  %t483 = gather %t326, %t482 :: integer
301
301
  %t485 = select %t478, %t483, %t298 :: integer
302
- %t243 = make_tuple(%t313, %t333, %t353, %t373, %t401, %t429, %t457, %t485) :: tuple<integer>
303
- %t244 = fold %t243 fn="agg.sum" ::
302
+ %t243 = make_tuple(%t313, %t333, %t353, %t373, %t401, %t429, %t457, %t485) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
303
+ %t244 = fold %t243 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
304
304
  yield %t244
305
305
  end_loop
306
306
  end_loop
@@ -395,8 +395,8 @@
395
395
  %t686 = call core.clamp(%t566, %t502, %t656) :: integer
396
396
  %t687 = gather %t530, %t686 :: integer
397
397
  %t689 = select %t682, %t687, %t502 :: integer
398
- %t496 = make_tuple(%t517, %t537, %t557, %t577, %t605, %t633, %t661, %t689) :: tuple<integer>
399
- %t497 = fold %t496 fn="agg.sum" ::
398
+ %t496 = make_tuple(%t517, %t537, %t557, %t577, %t605, %t633, %t661, %t689) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
399
+ %t497 = fold %t496 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
400
400
  %t260 = call core.eq(%t497, %t259) :: boolean
401
401
  yield %t260
402
402
  end_loop
@@ -482,8 +482,8 @@
482
482
  %t889 = call core.clamp(%t769, %t705, %t859) :: integer
483
483
  %t890 = gather %t733, %t889 :: integer
484
484
  %t892 = select %t885, %t890, %t705 :: integer
485
- %t699 = make_tuple(%t720, %t740, %t760, %t780, %t808, %t836, %t864, %t892) :: tuple<integer>
486
- %t700 = fold %t699 fn="agg.sum" ::
485
+ %t699 = make_tuple(%t720, %t740, %t760, %t780, %t808, %t836, %t864, %t892) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
486
+ %t700 = fold %t699 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
487
487
  %t268 = call core.eq(%t700, %t267) :: boolean
488
488
  yield %t268
489
489
  end_loop
@@ -496,6 +496,7 @@
496
496
  %t912 = const 0 :: integer
497
497
  %t916 = const 1 :: integer
498
498
  %t895 = const 2 :: integer
499
+ %t1102 = const 0 :: integer
499
500
  %t917 = call core.sub(%t909, %t916) :: integer
500
501
  loop rows id=L27 in %t269 as el=%rows_el_270, idx=%rows_i_271
501
502
  %t911 = call core.sub(%rows_i_271, %t910) :: integer
@@ -569,10 +570,10 @@
569
570
  %t1096 = call core.clamp(%t976, %t912, %t1066) :: integer
570
571
  %t1097 = gather %t940, %t1096 :: integer
571
572
  %t1099 = select %t1092, %t1097, %t912 :: integer
572
- %t906 = make_tuple(%t927, %t947, %t967, %t987, %t1015, %t1043, %t1071, %t1099) :: tuple<integer>
573
- %t907 = fold %t906 fn="agg.sum" ::
573
+ %t906 = make_tuple(%t927, %t947, %t967, %t987, %t1015, %t1043, %t1071, %t1099) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
574
+ %t907 = fold %t906 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
574
575
  %t896 = call core.eq(%t907, %t895) :: boolean
575
- %t1103 = call core.gt(%col_el_272, %t912) :: boolean
576
+ %t1103 = call core.gt(%col_el_272, %t1102) :: boolean
576
577
  %t276 = call core.and(%t896, %t1103) :: boolean
577
578
  yield %t276
578
579
  end_loop
@@ -586,6 +587,7 @@
586
587
  %t1128 = const 1 :: integer
587
588
  %t1107 = const 3 :: integer
588
589
  %t1318 = const 2 :: integer
590
+ %t1525 = const 0 :: integer
589
591
  %t1129 = call core.sub(%t1121, %t1128) :: integer
590
592
  loop rows id=L29 in %t277 as el=%rows_el_278, idx=%rows_i_279
591
593
  %t1123 = call core.sub(%rows_i_279, %t1122) :: integer
@@ -659,11 +661,11 @@
659
661
  %t1308 = call core.clamp(%t1188, %t1124, %t1278) :: integer
660
662
  %t1309 = gather %t1152, %t1308 :: integer
661
663
  %t1311 = select %t1304, %t1309, %t1124 :: integer
662
- %t1118 = make_tuple(%t1139, %t1159, %t1179, %t1199, %t1227, %t1255, %t1283, %t1311) :: tuple<integer>
663
- %t1119 = fold %t1118 fn="agg.sum" ::
664
+ %t1118 = make_tuple(%t1139, %t1159, %t1179, %t1199, %t1227, %t1255, %t1283, %t1311) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
665
+ %t1119 = fold %t1118 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
664
666
  %t1108 = call core.eq(%t1119, %t1107) :: boolean
665
667
  %t1319 = call core.eq(%t1119, %t1318) :: boolean
666
- %t1526 = call core.gt(%col_el_280, %t1124) :: boolean
668
+ %t1526 = call core.gt(%col_el_280, %t1525) :: boolean
667
669
  %t1315 = call core.and(%t1319, %t1526) :: boolean
668
670
  %t284 = call core.or(%t1108, %t1315) :: boolean
669
671
  yield %t284
@@ -678,6 +680,8 @@
678
680
  %t1555 = const 1 :: integer
679
681
  %t1534 = const 3 :: integer
680
682
  %t1745 = const 2 :: integer
683
+ %t1952 = const 0 :: integer
684
+ %t291 = const 1 :: integer
681
685
  %t1556 = call core.sub(%t1548, %t1555) :: integer
682
686
  loop rows id=L31 in %t285 as el=%rows_el_286, idx=%rows_i_287
683
687
  %t1550 = call core.sub(%rows_i_287, %t1549) :: integer
@@ -751,14 +755,14 @@
751
755
  %t1735 = call core.clamp(%t1615, %t1551, %t1705) :: integer
752
756
  %t1736 = gather %t1579, %t1735 :: integer
753
757
  %t1738 = select %t1731, %t1736, %t1551 :: integer
754
- %t1545 = make_tuple(%t1566, %t1586, %t1606, %t1626, %t1654, %t1682, %t1710, %t1738) :: tuple<integer>
755
- %t1546 = fold %t1545 fn="agg.sum" ::
758
+ %t1545 = make_tuple(%t1566, %t1586, %t1606, %t1626, %t1654, %t1682, %t1710, %t1738) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
759
+ %t1546 = fold %t1545 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
756
760
  %t1535 = call core.eq(%t1546, %t1534) :: boolean
757
761
  %t1746 = call core.eq(%t1546, %t1745) :: boolean
758
- %t1953 = call core.gt(%col_el_288, %t1551) :: boolean
762
+ %t1953 = call core.gt(%col_el_288, %t1952) :: boolean
759
763
  %t1742 = call core.and(%t1746, %t1953) :: boolean
760
764
  %t1531 = call core.or(%t1535, %t1742) :: boolean
761
- %t293 = select %t1531, %t1555, %t1551 :: integer
765
+ %t293 = select %t1531, %t291, %t1952 :: integer
762
766
  yield %t293
763
767
  end_loop
764
768
  end_loop
@@ -51,7 +51,7 @@
51
51
  )
52
52
  )
53
53
  (VALUE neighbors
54
- (Call :"agg.sum"
54
+ (Call :sum
55
55
  (Tuple
56
56
  (Ref n)
57
57
  (Ref s)
@@ -83,19 +83,19 @@
83
83
  )
84
84
  )
85
85
  (VALUE keep_alive
86
- (Call :"core.and"
86
+ (Call :and
87
87
  (Ref n2_alive)
88
88
  (Ref alive)
89
89
  )
90
90
  )
91
91
  (VALUE next_alive
92
- (Call :"core.or"
92
+ (Call :or
93
93
  (Ref n3_alive)
94
94
  (Ref keep_alive)
95
95
  )
96
96
  )
97
97
  (VALUE next_state
98
- (Call :__select__
98
+ (Call :select
99
99
  (Ref next_alive)
100
100
  (Const 1)
101
101
  (Const 0)
@@ -7,6 +7,8 @@ export function _next_state(input) {
7
7
  const t1555 = 1;
8
8
  const t1534 = 3;
9
9
  const t1745 = 2;
10
+ const t1952 = 0;
11
+ const t291 = 1;
10
12
  let t1556 = t1548 - t1555;
11
13
  t285.forEach((rows_el_286, rows_i_287) => {
12
14
  let out_1 = [];
@@ -85,10 +87,10 @@ export function _next_state(input) {
85
87
  let t1546 = t1545.reduce((a, b) => a + b, 0);
86
88
  let t1535 = t1546 == t1534;
87
89
  let t1746 = t1546 == t1745;
88
- let t1953 = col_el_288 > t1551;
90
+ let t1953 = col_el_288 > t1952;
89
91
  let t1742 = t1746 && t1953;
90
92
  let t1531 = t1535 || t1742;
91
- let t293 = t1531 ? t1555 : t1551;
93
+ let t293 = t1531 ? t291 : t1952;
92
94
  out_1.push(t293);
93
95
  });
94
96
  out.push(out_1);
@@ -1,5 +1,5 @@
1
1
  # Autogenerated by Kumi Codegen
2
- module Kumi::Compiled::KUMI_5e0a149820fd6b1804439359780ed5e142afe31fbc67b4cde25ee818fa412c12
2
+ module Kumi::Compiled::KUMI_283fb5a79e6f8291e61648873c3f66e10aa9bd5f67c9a7f319663c393389237a
3
3
  def self.from(input_data = nil)
4
4
  instance = Object.new
5
5
  instance.extend(self)
@@ -34,6 +34,8 @@ module Kumi::Compiled::KUMI_5e0a149820fd6b1804439359780ed5e142afe31fbc67b4cde25e
34
34
  t1555 = 1
35
35
  t1534 = 3
36
36
  t1745 = 2
37
+ t1952 = 0
38
+ t291 = 1
37
39
  t1556 = t1548 - t1555
38
40
  t285.each_with_index do |rows_el_286, rows_i_287|
39
41
  out_1 = []
@@ -112,10 +114,10 @@ module Kumi::Compiled::KUMI_5e0a149820fd6b1804439359780ed5e142afe31fbc67b4cde25e
112
114
  t1546 = t1545.sum
113
115
  t1535 = t1546 == t1534
114
116
  t1746 = t1546 == t1745
115
- t1953 = col_el_288 > t1551
117
+ t1953 = col_el_288 > t1952
116
118
  t1742 = t1746 && t1953
117
119
  t1531 = t1535 || t1742
118
- t293 = t1531 ? t1555 : t1551
120
+ t293 = t1531 ? t291 : t1952
119
121
  out_1 << t293
120
122
  end
121
123
  out << out_1
@@ -61,34 +61,34 @@
61
61
  (Ref ne) :: [rows, col] -> integer
62
62
  (Ref sw) :: [rows, col] -> integer
63
63
  (Ref se) :: [rows, col] -> integer
64
- ) :: [rows, col] -> tuple<integer>
65
- ) :: [rows, col] ->
66
- ) :: [rows, col] ->
67
- (TRAIT alive
64
+ ) :: [rows, col] -> tuple<integer, integer, integer, integer, integer, integer, integer, integer>
65
+ ) :: [rows, col] -> tuple<integer, integer, integer, integer, integer, integer, integer, integer>
66
+ ) :: [rows, col] -> tuple<integer, integer, integer, integer, integer, integer, integer, integer>
67
+ (VALUE alive
68
68
  (Call :core.gt
69
69
  (Ref a) :: [rows, col] -> integer
70
70
  (Const 0) :: [] -> integer
71
71
  ) :: [rows, col] -> boolean
72
72
  ) :: [rows, col] -> boolean
73
- (TRAIT n3_alive
73
+ (VALUE n3_alive
74
74
  (Call :core.eq
75
- (Ref neighbors) :: [rows, col] ->
75
+ (Ref neighbors) :: [rows, col] -> tuple<integer, integer, integer, integer, integer, integer, integer, integer>
76
76
  (Const 3) :: [] -> integer
77
77
  ) :: [rows, col] -> boolean
78
78
  ) :: [rows, col] -> boolean
79
- (TRAIT n2_alive
79
+ (VALUE n2_alive
80
80
  (Call :core.eq
81
- (Ref neighbors) :: [rows, col] ->
81
+ (Ref neighbors) :: [rows, col] -> tuple<integer, integer, integer, integer, integer, integer, integer, integer>
82
82
  (Const 2) :: [] -> integer
83
83
  ) :: [rows, col] -> boolean
84
84
  ) :: [rows, col] -> boolean
85
- (TRAIT keep_alive
85
+ (VALUE keep_alive
86
86
  (Call :core.and
87
87
  (Ref n2_alive) :: [rows, col] -> boolean
88
88
  (Ref alive) :: [rows, col] -> boolean
89
89
  ) :: [rows, col] -> boolean
90
90
  ) :: [rows, col] -> boolean
91
- (TRAIT next_alive
91
+ (VALUE next_alive
92
92
  (Call :core.or
93
93
  (Ref n3_alive) :: [rows, col] -> boolean
94
94
  (Ref keep_alive) :: [rows, col] -> boolean
@@ -1,5 +1,5 @@
1
1
  # Autogenerated by Kumi Codegen
2
- module Kumi::Compiled::KUMI_4e4f9566d9352274f495237eba94db9f3e1adbd90a662adbf7fe95ea0f69a167
2
+ module Kumi::Compiled::KUMI_12cfcb8020fae57cf986508d88121cdcd8d169a25ea60becdb0375c66241fa37
3
3
  def self.from(input_data = nil)
4
4
  instance = Object.new
5
5
  instance.extend(self)