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
|
@@ -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 =
|
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 =
|
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 =
|
35
|
-
%t35 =
|
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 =
|
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 =
|
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 =
|
55
|
-
%t53 =
|
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 =
|
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 =
|
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 =
|
75
|
-
%t70 =
|
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 =
|
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 =
|
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 =
|
100
|
-
%t94 =
|
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 =
|
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 =
|
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 =
|
121
|
-
%t112 =
|
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 =
|
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 =
|
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 =
|
146
|
-
%t136 =
|
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 =
|
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 =
|
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 =
|
167
|
-
%t156 =
|
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 =
|
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 =
|
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 =
|
187
|
-
%t173 =
|
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 =
|
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 =
|
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 =
|
211
|
-
%t195 =
|
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 =
|
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 =
|
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 =
|
233
|
-
%t215 =
|
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 =
|
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 =
|
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 =
|
253
|
-
%t232 =
|
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 =
|
257
|
+
%t236 = gather %t231, %t235 :: integer
|
258
258
|
yield %t236
|
259
259
|
end_loop
|
260
260
|
end_loop
|