kumi 0.0.23 → 0.0.25

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 (166) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -0
  3. data/README.md +2 -2
  4. data/golden/array_element/expected/schema_ruby.rb +1 -1
  5. data/golden/array_index/expected/schema_ruby.rb +1 -1
  6. data/golden/array_operations/expected/schema_ruby.rb +1 -1
  7. data/golden/cascade_logic/expected/lir_02_inlined.txt +8 -8
  8. data/golden/cascade_logic/expected/schema_ruby.rb +1 -1
  9. data/golden/chained_fusion/expected/lir_02_inlined.txt +36 -36
  10. data/golden/chained_fusion/expected/lir_03_cse.txt +23 -23
  11. data/golden/chained_fusion/expected/lir_04_1_loop_fusion.txt +25 -25
  12. data/golden/chained_fusion/expected/lir_04_loop_invcm.txt +23 -23
  13. data/golden/chained_fusion/expected/lir_06_const_prop.txt +23 -23
  14. data/golden/chained_fusion/expected/schema_javascript.mjs +23 -23
  15. data/golden/chained_fusion/expected/schema_ruby.rb +28 -28
  16. data/golden/element_arrays/expected/schema_ruby.rb +1 -1
  17. data/golden/empty_and_null_inputs/expected/lir_02_inlined.txt +18 -18
  18. data/golden/empty_and_null_inputs/expected/lir_03_cse.txt +17 -17
  19. data/golden/empty_and_null_inputs/expected/lir_04_1_loop_fusion.txt +17 -17
  20. data/golden/empty_and_null_inputs/expected/lir_04_loop_invcm.txt +17 -17
  21. data/golden/empty_and_null_inputs/expected/lir_06_const_prop.txt +17 -17
  22. data/golden/empty_and_null_inputs/expected/schema_javascript.mjs +13 -13
  23. data/golden/empty_and_null_inputs/expected/schema_ruby.rb +18 -18
  24. data/golden/game_of_life/expected/lir_00_unoptimized.txt +33 -33
  25. data/golden/game_of_life/expected/lir_01_hoist_scalar_references.txt +33 -33
  26. data/golden/game_of_life/expected/lir_02_inlined.txt +1370 -1370
  27. data/golden/game_of_life/expected/lir_03_cse.txt +448 -448
  28. data/golden/game_of_life/expected/lir_04_1_loop_fusion.txt +448 -448
  29. data/golden/game_of_life/expected/lir_04_loop_invcm.txt +448 -448
  30. data/golden/game_of_life/expected/lir_06_const_prop.txt +448 -448
  31. data/golden/game_of_life/expected/schema_javascript.mjs +85 -85
  32. data/golden/game_of_life/expected/schema_ruby.rb +86 -86
  33. data/golden/hash_keys/expected/schema_ruby.rb +1 -1
  34. data/golden/hash_keys/schema.kumi +4 -5
  35. data/golden/hash_value/expected/schema_ruby.rb +1 -1
  36. data/golden/hierarchical_complex/expected/lir_02_inlined.txt +15 -15
  37. data/golden/hierarchical_complex/expected/lir_03_cse.txt +1 -1
  38. data/golden/hierarchical_complex/expected/lir_04_1_loop_fusion.txt +1 -1
  39. data/golden/hierarchical_complex/expected/lir_04_loop_invcm.txt +1 -1
  40. data/golden/hierarchical_complex/expected/lir_06_const_prop.txt +1 -1
  41. data/golden/hierarchical_complex/expected/schema_javascript.mjs +1 -1
  42. data/golden/hierarchical_complex/expected/schema_ruby.rb +2 -2
  43. data/golden/inline_rename_scope_leak/expected/ast.txt +48 -0
  44. data/golden/inline_rename_scope_leak/expected/input_plan.txt +10 -0
  45. data/golden/inline_rename_scope_leak/expected/lir_00_unoptimized.txt +35 -0
  46. data/golden/inline_rename_scope_leak/expected/lir_01_hoist_scalar_references.txt +35 -0
  47. data/golden/inline_rename_scope_leak/expected/lir_02_inlined.txt +49 -0
  48. data/golden/inline_rename_scope_leak/expected/lir_03_cse.txt +49 -0
  49. data/golden/inline_rename_scope_leak/expected/lir_04_1_loop_fusion.txt +49 -0
  50. data/golden/inline_rename_scope_leak/expected/lir_04_loop_invcm.txt +49 -0
  51. data/golden/inline_rename_scope_leak/expected/lir_06_const_prop.txt +49 -0
  52. data/golden/inline_rename_scope_leak/expected/nast.txt +31 -0
  53. data/golden/inline_rename_scope_leak/expected/schema_javascript.mjs +51 -0
  54. data/golden/inline_rename_scope_leak/expected/schema_ruby.rb +82 -0
  55. data/golden/inline_rename_scope_leak/expected/snast.txt +31 -0
  56. data/golden/inline_rename_scope_leak/expected.json +7 -0
  57. data/golden/inline_rename_scope_leak/input.json +4 -0
  58. data/golden/inline_rename_scope_leak/schema.kumi +24 -0
  59. data/golden/input_reference/expected/schema_ruby.rb +1 -1
  60. data/golden/interleaved_fusion/expected/lir_02_inlined.txt +35 -35
  61. data/golden/interleaved_fusion/expected/lir_03_cse.txt +26 -26
  62. data/golden/interleaved_fusion/expected/lir_04_1_loop_fusion.txt +27 -26
  63. data/golden/interleaved_fusion/expected/lir_04_loop_invcm.txt +26 -26
  64. data/golden/interleaved_fusion/expected/lir_06_const_prop.txt +26 -26
  65. data/golden/interleaved_fusion/expected/schema_javascript.mjs +23 -23
  66. data/golden/interleaved_fusion/expected/schema_ruby.rb +29 -29
  67. data/golden/let_inline/expected/schema_ruby.rb +1 -1
  68. data/golden/loop_fusion/expected/lir_02_inlined.txt +17 -17
  69. data/golden/loop_fusion/expected/lir_03_cse.txt +14 -14
  70. data/golden/loop_fusion/expected/lir_04_1_loop_fusion.txt +14 -14
  71. data/golden/loop_fusion/expected/lir_04_loop_invcm.txt +14 -14
  72. data/golden/loop_fusion/expected/lir_06_const_prop.txt +14 -14
  73. data/golden/loop_fusion/expected/schema_javascript.mjs +12 -12
  74. data/golden/loop_fusion/expected/schema_ruby.rb +16 -16
  75. data/golden/min_reduce_scope/expected/schema_ruby.rb +1 -1
  76. data/golden/mixed_dimensions/expected/lir_02_inlined.txt +5 -5
  77. data/golden/mixed_dimensions/expected/lir_03_cse.txt +5 -5
  78. data/golden/mixed_dimensions/expected/lir_04_1_loop_fusion.txt +5 -5
  79. data/golden/mixed_dimensions/expected/lir_04_loop_invcm.txt +5 -5
  80. data/golden/mixed_dimensions/expected/lir_06_const_prop.txt +5 -5
  81. data/golden/mixed_dimensions/expected/schema_javascript.mjs +3 -3
  82. data/golden/mixed_dimensions/expected/schema_ruby.rb +6 -6
  83. data/golden/multirank_hoisting/expected/lir_02_inlined.txt +48 -48
  84. data/golden/multirank_hoisting/expected/lir_03_cse.txt +35 -35
  85. data/golden/multirank_hoisting/expected/lir_04_1_loop_fusion.txt +35 -35
  86. data/golden/multirank_hoisting/expected/lir_04_loop_invcm.txt +35 -35
  87. data/golden/multirank_hoisting/expected/lir_06_const_prop.txt +35 -35
  88. data/golden/multirank_hoisting/expected/schema_javascript.mjs +34 -34
  89. data/golden/multirank_hoisting/expected/schema_ruby.rb +36 -36
  90. data/golden/nested_hash/expected/schema_ruby.rb +1 -1
  91. data/golden/reduction_broadcast/expected/lir_02_inlined.txt +30 -30
  92. data/golden/reduction_broadcast/expected/lir_03_cse.txt +22 -22
  93. data/golden/reduction_broadcast/expected/lir_04_1_loop_fusion.txt +22 -22
  94. data/golden/reduction_broadcast/expected/lir_04_loop_invcm.txt +22 -22
  95. data/golden/reduction_broadcast/expected/lir_06_const_prop.txt +22 -22
  96. data/golden/reduction_broadcast/expected/schema_javascript.mjs +18 -18
  97. data/golden/reduction_broadcast/expected/schema_ruby.rb +23 -23
  98. data/golden/roll/expected/lir_00_unoptimized.txt +8 -8
  99. data/golden/roll/expected/lir_01_hoist_scalar_references.txt +8 -8
  100. data/golden/roll/expected/lir_02_inlined.txt +8 -8
  101. data/golden/roll/expected/lir_03_cse.txt +8 -8
  102. data/golden/roll/expected/lir_04_1_loop_fusion.txt +8 -8
  103. data/golden/roll/expected/lir_04_loop_invcm.txt +8 -8
  104. data/golden/roll/expected/lir_06_const_prop.txt +8 -8
  105. data/golden/roll/expected/schema_ruby.rb +1 -1
  106. data/golden/shift/expected/lir_00_unoptimized.txt +12 -12
  107. data/golden/shift/expected/lir_01_hoist_scalar_references.txt +12 -12
  108. data/golden/shift/expected/lir_02_inlined.txt +12 -12
  109. data/golden/shift/expected/lir_03_cse.txt +12 -12
  110. data/golden/shift/expected/lir_04_1_loop_fusion.txt +12 -12
  111. data/golden/shift/expected/lir_04_loop_invcm.txt +12 -12
  112. data/golden/shift/expected/lir_06_const_prop.txt +12 -12
  113. data/golden/shift/expected/schema_ruby.rb +1 -1
  114. data/golden/shift_2d/expected/lir_00_unoptimized.txt +48 -48
  115. data/golden/shift_2d/expected/lir_01_hoist_scalar_references.txt +48 -48
  116. data/golden/shift_2d/expected/lir_02_inlined.txt +48 -48
  117. data/golden/shift_2d/expected/lir_03_cse.txt +48 -48
  118. data/golden/shift_2d/expected/lir_04_1_loop_fusion.txt +48 -48
  119. data/golden/shift_2d/expected/lir_04_loop_invcm.txt +48 -48
  120. data/golden/shift_2d/expected/lir_06_const_prop.txt +48 -48
  121. data/golden/shift_2d/expected/schema_ruby.rb +1 -1
  122. data/golden/simple_math/expected/schema_ruby.rb +1 -1
  123. data/golden/streaming_basics/expected/lir_02_inlined.txt +25 -25
  124. data/golden/streaming_basics/expected/lir_03_cse.txt +13 -13
  125. data/golden/streaming_basics/expected/lir_04_1_loop_fusion.txt +13 -13
  126. data/golden/streaming_basics/expected/lir_04_loop_invcm.txt +13 -13
  127. data/golden/streaming_basics/expected/lir_06_const_prop.txt +13 -13
  128. data/golden/streaming_basics/expected/schema_javascript.mjs +13 -13
  129. data/golden/streaming_basics/expected/schema_ruby.rb +14 -14
  130. data/golden/tuples/expected/lir_00_unoptimized.txt +4 -4
  131. data/golden/tuples/expected/lir_01_hoist_scalar_references.txt +4 -4
  132. data/golden/tuples/expected/lir_02_inlined.txt +4 -4
  133. data/golden/tuples/expected/lir_03_cse.txt +4 -4
  134. data/golden/tuples/expected/lir_04_1_loop_fusion.txt +4 -4
  135. data/golden/tuples/expected/lir_04_loop_invcm.txt +4 -4
  136. data/golden/tuples/expected/lir_06_const_prop.txt +4 -4
  137. data/golden/tuples/expected/schema_ruby.rb +1 -1
  138. data/golden/tuples_and_arrays/expected/lir_00_unoptimized.txt +1 -1
  139. data/golden/tuples_and_arrays/expected/lir_01_hoist_scalar_references.txt +1 -1
  140. data/golden/tuples_and_arrays/expected/lir_02_inlined.txt +17 -17
  141. data/golden/tuples_and_arrays/expected/lir_03_cse.txt +14 -14
  142. data/golden/tuples_and_arrays/expected/lir_04_1_loop_fusion.txt +14 -14
  143. data/golden/tuples_and_arrays/expected/lir_04_loop_invcm.txt +14 -14
  144. data/golden/tuples_and_arrays/expected/lir_06_const_prop.txt +14 -14
  145. data/golden/tuples_and_arrays/expected/schema_javascript.mjs +13 -13
  146. data/golden/tuples_and_arrays/expected/schema_ruby.rb +14 -14
  147. data/golden/us_tax_2024/expected/ast.txt +865 -0
  148. data/golden/us_tax_2024/expected/input_plan.txt +61 -0
  149. data/golden/us_tax_2024/expected/lir_00_unoptimized.txt +901 -0
  150. data/golden/us_tax_2024/expected/lir_01_hoist_scalar_references.txt +901 -0
  151. data/golden/us_tax_2024/expected/lir_02_inlined.txt +5178 -0
  152. data/golden/us_tax_2024/expected/lir_03_cse.txt +2499 -0
  153. data/golden/us_tax_2024/expected/lir_04_1_loop_fusion.txt +2519 -0
  154. data/golden/us_tax_2024/expected/lir_04_loop_invcm.txt +2499 -0
  155. data/golden/us_tax_2024/expected/lir_06_const_prop.txt +2499 -0
  156. data/golden/us_tax_2024/expected/nast.txt +976 -0
  157. data/golden/us_tax_2024/expected/schema_javascript.mjs +584 -0
  158. data/golden/us_tax_2024/expected/schema_ruby.rb +639 -0
  159. data/golden/us_tax_2024/expected/snast.txt +976 -0
  160. data/golden/us_tax_2024/expected.json +1 -0
  161. data/golden/us_tax_2024/input.json +168 -0
  162. data/golden/us_tax_2024/schema.kumi +203 -0
  163. data/golden/with_constants/expected/schema_ruby.rb +1 -1
  164. data/lib/kumi/core/analyzer/passes/lir/inline_declarations_pass.rb +227 -107
  165. data/lib/kumi/version.rb +1 -1
  166. metadata +33 -1
