kumi 0.0.24 → 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 (234) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +14 -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/lir_02_inlined.txt +8 -8
  24. data/golden/cascade_logic/expected/schema_ruby.rb +1 -1
  25. data/golden/cascade_logic/expected/snast.txt +2 -2
  26. data/golden/chained_fusion/expected/lir_02_inlined.txt +36 -36
  27. data/golden/chained_fusion/expected/lir_03_cse.txt +23 -23
  28. data/golden/chained_fusion/expected/lir_04_1_loop_fusion.txt +25 -25
  29. data/golden/chained_fusion/expected/lir_04_loop_invcm.txt +23 -23
  30. data/golden/chained_fusion/expected/lir_06_const_prop.txt +23 -23
  31. data/golden/chained_fusion/expected/nast.txt +2 -2
  32. data/golden/chained_fusion/expected/schema_javascript.mjs +23 -23
  33. data/golden/chained_fusion/expected/schema_ruby.rb +28 -28
  34. data/golden/element_arrays/expected/nast.txt +2 -2
  35. data/golden/element_arrays/expected/schema_ruby.rb +1 -1
  36. data/golden/element_arrays/expected/snast.txt +1 -1
  37. data/golden/empty_and_null_inputs/expected/lir_02_inlined.txt +18 -18
  38. data/golden/empty_and_null_inputs/expected/lir_03_cse.txt +17 -17
  39. data/golden/empty_and_null_inputs/expected/lir_04_1_loop_fusion.txt +17 -17
  40. data/golden/empty_and_null_inputs/expected/lir_04_loop_invcm.txt +17 -17
  41. data/golden/empty_and_null_inputs/expected/lir_06_const_prop.txt +17 -17
  42. data/golden/empty_and_null_inputs/expected/nast.txt +3 -3
  43. data/golden/empty_and_null_inputs/expected/schema_javascript.mjs +13 -13
  44. data/golden/empty_and_null_inputs/expected/schema_ruby.rb +18 -18
  45. data/golden/function_overload/expected/ast.txt +29 -0
  46. data/golden/function_overload/expected/input_plan.txt +4 -0
  47. data/golden/function_overload/expected/lir_00_unoptimized.txt +18 -0
  48. data/golden/function_overload/expected/lir_01_hoist_scalar_references.txt +18 -0
  49. data/golden/function_overload/expected/lir_02_inlined.txt +20 -0
  50. data/golden/function_overload/expected/lir_03_cse.txt +20 -0
  51. data/golden/function_overload/expected/lir_04_1_loop_fusion.txt +20 -0
  52. data/golden/function_overload/expected/lir_04_loop_invcm.txt +20 -0
  53. data/golden/function_overload/expected/lir_06_const_prop.txt +20 -0
  54. data/golden/function_overload/expected/nast.txt +22 -0
  55. data/golden/function_overload/expected/schema_javascript.mjs +12 -0
  56. data/golden/function_overload/expected/schema_ruby.rb +39 -0
  57. data/golden/function_overload/expected/snast.txt +22 -0
  58. data/golden/function_overload/input.json +8 -0
  59. data/golden/function_overload/schema.kumi +19 -0
  60. data/golden/game_of_life/expected/lir_00_unoptimized.txt +4 -4
  61. data/golden/game_of_life/expected/lir_01_hoist_scalar_references.txt +4 -4
  62. data/golden/game_of_life/expected/lir_02_inlined.txt +1294 -1294
  63. data/golden/game_of_life/expected/lir_03_cse.txt +403 -399
  64. data/golden/game_of_life/expected/lir_04_1_loop_fusion.txt +403 -399
  65. data/golden/game_of_life/expected/lir_04_loop_invcm.txt +403 -399
  66. data/golden/game_of_life/expected/lir_06_const_prop.txt +403 -399
  67. data/golden/game_of_life/expected/nast.txt +4 -4
  68. data/golden/game_of_life/expected/schema_javascript.mjs +87 -85
  69. data/golden/game_of_life/expected/schema_ruby.rb +88 -86
  70. data/golden/game_of_life/expected/snast.txt +10 -10
  71. data/golden/hash_keys/expected/schema_ruby.rb +1 -1
  72. data/golden/hash_value/expected/nast.txt +1 -1
  73. data/golden/hash_value/expected/schema_ruby.rb +1 -1
  74. data/golden/hash_value/expected/snast.txt +1 -1
  75. data/golden/hierarchical_complex/expected/lir_02_inlined.txt +15 -15
  76. data/golden/hierarchical_complex/expected/lir_03_cse.txt +1 -1
  77. data/golden/hierarchical_complex/expected/lir_04_1_loop_fusion.txt +1 -1
  78. data/golden/hierarchical_complex/expected/lir_04_loop_invcm.txt +1 -1
  79. data/golden/hierarchical_complex/expected/lir_06_const_prop.txt +1 -1
  80. data/golden/hierarchical_complex/expected/nast.txt +3 -3
  81. data/golden/hierarchical_complex/expected/schema_javascript.mjs +1 -1
  82. data/golden/hierarchical_complex/expected/schema_ruby.rb +2 -2
  83. data/golden/hierarchical_complex/expected/snast.txt +3 -3
  84. data/golden/inline_rename_scope_leak/expected/nast.txt +3 -3
  85. data/golden/inline_rename_scope_leak/expected/schema_ruby.rb +1 -1
  86. data/golden/input_reference/expected/nast.txt +2 -2
  87. data/golden/input_reference/expected/schema_ruby.rb +1 -1
  88. data/golden/interleaved_fusion/expected/lir_02_inlined.txt +35 -35
  89. data/golden/interleaved_fusion/expected/lir_03_cse.txt +26 -26
  90. data/golden/interleaved_fusion/expected/lir_04_1_loop_fusion.txt +27 -26
  91. data/golden/interleaved_fusion/expected/lir_04_loop_invcm.txt +26 -26
  92. data/golden/interleaved_fusion/expected/lir_06_const_prop.txt +26 -26
  93. data/golden/interleaved_fusion/expected/nast.txt +2 -2
  94. data/golden/interleaved_fusion/expected/schema_javascript.mjs +23 -23
  95. data/golden/interleaved_fusion/expected/schema_ruby.rb +29 -29
  96. data/golden/let_inline/expected/nast.txt +4 -4
  97. data/golden/let_inline/expected/schema_ruby.rb +1 -1
  98. data/golden/loop_fusion/expected/lir_02_inlined.txt +17 -17
  99. data/golden/loop_fusion/expected/lir_03_cse.txt +14 -14
  100. data/golden/loop_fusion/expected/lir_04_1_loop_fusion.txt +14 -14
  101. data/golden/loop_fusion/expected/lir_04_loop_invcm.txt +14 -14
  102. data/golden/loop_fusion/expected/lir_06_const_prop.txt +14 -14
  103. data/golden/loop_fusion/expected/nast.txt +1 -1
  104. data/golden/loop_fusion/expected/schema_javascript.mjs +12 -12
  105. data/golden/loop_fusion/expected/schema_ruby.rb +16 -16
  106. data/golden/min_reduce_scope/expected/nast.txt +3 -3
  107. data/golden/min_reduce_scope/expected/schema_ruby.rb +1 -1
  108. data/golden/min_reduce_scope/expected/snast.txt +1 -1
  109. data/golden/mixed_dimensions/expected/lir_02_inlined.txt +5 -5
  110. data/golden/mixed_dimensions/expected/lir_03_cse.txt +5 -5
  111. data/golden/mixed_dimensions/expected/lir_04_1_loop_fusion.txt +5 -5
  112. data/golden/mixed_dimensions/expected/lir_04_loop_invcm.txt +5 -5
  113. data/golden/mixed_dimensions/expected/lir_06_const_prop.txt +5 -5
  114. data/golden/mixed_dimensions/expected/nast.txt +2 -2
  115. data/golden/mixed_dimensions/expected/schema_javascript.mjs +3 -3
  116. data/golden/mixed_dimensions/expected/schema_ruby.rb +6 -6
  117. data/golden/multirank_hoisting/expected/lir_02_inlined.txt +48 -48
  118. data/golden/multirank_hoisting/expected/lir_03_cse.txt +35 -35
  119. data/golden/multirank_hoisting/expected/lir_04_1_loop_fusion.txt +35 -35
  120. data/golden/multirank_hoisting/expected/lir_04_loop_invcm.txt +35 -35
  121. data/golden/multirank_hoisting/expected/lir_06_const_prop.txt +35 -35
  122. data/golden/multirank_hoisting/expected/nast.txt +7 -7
  123. data/golden/multirank_hoisting/expected/schema_javascript.mjs +34 -34
  124. data/golden/multirank_hoisting/expected/schema_ruby.rb +36 -36
  125. data/golden/nested_hash/expected/nast.txt +1 -1
  126. data/golden/nested_hash/expected/schema_ruby.rb +1 -1
  127. data/golden/reduction_broadcast/expected/lir_02_inlined.txt +30 -30
  128. data/golden/reduction_broadcast/expected/lir_03_cse.txt +22 -22
  129. data/golden/reduction_broadcast/expected/lir_04_1_loop_fusion.txt +22 -22
  130. data/golden/reduction_broadcast/expected/lir_04_loop_invcm.txt +22 -22
  131. data/golden/reduction_broadcast/expected/lir_06_const_prop.txt +22 -22
  132. data/golden/reduction_broadcast/expected/nast.txt +3 -3
  133. data/golden/reduction_broadcast/expected/schema_javascript.mjs +18 -18
  134. data/golden/reduction_broadcast/expected/schema_ruby.rb +23 -23
  135. data/golden/reduction_broadcast/expected/snast.txt +1 -1
  136. data/golden/roll/expected/schema_ruby.rb +1 -1
  137. data/golden/shift/expected/schema_ruby.rb +1 -1
  138. data/golden/shift_2d/expected/schema_ruby.rb +1 -1
  139. data/golden/simple_math/expected/lir_00_unoptimized.txt +1 -1
  140. data/golden/simple_math/expected/lir_01_hoist_scalar_references.txt +1 -1
  141. data/golden/simple_math/expected/lir_02_inlined.txt +1 -1
  142. data/golden/simple_math/expected/lir_03_cse.txt +1 -1
  143. data/golden/simple_math/expected/lir_04_1_loop_fusion.txt +1 -1
  144. data/golden/simple_math/expected/lir_04_loop_invcm.txt +1 -1
  145. data/golden/simple_math/expected/lir_06_const_prop.txt +1 -1
  146. data/golden/simple_math/expected/nast.txt +5 -5
  147. data/golden/simple_math/expected/schema_ruby.rb +1 -1
  148. data/golden/simple_math/expected/snast.txt +2 -2
  149. data/golden/streaming_basics/expected/lir_02_inlined.txt +25 -25
  150. data/golden/streaming_basics/expected/lir_03_cse.txt +13 -13
  151. data/golden/streaming_basics/expected/lir_04_1_loop_fusion.txt +13 -13
  152. data/golden/streaming_basics/expected/lir_04_loop_invcm.txt +13 -13
  153. data/golden/streaming_basics/expected/lir_06_const_prop.txt +13 -13
  154. data/golden/streaming_basics/expected/nast.txt +8 -8
  155. data/golden/streaming_basics/expected/schema_javascript.mjs +13 -13
  156. data/golden/streaming_basics/expected/schema_ruby.rb +14 -14
  157. data/golden/streaming_basics/expected/snast.txt +1 -1
  158. data/golden/tuples/expected/lir_00_unoptimized.txt +5 -5
  159. data/golden/tuples/expected/lir_01_hoist_scalar_references.txt +5 -5
  160. data/golden/tuples/expected/lir_02_inlined.txt +5 -5
  161. data/golden/tuples/expected/lir_03_cse.txt +5 -5
  162. data/golden/tuples/expected/lir_04_1_loop_fusion.txt +5 -5
  163. data/golden/tuples/expected/lir_04_loop_invcm.txt +5 -5
  164. data/golden/tuples/expected/lir_06_const_prop.txt +5 -5
  165. data/golden/tuples/expected/nast.txt +4 -4
  166. data/golden/tuples/expected/schema_ruby.rb +1 -1
  167. data/golden/tuples/expected/snast.txt +6 -6
  168. data/golden/tuples_and_arrays/expected/lir_00_unoptimized.txt +1 -1
  169. data/golden/tuples_and_arrays/expected/lir_01_hoist_scalar_references.txt +1 -1
  170. data/golden/tuples_and_arrays/expected/lir_02_inlined.txt +17 -17
  171. data/golden/tuples_and_arrays/expected/lir_03_cse.txt +13 -13
  172. data/golden/tuples_and_arrays/expected/lir_04_1_loop_fusion.txt +13 -13
  173. data/golden/tuples_and_arrays/expected/lir_04_loop_invcm.txt +13 -13
  174. data/golden/tuples_and_arrays/expected/lir_06_const_prop.txt +13 -13
  175. data/golden/tuples_and_arrays/expected/nast.txt +3 -3
  176. data/golden/tuples_and_arrays/expected/schema_javascript.mjs +13 -13
  177. data/golden/tuples_and_arrays/expected/schema_ruby.rb +14 -14
  178. data/golden/tuples_and_arrays/expected/snast.txt +2 -2
  179. data/golden/us_tax_2024/expected/ast.txt +63 -670
  180. data/golden/us_tax_2024/expected/input_plan.txt +8 -45
  181. data/golden/us_tax_2024/expected/lir_00_unoptimized.txt +253 -863
  182. data/golden/us_tax_2024/expected/lir_01_hoist_scalar_references.txt +253 -863
  183. data/golden/us_tax_2024/expected/lir_02_inlined.txt +1215 -5139
  184. data/golden/us_tax_2024/expected/lir_03_cse.txt +587 -2460
  185. data/golden/us_tax_2024/expected/lir_04_1_loop_fusion.txt +632 -2480
  186. data/golden/us_tax_2024/expected/lir_04_loop_invcm.txt +587 -2400
  187. data/golden/us_tax_2024/expected/lir_06_const_prop.txt +587 -2400
  188. data/golden/us_tax_2024/expected/nast.txt +123 -826
  189. data/golden/us_tax_2024/expected/schema_javascript.mjs +127 -581
  190. data/golden/us_tax_2024/expected/schema_ruby.rb +135 -610
  191. data/golden/us_tax_2024/expected/snast.txt +155 -858
  192. data/golden/us_tax_2024/expected.json +120 -1
  193. data/golden/us_tax_2024/input.json +18 -9
  194. data/golden/us_tax_2024/schema.kumi +48 -178
  195. data/golden/with_constants/expected/lir_00_unoptimized.txt +1 -1
  196. data/golden/with_constants/expected/lir_01_hoist_scalar_references.txt +1 -1
  197. data/golden/with_constants/expected/lir_02_inlined.txt +1 -1
  198. data/golden/with_constants/expected/lir_03_cse.txt +1 -1
  199. data/golden/with_constants/expected/lir_04_1_loop_fusion.txt +1 -1
  200. data/golden/with_constants/expected/lir_04_loop_invcm.txt +1 -1
  201. data/golden/with_constants/expected/lir_06_const_prop.txt +1 -1
  202. data/golden/with_constants/expected/nast.txt +2 -2
  203. data/golden/with_constants/expected/schema_ruby.rb +1 -1
  204. data/golden/with_constants/expected/snast.txt +2 -2
  205. data/lib/kumi/analyzer.rb +12 -12
  206. data/lib/kumi/core/analyzer/passes/formal_constraint_propagator.rb +236 -0
  207. data/lib/kumi/core/analyzer/passes/input_collector.rb +22 -4
  208. data/lib/kumi/core/analyzer/passes/lir/inline_declarations_pass.rb +118 -74
  209. data/lib/kumi/core/analyzer/passes/nast_dimensional_analyzer_pass.rb +64 -18
  210. data/lib/kumi/core/analyzer/passes/normalize_to_nast_pass.rb +9 -4
  211. data/lib/kumi/core/analyzer/passes/snast_pass.rb +3 -1
  212. data/lib/kumi/core/analyzer/passes/unsat_detector.rb +172 -198
  213. data/lib/kumi/core/error_reporter.rb +36 -1
  214. data/lib/kumi/core/errors.rb +33 -1
  215. data/lib/kumi/core/functions/function_spec.rb +5 -4
  216. data/lib/kumi/core/functions/loader.rb +17 -1
  217. data/lib/kumi/core/functions/overload_resolver.rb +164 -0
  218. data/lib/kumi/core/functions/type_error_reporter.rb +118 -0
  219. data/lib/kumi/core/functions/type_rules.rb +155 -35
  220. data/lib/kumi/core/types/inference.rb +29 -22
  221. data/lib/kumi/core/types/normalizer.rb +29 -45
  222. data/lib/kumi/core/types/validator.rb +16 -27
  223. data/lib/kumi/core/types/value_objects.rb +116 -0
  224. data/lib/kumi/core/types.rb +45 -37
  225. data/lib/kumi/registry_v2/loader.rb +90 -0
  226. data/lib/kumi/registry_v2.rb +18 -1
  227. data/lib/kumi/version.rb +1 -1
  228. metadata +21 -7
  229. data/lib/kumi/core/analyzer/unsat_constant_evaluator.rb +0 -59
  230. data/lib/kumi/core/atom_unsat_solver.rb +0 -396
  231. data/lib/kumi/core/constraint_relationship_solver.rb +0 -641
  232. data/lib/kumi/core/types/builder.rb +0 -23
  233. data/lib/kumi/core/types/compatibility.rb +0 -96
  234. data/lib/kumi/core/types/formatter.rb +0 -26
