kumi 0.0.22 → 0.0.24

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