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
@@ -2,7 +2,7 @@
|
|
2
2
|
(Declaration shift_right_zero
|
3
3
|
%t1 = load_input "cells" :: array
|
4
4
|
loop cells id=L1 in %t1 as el=%cells_el_2, idx=%cells_i_3
|
5
|
-
%t4 =
|
5
|
+
%t4 = length %t1 :: integer
|
6
6
|
%t5 = const 1 :: integer
|
7
7
|
%t6 = call core.sub(%cells_i_3, %t5) :: integer
|
8
8
|
%t7 = const 0 :: integer
|
@@ -13,7 +13,7 @@
|
|
13
13
|
%t12 = call core.sub(%t4, %t11) :: integer
|
14
14
|
%t13 = const 0 :: integer
|
15
15
|
%t14 = call core.clamp(%t6, %t13, %t12) :: integer
|
16
|
-
%t15 =
|
16
|
+
%t15 = gather %t1, %t14 :: integer
|
17
17
|
%t16 = const 0 :: integer
|
18
18
|
%t17 = select %t10, %t15, %t16 :: integer
|
19
19
|
yield %t17
|
@@ -22,7 +22,7 @@
|
|
22
22
|
(Declaration shift_left_zero
|
23
23
|
%t18 = load_input "cells" :: array
|
24
24
|
loop cells id=L2 in %t18 as el=%cells_el_19, idx=%cells_i_20
|
25
|
-
%t21 =
|
25
|
+
%t21 = length %t18 :: integer
|
26
26
|
%t22 = const -1 :: integer
|
27
27
|
%t23 = call core.sub(%cells_i_20, %t22) :: integer
|
28
28
|
%t24 = const 0 :: integer
|
@@ -33,7 +33,7 @@
|
|
33
33
|
%t29 = call core.sub(%t21, %t28) :: integer
|
34
34
|
%t30 = const 0 :: integer
|
35
35
|
%t31 = call core.clamp(%t23, %t30, %t29) :: integer
|
36
|
-
%t32 =
|
36
|
+
%t32 = gather %t18, %t31 :: integer
|
37
37
|
%t33 = const 0 :: integer
|
38
38
|
%t34 = select %t27, %t32, %t33 :: integer
|
39
39
|
yield %t34
|
@@ -42,54 +42,54 @@
|
|
42
42
|
(Declaration shift_right_clamp
|
43
43
|
%t35 = load_input "cells" :: array
|
44
44
|
loop cells id=L3 in %t35 as el=%cells_el_36, idx=%cells_i_37
|
45
|
-
%t38 =
|
45
|
+
%t38 = length %t35 :: integer
|
46
46
|
%t39 = const 1 :: integer
|
47
47
|
%t40 = call core.sub(%cells_i_37, %t39) :: integer
|
48
48
|
%t41 = const 1 :: integer
|
49
49
|
%t42 = call core.sub(%t38, %t41) :: integer
|
50
50
|
%t43 = const 0 :: integer
|
51
51
|
%t44 = call core.clamp(%t40, %t43, %t42) :: integer
|
52
|
-
%t45 =
|
52
|
+
%t45 = gather %t35, %t44 :: integer
|
53
53
|
yield %t45
|
54
54
|
end_loop
|
55
55
|
)
|
56
56
|
(Declaration shift_left_clamp
|
57
57
|
%t46 = load_input "cells" :: array
|
58
58
|
loop cells id=L4 in %t46 as el=%cells_el_47, idx=%cells_i_48
|
59
|
-
%t49 =
|
59
|
+
%t49 = length %t46 :: integer
|
60
60
|
%t50 = const -1 :: integer
|
61
61
|
%t51 = call core.sub(%cells_i_48, %t50) :: integer
|
62
62
|
%t52 = const 1 :: integer
|
63
63
|
%t53 = call core.sub(%t49, %t52) :: integer
|
64
64
|
%t54 = const 0 :: integer
|
65
65
|
%t55 = call core.clamp(%t51, %t54, %t53) :: integer
|
66
|
-
%t56 =
|
66
|
+
%t56 = gather %t46, %t55 :: integer
|
67
67
|
yield %t56
|
68
68
|
end_loop
|
69
69
|
)
|
70
70
|
(Declaration shift_right_wrap
|
71
71
|
%t57 = load_input "cells" :: array
|
72
72
|
loop cells id=L5 in %t57 as el=%cells_el_58, idx=%cells_i_59
|
73
|
-
%t60 =
|
73
|
+
%t60 = length %t57 :: integer
|
74
74
|
%t61 = const 1 :: integer
|
75
75
|
%t62 = call core.sub(%cells_i_59, %t61) :: integer
|
76
76
|
%t63 = call core.mod(%t62, %t60) :: integer
|
77
77
|
%t64 = call core.add(%t63, %t60) :: integer
|
78
78
|
%t65 = call core.mod(%t64, %t60) :: integer
|
79
|
-
%t66 =
|
79
|
+
%t66 = gather %t57, %t65 :: integer
|
80
80
|
yield %t66
|
81
81
|
end_loop
|
82
82
|
)
|
83
83
|
(Declaration shift_left_wrap
|
84
84
|
%t67 = load_input "cells" :: array
|
85
85
|
loop cells id=L6 in %t67 as el=%cells_el_68, idx=%cells_i_69
|
86
|
-
%t70 =
|
86
|
+
%t70 = length %t67 :: integer
|
87
87
|
%t71 = const -1 :: integer
|
88
88
|
%t72 = call core.sub(%cells_i_69, %t71) :: integer
|
89
89
|
%t73 = call core.mod(%t72, %t70) :: integer
|
90
90
|
%t74 = call core.add(%t73, %t70) :: integer
|
91
91
|
%t75 = call core.mod(%t74, %t70) :: integer
|
92
|
-
%t76 =
|
92
|
+
%t76 = gather %t67, %t75 :: integer
|
93
93
|
yield %t76
|
94
94
|
end_loop
|
95
95
|
)
|
@@ -2,7 +2,7 @@
|
|
2
2
|
(Declaration shift_right_zero
|
3
3
|
%t1 = load_input "cells" :: array
|
4
4
|
loop cells id=L1 in %t1 as el=%cells_el_2, idx=%cells_i_3
|
5
|
-
%t4 =
|
5
|
+
%t4 = length %t1 :: integer
|
6
6
|
%t5 = const 1 :: integer
|
7
7
|
%t6 = call core.sub(%cells_i_3, %t5) :: integer
|
8
8
|
%t7 = const 0 :: integer
|
@@ -13,7 +13,7 @@
|
|
13
13
|
%t12 = call core.sub(%t4, %t11) :: integer
|
14
14
|
%t13 = const 0 :: integer
|
15
15
|
%t14 = call core.clamp(%t6, %t13, %t12) :: integer
|
16
|
-
%t15 =
|
16
|
+
%t15 = gather %t1, %t14 :: integer
|
17
17
|
%t16 = const 0 :: integer
|
18
18
|
%t17 = select %t10, %t15, %t16 :: integer
|
19
19
|
yield %t17
|
@@ -22,7 +22,7 @@
|
|
22
22
|
(Declaration shift_left_zero
|
23
23
|
%t18 = load_input "cells" :: array
|
24
24
|
loop cells id=L2 in %t18 as el=%cells_el_19, idx=%cells_i_20
|
25
|
-
%t21 =
|
25
|
+
%t21 = length %t18 :: integer
|
26
26
|
%t22 = const -1 :: integer
|
27
27
|
%t23 = call core.sub(%cells_i_20, %t22) :: integer
|
28
28
|
%t24 = const 0 :: integer
|
@@ -33,7 +33,7 @@
|
|
33
33
|
%t29 = call core.sub(%t21, %t28) :: integer
|
34
34
|
%t30 = const 0 :: integer
|
35
35
|
%t31 = call core.clamp(%t23, %t30, %t29) :: integer
|
36
|
-
%t32 =
|
36
|
+
%t32 = gather %t18, %t31 :: integer
|
37
37
|
%t33 = const 0 :: integer
|
38
38
|
%t34 = select %t27, %t32, %t33 :: integer
|
39
39
|
yield %t34
|
@@ -42,54 +42,54 @@
|
|
42
42
|
(Declaration shift_right_clamp
|
43
43
|
%t35 = load_input "cells" :: array
|
44
44
|
loop cells id=L3 in %t35 as el=%cells_el_36, idx=%cells_i_37
|
45
|
-
%t38 =
|
45
|
+
%t38 = length %t35 :: integer
|
46
46
|
%t39 = const 1 :: integer
|
47
47
|
%t40 = call core.sub(%cells_i_37, %t39) :: integer
|
48
48
|
%t41 = const 1 :: integer
|
49
49
|
%t42 = call core.sub(%t38, %t41) :: integer
|
50
50
|
%t43 = const 0 :: integer
|
51
51
|
%t44 = call core.clamp(%t40, %t43, %t42) :: integer
|
52
|
-
%t45 =
|
52
|
+
%t45 = gather %t35, %t44 :: integer
|
53
53
|
yield %t45
|
54
54
|
end_loop
|
55
55
|
)
|
56
56
|
(Declaration shift_left_clamp
|
57
57
|
%t46 = load_input "cells" :: array
|
58
58
|
loop cells id=L4 in %t46 as el=%cells_el_47, idx=%cells_i_48
|
59
|
-
%t49 =
|
59
|
+
%t49 = length %t46 :: integer
|
60
60
|
%t50 = const -1 :: integer
|
61
61
|
%t51 = call core.sub(%cells_i_48, %t50) :: integer
|
62
62
|
%t52 = const 1 :: integer
|
63
63
|
%t53 = call core.sub(%t49, %t52) :: integer
|
64
64
|
%t54 = const 0 :: integer
|
65
65
|
%t55 = call core.clamp(%t51, %t54, %t53) :: integer
|
66
|
-
%t56 =
|
66
|
+
%t56 = gather %t46, %t55 :: integer
|
67
67
|
yield %t56
|
68
68
|
end_loop
|
69
69
|
)
|
70
70
|
(Declaration shift_right_wrap
|
71
71
|
%t57 = load_input "cells" :: array
|
72
72
|
loop cells id=L5 in %t57 as el=%cells_el_58, idx=%cells_i_59
|
73
|
-
%t60 =
|
73
|
+
%t60 = length %t57 :: integer
|
74
74
|
%t61 = const 1 :: integer
|
75
75
|
%t62 = call core.sub(%cells_i_59, %t61) :: integer
|
76
76
|
%t63 = call core.mod(%t62, %t60) :: integer
|
77
77
|
%t64 = call core.add(%t63, %t60) :: integer
|
78
78
|
%t65 = call core.mod(%t64, %t60) :: integer
|
79
|
-
%t66 =
|
79
|
+
%t66 = gather %t57, %t65 :: integer
|
80
80
|
yield %t66
|
81
81
|
end_loop
|
82
82
|
)
|
83
83
|
(Declaration shift_left_wrap
|
84
84
|
%t67 = load_input "cells" :: array
|
85
85
|
loop cells id=L6 in %t67 as el=%cells_el_68, idx=%cells_i_69
|
86
|
-
%t70 =
|
86
|
+
%t70 = length %t67 :: integer
|
87
87
|
%t71 = const -1 :: integer
|
88
88
|
%t72 = call core.sub(%cells_i_69, %t71) :: integer
|
89
89
|
%t73 = call core.mod(%t72, %t70) :: integer
|
90
90
|
%t74 = call core.add(%t73, %t70) :: integer
|
91
91
|
%t75 = call core.mod(%t74, %t70) :: integer
|
92
|
-
%t76 =
|
92
|
+
%t76 = gather %t67, %t75 :: integer
|
93
93
|
yield %t76
|
94
94
|
end_loop
|
95
95
|
)
|
@@ -2,7 +2,7 @@
|
|
2
2
|
(Declaration shift_right_zero
|
3
3
|
%t1 = load_input "cells" :: array
|
4
4
|
loop cells id=L1 in %t1 as el=%cells_el_2, idx=%cells_i_3
|
5
|
-
%t4 =
|
5
|
+
%t4 = length %t1 :: integer
|
6
6
|
%t5 = const 1 :: integer
|
7
7
|
%t7 = const 0 :: integer
|
8
8
|
%t6 = call core.sub(%cells_i_3, %t5) :: integer
|
@@ -11,7 +11,7 @@
|
|
11
11
|
%t9 = call core.lt(%t6, %t4) :: boolean
|
12
12
|
%t14 = call core.clamp(%t6, %t7, %t12) :: integer
|
13
13
|
%t10 = call core.and(%t8, %t9) :: boolean
|
14
|
-
%t15 =
|
14
|
+
%t15 = gather %t1, %t14 :: integer
|
15
15
|
%t17 = select %t10, %t15, %t7 :: integer
|
16
16
|
yield %t17
|
17
17
|
end_loop
|
@@ -19,7 +19,7 @@
|
|
19
19
|
(Declaration shift_left_zero
|
20
20
|
%t18 = load_input "cells" :: array
|
21
21
|
loop cells id=L2 in %t18 as el=%cells_el_19, idx=%cells_i_20
|
22
|
-
%t21 =
|
22
|
+
%t21 = length %t18 :: integer
|
23
23
|
%t22 = const -1 :: integer
|
24
24
|
%t24 = const 0 :: integer
|
25
25
|
%t28 = const 1 :: integer
|
@@ -29,7 +29,7 @@
|
|
29
29
|
%t26 = call core.lt(%t23, %t21) :: boolean
|
30
30
|
%t31 = call core.clamp(%t23, %t24, %t29) :: integer
|
31
31
|
%t27 = call core.and(%t25, %t26) :: boolean
|
32
|
-
%t32 =
|
32
|
+
%t32 = gather %t18, %t31 :: integer
|
33
33
|
%t34 = select %t27, %t32, %t24 :: integer
|
34
34
|
yield %t34
|
35
35
|
end_loop
|
@@ -37,53 +37,53 @@
|
|
37
37
|
(Declaration shift_right_clamp
|
38
38
|
%t35 = load_input "cells" :: array
|
39
39
|
loop cells id=L3 in %t35 as el=%cells_el_36, idx=%cells_i_37
|
40
|
-
%t38 =
|
40
|
+
%t38 = length %t35 :: integer
|
41
41
|
%t39 = const 1 :: integer
|
42
42
|
%t43 = const 0 :: integer
|
43
43
|
%t40 = call core.sub(%cells_i_37, %t39) :: integer
|
44
44
|
%t42 = call core.sub(%t38, %t39) :: integer
|
45
45
|
%t44 = call core.clamp(%t40, %t43, %t42) :: integer
|
46
|
-
%t45 =
|
46
|
+
%t45 = gather %t35, %t44 :: integer
|
47
47
|
yield %t45
|
48
48
|
end_loop
|
49
49
|
)
|
50
50
|
(Declaration shift_left_clamp
|
51
51
|
%t46 = load_input "cells" :: array
|
52
52
|
loop cells id=L4 in %t46 as el=%cells_el_47, idx=%cells_i_48
|
53
|
-
%t49 =
|
53
|
+
%t49 = length %t46 :: integer
|
54
54
|
%t50 = const -1 :: integer
|
55
55
|
%t52 = const 1 :: integer
|
56
56
|
%t54 = const 0 :: integer
|
57
57
|
%t51 = call core.sub(%cells_i_48, %t50) :: integer
|
58
58
|
%t53 = call core.sub(%t49, %t52) :: integer
|
59
59
|
%t55 = call core.clamp(%t51, %t54, %t53) :: integer
|
60
|
-
%t56 =
|
60
|
+
%t56 = gather %t46, %t55 :: integer
|
61
61
|
yield %t56
|
62
62
|
end_loop
|
63
63
|
)
|
64
64
|
(Declaration shift_right_wrap
|
65
65
|
%t57 = load_input "cells" :: array
|
66
66
|
loop cells id=L5 in %t57 as el=%cells_el_58, idx=%cells_i_59
|
67
|
-
%t60 =
|
67
|
+
%t60 = length %t57 :: integer
|
68
68
|
%t61 = const 1 :: integer
|
69
69
|
%t62 = call core.sub(%cells_i_59, %t61) :: integer
|
70
70
|
%t63 = call core.mod(%t62, %t60) :: integer
|
71
71
|
%t64 = call core.add(%t63, %t60) :: integer
|
72
72
|
%t65 = call core.mod(%t64, %t60) :: integer
|
73
|
-
%t66 =
|
73
|
+
%t66 = gather %t57, %t65 :: integer
|
74
74
|
yield %t66
|
75
75
|
end_loop
|
76
76
|
)
|
77
77
|
(Declaration shift_left_wrap
|
78
78
|
%t67 = load_input "cells" :: array
|
79
79
|
loop cells id=L6 in %t67 as el=%cells_el_68, idx=%cells_i_69
|
80
|
-
%t70 =
|
80
|
+
%t70 = length %t67 :: integer
|
81
81
|
%t71 = const -1 :: integer
|
82
82
|
%t72 = call core.sub(%cells_i_69, %t71) :: integer
|
83
83
|
%t73 = call core.mod(%t72, %t70) :: integer
|
84
84
|
%t74 = call core.add(%t73, %t70) :: integer
|
85
85
|
%t75 = call core.mod(%t74, %t70) :: integer
|
86
|
-
%t76 =
|
86
|
+
%t76 = gather %t67, %t75 :: integer
|
87
87
|
yield %t76
|
88
88
|
end_loop
|
89
89
|
)
|
@@ -2,7 +2,7 @@
|
|
2
2
|
(Declaration shift_right_zero
|
3
3
|
%t1 = load_input "cells" :: array
|
4
4
|
loop cells id=L1 in %t1 as el=%cells_el_2, idx=%cells_i_3
|
5
|
-
%t4 =
|
5
|
+
%t4 = length %t1 :: integer
|
6
6
|
%t5 = const 1 :: integer
|
7
7
|
%t7 = const 0 :: integer
|
8
8
|
%t6 = call core.sub(%cells_i_3, %t5) :: integer
|
@@ -11,7 +11,7 @@
|
|
11
11
|
%t9 = call core.lt(%t6, %t4) :: boolean
|
12
12
|
%t14 = call core.clamp(%t6, %t7, %t12) :: integer
|
13
13
|
%t10 = call core.and(%t8, %t9) :: boolean
|
14
|
-
%t15 =
|
14
|
+
%t15 = gather %t1, %t14 :: integer
|
15
15
|
%t17 = select %t10, %t15, %t7 :: integer
|
16
16
|
yield %t17
|
17
17
|
end_loop
|
@@ -19,7 +19,7 @@
|
|
19
19
|
(Declaration shift_left_zero
|
20
20
|
%t18 = load_input "cells" :: array
|
21
21
|
loop cells id=L2 in %t18 as el=%cells_el_19, idx=%cells_i_20
|
22
|
-
%t21 =
|
22
|
+
%t21 = length %t18 :: integer
|
23
23
|
%t22 = const -1 :: integer
|
24
24
|
%t24 = const 0 :: integer
|
25
25
|
%t28 = const 1 :: integer
|
@@ -29,7 +29,7 @@
|
|
29
29
|
%t26 = call core.lt(%t23, %t21) :: boolean
|
30
30
|
%t31 = call core.clamp(%t23, %t24, %t29) :: integer
|
31
31
|
%t27 = call core.and(%t25, %t26) :: boolean
|
32
|
-
%t32 =
|
32
|
+
%t32 = gather %t18, %t31 :: integer
|
33
33
|
%t34 = select %t27, %t32, %t24 :: integer
|
34
34
|
yield %t34
|
35
35
|
end_loop
|
@@ -37,53 +37,53 @@
|
|
37
37
|
(Declaration shift_right_clamp
|
38
38
|
%t35 = load_input "cells" :: array
|
39
39
|
loop cells id=L3 in %t35 as el=%cells_el_36, idx=%cells_i_37
|
40
|
-
%t38 =
|
40
|
+
%t38 = length %t35 :: integer
|
41
41
|
%t39 = const 1 :: integer
|
42
42
|
%t43 = const 0 :: integer
|
43
43
|
%t40 = call core.sub(%cells_i_37, %t39) :: integer
|
44
44
|
%t42 = call core.sub(%t38, %t39) :: integer
|
45
45
|
%t44 = call core.clamp(%t40, %t43, %t42) :: integer
|
46
|
-
%t45 =
|
46
|
+
%t45 = gather %t35, %t44 :: integer
|
47
47
|
yield %t45
|
48
48
|
end_loop
|
49
49
|
)
|
50
50
|
(Declaration shift_left_clamp
|
51
51
|
%t46 = load_input "cells" :: array
|
52
52
|
loop cells id=L4 in %t46 as el=%cells_el_47, idx=%cells_i_48
|
53
|
-
%t49 =
|
53
|
+
%t49 = length %t46 :: integer
|
54
54
|
%t50 = const -1 :: integer
|
55
55
|
%t52 = const 1 :: integer
|
56
56
|
%t54 = const 0 :: integer
|
57
57
|
%t51 = call core.sub(%cells_i_48, %t50) :: integer
|
58
58
|
%t53 = call core.sub(%t49, %t52) :: integer
|
59
59
|
%t55 = call core.clamp(%t51, %t54, %t53) :: integer
|
60
|
-
%t56 =
|
60
|
+
%t56 = gather %t46, %t55 :: integer
|
61
61
|
yield %t56
|
62
62
|
end_loop
|
63
63
|
)
|
64
64
|
(Declaration shift_right_wrap
|
65
65
|
%t57 = load_input "cells" :: array
|
66
66
|
loop cells id=L5 in %t57 as el=%cells_el_58, idx=%cells_i_59
|
67
|
-
%t60 =
|
67
|
+
%t60 = length %t57 :: integer
|
68
68
|
%t61 = const 1 :: integer
|
69
69
|
%t62 = call core.sub(%cells_i_59, %t61) :: integer
|
70
70
|
%t63 = call core.mod(%t62, %t60) :: integer
|
71
71
|
%t64 = call core.add(%t63, %t60) :: integer
|
72
72
|
%t65 = call core.mod(%t64, %t60) :: integer
|
73
|
-
%t66 =
|
73
|
+
%t66 = gather %t57, %t65 :: integer
|
74
74
|
yield %t66
|
75
75
|
end_loop
|
76
76
|
)
|
77
77
|
(Declaration shift_left_wrap
|
78
78
|
%t67 = load_input "cells" :: array
|
79
79
|
loop cells id=L6 in %t67 as el=%cells_el_68, idx=%cells_i_69
|
80
|
-
%t70 =
|
80
|
+
%t70 = length %t67 :: integer
|
81
81
|
%t71 = const -1 :: integer
|
82
82
|
%t72 = call core.sub(%cells_i_69, %t71) :: integer
|
83
83
|
%t73 = call core.mod(%t72, %t70) :: integer
|
84
84
|
%t74 = call core.add(%t73, %t70) :: integer
|
85
85
|
%t75 = call core.mod(%t74, %t70) :: integer
|
86
|
-
%t76 =
|
86
|
+
%t76 = gather %t67, %t75 :: integer
|
87
87
|
yield %t76
|
88
88
|
end_loop
|
89
89
|
)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
(LIR
|
2
2
|
(Declaration shift_right_zero
|
3
3
|
%t1 = load_input "cells" :: array
|
4
|
-
%t4 =
|
4
|
+
%t4 = length %t1 :: integer
|
5
5
|
%t5 = const 1 :: integer
|
6
6
|
%t7 = const 0 :: integer
|
7
7
|
%t12 = call core.sub(%t4, %t5) :: integer
|
@@ -11,14 +11,14 @@
|
|
11
11
|
%t9 = call core.lt(%t6, %t4) :: boolean
|
12
12
|
%t14 = call core.clamp(%t6, %t7, %t12) :: integer
|
13
13
|
%t10 = call core.and(%t8, %t9) :: boolean
|
14
|
-
%t15 =
|
14
|
+
%t15 = gather %t1, %t14 :: integer
|
15
15
|
%t17 = select %t10, %t15, %t7 :: integer
|
16
16
|
yield %t17
|
17
17
|
end_loop
|
18
18
|
)
|
19
19
|
(Declaration shift_left_zero
|
20
20
|
%t18 = load_input "cells" :: array
|
21
|
-
%t21 =
|
21
|
+
%t21 = length %t18 :: integer
|
22
22
|
%t22 = const -1 :: integer
|
23
23
|
%t24 = const 0 :: integer
|
24
24
|
%t28 = const 1 :: integer
|
@@ -29,27 +29,27 @@
|
|
29
29
|
%t26 = call core.lt(%t23, %t21) :: boolean
|
30
30
|
%t31 = call core.clamp(%t23, %t24, %t29) :: integer
|
31
31
|
%t27 = call core.and(%t25, %t26) :: boolean
|
32
|
-
%t32 =
|
32
|
+
%t32 = gather %t18, %t31 :: integer
|
33
33
|
%t34 = select %t27, %t32, %t24 :: integer
|
34
34
|
yield %t34
|
35
35
|
end_loop
|
36
36
|
)
|
37
37
|
(Declaration shift_right_clamp
|
38
38
|
%t35 = load_input "cells" :: array
|
39
|
-
%t38 =
|
39
|
+
%t38 = length %t35 :: integer
|
40
40
|
%t39 = const 1 :: integer
|
41
41
|
%t43 = const 0 :: integer
|
42
42
|
%t42 = call core.sub(%t38, %t39) :: integer
|
43
43
|
loop cells id=L3 in %t35 as el=%cells_el_36, idx=%cells_i_37
|
44
44
|
%t40 = call core.sub(%cells_i_37, %t39) :: integer
|
45
45
|
%t44 = call core.clamp(%t40, %t43, %t42) :: integer
|
46
|
-
%t45 =
|
46
|
+
%t45 = gather %t35, %t44 :: integer
|
47
47
|
yield %t45
|
48
48
|
end_loop
|
49
49
|
)
|
50
50
|
(Declaration shift_left_clamp
|
51
51
|
%t46 = load_input "cells" :: array
|
52
|
-
%t49 =
|
52
|
+
%t49 = length %t46 :: integer
|
53
53
|
%t50 = const -1 :: integer
|
54
54
|
%t52 = const 1 :: integer
|
55
55
|
%t54 = const 0 :: integer
|
@@ -57,33 +57,33 @@
|
|
57
57
|
loop cells id=L4 in %t46 as el=%cells_el_47, idx=%cells_i_48
|
58
58
|
%t51 = call core.sub(%cells_i_48, %t50) :: integer
|
59
59
|
%t55 = call core.clamp(%t51, %t54, %t53) :: integer
|
60
|
-
%t56 =
|
60
|
+
%t56 = gather %t46, %t55 :: integer
|
61
61
|
yield %t56
|
62
62
|
end_loop
|
63
63
|
)
|
64
64
|
(Declaration shift_right_wrap
|
65
65
|
%t57 = load_input "cells" :: array
|
66
|
-
%t60 =
|
66
|
+
%t60 = length %t57 :: integer
|
67
67
|
%t61 = const 1 :: integer
|
68
68
|
loop cells id=L5 in %t57 as el=%cells_el_58, idx=%cells_i_59
|
69
69
|
%t62 = call core.sub(%cells_i_59, %t61) :: integer
|
70
70
|
%t63 = call core.mod(%t62, %t60) :: integer
|
71
71
|
%t64 = call core.add(%t63, %t60) :: integer
|
72
72
|
%t65 = call core.mod(%t64, %t60) :: integer
|
73
|
-
%t66 =
|
73
|
+
%t66 = gather %t57, %t65 :: integer
|
74
74
|
yield %t66
|
75
75
|
end_loop
|
76
76
|
)
|
77
77
|
(Declaration shift_left_wrap
|
78
78
|
%t67 = load_input "cells" :: array
|
79
|
-
%t70 =
|
79
|
+
%t70 = length %t67 :: integer
|
80
80
|
%t71 = const -1 :: integer
|
81
81
|
loop cells id=L6 in %t67 as el=%cells_el_68, idx=%cells_i_69
|
82
82
|
%t72 = call core.sub(%cells_i_69, %t71) :: integer
|
83
83
|
%t73 = call core.mod(%t72, %t70) :: integer
|
84
84
|
%t74 = call core.add(%t73, %t70) :: integer
|
85
85
|
%t75 = call core.mod(%t74, %t70) :: integer
|
86
|
-
%t76 =
|
86
|
+
%t76 = gather %t67, %t75 :: integer
|
87
87
|
yield %t76
|
88
88
|
end_loop
|
89
89
|
)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
(LIR
|
2
2
|
(Declaration shift_right_zero
|
3
3
|
%t1 = load_input "cells" :: array
|
4
|
-
%t4 =
|
4
|
+
%t4 = length %t1 :: integer
|
5
5
|
%t5 = const 1 :: integer
|
6
6
|
%t7 = const 0 :: integer
|
7
7
|
%t12 = call core.sub(%t4, %t5) :: integer
|
@@ -11,14 +11,14 @@
|
|
11
11
|
%t9 = call core.lt(%t6, %t4) :: boolean
|
12
12
|
%t14 = call core.clamp(%t6, %t7, %t12) :: integer
|
13
13
|
%t10 = call core.and(%t8, %t9) :: boolean
|
14
|
-
%t15 =
|
14
|
+
%t15 = gather %t1, %t14 :: integer
|
15
15
|
%t17 = select %t10, %t15, %t7 :: integer
|
16
16
|
yield %t17
|
17
17
|
end_loop
|
18
18
|
)
|
19
19
|
(Declaration shift_left_zero
|
20
20
|
%t18 = load_input "cells" :: array
|
21
|
-
%t21 =
|
21
|
+
%t21 = length %t18 :: integer
|
22
22
|
%t22 = const -1 :: integer
|
23
23
|
%t24 = const 0 :: integer
|
24
24
|
%t28 = const 1 :: integer
|
@@ -29,27 +29,27 @@
|
|
29
29
|
%t26 = call core.lt(%t23, %t21) :: boolean
|
30
30
|
%t31 = call core.clamp(%t23, %t24, %t29) :: integer
|
31
31
|
%t27 = call core.and(%t25, %t26) :: boolean
|
32
|
-
%t32 =
|
32
|
+
%t32 = gather %t18, %t31 :: integer
|
33
33
|
%t34 = select %t27, %t32, %t24 :: integer
|
34
34
|
yield %t34
|
35
35
|
end_loop
|
36
36
|
)
|
37
37
|
(Declaration shift_right_clamp
|
38
38
|
%t35 = load_input "cells" :: array
|
39
|
-
%t38 =
|
39
|
+
%t38 = length %t35 :: integer
|
40
40
|
%t39 = const 1 :: integer
|
41
41
|
%t43 = const 0 :: integer
|
42
42
|
%t42 = call core.sub(%t38, %t39) :: integer
|
43
43
|
loop cells id=L3 in %t35 as el=%cells_el_36, idx=%cells_i_37
|
44
44
|
%t40 = call core.sub(%cells_i_37, %t39) :: integer
|
45
45
|
%t44 = call core.clamp(%t40, %t43, %t42) :: integer
|
46
|
-
%t45 =
|
46
|
+
%t45 = gather %t35, %t44 :: integer
|
47
47
|
yield %t45
|
48
48
|
end_loop
|
49
49
|
)
|
50
50
|
(Declaration shift_left_clamp
|
51
51
|
%t46 = load_input "cells" :: array
|
52
|
-
%t49 =
|
52
|
+
%t49 = length %t46 :: integer
|
53
53
|
%t50 = const -1 :: integer
|
54
54
|
%t52 = const 1 :: integer
|
55
55
|
%t54 = const 0 :: integer
|
@@ -57,33 +57,33 @@
|
|
57
57
|
loop cells id=L4 in %t46 as el=%cells_el_47, idx=%cells_i_48
|
58
58
|
%t51 = call core.sub(%cells_i_48, %t50) :: integer
|
59
59
|
%t55 = call core.clamp(%t51, %t54, %t53) :: integer
|
60
|
-
%t56 =
|
60
|
+
%t56 = gather %t46, %t55 :: integer
|
61
61
|
yield %t56
|
62
62
|
end_loop
|
63
63
|
)
|
64
64
|
(Declaration shift_right_wrap
|
65
65
|
%t57 = load_input "cells" :: array
|
66
|
-
%t60 =
|
66
|
+
%t60 = length %t57 :: integer
|
67
67
|
%t61 = const 1 :: integer
|
68
68
|
loop cells id=L5 in %t57 as el=%cells_el_58, idx=%cells_i_59
|
69
69
|
%t62 = call core.sub(%cells_i_59, %t61) :: integer
|
70
70
|
%t63 = call core.mod(%t62, %t60) :: integer
|
71
71
|
%t64 = call core.add(%t63, %t60) :: integer
|
72
72
|
%t65 = call core.mod(%t64, %t60) :: integer
|
73
|
-
%t66 =
|
73
|
+
%t66 = gather %t57, %t65 :: integer
|
74
74
|
yield %t66
|
75
75
|
end_loop
|
76
76
|
)
|
77
77
|
(Declaration shift_left_wrap
|
78
78
|
%t67 = load_input "cells" :: array
|
79
|
-
%t70 =
|
79
|
+
%t70 = length %t67 :: integer
|
80
80
|
%t71 = const -1 :: integer
|
81
81
|
loop cells id=L6 in %t67 as el=%cells_el_68, idx=%cells_i_69
|
82
82
|
%t72 = call core.sub(%cells_i_69, %t71) :: integer
|
83
83
|
%t73 = call core.mod(%t72, %t70) :: integer
|
84
84
|
%t74 = call core.add(%t73, %t70) :: integer
|
85
85
|
%t75 = call core.mod(%t74, %t70) :: integer
|
86
|
-
%t76 =
|
86
|
+
%t76 = gather %t67, %t75 :: integer
|
87
87
|
yield %t76
|
88
88
|
end_loop
|
89
89
|
)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# Autogenerated by Kumi Codegen
|
2
|
-
module Kumi::Compiled::
|
2
|
+
module Kumi::Compiled::KUMI_412a073d6331291d712e4dc48c7415df553463848fb1f202ec080398449b0d6a
|
3
3
|
def self.from(input_data = nil)
|
4
4
|
instance = Object.new
|
5
5
|
instance.extend(self)
|