@@ -3,12 +3,12 @@
3
3
  %t1 = load_input "rows" :: array
4
4
  loop rows id=L1 in %t1 as el=%rows_el_2, idx=%rows_i_3
5
5
  loop col id=L2 in %rows_el_2 as el=%col_el_4, idx=%col_i_5
6
- %t6 = Length %t1 :: integer
6
+ %t6 = length %t1 :: integer
7
7
  %t7 = call core.mod(%rows_i_3, %t6) :: integer
8
8
  %t8 = call core.add(%t7, %t6) :: integer
9
9
  %t9 = call core.mod(%t8, %t6) :: integer
10
- %t10 = Gather %t1, %t9 :: any
11
- %t11 = Length %t10 :: integer
10
+ %t10 = gather %t1, %t9 :: any
11
+ %t11 = length %t10 :: integer
12
12
  %t12 = const 1 :: integer
13
13
  %t13 = call core.sub(%col_i_5, %t12) :: integer
14
14
  %t14 = const 0 :: integer
@@ -17,7 +17,7 @@
17
17
  %t17 = call core.and(%t15, %t16) :: boolean
18
18
  %t19 = call core.sub(%t11, %t12) :: integer
19
19
  %t21 = call core.clamp(%t13, %t14, %t19) :: integer
20
- %t22 = Gather %t10, %t21 :: integer
20
+ %t22 = gather %t10, %t21 :: integer
21
21
  %t24 = select %t17, %t22, %t14 :: integer