@@ -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
@@ -319,83 +319,83 @@
319
319
  %t253 = load_input "rows" :: array
320
320
  loop rows id=L23 in %t253 as el=%rows_el_254, idx=%rows_i_255
321
321
  loop col id=L24 in %rows_el_254 as el=%col_el_256, idx=%col_i_257
322
- %t530 = length %t253 :: integer
323
- %t531 = const -1 :: integer
324
- %t532 = call core.sub(%rows_i_255, %t531) :: integer
325
- %t533 = const 0 :: integer
326
- %t534 = call core.gte(%t532, %t533) :: boolean
327
- %t535 = call core.lt(%t532, %t530) :: boolean
328
- %t536 = call core.and(%t534, %t535) :: boolean
329
- %t537 = const 1 :: integer
330
- %t538 = call core.sub(%t530, %t537) :: integer
331
- %t540 = call core.clamp(%t532, %t533, %t538) :: integer
332
- %t541 = gather %t253, %t540 :: any
333
- %t542 = length %t541 :: integer
334
- %t543 = call core.mod(%col_i_257, %t542) :: integer
335
- %t544 = call core.add(%t543, %t542) :: integer
336
- %t545 = call core.mod(%t544, %t542) :: integer
337
- %t546 = gather %t541, %t545 :: integer
338
- %t548 = select %t536, %t546, %t533 :: integer
339
- %t552 = call core.sub(%rows_i_255, %t537) :: integer
340
- %t554 = call core.gte(%t552, %t533) :: boolean
341
- %t555 = call core.lt(%t552, %t530) :: boolean
342
- %t556 = call core.and(%t554, %t555) :: boolean
343
- %t560 = call core.clamp(%t552, %t533, %t538) :: integer
344
- %t561 = gather %t253, %t560 :: any
345
- %t562 = length %t561 :: integer
346
- %t563 = call core.mod(%col_i_257, %t562) :: integer
347
- %t564 = call core.add(%t563, %t562) :: integer
348
- %t565 = call core.mod(%t564, %t562) :: integer
349
- %t566 = gather %t561, %t565 :: integer
350
- %t568 = select %t556, %t566, %t533 :: integer
351
- %t571 = call core.mod(%rows_i_255, %t530) :: integer
352
- %t572 = call core.add(%t571, %t530) :: integer
353
- %t573 = call core.mod(%t572, %t530) :: integer
354
- %t574 = gather %t253, %t573 :: any
355
- %t575 = length %t574 :: integer
356
- %t577 = call core.sub(%col_i_257, %t531) :: integer
357
- %t579 = call core.gte(%t577, %t533) :: boolean
358
- %t580 = call core.lt(%t577, %t575) :: boolean
359
- %t581 = call core.and(%t579, %t580) :: boolean
360
- %t583 = call core.sub(%t575, %t537) :: integer
361
- %t585 = call core.clamp(%t577, %t533, %t583) :: integer
362
- %t586 = gather %t574, %t585 :: integer
363
- %t588 = select %t581, %t586, %t533 :: integer
364
- %t597 = call core.sub(%col_i_257, %t537) :: integer
365
- %t599 = call core.gte(%t597, %t533) :: boolean
366
- %t600 = call core.lt(%t597, %t575) :: boolean
367
- %t601 = call core.and(%t599, %t600) :: boolean
368
- %t605 = call core.clamp(%t597, %t533, %t583) :: integer
369
- %t606 = gather %t574, %t605 :: integer
370
- %t608 = select %t601, %t606, %t533 :: integer
371
- %t627 = call core.lt(%t577, %t542) :: boolean
372
- %t628 = call core.and(%t579, %t627) :: boolean
373
- %t629 = call core.and(%t536, %t628) :: boolean
374
- %t631 = call core.sub(%t542, %t537) :: integer
375
- %t633 = call core.clamp(%t577, %t533, %t631) :: integer
376
- %t634 = gather %t541, %t633 :: integer
377
- %t636 = select %t629, %t634, %t533 :: integer
378
- %t655 = call core.lt(%t597, %t542) :: boolean
379
- %t656 = call core.and(%t599, %t655) :: boolean
380
- %t657 = call core.and(%t536, %t656) :: boolean
381
- %t661 = call core.clamp(%t597, %t533, %t631) :: integer
382
- %t662 = gather %t541, %t661 :: integer
383
- %t664 = select %t657, %t662, %t533 :: integer
384
- %t683 = call core.lt(%t577, %t562) :: boolean
385
- %t684 = call core.and(%t579, %t683) :: boolean
386
- %t685 = call core.and(%t556, %t684) :: boolean
387
- %t687 = call core.sub(%t562, %t537) :: integer
388
- %t689 = call core.clamp(%t577, %t533, %t687) :: integer
389
- %t690 = gather %t561, %t689 :: integer
390
- %t692 = select %t685, %t690, %t533 :: integer
391
- %t711 = call core.lt(%t597, %t562) :: boolean
392
- %t712 = call core.and(%t599, %t711) :: boolean
393
- %t713 = call core.and(%t556, %t712) :: boolean
394
- %t717 = call core.clamp(%t597, %t533, %t687) :: integer
395
- %t718 = gather %t561, %t717 :: integer
396
- %t720 = select %t713, %t718, %t533 :: integer
397
- %t496 = make_tuple(%t548, %t568, %t588, %t608, %t636, %t664, %t692, %t720) :: tuple<integer>
398
- %t497 = fold %t496 fn="agg.sum" ::
322
+ %t499 = length %t253 :: integer
323
+ %t500 = const -1 :: integer
324
+ %t501 = call core.sub(%rows_i_255, %t500) :: integer
325
+ %t502 = const 0 :: integer
326
+ %t503 = call core.gte(%t501, %t502) :: boolean
327
+ %t504 = call core.lt(%t501, %t499) :: boolean
328
+ %t505 = call core.and(%t503, %t504) :: boolean
329
+ %t506 = const 1 :: integer
330
+ %t507 = call core.sub(%t499, %t506) :: integer
331
+ %t509 = call core.clamp(%t501, %t502, %t507) :: integer
332
+ %t510 = gather %t253, %t509 :: any
333
+ %t511 = length %t510 :: integer
334
+ %t512 = call core.mod(%col_i_257, %t511) :: integer
335
+ %t513 = call core.add(%t512, %t511) :: integer
336
+ %t514 = call core.mod(%t513, %t511) :: integer
337
+ %t515 = gather %t510, %t514 :: integer
338
+ %t517 = select %t505, %t515, %t502 :: integer
339
+ %t521 = call core.sub(%rows_i_255, %t506) :: integer
340
+ %t523 = call core.gte(%t521, %t502) :: boolean
341
+ %t524 = call core.lt(%t521, %t499) :: boolean
342
+ %t525 = call core.and(%t523, %t524) :: boolean
343
+ %t529 = call core.clamp(%t521, %t502, %t507) :: integer
344
+ %t530 = gather %t253, %t529 :: any
345
+ %t531 = length %t530 :: integer
346
+ %t532 = call core.mod(%col_i_257, %t531) :: integer
347
+ %t533 = call core.add(%t532, %t531) :: integer
348
+ %t534 = call core.mod(%t533, %t531) :: integer
349
+ %t535 = gather %t530, %t534 :: integer
350
+ %t537 = select %t525, %t535, %t502 :: integer
351
+ %t540 = call core.mod(%rows_i_255, %t499) :: integer
352
+ %t541 = call core.add(%t540, %t499) :: integer
353
+ %t542 = call core.mod(%t541, %t499) :: integer
354
+ %t543 = gather %t253, %t542 :: any
355
+ %t544 = length %t543 :: integer
356
+ %t546 = call core.sub(%col_i_257, %t500) :: integer
357
+ %t548 = call core.gte(%t546, %t502) :: boolean
358
+ %t549 = call core.lt(%t546, %t544) :: boolean
359
+ %t550 = call core.and(%t548, %t549) :: boolean
360
+ %t552 = call core.sub(%t544, %t506) :: integer
361
+ %t554 = call core.clamp(%t546, %t502, %t552) :: integer
362
+ %t555 = gather %t543, %t554 :: integer
363
+ %t557 = select %t550, %t555, %t502 :: integer
364
+ %t566 = call core.sub(%col_i_257, %t506) :: integer
365
+ %t568 = call core.gte(%t566, %t502) :: boolean
366
+ %t569 = call core.lt(%t566, %t544) :: boolean
367
+ %t570 = call core.and(%t568, %t569) :: boolean
368
+ %t574 = call core.clamp(%t566, %t502, %t552) :: integer
369
+ %t575 = gather %t543, %t574 :: integer
370
+ %t577 = select %t570, %t575, %t502 :: integer
371
+ %t596 = call core.lt(%t546, %t511) :: boolean
372
+ %t597 = call core.and(%t548, %t596) :: boolean
373
+ %t598 = call core.and(%t505, %t597) :: boolean
374
+ %t600 = call core.sub(%t511, %t506) :: integer
375
+ %t602 = call core.clamp(%t546, %t502, %t600) :: integer
376
+ %t603 = gather %t510, %t602 :: integer
377
+ %t605 = select %t598, %t603, %t502 :: integer
378
+ %t624 = call core.lt(%t566, %t511) :: boolean
379
+ %t625 = call core.and(%t568, %t624) :: boolean
380
+ %t626 = call core.and(%t505, %t625) :: boolean
381
+ %t630 = call core.clamp(%t566, %t502, %t600) :: integer
382
+ %t631 = gather %t510, %t630 :: integer
383
+ %t633 = select %t626, %t631, %t502 :: integer
384
+ %t652 = call core.lt(%t546, %t531) :: boolean
385
+ %t653 = call core.and(%t548, %t652) :: boolean
386
+ %t654 = call core.and(%t525, %t653) :: boolean
387
+ %t656 = call core.sub(%t531, %t506) :: integer
388
+ %t658 = call core.clamp(%t546, %t502, %t656) :: integer
389
+ %t659 = gather %t530, %t658 :: integer
390
+ %t661 = select %t654, %t659, %t502 :: integer
391
+ %t680 = call core.lt(%t566, %t531) :: boolean
392
+ %t681 = call core.and(%t568, %t680) :: boolean
393
+ %t682 = call core.and(%t525, %t681) :: boolean
394
+ %t686 = call core.clamp(%t566, %t502, %t656) :: integer
395
+ %t687 = gather %t530, %t686 :: integer
396
+ %t689 = select %t682, %t687, %t502 :: integer
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
@@ -406,85 +406,85 @@
406
406
  %t261 = load_input "rows" :: array
