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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/README.md +60 -116
- data/golden/array_element/expected/schema_ruby.rb +1 -1
- data/golden/array_index/expected/schema_ruby.rb +1 -1
- data/golden/array_operations/expected/schema_ruby.rb +1 -1
- data/golden/cascade_logic/expected/schema_ruby.rb +1 -1
- data/golden/chained_fusion/expected/schema_ruby.rb +1 -1
- data/golden/element_arrays/expected/schema_ruby.rb +1 -1
- data/golden/empty_and_null_inputs/expected/schema_ruby.rb +1 -1
- data/golden/game_of_life/expected/lir_00_unoptimized.txt +33 -33
- data/golden/game_of_life/expected/lir_01_hoist_scalar_references.txt +33 -33
- data/golden/game_of_life/expected/lir_02_inlined.txt +296 -296
- data/golden/game_of_life/expected/lir_03_cse.txt +128 -128
- data/golden/game_of_life/expected/lir_04_1_loop_fusion.txt +128 -128
- data/golden/game_of_life/expected/lir_04_loop_invcm.txt +128 -128
- data/golden/game_of_life/expected/lir_06_const_prop.txt +128 -128
- data/golden/game_of_life/expected/schema_ruby.rb +1 -1
- data/golden/hash_keys/expected/schema_ruby.rb +1 -1
- data/golden/hash_keys/schema.kumi +4 -5
- data/golden/hash_value/expected/schema_ruby.rb +1 -1
- data/golden/hierarchical_complex/expected/schema_ruby.rb +1 -1
- data/golden/inline_rename_scope_leak/expected/ast.txt +48 -0
- data/golden/inline_rename_scope_leak/expected/input_plan.txt +10 -0
- data/golden/inline_rename_scope_leak/expected/lir_00_unoptimized.txt +35 -0
- data/golden/inline_rename_scope_leak/expected/lir_01_hoist_scalar_references.txt +35 -0
- data/golden/inline_rename_scope_leak/expected/lir_02_inlined.txt +49 -0
- data/golden/inline_rename_scope_leak/expected/lir_03_cse.txt +49 -0
- data/golden/inline_rename_scope_leak/expected/lir_04_1_loop_fusion.txt +49 -0
- data/golden/inline_rename_scope_leak/expected/lir_04_loop_invcm.txt +49 -0
- data/golden/inline_rename_scope_leak/expected/lir_06_const_prop.txt +49 -0
- data/golden/inline_rename_scope_leak/expected/nast.txt +31 -0
- data/golden/inline_rename_scope_leak/expected/schema_javascript.mjs +51 -0
- data/golden/inline_rename_scope_leak/expected/schema_ruby.rb +82 -0
- data/golden/inline_rename_scope_leak/expected/snast.txt +31 -0
- data/golden/inline_rename_scope_leak/expected.json +7 -0
- data/golden/inline_rename_scope_leak/input.json +4 -0
- data/golden/inline_rename_scope_leak/schema.kumi +24 -0
- data/golden/input_reference/expected/schema_ruby.rb +1 -1
- data/golden/interleaved_fusion/expected/schema_ruby.rb +1 -1
- data/golden/let_inline/expected/schema_ruby.rb +1 -1
- data/golden/loop_fusion/expected/schema_ruby.rb +1 -1
- data/golden/min_reduce_scope/expected/schema_ruby.rb +1 -1
- data/golden/mixed_dimensions/expected/schema_ruby.rb +1 -1
- data/golden/multirank_hoisting/expected/schema_ruby.rb +1 -1
- data/golden/nested_hash/expected/schema_ruby.rb +1 -1
- data/golden/reduction_broadcast/expected/schema_ruby.rb +1 -1
- data/golden/roll/expected/lir_00_unoptimized.txt +8 -8
- data/golden/roll/expected/lir_01_hoist_scalar_references.txt +8 -8
- data/golden/roll/expected/lir_02_inlined.txt +8 -8
- data/golden/roll/expected/lir_03_cse.txt +8 -8
- data/golden/roll/expected/lir_04_1_loop_fusion.txt +8 -8
- data/golden/roll/expected/lir_04_loop_invcm.txt +8 -8
- data/golden/roll/expected/lir_06_const_prop.txt +8 -8
- data/golden/roll/expected/schema_ruby.rb +1 -1
- data/golden/shift/expected/lir_00_unoptimized.txt +12 -12
- data/golden/shift/expected/lir_01_hoist_scalar_references.txt +12 -12
- data/golden/shift/expected/lir_02_inlined.txt +12 -12
- data/golden/shift/expected/lir_03_cse.txt +12 -12
- data/golden/shift/expected/lir_04_1_loop_fusion.txt +12 -12
- data/golden/shift/expected/lir_04_loop_invcm.txt +12 -12
- data/golden/shift/expected/lir_06_const_prop.txt +12 -12
- data/golden/shift/expected/schema_ruby.rb +1 -1
- data/golden/shift_2d/expected/lir_00_unoptimized.txt +48 -48
- data/golden/shift_2d/expected/lir_01_hoist_scalar_references.txt +48 -48
- data/golden/shift_2d/expected/lir_02_inlined.txt +48 -48
- data/golden/shift_2d/expected/lir_03_cse.txt +48 -48
- data/golden/shift_2d/expected/lir_04_1_loop_fusion.txt +48 -48
- data/golden/shift_2d/expected/lir_04_loop_invcm.txt +48 -48
- data/golden/shift_2d/expected/lir_06_const_prop.txt +48 -48
- data/golden/shift_2d/expected/schema_ruby.rb +1 -1
- data/golden/simple_math/expected/schema_ruby.rb +1 -1
- data/golden/streaming_basics/expected/schema_ruby.rb +1 -1
- data/golden/tuples/expected/lir_00_unoptimized.txt +4 -4
- data/golden/tuples/expected/lir_01_hoist_scalar_references.txt +4 -4
- data/golden/tuples/expected/lir_02_inlined.txt +4 -4
- data/golden/tuples/expected/lir_03_cse.txt +4 -4
- data/golden/tuples/expected/lir_04_1_loop_fusion.txt +4 -4
- data/golden/tuples/expected/lir_04_loop_invcm.txt +4 -4
- data/golden/tuples/expected/lir_06_const_prop.txt +4 -4
- data/golden/tuples/expected/schema_ruby.rb +1 -1
- data/golden/tuples_and_arrays/expected/lir_00_unoptimized.txt +1 -1
- data/golden/tuples_and_arrays/expected/lir_01_hoist_scalar_references.txt +1 -1
- data/golden/tuples_and_arrays/expected/lir_02_inlined.txt +2 -2
- data/golden/tuples_and_arrays/expected/lir_03_cse.txt +2 -2
- data/golden/tuples_and_arrays/expected/lir_04_1_loop_fusion.txt +2 -2
- data/golden/tuples_and_arrays/expected/lir_04_loop_invcm.txt +2 -2
- data/golden/tuples_and_arrays/expected/lir_06_const_prop.txt +2 -2
- data/golden/tuples_and_arrays/expected/schema_ruby.rb +1 -1
- data/golden/us_tax_2024/expected/ast.txt +865 -0
- data/golden/us_tax_2024/expected/input_plan.txt +61 -0
- data/golden/us_tax_2024/expected/lir_00_unoptimized.txt +901 -0
- data/golden/us_tax_2024/expected/lir_01_hoist_scalar_references.txt +901 -0
- data/golden/us_tax_2024/expected/lir_02_inlined.txt +5178 -0
- data/golden/us_tax_2024/expected/lir_03_cse.txt +2499 -0
- data/golden/us_tax_2024/expected/lir_04_1_loop_fusion.txt +2519 -0
- data/golden/us_tax_2024/expected/lir_04_loop_invcm.txt +2439 -0
- data/golden/us_tax_2024/expected/lir_06_const_prop.txt +2439 -0
- data/golden/us_tax_2024/expected/nast.txt +976 -0
- data/golden/us_tax_2024/expected/schema_javascript.mjs +584 -0
- data/golden/us_tax_2024/expected/schema_ruby.rb +639 -0
- data/golden/us_tax_2024/expected/snast.txt +976 -0
- data/golden/us_tax_2024/expected.json +1 -0
- data/golden/us_tax_2024/input.json +168 -0
- data/golden/us_tax_2024/schema.kumi +203 -0
- data/golden/with_constants/expected/schema_ruby.rb +1 -1
- data/lib/kumi/core/analyzer/passes/lir/inline_declarations_pass.rb +181 -105
- data/lib/kumi/core/analyzer/passes/output_schema_pass.rb +6 -4
- data/lib/kumi/core/functions/function_spec.rb +14 -8
- data/lib/kumi/core/functions/loader.rb +1 -1
- data/lib/kumi/version.rb +1 -1
- 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 =
|
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 =
|
11
|
-
%t11 =
|
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 =
|
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 =
|
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 =
|
38
|
-
%t35 =
|
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 =
|
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 =
|
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 =
|
59
|
-
%t53 =
|
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 =
|
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 =
|
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 =
|
79
|
-
%t70 =
|
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 =
|
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 =
|
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 =
|
106
|
-
%t94 =
|
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 =
|
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 =
|
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 =
|
127
|
-
%t112 =
|
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 =
|
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 =
|
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 =
|
154
|
-
%t136 =
|
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 =
|
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 =
|
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 =
|
177
|
-
%t156 =
|
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 =
|
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 =
|
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 =
|
197
|
-
%t173 =
|
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 =
|
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 =
|
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 =
|
222
|
-
%t195 =
|
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 =
|
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 =
|
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 =
|
245
|
-
%t215 =
|
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 =
|
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 =
|
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 =
|
265
|
-
%t232 =
|
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 =
|
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 =
|
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 =
|
11
|
-
%t11 =
|
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 =
|
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 =
|
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 =
|
38
|
-
%t35 =
|
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 =
|
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 =
|
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 =
|
59
|
-
%t53 =
|
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 =
|
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 =
|
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 =
|
79
|
-
%t70 =
|
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 =
|
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 =
|
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 =
|
106
|
-
%t94 =
|
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 =
|
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 =
|
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 =
|
127
|
-
%t112 =
|
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 =
|
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 =
|
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 =
|
154
|
-
%t136 =
|
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 =
|
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 =
|
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 =
|
177
|
-
%t156 =
|
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 =
|
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 =
|
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 =
|
197
|
-
%t173 =
|
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 =
|
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 =
|
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 =
|
222
|
-
%t195 =
|
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 =
|
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 =
|
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 =
|
245
|
-
%t215 =
|
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 =
|
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 =
|
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 =
|
265
|
-
%t232 =
|
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 =
|
269
|
+
%t236 = gather %t231, %t235 :: integer
|
270
270
|
yield %t236
|
271
271
|
end_loop
|
272
272
|
end_loop
|