22
22
  yield %t24
23
23
  end_loop
@@ -27,18 +27,18 @@
27
27
  %t25 = load_input "rows" :: array
28
28
  loop rows id=L3 in %t25 as el=%rows_el_26, idx=%rows_i_27
29
29
  loop col id=L4 in %rows_el_26 as el=%col_el_28, idx=%col_i_29
30
- %t30 = Length %t25 :: integer
30
+ %t30 = length %t25 :: integer
31
31
  %t31 = call core.mod(%rows_i_27, %t30) :: integer
32
32
  %t32 = call core.add(%t31, %t30) :: integer
33
33
  %t33 = call core.mod(%t32, %t30) :: integer
34
- %t34 = Gather %t25, %t33 :: any
35
- %t35 = Length %t34 :: integer
34
+ %t34 = gather %t25, %t33 :: any
35
+ %t35 = length %t34 :: integer
36
36
  %t36 = const 1 :: integer
37
37
  %t37 = call core.sub(%col_i_29, %t36) :: integer
38
38
  %t39 = call core.sub(%t35, %t36) :: integer
39
39
  %t40 = const 0 :: integer
40
40
  %t41 = call core.clamp(%t37, %t40, %t39) :: integer
41
- %t42 = Gather %t34, %t41 :: integer
41
+ %t42 = gather %t34, %t41 :: integer
42
42
  yield %t42
43
43
  end_loop
44
44
  end_loop
@@ -47,18 +47,18 @@
47
47
  %t43 = load_input "rows" :: array
48
48
  loop rows id=L5 in %t43 as el=%rows_el_44, idx=%rows_i_45
49
49
  loop col id=L6 in %rows_el_44 as el=%col_el_46, idx=%col_i_47
50
- %t48 = Length %t43 :: integer
50
+ %t48 = length %t43 :: integer
51
51
  %t49 = call core.mod(%rows_i_45, %t48) :: integer
52
52
  %t50 = call core.add(%t49, %t48) :: integer
53
53
  %t51 = call core.mod(%t50, %t48) :: integer
54
- %t52 = Gather %t43, %t51 :: any
55
- %t53 = Length %t52 :: integer
54
+ %t52 = gather %t43, %t51 :: any
55
+ %t53 = length %t52 :: integer
56
56
  %t54 = const 1 :: integer