407
407
  loop rows id=L25 in %t261 as el=%rows_el_262, idx=%rows_i_263
408
408
  loop col id=L26 in %rows_el_262 as el=%col_el_264, idx=%col_i_265
409
- %t722 = length %t261 :: integer
410
- %t723 = const -1 :: integer
411
- %t724 = call core.sub(%rows_i_263, %t723) :: integer
412
- %t725 = const 0 :: integer
413
- %t726 = call core.gte(%t724, %t725) :: boolean
414
- %t727 = call core.lt(%t724, %t722) :: boolean
409
+ %t702 = length %t261 :: integer
410
+ %t703 = const -1 :: integer
411
+ %t704 = call core.sub(%rows_i_263, %t703) :: integer
412
+ %t705 = const 0 :: integer
413
+ %t706 = call core.gte(%t704, %t705) :: boolean
414
+ %t707 = call core.lt(%t704, %t702) :: boolean
415
+ %t708 = call core.and(%t706, %t707) :: boolean
416
+ %t709 = const 1 :: integer
417
+ %t710 = call core.sub(%t702, %t709) :: integer
418
+ %t712 = call core.clamp(%t704, %t705, %t710) :: integer
419
+ %t713 = gather %t261, %t712 :: any
420
+ %t714 = length %t713 :: integer
421
+ %t715 = call core.mod(%col_i_265, %t714) :: integer
422
+ %t716 = call core.add(%t715, %t714) :: integer
423
+ %t717 = call core.mod(%t716, %t714) :: integer
424
+ %t718 = gather %t713, %t717 :: integer
425
+ %t720 = select %t708, %t718, %t705 :: integer
426
+ %t724 = call core.sub(%rows_i_263, %t709) :: integer
427
+ %t726 = call core.gte(%t724, %t705) :: boolean
428
+ %t727 = call core.lt(%t724, %t702) :: boolean
415
429
  %t728 = call core.and(%t726, %t727) :: boolean
