kumi 0.0.23 → 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 +3 -0
- data/README.md +2 -2
- 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/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
|
@@ -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
|
@@ -1,15 +1,15 @@
|
|
1
1
|
(LIR
|
2
2
|
(Declaration shift_cols_right_zero
|
3
3
|
%t1 = load_input "rows" :: array
|
4
|
-
%t6 =
|
4
|
+
%t6 = length %t1 :: integer
|
5
5
|
%t12 = const 1 :: integer
|
6
6
|
%t14 = const 0 :: integer
|
7
7
|
loop rows id=L1 in %t1 as el=%rows_el_2, idx=%rows_i_3
|
8
8
|
%t7 = call core.mod(%rows_i_3, %t6) :: integer
|
9
9
|
%t8 = call core.add(%t7, %t6) :: integer
|
10
10
|
%t9 = call core.mod(%t8, %t6) :: integer
|
11
|
-
%t10 =
|
12
|
-
%t11 =
|
11
|
+
%t10 = gather %t1, %t9 :: any
|
12
|
+
%t11 = length %t10 :: integer
|
13
13
|
%t19 = call core.sub(%t11, %t12) :: integer
|
14
14
|
loop col id=L2 in %rows_el_2 as el=%col_el_4, idx=%col_i_5
|
15
15
|
%t13 = call core.sub(%col_i_5, %t12) :: integer
|
@@ -17,7 +17,7 @@
|
|
17
17
|
%t16 = call core.lt(%t13, %t11) :: boolean
|
18
18
|
%t17 = call core.and(%t15, %t16) :: boolean
|
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
|
@@ -25,47 +25,47 @@
|
|
25
25
|
)
|
26
26
|
(Declaration shift_cols_right_clamp
|
27
27
|
%t25 = load_input "rows" :: array
|
28
|
-
%t30 =
|
28
|
+
%t30 = length %t25 :: integer
|
29
29
|
%t36 = const 1 :: integer
|
30
30
|
%t40 = const 0 :: integer
|
31
31
|
loop rows id=L3 in %t25 as el=%rows_el_26, idx=%rows_i_27
|
32
32
|
%t31 = call core.mod(%rows_i_27, %t30) :: integer
|
33
33
|
%t32 = call core.add(%t31, %t30) :: integer
|
34
34
|
%t33 = call core.mod(%t32, %t30) :: integer
|
35
|
-
%t34 =
|
36
|
-
%t35 =
|
35
|
+
%t34 = gather %t25, %t33 :: any
|
36
|
+
%t35 = length %t34 :: integer
|
37
37
|
%t39 = call core.sub(%t35, %t36) :: integer
|
38
38
|
loop col id=L4 in %rows_el_26 as el=%col_el_28, idx=%col_i_29
|
39
39
|
%t37 = call core.sub(%col_i_29, %t36) :: 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
|
45
45
|
)
|
46
46
|
(Declaration shift_cols_right_wrap
|
47
47
|
%t43 = load_input "rows" :: array
|
48
|
-
%t48 =
|
48
|
+
%t48 = length %t43 :: integer
|
49
49
|
%t54 = const 1 :: integer
|
50
50
|
loop rows id=L5 in %t43 as el=%rows_el_44, idx=%rows_i_45
|
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
|
loop col id=L6 in %rows_el_44 as el=%col_el_46, idx=%col_i_47
|
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
|
65
65
|
)
|
66
66
|
(Declaration shift_cols_left_zero
|
67
67
|
%t60 = load_input "rows" :: array
|
68
|
-
%t65 =
|
68
|
+
%t65 = length %t60 :: integer
|
69
69
|
%t71 = const -1 :: integer
|
70
70
|
%t73 = const 0 :: integer
|
71
71
|
%t77 = const 1 :: integer
|
@@ -73,8 +73,8 @@
|
|
73
73
|
%t66 = call core.mod(%rows_i_62, %t65) :: integer
|
74
74
|
%t67 = call core.add(%t66, %t65) :: integer
|
75
75
|
%t68 = call core.mod(%t67, %t65) :: integer
|
76
|
-
%t69 =
|
77
|
-
%t70 =
|
76
|
+
%t69 = gather %t60, %t68 :: any
|
77
|
+
%t70 = length %t69 :: integer
|
78
78
|
%t78 = call core.sub(%t70, %t77) :: integer
|
79
79
|
loop col id=L8 in %rows_el_61 as el=%col_el_63, idx=%col_i_64
|
80
80
|
%t72 = call core.sub(%col_i_64, %t71) :: integer
|
@@ -82,7 +82,7 @@
|
|
82
82
|
%t75 = call core.lt(%t72, %t70) :: boolean
|
83
83
|
%t76 = call core.and(%t74, %t75) :: boolean
|
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
|
@@ -90,7 +90,7 @@
|
|
90
90
|
)
|
91
91
|
(Declaration shift_cols_left_clamp
|
92
92
|
%t84 = load_input "rows" :: array
|
93
|
-
%t89 =
|
93
|
+
%t89 = length %t84 :: integer
|
94
94
|
%t95 = const -1 :: integer
|
95
95
|
%t97 = const 1 :: integer
|
96
96
|
%t99 = const 0 :: integer
|
@@ -98,40 +98,40 @@
|
|
98
98
|
%t90 = call core.mod(%rows_i_86, %t89) :: integer
|
99
99
|
%t91 = call core.add(%t90, %t89) :: integer
|
100
100
|
%t92 = call core.mod(%t91, %t89) :: integer
|
101
|
-
%t93 =
|
102
|
-
%t94 =
|
101
|
+
%t93 = gather %t84, %t92 :: any
|
102
|
+
%t94 = length %t93 :: integer
|
103
103
|
%t98 = call core.sub(%t94, %t97) :: integer
|
104
104
|
loop col id=L10 in %rows_el_85 as el=%col_el_87, idx=%col_i_88
|
105
105
|
%t96 = call core.sub(%col_i_88, %t95) :: 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
|
111
111
|
)
|
112
112
|
(Declaration shift_cols_left_wrap
|
113
113
|
%t102 = load_input "rows" :: array
|
114
|
-
%t107 =
|
114
|
+
%t107 = length %t102 :: integer
|
115
115
|
%t113 = const -1 :: integer
|
116
116
|
loop rows id=L11 in %t102 as el=%rows_el_103, idx=%rows_i_104
|
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
|
loop col id=L12 in %rows_el_103 as el=%col_el_105, idx=%col_i_106
|
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
|
131
131
|
)
|
132
132
|
(Declaration shift_rows_down_zero
|
133
133
|
%t119 = load_input "rows" :: array
|
134
|
-
%t124 =
|
134
|
+
%t124 = length %t119 :: integer
|
135
135
|
%t125 = const 1 :: integer
|
136
136
|
%t127 = const 0 :: integer
|
137
137
|
%t132 = call core.sub(%t124, %t125) :: integer
|
@@ -141,13 +141,13 @@
|
|
141
141
|
%t129 = call core.lt(%t126, %t124) :: boolean
|
142
142
|
%t134 = call core.clamp(%t126, %t127, %t132) :: integer
|
143
143
|
%t130 = call core.and(%t128, %t129) :: boolean
|
144
|
-
%t135 =
|
145
|
-
%t136 =
|
144
|
+
%t135 = gather %t119, %t134 :: any
|
145
|
+
%t136 = length %t135 :: integer
|
146
146
|
loop col id=L14 in %rows_el_120 as el=%col_el_122, idx=%col_i_123
|
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
|
@@ -155,47 +155,47 @@
|
|
155
155
|
)
|
156
156
|
(Declaration shift_rows_down_clamp
|
157
157
|
%t143 = load_input "rows" :: array
|
158
|
-
%t148 =
|
158
|
+
%t148 = length %t143 :: integer
|
159
159
|
%t149 = const 1 :: integer
|
160
160
|
%t153 = const 0 :: integer
|
161
161
|
%t152 = call core.sub(%t148, %t149) :: integer
|
162
162
|
loop rows id=L15 in %t143 as el=%rows_el_144, idx=%rows_i_145
|
163
163
|
%t150 = call core.sub(%rows_i_145, %t149) :: integer
|
164
164
|
%t154 = call core.clamp(%t150, %t153, %t152) :: integer
|
165
|
-
%t155 =
|
166
|
-
%t156 =
|
165
|
+
%t155 = gather %t143, %t154 :: any
|
166
|
+
%t156 = length %t155 :: integer
|
167
167
|
loop col id=L16 in %rows_el_144 as el=%col_el_146, idx=%col_i_147
|
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
|
175
175
|
)
|
176
176
|
(Declaration shift_rows_down_wrap
|
177
177
|
%t161 = load_input "rows" :: array
|
178
|
-
%t166 =
|
178
|
+
%t166 = length %t161 :: integer
|
179
179
|
%t167 = const 1 :: integer
|
180
180
|
loop rows id=L17 in %t161 as el=%rows_el_162, idx=%rows_i_163
|
181
181
|
%t168 = call core.sub(%rows_i_163, %t167) :: integer
|
182
182
|
%t169 = call core.mod(%t168, %t166) :: integer
|
183
183
|
%t170 = call core.add(%t169, %t166) :: integer
|
184
184
|
%t171 = call core.mod(%t170, %t166) :: integer
|
185
|
-
%t172 =
|
186
|
-
%t173 =
|
185
|
+
%t172 = gather %t161, %t171 :: any
|
186
|
+
%t173 = length %t172 :: integer
|
187
187
|
loop col id=L18 in %rows_el_162 as el=%col_el_164, idx=%col_i_165
|
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
|
195
195
|
)
|
196
196
|
(Declaration shift_rows_up_zero
|
197
197
|
%t178 = load_input "rows" :: array
|
198
|
-
%t183 =
|
198
|
+
%t183 = length %t178 :: integer
|
199
199
|
%t184 = const -1 :: integer
|
200
200
|
%t186 = const 0 :: integer
|
201
201
|
%t190 = const 1 :: integer
|
@@ -206,13 +206,13 @@
|
|
206
206
|
%t188 = call core.lt(%t185, %t183) :: boolean
|
207
207
|
%t193 = call core.clamp(%t185, %t186, %t191) :: integer
|
208
208
|
%t189 = call core.and(%t187, %t188) :: boolean
|
209
|
-
%t194 =
|
210
|
-
%t195 =
|
209
|
+
%t194 = gather %t178, %t193 :: any
|
210
|
+
%t195 = length %t194 :: integer
|
211
211
|
loop col id=L20 in %rows_el_179 as el=%col_el_181, idx=%col_i_182
|
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
|
@@ -220,7 +220,7 @@
|
|
220
220
|
)
|
221
221
|
(Declaration shift_rows_up_clamp
|
222
222
|
%t202 = load_input "rows" :: array
|
223
|
-
%t207 =
|
223
|
+
%t207 = length %t202 :: integer
|
224
224
|
%t208 = const -1 :: integer
|
225
225
|
%t210 = const 1 :: integer
|
226
226
|
%t212 = const 0 :: integer
|
@@ -228,33 +228,33 @@
|
|
228
228
|
loop rows id=L21 in %t202 as el=%rows_el_203, idx=%rows_i_204
|
229
229
|
%t209 = call core.sub(%rows_i_204, %t208) :: integer
|
230
230
|
%t213 = call core.clamp(%t209, %t212, %t211) :: integer
|
231
|
-
%t214 =
|
232
|
-
%t215 =
|
231
|
+
%t214 = gather %t202, %t213 :: any
|
232
|
+
%t215 = length %t214 :: integer
|
233
233
|
loop col id=L22 in %rows_el_203 as el=%col_el_205, idx=%col_i_206
|
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
|
241
241
|
)
|
242
242
|
(Declaration shift_rows_up_wrap
|
243
243
|
%t220 = load_input "rows" :: array
|
244
|
-
%t225 =
|
244
|
+
%t225 = length %t220 :: integer
|
245
245
|
%t226 = const -1 :: integer
|
246
246
|
loop rows id=L23 in %t220 as el=%rows_el_221, idx=%rows_i_222
|
247
247
|
%t227 = call core.sub(%rows_i_222, %t226) :: integer
|
248
248
|
%t228 = call core.mod(%t227, %t225) :: integer
|
249
249
|
%t229 = call core.add(%t228, %t225) :: integer
|
250
250
|
%t230 = call core.mod(%t229, %t225) :: integer
|
251
|
-
%t231 =
|
252
|
-
%t232 =
|
251
|
+
%t231 = gather %t220, %t230 :: any
|
252
|
+
%t232 = length %t231 :: integer
|
253
253
|
loop col id=L24 in %rows_el_221 as el=%col_el_223, idx=%col_i_224
|
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
|