57
57
  %t55 = call core.sub(%col_i_47, %t54) :: integer
58
58
  %t56 = call core.mod(%t55, %t53) :: integer
59
59
  %t57 = call core.add(%t56, %t53) :: integer
60
60
  %t58 = call core.mod(%t57, %t53) :: integer
61
- %t59 = Gather %t52, %t58 :: integer
61
+ %t59 = gather %t52, %t58 :: integer
62
62
  yield %t59
63
63
  end_loop
64
64
  end_loop
@@ -67,12 +67,12 @@
67
67
  %t60 = load_input "rows" :: array
68
68
  loop rows id=L7 in %t60 as el=%rows_el_61, idx=%rows_i_62
69
69
  loop col id=L8 in %rows_el_61 as el=%col_el_63, idx=%col_i_64
70
- %t65 = Length %t60 :: integer
70
+ %t65 = length %t60 :: integer
71
71
  %t66 = call core.mod(%rows_i_62, %t65) :: integer
72
72
  %t67 = call core.add(%t66, %t65) :: integer
73
73
  %t68 = call core.mod(%t67, %t65) :: integer
74
- %t69 = Gather %t60, %t68 :: any
75
- %t70 = Length %t69 :: integer
74
+ %t69 = gather %t60, %t68 :: any
75
+ %t70 = length %t69 :: integer
76
76
  %t71 = const -1 :: integer
77
77
  %t72 = call core.sub(%col_i_64, %t71) :: integer
78
78
  %t73 = const 0 :: integer
@@ -82,7 +82,7 @@
82
82
  %t77 = const 1 :: integer
83
83
  %t78 = call core.sub(%t70, %t77) :: integer
84
84
  %t80 = call core.clamp(%t72, %t73, %t78) :: integer
85
- %t81 = Gather %t69, %t80 :: integer
85
+ %t81 = gather %t69, %t80 :: integer
86
86
  %t83 = select %t76, %t81, %t73 :: integer
87
87
  yield %t83
88
88
  end_loop
@@ -92,19 +92,19 @@
92
92
  %t84 = load_input "rows" :: array
93
93
  loop rows id=L9 in %t84 as el=%rows_el_85, idx=%rows_i_86
94
94
  loop col id=L10 in %rows_el_85 as el=%col_el_87, idx=%col_i_88
95
- %t89 = Length %t84 :: integer
95
+ %t89 = length %t84 :: integer
96
96
  %t90 = call core.mod(%rows_i_86, %t89) :: integer
97
97
  %t91 = call core.add(%t90, %t89) :: integer
98
98
  %t92 = call core.mod(%t91, %t89) :: integer
99
- %t93 = Gather %t84, %t92 :: any
100
- %t94 = Length %t93 :: integer
99
+ %t93 = gather %t84, %t92 :: any
100
+ %t94 = length %t93 :: integer
101
101
  %t95 = const -1 :: integer
102
102
  %t96 = call core.sub(%col_i_88, %t95) :: integer
103
103
  %t97 = const 1 :: integer
104
104
  %t98 = call core.sub(%t94, %t97) :: integer
105
105
  %t99 = const 0 :: integer
106
106
  %t100 = call core.clamp(%t96, %t99, %t98) :: integer
107
- %t101 = Gather %t93, %t100 :: integer
107
+ %t101 = gather %t93, %t100 :: integer
108
108
  yield %t101
109
109
  end_loop
110
110
  end_loop
@@ -113,18 +113,18 @@
113
113
  %t102 = load_input "rows" :: array
114
114
  loop rows id=L11 in %t102 as el=%rows_el_103, idx=%rows_i_104
115
115
  loop col id=L12 in %rows_el_103 as el=%col_el_105, idx=%col_i_106
116
- %t107 = Length %t102 :: integer
116
+ %t107 = length %t102 :: integer
117
117
  %t108 = call core.mod(%rows_i_104, %t107) :: integer
118
118
  %t109 = call core.add(%t108, %t107) :: integer
119
119
  %t110 = call core.mod(%t109, %t107) :: integer
120
- %t111 = Gather %t102, %t110 :: any
121
- %t112 = Length %t111 :: integer
120
+ %t111 = gather %t102, %t110 :: any
121
+ %t112 = length %t111 :: integer
122
122
  %t113 = const -1 :: integer
123
123
  %t114 = call core.sub(%col_i_106, %t113) :: integer
124
124
  %t115 = call core.mod(%t114, %t112) :: integer
125
125
  %t116 = call core.add(%t115, %t112) :: integer
126
126
  %t117 = call core.mod(%t116, %t112) :: integer
127
- %t118 = Gather %t111, %t117 :: integer
127
+ %t118 = gather %t111, %t117 :: integer
128
128
  yield %t118
129
129
  end_loop
130
130
  end_loop
@@ -133,7 +133,7 @@
133
133
  %t119 = load_input "rows" :: array
134
134
  loop rows id=L13 in %t119 as el=%rows_el_120, idx=%rows_i_121
135
135
  loop col id=L14 in %rows_el_120 as el=%col_el_122, idx=%col_i_123
136
- %t124 = Length %t119 :: integer
136
+ %t124 = length %t119 :: integer
137
137
  %t125 = const 1 :: integer
138
138
  %t126 = call core.sub(%rows_i_121, %t125) :: integer
139
139
  %t127 = const 0 :: integer
@@ -142,12 +142,12 @@
142
142
  %t130 = call core.and(%t128, %t129) :: boolean
143
143
  %t132 = call core.sub(%t124, %t125) :: integer
144
144
  %t134 = call core.clamp(%t126, %t127, %t132) :: integer
145
- %t135 = Gather %t119, %t134 :: any
146
- %t136 = Length %t135 :: integer
145
+ %t135 = gather %t119, %t134 :: any
146
+ %t136 = length %t135 :: integer
147
147
  %t137 = call core.mod(%col_i_123, %t136) :: integer
148
148
  %t138 = call core.add(%t137, %t136) :: integer