416
- %t729 = const 1 :: integer
417
- %t730 = call core.sub(%t722, %t729) :: integer
418
- %t732 = call core.clamp(%t724, %t725, %t730) :: integer
430
+ %t732 = call core.clamp(%t724, %t705, %t710) :: integer
419
431
  %t733 = gather %t261, %t732 :: any
420
432
  %t734 = length %t733 :: integer
421
433
  %t735 = call core.mod(%col_i_265, %t734) :: integer
422
434
  %t736 = call core.add(%t735, %t734) :: integer
423
435
  %t737 = call core.mod(%t736, %t734) :: integer
424
436
  %t738 = gather %t733, %t737 :: integer
425
- %t740 = select %t728, %t738, %t725 :: integer
426
- %t744 = call core.sub(%rows_i_263, %t729) :: integer
427
- %t746 = call core.gte(%t744, %t725) :: boolean
428
- %t747 = call core.lt(%t744, %t722) :: boolean
429
- %t748 = call core.and(%t746, %t747) :: boolean
430
- %t752 = call core.clamp(%t744, %t725, %t730) :: integer
431
- %t753 = gather %t261, %t752 :: any
432
- %t754 = length %t753 :: integer
433
- %t755 = call core.mod(%col_i_265, %t754) :: integer
434
- %t756 = call core.add(%t755, %t754) :: integer
435
- %t757 = call core.mod(%t756, %t754) :: integer
436
- %t758 = gather %t753, %t757 :: integer
437
- %t760 = select %t748, %t758, %t725 :: integer
438
- %t763 = call core.mod(%rows_i_263, %t722) :: integer
439
- %t764 = call core.add(%t763, %t722) :: integer
440
- %t765 = call core.mod(%t764, %t722) :: integer
441
- %t766 = gather %t261, %t765 :: any
442
- %t767 = length %t766 :: integer
443
- %t769 = call core.sub(%col_i_265, %t723) :: integer
444
- %t771 = call core.gte(%t769, %t725) :: boolean
445
- %t772 = call core.lt(%t769, %t767) :: boolean
437
+ %t740 = select %t728, %t738, %t705 :: integer
438
+ %t743 = call core.mod(%rows_i_263, %t702) :: integer
439
+ %t744 = call core.add(%t743, %t702) :: integer
440
+ %t745 = call core.mod(%t744, %t702) :: integer
441
+ %t746 = gather %t261, %t745 :: any
442
+ %t747 = length %t746 :: integer
443
+ %t749 = call core.sub(%col_i_265, %t703) :: integer
444
+ %t751 = call core.gte(%t749, %t705) :: boolean
445
+ %t752 = call core.lt(%t749, %t747) :: boolean
446
+ %t753 = call core.and(%t751, %t752) :: boolean
447
+ %t755 = call core.sub(%t747, %t709) :: integer
448
+ %t757 = call core.clamp(%t749, %t705, %t755) :: integer
449
+ %t758 = gather %t746, %t757 :: integer
450
+ %t760 = select %t753, %t758, %t705 :: integer
451
+ %t769 = call core.sub(%col_i_265, %t709) :: integer
452
+ %t771 = call core.gte(%t769, %t705) :: boolean
453
+ %t772 = call core.lt(%t769, %t747) :: boolean
446
454
  %t773 = call core.and(%t771, %t772) :: boolean
447
- %t775 = call core.sub(%t767, %t729) :: integer
448
- %t777 = call core.clamp(%t769, %t725, %t775) :: integer
449
- %t778 = gather %t766, %t777 :: integer
450
- %t780 = select %t773, %t778, %t725 :: integer
451
- %t789 = call core.sub(%col_i_265, %t729) :: integer
452
- %t791 = call core.gte(%t789, %t725) :: boolean
453
- %t792 = call core.lt(%t789, %t767) :: boolean
454
- %t793 = call core.and(%t791, %t792) :: boolean
455
- %t797 = call core.clamp(%t789, %t725, %t775) :: integer
456
- %t798 = gather %t766, %t797 :: integer
457
- %t800 = select %t793, %t798, %t725 :: integer
458
- %t819 = call core.lt(%t769, %t734) :: boolean
459
- %t820 = call core.and(%t771, %t819) :: boolean
460
- %t821 = call core.and(%t728, %t820) :: boolean
461
- %t823 = call core.sub(%t734, %t729) :: integer
462
- %t825 = call core.clamp(%t769, %t725, %t823) :: integer
463
- %t826 = gather %t733, %t825 :: integer
464
- %t828 = select %t821, %t826, %t725 :: integer
465
- %t847 = call core.lt(%t789, %t734) :: boolean
466
- %t848 = call core.and(%t791, %t847) :: boolean
467
- %t849 = call core.and(%t728, %t848) :: boolean
468
- %t853 = call core.clamp(%t789, %t725, %t823) :: integer
469
- %t854 = gather %t733, %t853 :: integer
470
- %t856 = select %t849, %t854, %t725 :: integer
471
- %t875 = call core.lt(%t769, %t754) :: boolean
472
- %t876 = call core.and(%t771, %t875) :: boolean
473
- %t877 = call core.and(%t748, %t876) :: boolean
474
- %t879 = call core.sub(%t754, %t729) :: integer
475
- %t881 = call core.clamp(%t769, %t725, %t879) :: integer
476
- %t882 = gather %t753, %t881 :: integer
477
- %t884 = select %t877, %t882, %t725 :: integer
478
- %t903 = call core.lt(%t789, %t754) :: boolean
479
- %t904 = call core.and(%t791, %t903) :: boolean
480
- %t905 = call core.and(%t748, %t904) :: boolean
481
- %t909 = call core.clamp(%t789, %t725, %t879) :: integer
482
- %t910 = gather %t753, %t909 :: integer
483
- %t912 = select %t905, %t910, %t725 :: integer
484
- %t507 = make_tuple(%t740, %t760, %t780, %t800, %t828, %t856, %t884, %t912) :: tuple<integer>
485
- %t508 = fold %t507 fn="agg.sum" ::
455
+ %t777 = call core.clamp(%t769, %t705, %t755) :: integer
456
+ %t778 = gather %t746, %t777 :: integer
457
+ %t780 = select %t773, %t778, %t705 :: integer
458
+ %t799 = call core.lt(%t749, %t714) :: boolean
459
+ %t800 = call core.and(%t751, %t799) :: boolean
460
+ %t801 = call core.and(%t708, %t800) :: boolean
461
+ %t803 = call core.sub(%t714, %t709) :: integer
462
+ %t805 = call core.clamp(%t749, %t705, %t803) :: integer
463
+ %t806 = gather %t713, %t805 :: integer
464
+ %t808 = select %t801, %t806, %t705 :: integer
465
+ %t827 = call core.lt(%t769, %t714) :: boolean
466
+ %t828 = call core.and(%t771, %t827) :: boolean
467
+ %t829 = call core.and(%t708, %t828) :: boolean
468
+ %t833 = call core.clamp(%t769, %t705, %t803) :: integer
469
+ %t834 = gather %t713, %t833 :: integer
470
+ %t836 = select %t829, %t834, %t705 :: integer
471
+ %t855 = call core.lt(%t749, %t734) :: boolean
472
+ %t856 = call core.and(%t751, %t855) :: boolean
473
+ %t857 = call core.and(%t728, %t856) :: boolean
474
+ %t859 = call core.sub(%t734, %t709) :: integer
475
+ %t861 = call core.clamp(%t749, %t705, %t859) :: integer
476
+ %t862 = gather %t733, %t861 :: integer
477
+ %t864 = select %t857, %t862, %t705 :: integer
478
+ %t883 = call core.lt(%t769, %t734) :: boolean
479
+ %t884 = call core.and(%t771, %t883) :: boolean
480
+ %t885 = call core.and(%t728, %t884) :: boolean
481
+ %t889 = call core.clamp(%t769, %t705, %t859) :: integer
482
+ %t890 = gather %t733, %t889 :: integer
483
+ %t892 = select %t885, %t890, %t705 :: integer
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
- %t268 = call core.eq(%t508, %t267) :: boolean
487
+ %t268 = call core.eq(%t700, %t267) :: boolean
488
488
  yield %t268