149
149
  %t139 = call core.mod(%t138, %t136) :: integer
150
- %t140 = Gather %t135, %t139 :: integer
150
+ %t140 = gather %t135, %t139 :: integer
151
151
  %t142 = select %t130, %t140, %t127 :: integer
152
152
  yield %t142
153
153
  end_loop
@@ -157,18 +157,18 @@
157
157
  %t143 = load_input "rows" :: array
158
158
  loop rows id=L15 in %t143 as el=%rows_el_144, idx=%rows_i_145
159
159
  loop col id=L16 in %rows_el_144 as el=%col_el_146, idx=%col_i_147
160
- %t148 = Length %t143 :: integer
160
+ %t148 = length %t143 :: integer
161
161
  %t149 = const 1 :: integer
162
162
  %t150 = call core.sub(%rows_i_145, %t149) :: integer
163
163
  %t152 = call core.sub(%t148, %t149) :: integer
164
164
  %t153 = const 0 :: integer
165
165
  %t154 = call core.clamp(%t150, %t153, %t152) :: integer
166
- %t155 = Gather %t143, %t154 :: any
167
- %t156 = Length %t155 :: integer
166
+ %t155 = gather %t143, %t154 :: any
167
+ %t156 = length %t155 :: integer
168
168
  %t157 = call core.mod(%col_i_147, %t156) :: integer
169
169
  %t158 = call core.add(%t157, %t156) :: integer
170
170
  %t159 = call core.mod(%t158, %t156) :: integer
171
- %t160 = Gather %t155, %t159 :: integer
171
+ %t160 = gather %t155, %t159 :: integer
172
172
  yield %t160
173
173
  end_loop
174
174
  end_loop
@@ -177,18 +177,18 @@
177
177
  %t161 = load_input "rows" :: array
178
178
  loop rows id=L17 in %t161 as el=%rows_el_162, idx=%rows_i_163
179
179
  loop col id=L18 in %rows_el_162 as el=%col_el_164, idx=%col_i_165
180
- %t166 = Length %t161 :: integer
180
+ %t166 = length %t161 :: integer
181
181
  %t167 = const 1 :: integer
182
182
  %t168 = call core.sub(%rows_i_163, %t167) :: integer
183
183
  %t169 = call core.mod(%t168, %t166) :: integer
184
184
  %t170 = call core.add(%t169, %t166) :: integer
185
185
  %t171 = call core.mod(%t170, %t166) :: integer
186
- %t172 = Gather %t161, %t171 :: any
187
- %t173 = Length %t172 :: integer
186
+ %t172 = gather %t161, %t171 :: any
187
+ %t173 = length %t172 :: integer
188
188
  %t174 = call core.mod(%col_i_165, %t173) :: integer
189
189
  %t175 = call core.add(%t174, %t173) :: integer
190
190
  %t176 = call core.mod(%t175, %t173) :: integer
191
- %t177 = Gather %t172, %t176 :: integer
191
+ %t177 = gather %t172, %t176 :: integer
192
192
  yield %t177
193
193
  end_loop
194
194
  end_loop
@@ -197,7 +197,7 @@
197
197
  %t178 = load_input "rows" :: array
198
198
  loop rows id=L19 in %t178 as el=%rows_el_179, idx=%rows_i_180
199
199
  loop col id=L20 in %rows_el_179 as el=%col_el_181, idx=%col_i_182
200
- %t183 = Length %t178 :: integer
200
+ %t183 = length %t178 :: integer
201
201
  %t184 = const -1 :: integer
202
202
  %t185 = call core.sub(%rows_i_180, %t184) :: integer
203
203
  %t186 = const 0 :: integer
@@ -207,12 +207,12 @@
207
207
  %t190 = const 1 :: integer
208
208
  %t191 = call core.sub(%t183, %t190) :: integer
209
209
  %t193 = call core.clamp(%t185, %t186, %t191) :: integer
210
- %t194 = Gather %t178, %t193 :: any
211
- %t195 = Length %t194 :: integer
210
+ %t194 = gather %t178, %t193 :: any
211
+ %t195 = length %t194 :: integer
212
212
  %t196 = call core.mod(%col_i_182, %t195) :: integer
213
213
  %t197 = call core.add(%t196, %t195) :: integer
214
214
  %t198 = call core.mod(%t197, %t195) :: integer
215
- %t199 = Gather %t194, %t198 :: integer
215
+ %t199 = gather %t194, %t198 :: integer
216
216
  %t201 = select %t189, %t199, %t186 :: integer
217
217
  yield %t201
218
218
  end_loop
@@ -222,19 +222,19 @@
222
222
  %t202 = load_input "rows" :: array
223
223
  loop rows id=L21 in %t202 as el=%rows_el_203, idx=%rows_i_204
224
224
  loop col id=L22 in %rows_el_203 as el=%col_el_205, idx=%col_i_206
225
- %t207 = Length %t202 :: integer
225
+ %t207 = length %t202 :: integer
226
226
  %t208 = const -1 :: integer
227
227
  %t209 = call core.sub(%rows_i_204, %t208) :: integer
228
228
  %t210 = const 1 :: integer
229
229
  %t211 = call core.sub(%t207, %t210) :: integer
230
230
  %t212 = const 0 :: integer
231
231
  %t213 = call core.clamp(%t209, %t212, %t211) :: integer
232
- %t214 = Gather %t202, %t213 :: any
233
- %t215 = Length %t214 :: integer
232
+ %t214 = gather %t202, %t213 :: any
233
+ %t215 = length %t214 :: integer
234
234
  %t216 = call core.mod(%col_i_206, %t215) :: integer
235
235
  %t217 = call core.add(%t216, %t215) :: integer
236
236
  %t218 = call core.mod(%t217, %t215) :: integer
237
- %t219 = Gather %t214, %t218 :: integer
237
+ %t219 = gather %t214, %t218 :: integer
238
238
  yield %t219
239
239
  end_loop
240
240
  end_loop
@@ -243,18 +243,18 @@
243
243
  %t220 = load_input "rows" :: array
244
244
  loop rows id=L23 in %t220 as el=%rows_el_221, idx=%rows_i_222
245
245
  loop col id=L24 in %rows_el_221 as el=%col_el_223, idx=%col_i_224
246
- %t225 = Length %t220 :: integer
246
+ %t225 = length %t220 :: integer
247
247
  %t226 = const -1 :: integer
248
248
  %t227 = call core.sub(%rows_i_222, %t226) :: integer
249
249
  %t228 = call core.mod(%t227, %t225) :: integer
250
250
  %t229 = call core.add(%t228, %t225) :: integer
251
251
  %t230 = call core.mod(%t229, %t225) :: integer
252
- %t231 = Gather %t220, %t230 :: any
253
- %t232 = Length %t231 :: integer
252
+ %t231 = gather %t220, %t230 :: any
253
+ %t232 = length %t231 :: integer
254
254
  %t233 = call core.mod(%col_i_224, %t232) :: integer
255
255
  %t234 = call core.add(%t233, %t232) :: integer
256
256
  %t235 = call core.mod(%t234, %t232) :: integer
257
- %t236 = Gather %t231, %t235 :: integer
257
+ %t236 = gather %t231, %t235 :: integer
258
258
  yield %t236
259
259
  end_loop
260
260
  end_loop
@@ -3,12 +3,12 @@
3
3
  %t1 = load_input "rows" :: array
4
4
  loop rows id=L1 in %t1 as el=%rows_el_2, idx=%rows_i_3
5
5
  loop col id=L2 in %rows_el_2 as el=%col_el_4, idx=%col_i_5
6
- %t6 = Length %t1 :: integer
6
+ %t6 = length %t1 :: integer
7
7
  %t7 = call core.mod(%rows_i_3, %t6) :: integer
8
8
  %t8 = call core.add(%t7, %t6) :: integer
9
9
  %t9 = call core.mod(%t8, %t6) :: integer
10
- %t10 = Gather %t1, %t9 :: any
11
- %t11 = Length %t10 :: integer
10
+ %t10 = gather %t1, %t9 :: any
11
+ %t11 = length %t10 :: integer
12
12
  %t12 = const 1 :: integer
13
13
  %t13 = call core.sub(%col_i_5, %t12) :: integer
14
14
  %t14 = const 0 :: integer
@@ -17,7 +17,7 @@
17
17
  %t17 = call core.and(%t15, %t16) :: boolean
18
18
  %t19 = call core.sub(%t11, %t12) :: integer
19
19
  %t21 = call core.clamp(%t13, %t14, %t19) :: integer
20
- %t22 = Gather %t10, %t21 :: integer
20
+ %t22 = gather %t10, %t21 :: integer
21
21
  %t24 = select %t17, %t22, %t14 :: integer
22
22
  yield %t24
23
23
  end_loop
@@ -27,18 +27,18 @@
27
27
  %t25 = load_input "rows" :: array
28
28
  loop rows id=L3 in %t25 as el=%rows_el_26, idx=%rows_i_27
29
29
  loop col id=L4 in %rows_el_26 as el=%col_el_28, idx=%col_i_29
30
- %t30 = Length %t25 :: integer
30
+ %t30 = length %t25 :: integer
31
31
  %t31 = call core.mod(%rows_i_27, %t30) :: integer
32
32
  %t32 = call core.add(%t31, %t30) :: integer
33
33
  %t33 = call core.mod(%t32, %t30) :: integer
34
- %t34 = Gather %t25, %t33 :: any
35
- %t35 = Length %t34 :: integer
34
+ %t34 = gather %t25, %t33 :: any
35
+ %t35 = length %t34 :: integer
36
36
  %t36 = const 1 :: integer
37
37
  %t37 = call core.sub(%col_i_29, %t36) :: integer
38
38
  %t39 = call core.sub(%t35, %t36) :: integer
39
39
  %t40 = const 0 :: integer
40
40
  %t41 = call core.clamp(%t37, %t40, %t39) :: integer
41
- %t42 = Gather %t34, %t41 :: integer
41
+ %t42 = gather %t34, %t41 :: integer
42
42
  yield %t42
43
43
  end_loop
44
44
  end_loop
@@ -47,18 +47,18 @@
47
47
  %t43 = load_input "rows" :: array
48
48
  loop rows id=L5 in %t43 as el=%rows_el_44, idx=%rows_i_45
49
49
  loop col id=L6 in %rows_el_44 as el=%col_el_46, idx=%col_i_47
50
- %t48 = Length %t43 :: integer
50
+ %t48 = length %t43 :: integer
51
51
  %t49 = call core.mod(%rows_i_45, %t48) :: integer
52
52
  %t50 = call core.add(%t49, %t48) :: integer
53
53
  %t51 = call core.mod(%t50, %t48) :: integer
54
- %t52 = Gather %t43, %t51 :: any
55
- %t53 = Length %t52 :: integer
54
+ %t52 = gather %t43, %t51 :: any
55
+ %t53 = length %t52 :: integer
56
56
  %t54 = const 1 :: integer
57
57
  %t55 = call core.sub(%col_i_47, %t54) :: integer
58
58
  %t56 = call core.mod(%t55, %t53) :: integer
59
59
  %t57 = call core.add(%t56, %t53) :: integer
60
60
  %t58 = call core.mod(%t57, %t53) :: integer
61
- %t59 = Gather %t52, %t58 :: integer
61
+ %t59 = gather %t52, %t58 :: integer
62
62
  yield %t59
63
63
  end_loop
64
64
  end_loop
@@ -67,12 +67,12 @@
67
67
  %t60 = load_input "rows" :: array
68
68
  loop rows id=L7 in %t60 as el=%rows_el_61, idx=%rows_i_62
69
69
  loop col id=L8 in %rows_el_61 as el=%col_el_63, idx=%col_i_64
70
- %t65 = Length %t60 :: integer
70
+ %t65 = length %t60 :: integer
71
71
  %t66 = call core.mod(%rows_i_62, %t65) :: integer
72
72
  %t67 = call core.add(%t66, %t65) :: integer
73
73
  %t68 = call core.mod(%t67, %t65) :: integer