489
489
  end_loop
490
490
  end_loop
@@ -493,87 +493,88 @@
493
493
  %t269 = load_input "rows" :: array
494
494
  loop rows id=L27 in %t269 as el=%rows_el_270, idx=%rows_i_271
495
495
  loop col id=L28 in %rows_el_270 as el=%col_el_272, idx=%col_i_273
496
- %t915 = length %t269 :: integer
497
- %t916 = const -1 :: integer
498
- %t917 = call core.sub(%rows_i_271, %t916) :: integer
499
- %t918 = const 0 :: integer
500
- %t919 = call core.gte(%t917, %t918) :: boolean
501
- %t920 = call core.lt(%t917, %t915) :: boolean
502
- %t921 = call core.and(%t919, %t920) :: boolean
503
- %t922 = const 1 :: integer
504
- %t923 = call core.sub(%t915, %t922) :: integer
505
- %t925 = call core.clamp(%t917, %t918, %t923) :: integer
506
- %t926 = gather %t269, %t925 :: any
507
- %t927 = length %t926 :: integer
508
- %t928 = call core.mod(%col_i_273, %t927) :: integer
509
- %t929 = call core.add(%t928, %t927) :: integer
510
- %t930 = call core.mod(%t929, %t927) :: integer
511
- %t931 = gather %t926, %t930 :: integer
512
- %t933 = select %t921, %t931, %t918 :: integer
513
- %t937 = call core.sub(%rows_i_271, %t922) :: integer
514
- %t939 = call core.gte(%t937, %t918) :: boolean
515
- %t940 = call core.lt(%t937, %t915) :: boolean
516
- %t941 = call core.and(%t939, %t940) :: boolean
517
- %t945 = call core.clamp(%t937, %t918, %t923) :: integer
518
- %t946 = gather %t269, %t945 :: any
519
- %t947 = length %t946 :: integer
520
- %t948 = call core.mod(%col_i_273, %t947) :: integer
521
- %t949 = call core.add(%t948, %t947) :: integer
522
- %t950 = call core.mod(%t949, %t947) :: integer
523
- %t951 = gather %t946, %t950 :: integer
524
- %t953 = select %t941, %t951, %t918 :: integer
525
- %t956 = call core.mod(%rows_i_271, %t915) :: integer
526
- %t957 = call core.add(%t956, %t915) :: integer
527
- %t958 = call core.mod(%t957, %t915) :: integer
528
- %t959 = gather %t269, %t958 :: any
529
- %t960 = length %t959 :: integer
530
- %t962 = call core.sub(%col_i_273, %t916) :: integer
531
- %t964 = call core.gte(%t962, %t918) :: boolean
532
- %t965 = call core.lt(%t962, %t960) :: boolean
533
- %t966 = call core.and(%t964, %t965) :: boolean
534
- %t968 = call core.sub(%t960, %t922) :: integer
535
- %t970 = call core.clamp(%t962, %t918, %t968) :: integer
536
- %t971 = gather %t959, %t970 :: integer
537
- %t973 = select %t966, %t971, %t918 :: integer
538
- %t982 = call core.sub(%col_i_273, %t922) :: integer
539
- %t984 = call core.gte(%t982, %t918) :: boolean
540
- %t985 = call core.lt(%t982, %t960) :: boolean
541
- %t986 = call core.and(%t984, %t985) :: boolean
542
- %t990 = call core.clamp(%t982, %t918, %t968) :: integer
543
- %t991 = gather %t959, %t990 :: integer
544
- %t993 = select %t986, %t991, %t918 :: integer
545
- %t1012 = call core.lt(%t962, %t927) :: boolean
546
- %t1013 = call core.and(%t964, %t1012) :: boolean
547
- %t1014 = call core.and(%t921, %t1013) :: boolean
548
- %t1016 = call core.sub(%t927, %t922) :: integer
549
- %t1018 = call core.clamp(%t962, %t918, %t1016) :: integer
550
- %t1019 = gather %t926, %t1018 :: integer
551
- %t1021 = select %t1014, %t1019, %t918 :: integer
552
- %t1040 = call core.lt(%t982, %t927) :: boolean
553
- %t1041 = call core.and(%t984, %t1040) :: boolean
554
- %t1042 = call core.and(%t921, %t1041) :: boolean
555
- %t1046 = call core.clamp(%t982, %t918, %t1016) :: integer
556
- %t1047 = gather %t926, %t1046 :: integer
557
- %t1049 = select %t1042, %t1047, %t918 :: integer
558
- %t1068 = call core.lt(%t962, %t947) :: boolean
559
- %t1069 = call core.and(%t964, %t1068) :: boolean
560
- %t1070 = call core.and(%t941, %t1069) :: boolean
561
- %t1072 = call core.sub(%t947, %t922) :: integer
562
- %t1074 = call core.clamp(%t962, %t918, %t1072) :: integer
563
- %t1075 = gather %t946, %t1074 :: integer
564
- %t1077 = select %t1070, %t1075, %t918 :: integer
565
- %t1096 = call core.lt(%t982, %t947) :: boolean
566
- %t1097 = call core.and(%t984, %t1096) :: boolean
567
- %t1098 = call core.and(%t941, %t1097) :: boolean
568
- %t1102 = call core.clamp(%t982, %t918, %t1072) :: integer
569
- %t1103 = gather %t946, %t1102 :: integer
570
- %t1105 = select %t1098, %t1103, %t918 :: integer
571
- %t1106 = make_tuple(%t933, %t953, %t973, %t993, %t1021, %t1049, %t1077, %t1105) :: tuple<integer>
572
- %t1107 = fold %t1106 fn="agg.sum" ::
573
- %t511 = const 2 :: integer
574
- %t512 = call core.eq(%t1107, %t511) :: boolean
575
- %t516 = call core.gt(%col_el_272, %t918) :: boolean
576
- %t276 = call core.and(%t512, %t516) :: boolean
496
+ %t909 = length %t269 :: integer
497
+ %t910 = const -1 :: integer
498
+ %t911 = call core.sub(%rows_i_271, %t910) :: integer
499
+ %t912 = const 0 :: integer
500
+ %t913 = call core.gte(%t911, %t912) :: boolean
501
+ %t914 = call core.lt(%t911, %t909) :: boolean
502
+ %t915 = call core.and(%t913, %t914) :: boolean
503
+ %t916 = const 1 :: integer
504
+ %t917 = call core.sub(%t909, %t916) :: integer
505
+ %t919 = call core.clamp(%t911, %t912, %t917) :: integer
506
+ %t920 = gather %t269, %t919 :: any
507
+ %t921 = length %t920 :: integer
508
+ %t922 = call core.mod(%col_i_273, %t921) :: integer
509
+ %t923 = call core.add(%t922, %t921) :: integer
510
+ %t924 = call core.mod(%t923, %t921) :: integer
511
+ %t925 = gather %t920, %t924 :: integer
512
+ %t927 = select %t915, %t925, %t912 :: integer
513
+ %t931 = call core.sub(%rows_i_271, %t916) :: integer
514
+ %t933 = call core.gte(%t931, %t912) :: boolean
515
+ %t934 = call core.lt(%t931, %t909) :: boolean
516
+ %t935 = call core.and(%t933, %t934) :: boolean
517
+ %t939 = call core.clamp(%t931, %t912, %t917) :: integer
518
+ %t940 = gather %t269, %t939 :: any
519
+ %t941 = length %t940 :: integer
520
+ %t942 = call core.mod(%col_i_273, %t941) :: integer
521
+ %t943 = call core.add(%t942, %t941) :: integer
522
+ %t944 = call core.mod(%t943, %t941) :: integer
523
+ %t945 = gather %t940, %t944 :: integer
524
+ %t947 = select %t935, %t945, %t912 :: integer
525
+ %t950 = call core.mod(%rows_i_271, %t909) :: integer
526
+ %t951 = call core.add(%t950, %t909) :: integer
527
+ %t952 = call core.mod(%t951, %t909) :: integer
528
+ %t953 = gather %t269, %t952 :: any
529
+ %t954 = length %t953 :: integer
530
+ %t956 = call core.sub(%col_i_273, %t910) :: integer
531
+ %t958 = call core.gte(%t956, %t912) :: boolean
532
+ %t959 = call core.lt(%t956, %t954) :: boolean
533
+ %t960 = call core.and(%t958, %t959) :: boolean
534
+ %t962 = call core.sub(%t954, %t916) :: integer
535
+ %t964 = call core.clamp(%t956, %t912, %t962) :: integer
536
+ %t965 = gather %t953, %t964 :: integer
537
+ %t967 = select %t960, %t965, %t912 :: integer
538
+ %t976 = call core.sub(%col_i_273, %t916) :: integer
539
+ %t978 = call core.gte(%t976, %t912) :: boolean
540
+ %t979 = call core.lt(%t976, %t954) :: boolean
541
+ %t980 = call core.and(%t978, %t979) :: boolean
542
+ %t984 = call core.clamp(%t976, %t912, %t962) :: integer
543
+ %t985 = gather %t953, %t984 :: integer
544
+ %t987 = select %t980, %t985, %t912 :: integer
545
+ %t1006 = call core.lt(%t956, %t921) :: boolean
546
+ %t1007 = call core.and(%t958, %t1006) :: boolean
547
+ %t1008 = call core.and(%t915, %t1007) :: boolean
548
+ %t1010 = call core.sub(%t921, %t916) :: integer
549
+ %t1012 = call core.clamp(%t956, %t912, %t1010) :: integer
550
+ %t1013 = gather %t920, %t1012 :: integer
551
+ %t1015 = select %t1008, %t1013, %t912 :: integer
552
+ %t1034 = call core.lt(%t976, %t921) :: boolean
553
+ %t1035 = call core.and(%t978, %t1034) :: boolean
554
+ %t1036 = call core.and(%t915, %t1035) :: boolean
555
+ %t1040 = call core.clamp(%t976, %t912, %t1010) :: integer
556
+ %t1041 = gather %t920, %t1040 :: integer
557
+ %t1043 = select %t1036, %t1041, %t912 :: integer
558
+ %t1062 = call core.lt(%t956, %t941) :: boolean
559
+ %t1063 = call core.and(%t958, %t1062) :: boolean
560
+ %t1064 = call core.and(%t935, %t1063) :: boolean
561
+ %t1066 = call core.sub(%t941, %t916) :: integer
562
+ %t1068 = call core.clamp(%t956, %t912, %t1066) :: integer
563
+ %t1069 = gather %t940, %t1068 :: integer
564
+ %t1071 = select %t1064, %t1069, %t912 :: integer
565
+ %t1090 = call core.lt(%t976, %t941) :: boolean
566
+ %t1091 = call core.and(%t978, %t1090) :: boolean
567
+ %t1092 = call core.and(%t935, %t1091) :: boolean
568
+ %t1096 = call core.clamp(%t976, %t912, %t1066) :: integer
569
+ %t1097 = gather %t940, %t1096 :: integer
570
+ %t1099 = select %t1092, %t1097, %t912 :: integer
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
+ %t895 = const 2 :: integer
574
+ %t896 = call core.eq(%t907, %t895) :: boolean
575
+ %t1102 = const 0 :: integer
576
+ %t1103 = call core.gt(%col_el_272, %t1102) :: boolean
577
+ %t276 = call core.and(%t896, %t1103) :: boolean
577
578
  yield %t276
578
579
  end_loop
579
580
  end_loop
@@ -582,90 +583,91 @@
582
583
  %t277 = load_input "rows" :: array
583
584
  loop rows id=L29 in %t277 as el=%rows_el_278, idx=%rows_i_279
584
585
  loop col id=L30 in %rows_el_278 as el=%col_el_280, idx=%col_i_281
585
- %t1111 = length %t277 :: integer
586
- %t1112 = const -1 :: integer
587
- %t1113 = call core.sub(%rows_i_279, %t1112) :: integer
588
- %t1114 = const 0 :: integer
589
- %t1115 = call core.gte(%t1113, %t1114) :: boolean
590
- %t1116 = call core.lt(%t1113, %t1111) :: boolean
591
- %t1117 = call core.and(%t1115, %t1116) :: boolean
592
- %t1118 = const 1 :: integer
593
- %t1119 = call core.sub(%t1111, %t1118) :: integer
594
- %t1121 = call core.clamp(%t1113, %t1114, %t1119) :: integer
595
- %t1122 = gather %t277, %t1121 :: any
596
- %t1123 = length %t1122 :: integer
597
- %t1124 = call core.mod(%col_i_281, %t1123) :: integer
598
- %t1125 = call core.add(%t1124, %t1123) :: integer
599
- %t1126 = call core.mod(%t1125, %t1123) :: integer
600
- %t1127 = gather %t1122, %t1126 :: integer
601
- %t1129 = select %t1117, %t1127, %t1114 :: integer
602
- %t1133 = call core.sub(%rows_i_279, %t1118) :: integer
603
- %t1135 = call core.gte(%t1133, %t1114) :: boolean
604
- %t1136 = call core.lt(%t1133, %t1111) :: boolean
605
- %t1137 = call core.and(%t1135, %t1136) :: boolean
606
- %t1141 = call core.clamp(%t1133, %t1114, %t1119) :: integer
607
- %t1142 = gather %t277, %t1141 :: any
608
- %t1143 = length %t1142 :: integer
609
- %t1144 = call core.mod(%col_i_281, %t1143) :: integer
610
- %t1145 = call core.add(%t1144, %t1143) :: integer
611
- %t1146 = call core.mod(%t1145, %t1143) :: integer
612
- %t1147 = gather %t1142, %t1146 :: integer
613
- %t1149 = select %t1137, %t1147, %t1114 :: integer
614
- %t1152 = call core.mod(%rows_i_279, %t1111) :: integer
615
- %t1153 = call core.add(%t1152, %t1111) :: integer
616
- %t1154 = call core.mod(%t1153, %t1111) :: integer
617
- %t1155 = gather %t277, %t1154 :: any
618
- %t1156 = length %t1155 :: integer
619
- %t1158 = call core.sub(%col_i_281, %t1112) :: integer
620
- %t1160 = call core.gte(%t1158, %t1114) :: boolean
621
- %t1161 = call core.lt(%t1158, %t1156) :: boolean
622
- %t1162 = call core.and(%t1160, %t1161) :: boolean
623
- %t1164 = call core.sub(%t1156, %t1118) :: integer
624
- %t1166 = call core.clamp(%t1158, %t1114, %t1164) :: integer
625
- %t1167 = gather %t1155, %t1166 :: integer
626
- %t1169 = select %t1162, %t1167, %t1114 :: integer
627
- %t1178 = call core.sub(%col_i_281, %t1118) :: integer
628
- %t1180 = call core.gte(%t1178, %t1114) :: boolean
629
- %t1181 = call core.lt(%t1178, %t1156) :: boolean
630
- %t1182 = call core.and(%t1180, %t1181) :: boolean
631
- %t1186 = call core.clamp(%t1178, %t1114, %t1164) :: integer
632
- %t1187 = gather %t1155, %t1186 :: integer
633
- %t1189 = select %t1182, %t1187, %t1114 :: integer
634
- %t1208 = call core.lt(%t1158, %t1123) :: boolean
635
- %t1209 = call core.and(%t1160, %t1208) :: boolean
636
- %t1210 = call core.and(%t1117, %t1209) :: boolean
637
- %t1212 = call core.sub(%t1123, %t1118) :: integer
638
- %t1214 = call core.clamp(%t1158, %t1114, %t1212) :: integer
639
- %t1215 = gather %t1122, %t1214 :: integer
640
- %t1217 = select %t1210, %t1215, %t1114 :: integer
641
- %t1236 = call core.lt(%t1178, %t1123) :: boolean
642
- %t1237 = call core.and(%t1180, %t1236) :: boolean
643
- %t1238 = call core.and(%t1117, %t1237) :: boolean
644
- %t1242 = call core.clamp(%t1178, %t1114, %t1212) :: integer
645
- %t1243 = gather %t1122, %t1242 :: integer
646
- %t1245 = select %t1238, %t1243, %t1114 :: integer
647
- %t1264 = call core.lt(%t1158, %t1143) :: boolean
648
- %t1265 = call core.and(%t1160, %t1264) :: boolean
649
- %t1266 = call core.and(%t1137, %t1265) :: boolean
650
- %t1268 = call core.sub(%t1143, %t1118) :: integer
651
- %t1270 = call core.clamp(%t1158, %t1114, %t1268) :: integer
652
- %t1271 = gather %t1142, %t1270 :: integer
653
- %t1273 = select %t1266, %t1271, %t1114 :: integer
654
- %t1292 = call core.lt(%t1178, %t1143) :: boolean
655
- %t1293 = call core.and(%t1180, %t1292) :: boolean
656
- %t1294 = call core.and(%t1137, %t1293) :: boolean
657
- %t1298 = call core.clamp(%t1178, %t1114, %t1268) :: integer
658
- %t1299 = gather %t1142, %t1298 :: integer
659
- %t1301 = select %t1294, %t1299, %t1114 :: integer
660
- %t1302 = make_tuple(%t1129, %t1149, %t1169, %t1189, %t1217, %t1245, %t1273, %t1301) :: tuple<integer>
661
- %t1303 = fold %t1302 fn="agg.sum" ::
662
- %t519 = const 3 :: integer
663
- %t520 = call core.eq(%t1303, %t519) :: boolean
664
- %t1316 = const 2 :: integer
665
- %t1317 = call core.eq(%t1303, %t1316) :: boolean
666
- %t1321 = call core.gt(%col_el_280, %t1114) :: boolean
667
- %t524 = call core.and(%t1317, %t1321) :: boolean
668
- %t284 = call core.or(%t520, %t524) :: boolean
586
+ %t1121 = length %t277 :: integer
587
+ %t1122 = const -1 :: integer
588
+ %t1123 = call core.sub(%rows_i_279, %t1122) :: integer
589
+ %t1124 = const 0 :: integer
590
+ %t1125 = call core.gte(%t1123, %t1124) :: boolean
591
+ %t1126 = call core.lt(%t1123, %t1121) :: boolean
592
+ %t1127 = call core.and(%t1125, %t1126) :: boolean
593
+ %t1128 = const 1 :: integer
594
+ %t1129 = call core.sub(%t1121, %t1128) :: integer
595
+ %t1131 = call core.clamp(%t1123, %t1124, %t1129) :: integer
596
+ %t1132 = gather %t277, %t1131 :: any
597
+ %t1133 = length %t1132 :: integer
598
+ %t1134 = call core.mod(%col_i_281, %t1133) :: integer
599
+ %t1135 = call core.add(%t1134, %t1133) :: integer
600
+ %t1136 = call core.mod(%t1135, %t1133) :: integer
601
+ %t1137 = gather %t1132, %t1136 :: integer
602
+ %t1139 = select %t1127, %t1137, %t1124 :: integer
603
+ %t1143 = call core.sub(%rows_i_279, %t1128) :: integer
604
+ %t1145 = call core.gte(%t1143, %t1124) :: boolean
605
+ %t1146 = call core.lt(%t1143, %t1121) :: boolean
606
+ %t1147 = call core.and(%t1145, %t1146) :: boolean
607
+ %t1151 = call core.clamp(%t1143, %t1124, %t1129) :: integer
608
+ %t1152 = gather %t277, %t1151 :: any
609
+ %t1153 = length %t1152 :: integer
610
+ %t1154 = call core.mod(%col_i_281, %t1153) :: integer
611
+ %t1155 = call core.add(%t1154, %t1153) :: integer
612
+ %t1156 = call core.mod(%t1155, %t1153) :: integer
613
+ %t1157 = gather %t1152, %t1156 :: integer
614
+ %t1159 = select %t1147, %t1157, %t1124 :: integer
615
+ %t1162 = call core.mod(%rows_i_279, %t1121) :: integer
616
+ %t1163 = call core.add(%t1162, %t1121) :: integer
617
+ %t1164 = call core.mod(%t1163, %t1121) :: integer
618
+ %t1165 = gather %t277, %t1164 :: any
619
+ %t1166 = length %t1165 :: integer
620
+ %t1168 = call core.sub(%col_i_281, %t1122) :: integer
621
+ %t1170 = call core.gte(%t1168, %t1124) :: boolean
622
+ %t1171 = call core.lt(%t1168, %t1166) :: boolean
623
+ %t1172 = call core.and(%t1170, %t1171) :: boolean
624
+ %t1174 = call core.sub(%t1166, %t1128) :: integer
625
+ %t1176 = call core.clamp(%t1168, %t1124, %t1174) :: integer
626
+ %t1177 = gather %t1165, %t1176 :: integer
627
+ %t1179 = select %t1172, %t1177, %t1124 :: integer
628
+ %t1188 = call core.sub(%col_i_281, %t1128) :: integer
629
+ %t1190 = call core.gte(%t1188, %t1124) :: boolean
630
+ %t1191 = call core.lt(%t1188, %t1166) :: boolean
631
+ %t1192 = call core.and(%t1190, %t1191) :: boolean
632
+ %t1196 = call core.clamp(%t1188, %t1124, %t1174) :: integer
633
+ %t1197 = gather %t1165, %t1196 :: integer
634
+ %t1199 = select %t1192, %t1197, %t1124 :: integer
635
+ %t1218 = call core.lt(%t1168, %t1133) :: boolean
636
+ %t1219 = call core.and(%t1170, %t1218) :: boolean
637
+ %t1220 = call core.and(%t1127, %t1219) :: boolean
638
+ %t1222 = call core.sub(%t1133, %t1128) :: integer
639
+ %t1224 = call core.clamp(%t1168, %t1124, %t1222) :: integer
640
+ %t1225 = gather %t1132, %t1224 :: integer
641
+ %t1227 = select %t1220, %t1225, %t1124 :: integer
642
+ %t1246 = call core.lt(%t1188, %t1133) :: boolean
643
+ %t1247 = call core.and(%t1190, %t1246) :: boolean
644
+ %t1248 = call core.and(%t1127, %t1247) :: boolean
645
+ %t1252 = call core.clamp(%t1188, %t1124, %t1222) :: integer
646
+ %t1253 = gather %t1132, %t1252 :: integer
647
+ %t1255 = select %t1248, %t1253, %t1124 :: integer
648
+ %t1274 = call core.lt(%t1168, %t1153) :: boolean
649
+ %t1275 = call core.and(%t1170, %t1274) :: boolean
650
+ %t1276 = call core.and(%t1147, %t1275) :: boolean
651
+ %t1278 = call core.sub(%t1153, %t1128) :: integer
652
+ %t1280 = call core.clamp(%t1168, %t1124, %t1278) :: integer
653
+ %t1281 = gather %t1152, %t1280 :: integer
654
+ %t1283 = select %t1276, %t1281, %t1124 :: integer
655
+ %t1302 = call core.lt(%t1188, %t1153) :: boolean
656
+ %t1303 = call core.and(%t1190, %t1302) :: boolean
657
+ %t1304 = call core.and(%t1147, %t1303) :: boolean
658
+ %t1308 = call core.clamp(%t1188, %t1124, %t1278) :: integer
659
+ %t1309 = gather %t1152, %t1308 :: integer
660
+ %t1311 = select %t1304, %t1309, %t1124 :: integer
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>
663
+ %t1107 = const 3 :: integer
664
+ %t1108 = call core.eq(%t1119, %t1107) :: boolean
665
+ %t1318 = const 2 :: integer
666
+ %t1319 = call core.eq(%t1119, %t1318) :: boolean
667
+ %t1525 = const 0 :: integer
668
+ %t1526 = call core.gt(%col_el_280, %t1525) :: boolean
669
+ %t1315 = call core.and(%t1319, %t1526) :: boolean
670
+ %t284 = call core.or(%t1108, %t1315) :: boolean
669
671
  yield %t284