74
- %t69 = Gather %t60, %t68 :: any
75
- %t70 = Length %t69 :: integer
74
+ %t69 = gather %t60, %t68 :: any
75
+ %t70 = length %t69 :: integer
76
76
  %t71 = const -1 :: integer
77
77
  %t72 = call core.sub(%col_i_64, %t71) :: integer
78
78
  %t73 = const 0 :: integer
@@ -82,7 +82,7 @@
82
82
  %t77 = const 1 :: integer
83
83
  %t78 = call core.sub(%t70, %t77) :: integer
84
84
  %t80 = call core.clamp(%t72, %t73, %t78) :: integer
85
- %t81 = Gather %t69, %t80 :: integer
85
+ %t81 = gather %t69, %t80 :: integer
86
86
  %t83 = select %t76, %t81, %t73 :: integer
87
87
  yield %t83
88
88
  end_loop
@@ -92,19 +92,19 @@
92
92
  %t84 = load_input "rows" :: array
93
93
  loop rows id=L9 in %t84 as el=%rows_el_85, idx=%rows_i_86
94
94
  loop col id=L10 in %rows_el_85 as el=%col_el_87, idx=%col_i_88
95
- %t89 = Length %t84 :: integer
95
+ %t89 = length %t84 :: integer
96
96
  %t90 = call core.mod(%rows_i_86, %t89) :: integer
97
97
  %t91 = call core.add(%t90, %t89) :: integer
98
98
  %t92 = call core.mod(%t91, %t89) :: integer
99
- %t93 = Gather %t84, %t92 :: any
100
- %t94 = Length %t93 :: integer
99
+ %t93 = gather %t84, %t92 :: any
100
+ %t94 = length %t93 :: integer
101
101
  %t95 = const -1 :: integer
102
102
  %t96 = call core.sub(%col_i_88, %t95) :: integer
103
103
  %t97 = const 1 :: integer
104
104
  %t98 = call core.sub(%t94, %t97) :: integer
105
105
  %t99 = const 0 :: integer
106
106
  %t100 = call core.clamp(%t96, %t99, %t98) :: integer
107
- %t101 = Gather %t93, %t100 :: integer
107
+ %t101 = gather %t93, %t100 :: integer
108
108
  yield %t101
109
109
  end_loop
110
110
  end_loop
@@ -113,18 +113,18 @@
113
113
  %t102 = load_input "rows" :: array
114
114
  loop rows id=L11 in %t102 as el=%rows_el_103, idx=%rows_i_104
115
115
  loop col id=L12 in %rows_el_103 as el=%col_el_105, idx=%col_i_106
116
- %t107 = Length %t102 :: integer
116
+ %t107 = length %t102 :: integer
117
117
  %t108 = call core.mod(%rows_i_104, %t107) :: integer
118
118
  %t109 = call core.add(%t108, %t107) :: integer
119
119
  %t110 = call core.mod(%t109, %t107) :: integer
120
- %t111 = Gather %t102, %t110 :: any
121
- %t112 = Length %t111 :: integer
120
+ %t111 = gather %t102, %t110 :: any
121
+ %t112 = length %t111 :: integer
122
122
  %t113 = const -1 :: integer
123
123
  %t114 = call core.sub(%col_i_106, %t113) :: integer
124
124
  %t115 = call core.mod(%t114, %t112) :: integer
125
125
  %t116 = call core.add(%t115, %t112) :: integer
126
126
  %t117 = call core.mod(%t116, %t112) :: integer
127
- %t118 = Gather %t111, %t117 :: integer
127
+ %t118 = gather %t111, %t117 :: integer
128
128
  yield %t118
129
129
  end_loop
130
130
  end_loop
@@ -133,7 +133,7 @@
133
133
  %t119 = load_input "rows" :: array
134
134
  loop rows id=L13 in %t119 as el=%rows_el_120, idx=%rows_i_121
135
135
  loop col id=L14 in %rows_el_120 as el=%col_el_122, idx=%col_i_123
136
- %t124 = Length %t119 :: integer
136
+ %t124 = length %t119 :: integer
137
137
  %t125 = const 1 :: integer
138
138
  %t126 = call core.sub(%rows_i_121, %t125) :: integer
139
139
  %t127 = const 0 :: integer
@@ -142,12 +142,12 @@
142
142
  %t130 = call core.and(%t128, %t129) :: boolean
143
143
  %t132 = call core.sub(%t124, %t125) :: integer
144
144
  %t134 = call core.clamp(%t126, %t127, %t132) :: integer
145
- %t135 = Gather %t119, %t134 :: any
146
- %t136 = Length %t135 :: integer
145
+ %t135 = gather %t119, %t134 :: any
146
+ %t136 = length %t135 :: integer
147
147
  %t137 = call core.mod(%col_i_123, %t136) :: integer
148
148
  %t138 = call core.add(%t137, %t136) :: integer
149
149
  %t139 = call core.mod(%t138, %t136) :: integer
150
- %t140 = Gather %t135, %t139 :: integer
150
+ %t140 = gather %t135, %t139 :: integer
151
151
  %t142 = select %t130, %t140, %t127 :: integer
152
152
  yield %t142
153
153
  end_loop
@@ -157,18 +157,18 @@
157
157
  %t143 = load_input "rows" :: array
158
158
  loop rows id=L15 in %t143 as el=%rows_el_144, idx=%rows_i_145
159
159
  loop col id=L16 in %rows_el_144 as el=%col_el_146, idx=%col_i_147
160
- %t148 = Length %t143 :: integer
160
+ %t148 = length %t143 :: integer
161
161
  %t149 = const 1 :: integer
162
162
  %t150 = call core.sub(%rows_i_145, %t149) :: integer
163
163
  %t152 = call core.sub(%t148, %t149) :: integer
164
164
  %t153 = const 0 :: integer
165
165
  %t154 = call core.clamp(%t150, %t153, %t152) :: integer
166
- %t155 = Gather %t143, %t154 :: any
167
- %t156 = Length %t155 :: integer
166
+ %t155 = gather %t143, %t154 :: any
167
+ %t156 = length %t155 :: integer
168
168
  %t157 = call core.mod(%col_i_147, %t156) :: integer