670
672
  end_loop
671
673
  end_loop
@@ -674,91 +676,93 @@
674
676
  %t285 = load_input "rows" :: array
675
677
  loop rows id=L31 in %t285 as el=%rows_el_286, idx=%rows_i_287
676
678
  loop col id=L32 in %rows_el_286 as el=%col_el_288, idx=%col_i_289
677
- %t1539 = length %t285 :: integer
678
- %t1540 = const -1 :: integer
679
- %t1541 = call core.sub(%rows_i_287, %t1540) :: integer
680
- %t1542 = const 0 :: integer
681
- %t1543 = call core.gte(%t1541, %t1542) :: boolean
682
- %t1544 = call core.lt(%t1541, %t1539) :: boolean
683
- %t1545 = call core.and(%t1543, %t1544) :: boolean
684
- %t1546 = const 1 :: integer
685
- %t1547 = call core.sub(%t1539, %t1546) :: integer
686
- %t1549 = call core.clamp(%t1541, %t1542, %t1547) :: integer
687
- %t1550 = gather %t285, %t1549 :: any
688
- %t1551 = length %t1550 :: integer
689
- %t1552 = call core.mod(%col_i_289, %t1551) :: integer
690
- %t1553 = call core.add(%t1552, %t1551) :: integer
691
- %t1554 = call core.mod(%t1553, %t1551) :: integer
692
- %t1555 = gather %t1550, %t1554 :: integer
693
- %t1557 = select %t1545, %t1555, %t1542 :: integer
694
- %t1561 = call core.sub(%rows_i_287, %t1546) :: integer
695
- %t1563 = call core.gte(%t1561, %t1542) :: boolean
696
- %t1564 = call core.lt(%t1561, %t1539) :: boolean
697
- %t1565 = call core.and(%t1563, %t1564) :: boolean
698
- %t1569 = call core.clamp(%t1561, %t1542, %t1547) :: integer
699
- %t1570 = gather %t285, %t1569 :: any
700
- %t1571 = length %t1570 :: integer
701
- %t1572 = call core.mod(%col_i_289, %t1571) :: integer
702
- %t1573 = call core.add(%t1572, %t1571) :: integer
703
- %t1574 = call core.mod(%t1573, %t1571) :: integer
704
- %t1575 = gather %t1570, %t1574 :: integer
705
- %t1577 = select %t1565, %t1575, %t1542 :: integer
706
- %t1580 = call core.mod(%rows_i_287, %t1539) :: integer
707
- %t1581 = call core.add(%t1580, %t1539) :: integer
708
- %t1582 = call core.mod(%t1581, %t1539) :: integer
709
- %t1583 = gather %t285, %t1582 :: any
710
- %t1584 = length %t1583 :: integer
711
- %t1586 = call core.sub(%col_i_289, %t1540) :: integer
712
- %t1588 = call core.gte(%t1586, %t1542) :: boolean
713
- %t1589 = call core.lt(%t1586, %t1584) :: boolean
714
- %t1590 = call core.and(%t1588, %t1589) :: boolean
715
- %t1592 = call core.sub(%t1584, %t1546) :: integer
716
- %t1594 = call core.clamp(%t1586, %t1542, %t1592) :: integer
717
- %t1595 = gather %t1583, %t1594 :: integer
718
- %t1597 = select %t1590, %t1595, %t1542 :: integer
719
- %t1606 = call core.sub(%col_i_289, %t1546) :: integer
720
- %t1608 = call core.gte(%t1606, %t1542) :: boolean
721
- %t1609 = call core.lt(%t1606, %t1584) :: boolean
722
- %t1610 = call core.and(%t1608, %t1609) :: boolean
723
- %t1614 = call core.clamp(%t1606, %t1542, %t1592) :: integer
724
- %t1615 = gather %t1583, %t1614 :: integer
725
- %t1617 = select %t1610, %t1615, %t1542 :: integer
726
- %t1636 = call core.lt(%t1586, %t1551) :: boolean
727
- %t1637 = call core.and(%t1588, %t1636) :: boolean
728
- %t1638 = call core.and(%t1545, %t1637) :: boolean
729
- %t1640 = call core.sub(%t1551, %t1546) :: integer
730
- %t1642 = call core.clamp(%t1586, %t1542, %t1640) :: integer
731
- %t1643 = gather %t1550, %t1642 :: integer
732
- %t1645 = select %t1638, %t1643, %t1542 :: integer
733
- %t1664 = call core.lt(%t1606, %t1551) :: boolean
734
- %t1665 = call core.and(%t1608, %t1664) :: boolean
735
- %t1666 = call core.and(%t1545, %t1665) :: boolean
736
- %t1670 = call core.clamp(%t1606, %t1542, %t1640) :: integer
737
- %t1671 = gather %t1550, %t1670 :: integer
738
- %t1673 = select %t1666, %t1671, %t1542 :: integer
739
- %t1692 = call core.lt(%t1586, %t1571) :: boolean
740
- %t1693 = call core.and(%t1588, %t1692) :: boolean
741
- %t1694 = call core.and(%t1565, %t1693) :: boolean
742
- %t1696 = call core.sub(%t1571, %t1546) :: integer
743
- %t1698 = call core.clamp(%t1586, %t1542, %t1696) :: integer
744
- %t1699 = gather %t1570, %t1698 :: integer
745
- %t1701 = select %t1694, %t1699, %t1542 :: integer
746
- %t1720 = call core.lt(%t1606, %t1571) :: boolean
747
- %t1721 = call core.and(%t1608, %t1720) :: boolean
748
- %t1722 = call core.and(%t1565, %t1721) :: boolean
749
- %t1726 = call core.clamp(%t1606, %t1542, %t1696) :: integer
750
- %t1727 = gather %t1570, %t1726 :: integer
751
- %t1729 = select %t1722, %t1727, %t1542 :: integer
752
- %t1332 = make_tuple(%t1557, %t1577, %t1597, %t1617, %t1645, %t1673, %t1701, %t1729) :: tuple<integer>
753
- %t1333 = fold %t1332 fn="agg.sum" ::
754
- %t1334 = const 3 :: integer
755
- %t1335 = call core.eq(%t1333, %t1334) :: boolean
756
- %t1339 = const 2 :: integer
757
- %t1340 = call core.eq(%t1333, %t1339) :: boolean
758
- %t1344 = call core.gt(%col_el_288, %t1542) :: boolean
759
- %t1345 = call core.and(%t1340, %t1344) :: boolean
760
- %t528 = call core.or(%t1335, %t1345) :: boolean
761
- %t293 = select %t528, %t1546, %t1542 :: integer
679
+ %t1548 = length %t285 :: integer
680
+ %t1549 = const -1 :: integer
681
+ %t1550 = call core.sub(%rows_i_287, %t1549) :: integer
682
+ %t1551 = const 0 :: integer
683
+ %t1552 = call core.gte(%t1550, %t1551) :: boolean
684
+ %t1553 = call core.lt(%t1550, %t1548) :: boolean
685
+ %t1554 = call core.and(%t1552, %t1553) :: boolean
686
+ %t1555 = const 1 :: integer
687
+ %t1556 = call core.sub(%t1548, %t1555) :: integer
688
+ %t1558 = call core.clamp(%t1550, %t1551, %t1556) :: integer
689
+ %t1559 = gather %t285, %t1558 :: any
690
+ %t1560 = length %t1559 :: integer
691
+ %t1561 = call core.mod(%col_i_289, %t1560) :: integer
692
+ %t1562 = call core.add(%t1561, %t1560) :: integer
693
+ %t1563 = call core.mod(%t1562, %t1560) :: integer
694
+ %t1564 = gather %t1559, %t1563 :: integer
695
+ %t1566 = select %t1554, %t1564, %t1551 :: integer
696
+ %t1570 = call core.sub(%rows_i_287, %t1555) :: integer
697
+ %t1572 = call core.gte(%t1570, %t1551) :: boolean
698
+ %t1573 = call core.lt(%t1570, %t1548) :: boolean
699
+ %t1574 = call core.and(%t1572, %t1573) :: boolean
700
+ %t1578 = call core.clamp(%t1570, %t1551, %t1556) :: integer
701
+ %t1579 = gather %t285, %t1578 :: any
702
+ %t1580 = length %t1579 :: integer
703
+ %t1581 = call core.mod(%col_i_289, %t1580) :: integer
704
+ %t1582 = call core.add(%t1581, %t1580) :: integer
705
+ %t1583 = call core.mod(%t1582, %t1580) :: integer
706
+ %t1584 = gather %t1579, %t1583 :: integer
707
+ %t1586 = select %t1574, %t1584, %t1551 :: integer
708
+ %t1589 = call core.mod(%rows_i_287, %t1548) :: integer
709
+ %t1590 = call core.add(%t1589, %t1548) :: integer
710
+ %t1591 = call core.mod(%t1590, %t1548) :: integer
711
+ %t1592 = gather %t285, %t1591 :: any
712
+ %t1593 = length %t1592 :: integer
713
+ %t1595 = call core.sub(%col_i_289, %t1549) :: integer
714
+ %t1597 = call core.gte(%t1595, %t1551) :: boolean
715
+ %t1598 = call core.lt(%t1595, %t1593) :: boolean
716
+ %t1599 = call core.and(%t1597, %t1598) :: boolean
717
+ %t1601 = call core.sub(%t1593, %t1555) :: integer
718
+ %t1603 = call core.clamp(%t1595, %t1551, %t1601) :: integer
719
+ %t1604 = gather %t1592, %t1603 :: integer
720
+ %t1606 = select %t1599, %t1604, %t1551 :: integer
721
+ %t1615 = call core.sub(%col_i_289, %t1555) :: integer
722
+ %t1617 = call core.gte(%t1615, %t1551) :: boolean
723
+ %t1618 = call core.lt(%t1615, %t1593) :: boolean
724
+ %t1619 = call core.and(%t1617, %t1618) :: boolean
725
+ %t1623 = call core.clamp(%t1615, %t1551, %t1601) :: integer
726
+ %t1624 = gather %t1592, %t1623 :: integer
727
+ %t1626 = select %t1619, %t1624, %t1551 :: integer
728
+ %t1645 = call core.lt(%t1595, %t1560) :: boolean
729
+ %t1646 = call core.and(%t1597, %t1645) :: boolean
730
+ %t1647 = call core.and(%t1554, %t1646) :: boolean
731
+ %t1649 = call core.sub(%t1560, %t1555) :: integer
732
+ %t1651 = call core.clamp(%t1595, %t1551, %t1649) :: integer
733
+ %t1652 = gather %t1559, %t1651 :: integer
734
+ %t1654 = select %t1647, %t1652, %t1551 :: integer
735
+ %t1673 = call core.lt(%t1615, %t1560) :: boolean
736
+ %t1674 = call core.and(%t1617, %t1673) :: boolean
737
+ %t1675 = call core.and(%t1554, %t1674) :: boolean
738
+ %t1679 = call core.clamp(%t1615, %t1551, %t1649) :: integer
739
+ %t1680 = gather %t1559, %t1679 :: integer
740
+ %t1682 = select %t1675, %t1680, %t1551 :: integer
741
+ %t1701 = call core.lt(%t1595, %t1580) :: boolean
742
+ %t1702 = call core.and(%t1597, %t1701) :: boolean
743
+ %t1703 = call core.and(%t1574, %t1702) :: boolean
744
+ %t1705 = call core.sub(%t1580, %t1555) :: integer
745
+ %t1707 = call core.clamp(%t1595, %t1551, %t1705) :: integer
746
+ %t1708 = gather %t1579, %t1707 :: integer
747
+ %t1710 = select %t1703, %t1708, %t1551 :: integer
748
+ %t1729 = call core.lt(%t1615, %t1580) :: boolean
749
+ %t1730 = call core.and(%t1617, %t1729) :: boolean
750
+ %t1731 = call core.and(%t1574, %t1730) :: boolean
751
+ %t1735 = call core.clamp(%t1615, %t1551, %t1705) :: integer
752
+ %t1736 = gather %t1579, %t1735 :: integer
753
+ %t1738 = select %t1731, %t1736, %t1551 :: integer
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>
756
+ %t1534 = const 3 :: integer
757
+ %t1535 = call core.eq(%t1546, %t1534) :: boolean
758
+ %t1745 = const 2 :: integer
759
+ %t1746 = call core.eq(%t1546, %t1745) :: boolean
760
+ %t1952 = const 0 :: integer
761
+ %t1953 = call core.gt(%col_el_288, %t1952) :: boolean
762
+ %t1742 = call core.and(%t1746, %t1953) :: boolean
763
+ %t1531 = call core.or(%t1535, %t1742) :: boolean
764
+ %t291 = const 1 :: integer
765
+ %t293 = select %t1531, %t291, %t1952 :: integer
762
766
  yield %t293
763
767
  end_loop
764
768
  end_loop