169
169
  %t158 = call core.add(%t157, %t156) :: integer
170
170
  %t159 = call core.mod(%t158, %t156) :: integer
171
- %t160 = Gather %t155, %t159 :: integer
171
+ %t160 = gather %t155, %t159 :: integer
172
172
  yield %t160
173
173
  end_loop
174
174
  end_loop
@@ -177,18 +177,18 @@
177
177
  %t161 = load_input "rows" :: array
178
178
  loop rows id=L17 in %t161 as el=%rows_el_162, idx=%rows_i_163
179
179
  loop col id=L18 in %rows_el_162 as el=%col_el_164, idx=%col_i_165
180
- %t166 = Length %t161 :: integer
180
+ %t166 = length %t161 :: integer
181
181
  %t167 = const 1 :: integer
182
182
  %t168 = call core.sub(%rows_i_163, %t167) :: integer
183
183
  %t169 = call core.mod(%t168, %t166) :: integer
184
184
  %t170 = call core.add(%t169, %t166) :: integer
185
185
  %t171 = call core.mod(%t170, %t166) :: integer
186
- %t172 = Gather %t161, %t171 :: any
187
- %t173 = Length %t172 :: integer
186
+ %t172 = gather %t161, %t171 :: any
187
+ %t173 = length %t172 :: integer
188
188
  %t174 = call core.mod(%col_i_165, %t173) :: integer
189
189
  %t175 = call core.add(%t174, %t173) :: integer
190
190
  %t176 = call core.mod(%t175, %t173) :: integer
191
- %t177 = Gather %t172, %t176 :: integer
191
+ %t177 = gather %t172, %t176 :: integer
192
192
  yield %t177
193
193
  end_loop
194
194
  end_loop
@@ -197,7 +197,7 @@
197
197
  %t178 = load_input "rows" :: array
198
198
  loop rows id=L19 in %t178 as el=%rows_el_179, idx=%rows_i_180
199
199
  loop col id=L20 in %rows_el_179 as el=%col_el_181, idx=%col_i_182
200
- %t183 = Length %t178 :: integer
200
+ %t183 = length %t178 :: integer
201
201
  %t184 = const -1 :: integer
202
202
  %t185 = call core.sub(%rows_i_180, %t184) :: integer
203
203
  %t186 = const 0 :: integer
@@ -207,12 +207,12 @@
207
207
  %t190 = const 1 :: integer
208
208
  %t191 = call core.sub(%t183, %t190) :: integer
209
209
  %t193 = call core.clamp(%t185, %t186, %t191) :: integer
210
- %t194 = Gather %t178, %t193 :: any
211
- %t195 = Length %t194 :: integer
210
+ %t194 = gather %t178, %t193 :: any
211
+ %t195 = length %t194 :: integer
212
212
  %t196 = call core.mod(%col_i_182, %t195) :: integer
213
213
  %t197 = call core.add(%t196, %t195) :: integer
214
214
  %t198 = call core.mod(%t197, %t195) :: integer
215
- %t199 = Gather %t194, %t198 :: integer
215
+ %t199 = gather %t194, %t198 :: integer
216
216
  %t201 = select %t189, %t199, %t186 :: integer
217
217
  yield %t201
218
218
  end_loop
@@ -222,19 +222,19 @@
222
222
  %t202 = load_input "rows" :: array
223
223
  loop rows id=L21 in %t202 as el=%rows_el_203, idx=%rows_i_204
224
224
  loop col id=L22 in %rows_el_203 as el=%col_el_205, idx=%col_i_206
225
- %t207 = Length %t202 :: integer
225
+ %t207 = length %t202 :: integer
226
226
  %t208 = const -1 :: integer
227
227
  %t209 = call core.sub(%rows_i_204, %t208) :: integer
228
228
  %t210 = const 1 :: integer
229
229
  %t211 = call core.sub(%t207, %t210) :: integer
230
230
  %t212 = const 0 :: integer
231
231
  %t213 = call core.clamp(%t209, %t212, %t211) :: integer
232
- %t214 = Gather %t202, %t213 :: any
233
- %t215 = Length %t214 :: integer
232
+ %t214 = gather %t202, %t213 :: any
233
+ %t215 = length %t214 :: integer
234
234
  %t216 = call core.mod(%col_i_206, %t215) :: integer
235
235
  %t217 = call core.add(%t216, %t215) :: integer
236
236
  %t218 = call core.mod(%t217, %t215) :: integer
237
- %t219 = Gather %t214, %t218 :: integer
237
+ %t219 = gather %t214, %t218 :: integer
238
238
  yield %t219
239
239
  end_loop
240
240
  end_loop
@@ -243,18 +243,18 @@
243
243
  %t220 = load_input "rows" :: array
244
244
  loop rows id=L23 in %t220 as el=%rows_el_221, idx=%rows_i_222
245
245
  loop col id=L24 in %rows_el_221 as el=%col_el_223, idx=%col_i_224
246
- %t225 = Length %t220 :: integer
246
+ %t225 = length %t220 :: integer
247
247
  %t226 = const -1 :: integer
248
248
  %t227 = call core.sub(%rows_i_222, %t226) :: integer
249
249
  %t228 = call core.mod(%t227, %t225) :: integer
250
250
  %t229 = call core.add(%t228, %t225) :: integer
251
251
  %t230 = call core.mod(%t229, %t225) :: integer
252
- %t231 = Gather %t220, %t230 :: any
253
- %t232 = Length %t231 :: integer
252
+ %t231 = gather %t220, %t230 :: any
253
+ %t232 = length %t231 :: integer
254
254
  %t233 = call core.mod(%col_i_224, %t232) :: integer
255
255
  %t234 = call core.add(%t233, %t232) :: integer
256
256
  %t235 = call core.mod(%t234, %t232) :: integer
257
- %t236 = Gather %t231, %t235 :: integer
257
+ %t236 = gather %t231, %t235 :: integer
258
258
  yield %t236
259
259
  end_loop
260
260
  end_loop