kumi 0.0.30 → 0.0.33
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 +21 -1
- data/README.md +31 -99
- data/data/kernels/ruby/core/arithmetic.yaml +2 -2
- data/docs/COMPOSED_SCHEMAS.md +137 -0
- data/docs/SCHEMA_IMPORTS.md +275 -0
- data/docs/SYNTAX.md +48 -0
- data/golden/array_element/expected/schema_ruby.rb +2 -27
- data/golden/array_index/expected/nast.txt +6 -6
- data/golden/array_index/expected/schema_ruby.rb +4 -31
- data/golden/array_operations/expected/lir_06_const_prop.txt +4 -8
- data/golden/array_operations/expected/schema_javascript.mjs +4 -8
- data/golden/array_operations/expected/schema_ruby.rb +10 -43
- data/golden/cascade_logic/expected/lir_06_const_prop.txt +7 -14
- data/golden/cascade_logic/expected/schema_javascript.mjs +7 -14
- data/golden/cascade_logic/expected/schema_ruby.rb +11 -45
- data/golden/chained_fusion/expected/lir_06_const_prop.txt +8 -18
- data/golden/chained_fusion/expected/schema_javascript.mjs +8 -18
- data/golden/chained_fusion/expected/schema_ruby.rb +14 -53
- data/golden/decimal_explicit/expected/schema_ruby.rb +4 -31
- data/golden/element_arrays/expected/lir_06_const_prop.txt +5 -11
- data/golden/element_arrays/expected/schema_javascript.mjs +5 -11
- data/golden/element_arrays/expected/schema_ruby.rb +13 -50
- data/golden/empty_and_null_inputs/expected/schema_ruby.rb +4 -31
- data/golden/example_xpto/expected/ast.txt +23 -0
- data/golden/example_xpto/expected/input_plan.txt +1 -0
- data/golden/example_xpto/expected/lir_00_unoptimized.txt +16 -0
- data/golden/example_xpto/expected/lir_01_hoist_scalar_references.txt +16 -0
- data/golden/example_xpto/expected/lir_02_inlined.txt +16 -0
- data/golden/example_xpto/expected/lir_03_cse.txt +16 -0
- data/golden/example_xpto/expected/lir_04_1_loop_fusion.txt +16 -0
- data/golden/example_xpto/expected/lir_04_loop_invcm.txt +16 -0
- data/golden/example_xpto/expected/lir_06_const_prop.txt +13 -0
- data/golden/example_xpto/expected/nast.txt +17 -0
- data/golden/example_xpto/expected/schema_javascript.mjs +13 -0
- data/golden/example_xpto/expected/schema_ruby.rb +13 -0
- data/golden/example_xpto/expected/snast.txt +17 -0
- data/golden/example_xpto/expected.json +4 -0
- data/golden/example_xpto/input.json +3 -0
- data/golden/example_xpto/schema.kumi +8 -0
- data/golden/function_overload/expected/schema_ruby.rb +2 -27
- data/golden/game_of_life/expected/lir_06_const_prop.txt +236 -287
- data/golden/game_of_life/expected/schema_javascript.mjs +32 -39
- data/golden/game_of_life/expected/schema_ruby.rb +34 -66
- data/golden/hash_keys/expected/lir_06_const_prop.txt +4 -10
- data/golden/hash_keys/expected/schema_javascript.mjs +6 -12
- data/golden/hash_keys/expected/schema_ruby.rb +8 -39
- data/golden/hash_value/expected/lir_06_const_prop.txt +3 -6
- data/golden/hash_value/expected/schema_javascript.mjs +3 -6
- data/golden/hash_value/expected/schema_ruby.rb +7 -37
- data/golden/hierarchical_complex/expected/lir_06_const_prop.txt +9 -18
- data/golden/hierarchical_complex/expected/schema_javascript.mjs +9 -18
- data/golden/hierarchical_complex/expected/schema_ruby.rb +14 -51
- data/golden/inline_rename_scope_leak/expected/lir_06_const_prop.txt +2 -6
- data/golden/inline_rename_scope_leak/expected/schema_javascript.mjs +2 -6
- data/golden/inline_rename_scope_leak/expected/schema_ruby.rb +7 -39
- data/golden/input_reference/expected/schema_ruby.rb +6 -35
- data/golden/interleaved_fusion/expected/lir_06_const_prop.txt +6 -14
- data/golden/interleaved_fusion/expected/schema_javascript.mjs +6 -14
- data/golden/interleaved_fusion/expected/schema_ruby.rb +11 -47
- data/golden/let_inline/expected/lir_06_const_prop.txt +1 -2
- data/golden/let_inline/expected/schema_javascript.mjs +1 -2
- data/golden/let_inline/expected/schema_ruby.rb +3 -29
- data/golden/loop_fusion/expected/lir_06_const_prop.txt +4 -10
- data/golden/loop_fusion/expected/schema_javascript.mjs +4 -10
- data/golden/loop_fusion/expected/schema_ruby.rb +8 -41
- data/golden/min_reduce_scope/expected/lir_06_const_prop.txt +3 -6
- data/golden/min_reduce_scope/expected/schema_javascript.mjs +3 -6
- data/golden/min_reduce_scope/expected/schema_ruby.rb +8 -39
- data/golden/mixed_dimensions/expected/lir_06_const_prop.txt +1 -2
- data/golden/mixed_dimensions/expected/schema_javascript.mjs +1 -2
- data/golden/mixed_dimensions/expected/schema_ruby.rb +5 -33
- data/golden/multirank_hoisting/expected/lir_06_const_prop.txt +9 -18
- data/golden/multirank_hoisting/expected/schema_javascript.mjs +9 -18
- data/golden/multirank_hoisting/expected/schema_ruby.rb +16 -55
- data/golden/nested_hash/expected/lir_06_const_prop.txt +1 -2
- data/golden/nested_hash/expected/schema_javascript.mjs +1 -2
- data/golden/nested_hash/expected/schema_ruby.rb +3 -29
- data/golden/reduction_broadcast/expected/schema_ruby.rb +5 -33
- data/golden/roll/expected/lir_06_const_prop.txt +8 -15
- data/golden/roll/expected/schema_javascript.mjs +8 -15
- data/golden/roll/expected/schema_ruby.rb +13 -48
- data/golden/schema_imports_broadcasting_with_imports/expected/ast.txt +26 -0
- data/golden/schema_imports_broadcasting_with_imports/expected/input_plan.txt +5 -0
- data/golden/schema_imports_broadcasting_with_imports/expected/lir_00_unoptimized.txt +20 -0
- data/golden/schema_imports_broadcasting_with_imports/expected/lir_01_hoist_scalar_references.txt +20 -0
- data/golden/schema_imports_broadcasting_with_imports/expected/lir_02_inlined.txt +22 -0
- data/golden/schema_imports_broadcasting_with_imports/expected/lir_03_cse.txt +21 -0
- data/golden/schema_imports_broadcasting_with_imports/expected/lir_04_1_loop_fusion.txt +21 -0
- data/golden/schema_imports_broadcasting_with_imports/expected/lir_04_loop_invcm.txt +21 -0
- data/golden/schema_imports_broadcasting_with_imports/expected/lir_06_const_prop.txt +21 -0
- data/golden/schema_imports_broadcasting_with_imports/expected/nast.txt +12 -0
- data/golden/schema_imports_broadcasting_with_imports/expected/schema_javascript.mjs +22 -0
- data/golden/schema_imports_broadcasting_with_imports/expected/schema_ruby.rb +24 -0
- data/golden/schema_imports_broadcasting_with_imports/expected/snast.txt +12 -0
- data/golden/schema_imports_broadcasting_with_imports/expected.json +4 -0
- data/golden/schema_imports_broadcasting_with_imports/input.json +7 -0
- data/golden/schema_imports_broadcasting_with_imports/schema.kumi +14 -0
- data/golden/schema_imports_complex_order_calc/expected/ast.txt +82 -0
- data/golden/schema_imports_complex_order_calc/expected/input_plan.txt +16 -0
- data/golden/schema_imports_complex_order_calc/expected/lir_00_unoptimized.txt +94 -0
- data/golden/schema_imports_complex_order_calc/expected/lir_01_hoist_scalar_references.txt +94 -0
- data/golden/schema_imports_complex_order_calc/expected/lir_02_inlined.txt +187 -0
- data/golden/schema_imports_complex_order_calc/expected/lir_03_cse.txt +131 -0
- data/golden/schema_imports_complex_order_calc/expected/lir_04_1_loop_fusion.txt +131 -0
- data/golden/schema_imports_complex_order_calc/expected/lir_04_loop_invcm.txt +131 -0
- data/golden/schema_imports_complex_order_calc/expected/lir_06_const_prop.txt +131 -0
- data/golden/schema_imports_complex_order_calc/expected/nast.txt +56 -0
- data/golden/schema_imports_complex_order_calc/expected/schema_javascript.mjs +147 -0
- data/golden/schema_imports_complex_order_calc/expected/schema_ruby.rb +149 -0
- data/golden/schema_imports_complex_order_calc/expected/snast.txt +56 -0
- data/golden/schema_imports_complex_order_calc/expected.json +12 -0
- data/golden/schema_imports_complex_order_calc/input.json +20 -0
- data/golden/schema_imports_complex_order_calc/schema.kumi +33 -0
- data/golden/schema_imports_composed_order/expected/ast.txt +33 -0
- data/golden/schema_imports_composed_order/expected/input_plan.txt +3 -0
- data/golden/schema_imports_composed_order/expected/lir_00_unoptimized.txt +25 -0
- data/golden/schema_imports_composed_order/expected/lir_01_hoist_scalar_references.txt +25 -0
- data/golden/schema_imports_composed_order/expected/lir_02_inlined.txt +33 -0
- data/golden/schema_imports_composed_order/expected/lir_03_cse.txt +33 -0
- data/golden/schema_imports_composed_order/expected/lir_04_1_loop_fusion.txt +33 -0
- data/golden/schema_imports_composed_order/expected/lir_04_loop_invcm.txt +33 -0
- data/golden/schema_imports_composed_order/expected/lir_06_const_prop.txt +33 -0
- data/golden/schema_imports_composed_order/expected/nast.txt +25 -0
- data/golden/schema_imports_composed_order/expected/schema_javascript.mjs +35 -0
- data/golden/schema_imports_composed_order/expected/schema_ruby.rb +33 -0
- data/golden/schema_imports_composed_order/expected/snast.txt +25 -0
- data/golden/schema_imports_composed_order/expected.json +6 -0
- data/golden/schema_imports_composed_order/input.json +5 -0
- data/golden/schema_imports_composed_order/schema.kumi +15 -0
- data/golden/schema_imports_discount_with_tax/expected/ast.txt +37 -0
- data/golden/schema_imports_discount_with_tax/expected/input_plan.txt +2 -0
- data/golden/schema_imports_discount_with_tax/expected/lir_00_unoptimized.txt +30 -0
- data/golden/schema_imports_discount_with_tax/expected/lir_01_hoist_scalar_references.txt +30 -0
- data/golden/schema_imports_discount_with_tax/expected/lir_02_inlined.txt +37 -0
- data/golden/schema_imports_discount_with_tax/expected/lir_03_cse.txt +34 -0
- data/golden/schema_imports_discount_with_tax/expected/lir_04_1_loop_fusion.txt +34 -0
- data/golden/schema_imports_discount_with_tax/expected/lir_04_loop_invcm.txt +34 -0
- data/golden/schema_imports_discount_with_tax/expected/lir_06_const_prop.txt +34 -0
- data/golden/schema_imports_discount_with_tax/expected/nast.txt +30 -0
- data/golden/schema_imports_discount_with_tax/expected/schema_javascript.mjs +37 -0
- data/golden/schema_imports_discount_with_tax/expected/schema_ruby.rb +34 -0
- data/golden/schema_imports_discount_with_tax/expected/snast.txt +30 -0
- data/golden/schema_imports_discount_with_tax/expected.json +7 -0
- data/golden/schema_imports_discount_with_tax/input.json +4 -0
- data/golden/schema_imports_discount_with_tax/schema.kumi +15 -0
- data/golden/schema_imports_line_items/expected/ast.txt +35 -0
- data/golden/schema_imports_line_items/expected/input_plan.txt +8 -0
- data/golden/schema_imports_line_items/expected/lir_00_unoptimized.txt +19 -0
- data/golden/schema_imports_line_items/expected/lir_01_hoist_scalar_references.txt +19 -0
- data/golden/schema_imports_line_items/expected/lir_02_inlined.txt +24 -0
- data/golden/schema_imports_line_items/expected/lir_03_cse.txt +22 -0
- data/golden/schema_imports_line_items/expected/lir_04_1_loop_fusion.txt +22 -0
- data/golden/schema_imports_line_items/expected/lir_04_loop_invcm.txt +22 -0
- data/golden/schema_imports_line_items/expected/lir_06_const_prop.txt +22 -0
- data/golden/schema_imports_line_items/expected/nast.txt +19 -0
- data/golden/schema_imports_line_items/expected/schema_javascript.mjs +23 -0
- data/golden/schema_imports_line_items/expected/schema_ruby.rb +22 -0
- data/golden/schema_imports_line_items/expected/snast.txt +19 -0
- data/golden/schema_imports_line_items/expected.json +5 -0
- data/golden/schema_imports_line_items/input.json +13 -0
- data/golden/schema_imports_line_items/schema.kumi +17 -0
- data/golden/schema_imports_multiple/expected/ast.txt +35 -0
- data/golden/schema_imports_multiple/expected/input_plan.txt +2 -0
- data/golden/schema_imports_multiple/expected/lir_00_unoptimized.txt +29 -0
- data/golden/schema_imports_multiple/expected/lir_01_hoist_scalar_references.txt +29 -0
- data/golden/schema_imports_multiple/expected/lir_02_inlined.txt +41 -0
- data/golden/schema_imports_multiple/expected/lir_03_cse.txt +37 -0
- data/golden/schema_imports_multiple/expected/lir_04_1_loop_fusion.txt +37 -0
- data/golden/schema_imports_multiple/expected/lir_04_loop_invcm.txt +37 -0
- data/golden/schema_imports_multiple/expected/lir_06_const_prop.txt +37 -0
- data/golden/schema_imports_multiple/expected/nast.txt +28 -0
- data/golden/schema_imports_multiple/expected/schema_javascript.mjs +40 -0
- data/golden/schema_imports_multiple/expected/schema_ruby.rb +37 -0
- data/golden/schema_imports_multiple/expected/snast.txt +28 -0
- data/golden/schema_imports_multiple/expected.json +7 -0
- data/golden/schema_imports_multiple/input.json +4 -0
- data/golden/schema_imports_multiple/schema.kumi +15 -0
- data/golden/schema_imports_nested_expressions/expected/ast.txt +31 -0
- data/golden/schema_imports_nested_expressions/expected/input_plan.txt +3 -0
- data/golden/schema_imports_nested_expressions/expected/lir_00_unoptimized.txt +22 -0
- data/golden/schema_imports_nested_expressions/expected/lir_01_hoist_scalar_references.txt +22 -0
- data/golden/schema_imports_nested_expressions/expected/lir_02_inlined.txt +32 -0
- data/golden/schema_imports_nested_expressions/expected/lir_03_cse.txt +32 -0
- data/golden/schema_imports_nested_expressions/expected/lir_04_1_loop_fusion.txt +32 -0
- data/golden/schema_imports_nested_expressions/expected/lir_04_loop_invcm.txt +32 -0
- data/golden/schema_imports_nested_expressions/expected/lir_06_const_prop.txt +28 -0
- data/golden/schema_imports_nested_expressions/expected/nast.txt +23 -0
- data/golden/schema_imports_nested_expressions/expected/schema_javascript.mjs +29 -0
- data/golden/schema_imports_nested_expressions/expected/schema_ruby.rb +28 -0
- data/golden/schema_imports_nested_expressions/expected/snast.txt +23 -0
- data/golden/schema_imports_nested_expressions/expected.json +5 -0
- data/golden/schema_imports_nested_expressions/input.json +5 -0
- data/golden/schema_imports_nested_expressions/schema.kumi +13 -0
- data/golden/schema_imports_nested_with_reductions/expected/ast.txt +47 -0
- data/golden/schema_imports_nested_with_reductions/expected/input_plan.txt +12 -0
- data/golden/schema_imports_nested_with_reductions/expected/lir_00_unoptimized.txt +31 -0
- data/golden/schema_imports_nested_with_reductions/expected/lir_01_hoist_scalar_references.txt +31 -0
- data/golden/schema_imports_nested_with_reductions/expected/lir_02_inlined.txt +58 -0
- data/golden/schema_imports_nested_with_reductions/expected/lir_03_cse.txt +49 -0
- data/golden/schema_imports_nested_with_reductions/expected/lir_04_1_loop_fusion.txt +51 -0
- data/golden/schema_imports_nested_with_reductions/expected/lir_04_loop_invcm.txt +49 -0
- data/golden/schema_imports_nested_with_reductions/expected/lir_06_const_prop.txt +49 -0
- data/golden/schema_imports_nested_with_reductions/expected/nast.txt +23 -0
- data/golden/schema_imports_nested_with_reductions/expected/schema_javascript.mjs +49 -0
- data/golden/schema_imports_nested_with_reductions/expected/schema_ruby.rb +52 -0
- data/golden/schema_imports_nested_with_reductions/expected/snast.txt +23 -0
- data/golden/schema_imports_nested_with_reductions/expected.json +6 -0
- data/golden/schema_imports_nested_with_reductions/input.json +16 -0
- data/golden/schema_imports_nested_with_reductions/schema.kumi +23 -0
- data/golden/schema_imports_with_imports/expected/ast.txt +19 -0
- data/golden/schema_imports_with_imports/expected/input_plan.txt +1 -0
- data/golden/schema_imports_with_imports/expected/lir_00_unoptimized.txt +13 -0
- data/golden/schema_imports_with_imports/expected/lir_01_hoist_scalar_references.txt +13 -0
- data/golden/schema_imports_with_imports/expected/lir_02_inlined.txt +14 -0
- data/golden/schema_imports_with_imports/expected/lir_03_cse.txt +13 -0
- data/golden/schema_imports_with_imports/expected/lir_04_1_loop_fusion.txt +13 -0
- data/golden/schema_imports_with_imports/expected/lir_04_loop_invcm.txt +13 -0
- data/golden/schema_imports_with_imports/expected/lir_06_const_prop.txt +13 -0
- data/golden/schema_imports_with_imports/expected/nast.txt +13 -0
- data/golden/schema_imports_with_imports/expected/schema_javascript.mjs +13 -0
- data/golden/schema_imports_with_imports/expected/schema_ruby.rb +13 -0
- data/golden/schema_imports_with_imports/expected/snast.txt +13 -0
- data/golden/schema_imports_with_imports/expected.json +4 -0
- data/golden/schema_imports_with_imports/input.json +3 -0
- data/golden/schema_imports_with_imports/schema.kumi +10 -0
- data/golden/shift/expected/lir_06_const_prop.txt +18 -30
- data/golden/shift/expected/schema_javascript.mjs +18 -30
- data/golden/shift/expected/schema_ruby.rb +25 -67
- data/golden/shift_2d/expected/lir_06_const_prop.txt +36 -60
- data/golden/shift_2d/expected/schema_javascript.mjs +36 -60
- data/golden/shift_2d/expected/schema_ruby.rb +49 -109
- data/golden/simple_math/expected/lir_06_const_prop.txt +3 -6
- data/golden/simple_math/expected/schema_javascript.mjs +3 -6
- data/golden/simple_math/expected/schema_ruby.rb +8 -39
- data/golden/streaming_basics/expected/lir_06_const_prop.txt +6 -12
- data/golden/streaming_basics/expected/schema_javascript.mjs +6 -12
- data/golden/streaming_basics/expected/schema_ruby.rb +14 -51
- data/golden/tuples/expected/lir_06_const_prop.txt +5 -22
- data/golden/tuples/expected/schema_javascript.mjs +5 -22
- data/golden/tuples/expected/schema_ruby.rb +11 -57
- data/golden/tuples_and_arrays/expected/lir_06_const_prop.txt +4 -8
- data/golden/tuples_and_arrays/expected/schema_javascript.mjs +4 -8
- data/golden/tuples_and_arrays/expected/schema_ruby.rb +9 -41
- data/golden/us_tax_2024/expected/lir_06_const_prop.txt +94 -171
- data/golden/us_tax_2024/expected/schema_javascript.mjs +13 -21
- data/golden/us_tax_2024/expected/schema_ruby.rb +15 -48
- data/golden/with_constants/expected/lir_06_const_prop.txt +3 -8
- data/golden/with_constants/expected/schema_javascript.mjs +3 -8
- data/golden/with_constants/expected/schema_ruby.rb +5 -35
- data/lib/kumi/analyzer.rb +8 -7
- data/lib/kumi/configuration.rb +7 -6
- data/lib/kumi/core/analyzer/passes/attach_anchors_pass.rb +1 -1
- data/lib/kumi/core/analyzer/passes/attach_terminal_info_pass.rb +1 -1
- data/lib/kumi/core/analyzer/passes/codegen/js/declaration_emitter.rb +20 -0
- data/lib/kumi/core/analyzer/passes/codegen/ruby/declaration_emitter.rb +16 -7
- data/lib/kumi/core/analyzer/passes/codegen/ruby/output_buffer.rb +3 -35
- data/lib/kumi/core/analyzer/passes/dependency_resolver.rb +6 -0
- data/lib/kumi/core/analyzer/passes/import_analysis_pass.rb +90 -0
- data/lib/kumi/core/analyzer/passes/lir/constant_propagation_pass.rb +77 -36
- data/lib/kumi/core/analyzer/passes/lir/lower_pass.rb +26 -11
- data/lib/kumi/core/analyzer/passes/name_indexer.rb +20 -2
- data/lib/kumi/core/analyzer/passes/nast_dimensional_analyzer_pass.rb +44 -0
- data/lib/kumi/core/analyzer/passes/normalize_to_nast_pass.rb +30 -0
- data/lib/kumi/core/analyzer/passes/semantic_constraint_validator.rb +5 -1
- data/lib/kumi/core/analyzer/passes/snast_pass.rb +15 -0
- data/lib/kumi/core/lir/build.rb +27 -0
- data/lib/kumi/core/lir/peephole.rb +164 -0
- data/lib/kumi/core/nast.rb +16 -0
- data/lib/kumi/core/ruby_parser/build_context.rb +3 -1
- data/lib/kumi/core/ruby_parser/parser.rb +1 -1
- data/lib/kumi/core/ruby_parser/schema_builder.rb +33 -3
- data/lib/kumi/dev/golden/result.rb +9 -3
- data/lib/kumi/dev/golden/runtime_test.rb +16 -1
- data/lib/kumi/dev/golden.rb +18 -20
- data/lib/kumi/dev/golden_schema_modules.rb +8 -0
- data/lib/kumi/dev/golden_schema_wrapper.rb +116 -0
- data/lib/kumi/dev/support/kumi_runner.mjs +18 -0
- data/lib/kumi/schema.rb +44 -2
- data/lib/kumi/support/lir_printer.rb +21 -5
- data/lib/kumi/support/nast_printer.rb +11 -0
- data/lib/kumi/support/s_expression_printer.rb +9 -0
- data/lib/kumi/support/snast_printer.rb +6 -0
- data/lib/kumi/syntax/import_call.rb +11 -0
- data/lib/kumi/syntax/import_declaration.rb +11 -0
- data/lib/kumi/syntax/root.rb +2 -2
- data/lib/kumi/test_shared_schemas/compound.rb +21 -0
- data/lib/kumi/test_shared_schemas/discount.rb +19 -0
- data/lib/kumi/test_shared_schemas/price.rb +19 -0
- data/lib/kumi/test_shared_schemas/subtotal.rb +22 -0
- data/lib/kumi/test_shared_schemas/tax.rb +18 -0
- data/lib/kumi/version.rb +1 -1
- data/lib/kumi.rb +19 -4
- metadata +176 -3
|
@@ -10,15 +10,12 @@
|
|
|
10
10
|
(Declaration n
|
|
11
11
|
%t6 = load_input "rows" :: array
|
|
12
12
|
%t11 = length %t6 :: integer
|
|
13
|
-
%
|
|
14
|
-
%t14 = const 0 :: integer
|
|
15
|
-
%t18 = const 1 :: integer
|
|
16
|
-
%t19 = call core.sub(%t11, %t18) :: integer
|
|
13
|
+
%t19 = call core.sub(%t11, 1) :: integer
|
|
17
14
|
loop rows id=L3 in %t6 as el=%rows_el_7, idx=%rows_i_8
|
|
18
|
-
%t13 = call core.sub(%rows_i_8,
|
|
19
|
-
%t15 = call core.gte(%t13,
|
|
15
|
+
%t13 = call core.sub(%rows_i_8, -1) :: integer
|
|
16
|
+
%t15 = call core.gte(%t13, 0) :: boolean
|
|
20
17
|
%t16 = call core.lt(%t13, %t11) :: boolean
|
|
21
|
-
%t21 = call core.clamp(%t13,
|
|
18
|
+
%t21 = call core.clamp(%t13, 0, %t19) :: integer
|
|
22
19
|
%t17 = call core.and(%t15, %t16) :: boolean
|
|
23
20
|
%t22 = gather %t6, %t21 :: any
|
|
24
21
|
%t23 = length %t22 :: integer
|
|
@@ -27,7 +24,7 @@
|
|
|
27
24
|
%t25 = call core.add(%t24, %t23) :: integer
|
|
28
25
|
%t26 = call core.mod(%t25, %t23) :: integer
|
|
29
26
|
%t27 = gather %t22, %t26 :: integer
|
|
30
|
-
%t29 = select %t17, %t27,
|
|
27
|
+
%t29 = select %t17, %t27, 0 :: integer
|
|
31
28
|
yield %t29
|
|
32
29
|
end_loop
|
|
33
30
|
end_loop
|
|
@@ -35,14 +32,12 @@
|
|
|
35
32
|
(Declaration s
|
|
36
33
|
%t30 = load_input "rows" :: array
|
|
37
34
|
%t35 = length %t30 :: integer
|
|
38
|
-
%
|
|
39
|
-
%t38 = const 0 :: integer
|
|
40
|
-
%t43 = call core.sub(%t35, %t36) :: integer
|
|
35
|
+
%t43 = call core.sub(%t35, 1) :: integer
|
|
41
36
|
loop rows id=L5 in %t30 as el=%rows_el_31, idx=%rows_i_32
|
|
42
|
-
%t37 = call core.sub(%rows_i_32,
|
|
43
|
-
%t39 = call core.gte(%t37,
|
|
37
|
+
%t37 = call core.sub(%rows_i_32, 1) :: integer
|
|
38
|
+
%t39 = call core.gte(%t37, 0) :: boolean
|
|
44
39
|
%t40 = call core.lt(%t37, %t35) :: boolean
|
|
45
|
-
%t45 = call core.clamp(%t37,
|
|
40
|
+
%t45 = call core.clamp(%t37, 0, %t43) :: integer
|
|
46
41
|
%t41 = call core.and(%t39, %t40) :: boolean
|
|
47
42
|
%t46 = gather %t30, %t45 :: any
|
|
48
43
|
%t47 = length %t46 :: integer
|
|
@@ -51,7 +46,7 @@
|
|
|
51
46
|
%t49 = call core.add(%t48, %t47) :: integer
|
|
52
47
|
%t50 = call core.mod(%t49, %t47) :: integer
|
|
53
48
|
%t51 = gather %t46, %t50 :: integer
|
|
54
|
-
%t53 = select %t41, %t51,
|
|
49
|
+
%t53 = select %t41, %t51, 0 :: integer
|
|
55
50
|
yield %t53
|
|
56
51
|
end_loop
|
|
57
52
|
end_loop
|
|
@@ -59,24 +54,21 @@
|
|
|
59
54
|
(Declaration w
|
|
60
55
|
%t54 = load_input "rows" :: array
|
|
61
56
|
%t59 = length %t54 :: integer
|
|
62
|
-
%t65 = const -1 :: integer
|
|
63
|
-
%t67 = const 0 :: integer
|
|
64
|
-
%t71 = const 1 :: integer
|
|
65
57
|
loop rows id=L7 in %t54 as el=%rows_el_55, idx=%rows_i_56
|
|
66
58
|
%t60 = call core.mod(%rows_i_56, %t59) :: integer
|
|
67
59
|
%t61 = call core.add(%t60, %t59) :: integer
|
|
68
60
|
%t62 = call core.mod(%t61, %t59) :: integer
|
|
69
61
|
%t63 = gather %t54, %t62 :: any
|
|
70
62
|
%t64 = length %t63 :: integer
|
|
71
|
-
%t72 = call core.sub(%t64,
|
|
63
|
+
%t72 = call core.sub(%t64, 1) :: integer
|
|
72
64
|
loop col id=L8 in %rows_el_55 as el=%col_el_57, idx=%col_i_58
|
|
73
|
-
%t66 = call core.sub(%col_i_58,
|
|
74
|
-
%t68 = call core.gte(%t66,
|
|
65
|
+
%t66 = call core.sub(%col_i_58, -1) :: integer
|
|
66
|
+
%t68 = call core.gte(%t66, 0) :: boolean
|
|
75
67
|
%t69 = call core.lt(%t66, %t64) :: boolean
|
|
76
68
|
%t70 = call core.and(%t68, %t69) :: boolean
|
|
77
|
-
%t74 = call core.clamp(%t66,
|
|
69
|
+
%t74 = call core.clamp(%t66, 0, %t72) :: integer
|
|
78
70
|
%t75 = gather %t63, %t74 :: integer
|
|
79
|
-
%t77 = select %t70, %t75,
|
|
71
|
+
%t77 = select %t70, %t75, 0 :: integer
|
|
80
72
|
yield %t77
|
|
81
73
|
end_loop
|
|
82
74
|
end_loop
|
|
@@ -84,23 +76,21 @@
|
|
|
84
76
|
(Declaration e
|
|
85
77
|
%t78 = load_input "rows" :: array
|
|
86
78
|
%t83 = length %t78 :: integer
|
|
87
|
-
%t89 = const 1 :: integer
|
|
88
|
-
%t91 = const 0 :: integer
|
|
89
79
|
loop rows id=L9 in %t78 as el=%rows_el_79, idx=%rows_i_80
|
|
90
80
|
%t84 = call core.mod(%rows_i_80, %t83) :: integer
|
|
91
81
|
%t85 = call core.add(%t84, %t83) :: integer
|
|
92
82
|
%t86 = call core.mod(%t85, %t83) :: integer
|
|
93
83
|
%t87 = gather %t78, %t86 :: any
|
|
94
84
|
%t88 = length %t87 :: integer
|
|
95
|
-
%t96 = call core.sub(%t88,
|
|
85
|
+
%t96 = call core.sub(%t88, 1) :: integer
|
|
96
86
|
loop col id=L10 in %rows_el_79 as el=%col_el_81, idx=%col_i_82
|
|
97
|
-
%t90 = call core.sub(%col_i_82,
|
|
98
|
-
%t92 = call core.gte(%t90,
|
|
87
|
+
%t90 = call core.sub(%col_i_82, 1) :: integer
|
|
88
|
+
%t92 = call core.gte(%t90, 0) :: boolean
|
|
99
89
|
%t93 = call core.lt(%t90, %t88) :: boolean
|
|
100
90
|
%t94 = call core.and(%t92, %t93) :: boolean
|
|
101
|
-
%t98 = call core.clamp(%t90,
|
|
91
|
+
%t98 = call core.clamp(%t90, 0, %t96) :: integer
|
|
102
92
|
%t99 = gather %t87, %t98 :: integer
|
|
103
|
-
%t101 = select %t94, %t99,
|
|
93
|
+
%t101 = select %t94, %t99, 0 :: integer
|
|
104
94
|
yield %t101
|
|
105
95
|
end_loop
|
|
106
96
|
end_loop
|
|
@@ -108,28 +98,25 @@
|
|
|
108
98
|
(Declaration nw
|
|
109
99
|
%t102 = load_input "rows" :: array
|
|
110
100
|
%t107 = length %t102 :: integer
|
|
111
|
-
%
|
|
112
|
-
%t110 = const 0 :: integer
|
|
113
|
-
%t114 = const 1 :: integer
|
|
114
|
-
%t115 = call core.sub(%t107, %t114) :: integer
|
|
101
|
+
%t115 = call core.sub(%t107, 1) :: integer
|
|
115
102
|
loop rows id=L11 in %t102 as el=%rows_el_103, idx=%rows_i_104
|
|
116
|
-
%t109 = call core.sub(%rows_i_104,
|
|
117
|
-
%t111 = call core.gte(%t109,
|
|
103
|
+
%t109 = call core.sub(%rows_i_104, -1) :: integer
|
|
104
|
+
%t111 = call core.gte(%t109, 0) :: boolean
|
|
118
105
|
%t112 = call core.lt(%t109, %t107) :: boolean
|
|
119
|
-
%t117 = call core.clamp(%t109,
|
|
106
|
+
%t117 = call core.clamp(%t109, 0, %t115) :: integer
|
|
120
107
|
%t113 = call core.and(%t111, %t112) :: boolean
|
|
121
108
|
%t118 = gather %t102, %t117 :: any
|
|
122
109
|
%t119 = length %t118 :: integer
|
|
123
|
-
%t128 = call core.sub(%t119,
|
|
110
|
+
%t128 = call core.sub(%t119, 1) :: integer
|
|
124
111
|
loop col id=L12 in %rows_el_103 as el=%col_el_105, idx=%col_i_106
|
|
125
|
-
%t121 = call core.sub(%col_i_106,
|
|
126
|
-
%t123 = call core.gte(%t121,
|
|
112
|
+
%t121 = call core.sub(%col_i_106, -1) :: integer
|
|
113
|
+
%t123 = call core.gte(%t121, 0) :: boolean
|
|
127
114
|
%t124 = call core.lt(%t121, %t119) :: boolean
|
|
128
115
|
%t125 = call core.and(%t123, %t124) :: boolean
|
|
129
116
|
%t126 = call core.and(%t113, %t125) :: boolean
|
|
130
|
-
%t130 = call core.clamp(%t121,
|
|
117
|
+
%t130 = call core.clamp(%t121, 0, %t128) :: integer
|
|
131
118
|
%t131 = gather %t118, %t130 :: integer
|
|
132
|
-
%t133 = select %t126, %t131,
|
|
119
|
+
%t133 = select %t126, %t131, 0 :: integer
|
|
133
120
|
yield %t133
|
|
134
121
|
end_loop
|
|
135
122
|
end_loop
|
|
@@ -137,28 +124,25 @@
|
|
|
137
124
|
(Declaration ne
|
|
138
125
|
%t134 = load_input "rows" :: array
|
|
139
126
|
%t139 = length %t134 :: integer
|
|
140
|
-
%
|
|
141
|
-
%t142 = const 0 :: integer
|
|
142
|
-
%t146 = const 1 :: integer
|
|
143
|
-
%t147 = call core.sub(%t139, %t146) :: integer
|
|
127
|
+
%t147 = call core.sub(%t139, 1) :: integer
|
|
144
128
|
loop rows id=L13 in %t134 as el=%rows_el_135, idx=%rows_i_136
|
|
145
|
-
%t141 = call core.sub(%rows_i_136,
|
|
146
|
-
%t143 = call core.gte(%t141,
|
|
129
|
+
%t141 = call core.sub(%rows_i_136, -1) :: integer
|
|
130
|
+
%t143 = call core.gte(%t141, 0) :: boolean
|
|
147
131
|
%t144 = call core.lt(%t141, %t139) :: boolean
|
|
148
|
-
%t149 = call core.clamp(%t141,
|
|
132
|
+
%t149 = call core.clamp(%t141, 0, %t147) :: integer
|
|
149
133
|
%t145 = call core.and(%t143, %t144) :: boolean
|
|
150
134
|
%t150 = gather %t134, %t149 :: any
|
|
151
135
|
%t151 = length %t150 :: integer
|
|
152
|
-
%t160 = call core.sub(%t151,
|
|
136
|
+
%t160 = call core.sub(%t151, 1) :: integer
|
|
153
137
|
loop col id=L14 in %rows_el_135 as el=%col_el_137, idx=%col_i_138
|
|
154
|
-
%t153 = call core.sub(%col_i_138,
|
|
155
|
-
%t155 = call core.gte(%t153,
|
|
138
|
+
%t153 = call core.sub(%col_i_138, 1) :: integer
|
|
139
|
+
%t155 = call core.gte(%t153, 0) :: boolean
|
|
156
140
|
%t156 = call core.lt(%t153, %t151) :: boolean
|
|
157
141
|
%t157 = call core.and(%t155, %t156) :: boolean
|
|
158
142
|
%t158 = call core.and(%t145, %t157) :: boolean
|
|
159
|
-
%t162 = call core.clamp(%t153,
|
|
143
|
+
%t162 = call core.clamp(%t153, 0, %t160) :: integer
|
|
160
144
|
%t163 = gather %t150, %t162 :: integer
|
|
161
|
-
%t165 = select %t158, %t163,
|
|
145
|
+
%t165 = select %t158, %t163, 0 :: integer
|
|
162
146
|
yield %t165
|
|
163
147
|
end_loop
|
|
164
148
|
end_loop
|
|
@@ -166,28 +150,25 @@
|
|
|
166
150
|
(Declaration sw
|
|
167
151
|
%t166 = load_input "rows" :: array
|
|
168
152
|
%t171 = length %t166 :: integer
|
|
169
|
-
%
|
|
170
|
-
%t174 = const 0 :: integer
|
|
171
|
-
%t184 = const -1 :: integer
|
|
172
|
-
%t179 = call core.sub(%t171, %t172) :: integer
|
|
153
|
+
%t179 = call core.sub(%t171, 1) :: integer
|
|
173
154
|
loop rows id=L15 in %t166 as el=%rows_el_167, idx=%rows_i_168
|
|
174
|
-
%t173 = call core.sub(%rows_i_168,
|
|
175
|
-
%t175 = call core.gte(%t173,
|
|
155
|
+
%t173 = call core.sub(%rows_i_168, 1) :: integer
|
|
156
|
+
%t175 = call core.gte(%t173, 0) :: boolean
|
|
176
157
|
%t176 = call core.lt(%t173, %t171) :: boolean
|
|
177
|
-
%t181 = call core.clamp(%t173,
|
|
158
|
+
%t181 = call core.clamp(%t173, 0, %t179) :: integer
|
|
178
159
|
%t177 = call core.and(%t175, %t176) :: boolean
|
|
179
160
|
%t182 = gather %t166, %t181 :: any
|
|
180
161
|
%t183 = length %t182 :: integer
|
|
181
|
-
%t192 = call core.sub(%t183,
|
|
162
|
+
%t192 = call core.sub(%t183, 1) :: integer
|
|
182
163
|
loop col id=L16 in %rows_el_167 as el=%col_el_169, idx=%col_i_170
|
|
183
|
-
%t185 = call core.sub(%col_i_170,
|
|
184
|
-
%t187 = call core.gte(%t185,
|
|
164
|
+
%t185 = call core.sub(%col_i_170, -1) :: integer
|
|
165
|
+
%t187 = call core.gte(%t185, 0) :: boolean
|
|
185
166
|
%t188 = call core.lt(%t185, %t183) :: boolean
|
|
186
167
|
%t189 = call core.and(%t187, %t188) :: boolean
|
|
187
168
|
%t190 = call core.and(%t177, %t189) :: boolean
|
|
188
|
-
%t194 = call core.clamp(%t185,
|
|
169
|
+
%t194 = call core.clamp(%t185, 0, %t192) :: integer
|
|
189
170
|
%t195 = gather %t182, %t194 :: integer
|
|
190
|
-
%t197 = select %t190, %t195,
|
|
171
|
+
%t197 = select %t190, %t195, 0 :: integer
|
|
191
172
|
yield %t197
|
|
192
173
|
end_loop
|
|
193
174
|
end_loop
|
|
@@ -195,27 +176,25 @@
|
|
|
195
176
|
(Declaration se
|
|
196
177
|
%t198 = load_input "rows" :: array
|
|
197
178
|
%t203 = length %t198 :: integer
|
|
198
|
-
%
|
|
199
|
-
%t206 = const 0 :: integer
|
|
200
|
-
%t211 = call core.sub(%t203, %t204) :: integer
|
|
179
|
+
%t211 = call core.sub(%t203, 1) :: integer
|
|
201
180
|
loop rows id=L17 in %t198 as el=%rows_el_199, idx=%rows_i_200
|
|
202
|
-
%t205 = call core.sub(%rows_i_200,
|
|
203
|
-
%t207 = call core.gte(%t205,
|
|
181
|
+
%t205 = call core.sub(%rows_i_200, 1) :: integer
|
|
182
|
+
%t207 = call core.gte(%t205, 0) :: boolean
|
|
204
183
|
%t208 = call core.lt(%t205, %t203) :: boolean
|
|
205
|
-
%t213 = call core.clamp(%t205,
|
|
184
|
+
%t213 = call core.clamp(%t205, 0, %t211) :: integer
|
|
206
185
|
%t209 = call core.and(%t207, %t208) :: boolean
|
|
207
186
|
%t214 = gather %t198, %t213 :: any
|
|
208
187
|
%t215 = length %t214 :: integer
|
|
209
|
-
%t224 = call core.sub(%t215,
|
|
188
|
+
%t224 = call core.sub(%t215, 1) :: integer
|
|
210
189
|
loop col id=L18 in %rows_el_199 as el=%col_el_201, idx=%col_i_202
|
|
211
|
-
%t217 = call core.sub(%col_i_202,
|
|
212
|
-
%t219 = call core.gte(%t217,
|
|
190
|
+
%t217 = call core.sub(%col_i_202, 1) :: integer
|
|
191
|
+
%t219 = call core.gte(%t217, 0) :: boolean
|
|
213
192
|
%t220 = call core.lt(%t217, %t215) :: boolean
|
|
214
193
|
%t221 = call core.and(%t219, %t220) :: boolean
|
|
215
194
|
%t222 = call core.and(%t209, %t221) :: boolean
|
|
216
|
-
%t226 = call core.clamp(%t217,
|
|
195
|
+
%t226 = call core.clamp(%t217, 0, %t224) :: integer
|
|
217
196
|
%t227 = gather %t214, %t226 :: integer
|
|
218
|
-
%t229 = select %t222, %t227,
|
|
197
|
+
%t229 = select %t222, %t227, 0 :: integer
|
|
219
198
|
yield %t229
|
|
220
199
|
end_loop
|
|
221
200
|
end_loop
|
|
@@ -223,20 +202,17 @@
|
|
|
223
202
|
(Declaration neighbors
|
|
224
203
|
%t230 = load_input "rows" :: array
|
|
225
204
|
%t295 = length %t230 :: integer
|
|
226
|
-
%
|
|
227
|
-
%t298 = const 0 :: integer
|
|
228
|
-
%t302 = const 1 :: integer
|
|
229
|
-
%t303 = call core.sub(%t295, %t302) :: integer
|
|
205
|
+
%t303 = call core.sub(%t295, 1) :: integer
|
|
230
206
|
loop rows id=L19 in %t230 as el=%rows_el_231, idx=%rows_i_232
|
|
231
|
-
%t297 = call core.sub(%rows_i_232,
|
|
232
|
-
%t317 = call core.sub(%rows_i_232,
|
|
207
|
+
%t297 = call core.sub(%rows_i_232, -1) :: integer
|
|
208
|
+
%t317 = call core.sub(%rows_i_232, 1) :: integer
|
|
233
209
|
%t336 = call core.mod(%rows_i_232, %t295) :: integer
|
|
234
|
-
%t299 = call core.gte(%t297,
|
|
210
|
+
%t299 = call core.gte(%t297, 0) :: boolean
|
|
235
211
|
%t300 = call core.lt(%t297, %t295) :: boolean
|
|
236
|
-
%t305 = call core.clamp(%t297,
|
|
237
|
-
%t319 = call core.gte(%t317,
|
|
212
|
+
%t305 = call core.clamp(%t297, 0, %t303) :: integer
|
|
213
|
+
%t319 = call core.gte(%t317, 0) :: boolean
|
|
238
214
|
%t320 = call core.lt(%t317, %t295) :: boolean
|
|
239
|
-
%t325 = call core.clamp(%t317,
|
|
215
|
+
%t325 = call core.clamp(%t317, 0, %t303) :: integer
|
|
240
216
|
%t337 = call core.add(%t336, %t295) :: integer
|
|
241
217
|
%t301 = call core.and(%t299, %t300) :: boolean
|
|
242
218
|
%t306 = gather %t230, %t305 :: any
|
|
@@ -247,58 +223,58 @@
|
|
|
247
223
|
%t327 = length %t326 :: integer
|
|
248
224
|
%t339 = gather %t230, %t338 :: any
|
|
249
225
|
%t340 = length %t339 :: integer
|
|
250
|
-
%t396 = call core.sub(%t307,
|
|
251
|
-
%t452 = call core.sub(%t327,
|
|
252
|
-
%t348 = call core.sub(%t340,
|
|
226
|
+
%t396 = call core.sub(%t307, 1) :: integer
|
|
227
|
+
%t452 = call core.sub(%t327, 1) :: integer
|
|
228
|
+
%t348 = call core.sub(%t340, 1) :: integer
|
|
253
229
|
loop col id=L20 in %rows_el_231 as el=%col_el_233, idx=%col_i_234
|
|
254
230
|
%t308 = call core.mod(%col_i_234, %t307) :: integer
|
|
255
231
|
%t309 = call core.add(%t308, %t307) :: integer
|
|
256
232
|
%t310 = call core.mod(%t309, %t307) :: integer
|
|
257
233
|
%t311 = gather %t306, %t310 :: integer
|
|
258
|
-
%t313 = select %t301, %t311,
|
|
234
|
+
%t313 = select %t301, %t311, 0 :: integer
|
|
259
235
|
%t328 = call core.mod(%col_i_234, %t327) :: integer
|
|
260
236
|
%t329 = call core.add(%t328, %t327) :: integer
|
|
261
237
|
%t330 = call core.mod(%t329, %t327) :: integer
|
|
262
238
|
%t331 = gather %t326, %t330 :: integer
|
|
263
|
-
%t333 = select %t321, %t331,
|
|
264
|
-
%t342 = call core.sub(%col_i_234,
|
|
265
|
-
%t344 = call core.gte(%t342,
|
|
239
|
+
%t333 = select %t321, %t331, 0 :: integer
|
|
240
|
+
%t342 = call core.sub(%col_i_234, -1) :: integer
|
|
241
|
+
%t344 = call core.gte(%t342, 0) :: boolean
|
|
266
242
|
%t345 = call core.lt(%t342, %t340) :: boolean
|
|
267
243
|
%t346 = call core.and(%t344, %t345) :: boolean
|
|
268
|
-
%t350 = call core.clamp(%t342,
|
|
244
|
+
%t350 = call core.clamp(%t342, 0, %t348) :: integer
|
|
269
245
|
%t351 = gather %t339, %t350 :: integer
|
|
270
|
-
%t353 = select %t346, %t351,
|
|
271
|
-
%t362 = call core.sub(%col_i_234,
|
|
272
|
-
%t364 = call core.gte(%t362,
|
|
246
|
+
%t353 = select %t346, %t351, 0 :: integer
|
|
247
|
+
%t362 = call core.sub(%col_i_234, 1) :: integer
|
|
248
|
+
%t364 = call core.gte(%t362, 0) :: boolean
|
|
273
249
|
%t365 = call core.lt(%t362, %t340) :: boolean
|
|
274
250
|
%t366 = call core.and(%t364, %t365) :: boolean
|
|
275
|
-
%t370 = call core.clamp(%t362,
|
|
251
|
+
%t370 = call core.clamp(%t362, 0, %t348) :: integer
|
|
276
252
|
%t371 = gather %t339, %t370 :: integer
|
|
277
|
-
%t373 = select %t366, %t371,
|
|
253
|
+
%t373 = select %t366, %t371, 0 :: integer
|
|
278
254
|
%t392 = call core.lt(%t342, %t307) :: boolean
|
|
279
255
|
%t393 = call core.and(%t344, %t392) :: boolean
|
|
280
256
|
%t394 = call core.and(%t301, %t393) :: boolean
|
|
281
|
-
%t398 = call core.clamp(%t342,
|
|
257
|
+
%t398 = call core.clamp(%t342, 0, %t396) :: integer
|
|
282
258
|
%t399 = gather %t306, %t398 :: integer
|
|
283
|
-
%t401 = select %t394, %t399,
|
|
259
|
+
%t401 = select %t394, %t399, 0 :: integer
|
|
284
260
|
%t420 = call core.lt(%t362, %t307) :: boolean
|
|
285
261
|
%t421 = call core.and(%t364, %t420) :: boolean
|
|
286
262
|
%t422 = call core.and(%t301, %t421) :: boolean
|
|
287
|
-
%t426 = call core.clamp(%t362,
|
|
263
|
+
%t426 = call core.clamp(%t362, 0, %t396) :: integer
|
|
288
264
|
%t427 = gather %t306, %t426 :: integer
|
|
289
|
-
%t429 = select %t422, %t427,
|
|
265
|
+
%t429 = select %t422, %t427, 0 :: integer
|
|
290
266
|
%t448 = call core.lt(%t342, %t327) :: boolean
|
|
291
267
|
%t449 = call core.and(%t344, %t448) :: boolean
|
|
292
268
|
%t450 = call core.and(%t321, %t449) :: boolean
|
|
293
|
-
%t454 = call core.clamp(%t342,
|
|
269
|
+
%t454 = call core.clamp(%t342, 0, %t452) :: integer
|
|
294
270
|
%t455 = gather %t326, %t454 :: integer
|
|
295
|
-
%t457 = select %t450, %t455,
|
|
271
|
+
%t457 = select %t450, %t455, 0 :: integer
|
|
296
272
|
%t476 = call core.lt(%t362, %t327) :: boolean
|
|
297
273
|
%t477 = call core.and(%t364, %t476) :: boolean
|
|
298
274
|
%t478 = call core.and(%t321, %t477) :: boolean
|
|
299
|
-
%t482 = call core.clamp(%t362,
|
|
275
|
+
%t482 = call core.clamp(%t362, 0, %t452) :: integer
|
|
300
276
|
%t483 = gather %t326, %t482 :: integer
|
|
301
|
-
%t485 = select %t478, %t483,
|
|
277
|
+
%t485 = select %t478, %t483, 0 :: integer
|
|
302
278
|
%t243 = make_tuple(%t313, %t333, %t353, %t373, %t401, %t429, %t457, %t485) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
|
|
303
279
|
%t244 = fold %t243 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
|
|
304
280
|
yield %t244
|
|
@@ -307,10 +283,9 @@
|
|
|
307
283
|
)
|
|
308
284
|
(Declaration alive
|
|
309
285
|
%t245 = load_input "rows" :: array
|
|
310
|
-
%t251 = const 0 :: integer
|
|
311
286
|
loop rows id=L21 in %t245 as el=%rows_el_246, idx=%rows_i_247
|
|
312
287
|
loop col id=L22 in %rows_el_246 as el=%col_el_248, idx=%col_i_249
|
|
313
|
-
%t252 = call core.gt(%col_el_248,
|
|
288
|
+
%t252 = call core.gt(%col_el_248, 0) :: boolean
|
|
314
289
|
yield %t252
|
|
315
290
|
end_loop
|
|
316
291
|
end_loop
|
|
@@ -318,21 +293,17 @@
|
|
|
318
293
|
(Declaration n3_alive
|
|
319
294
|
%t253 = load_input "rows" :: array
|
|
320
295
|
%t499 = length %t253 :: integer
|
|
321
|
-
%
|
|
322
|
-
%t502 = const 0 :: integer
|
|
323
|
-
%t506 = const 1 :: integer
|
|
324
|
-
%t259 = const 3 :: integer
|
|
325
|
-
%t507 = call core.sub(%t499, %t506) :: integer
|
|
296
|
+
%t507 = call core.sub(%t499, 1) :: integer
|
|
326
297
|
loop rows id=L23 in %t253 as el=%rows_el_254, idx=%rows_i_255
|
|
327
|
-
%t501 = call core.sub(%rows_i_255,
|
|
328
|
-
%t521 = call core.sub(%rows_i_255,
|
|
298
|
+
%t501 = call core.sub(%rows_i_255, -1) :: integer
|
|
299
|
+
%t521 = call core.sub(%rows_i_255, 1) :: integer
|
|
329
300
|
%t540 = call core.mod(%rows_i_255, %t499) :: integer
|
|
330
|
-
%t503 = call core.gte(%t501,
|
|
301
|
+
%t503 = call core.gte(%t501, 0) :: boolean
|
|
331
302
|
%t504 = call core.lt(%t501, %t499) :: boolean
|
|
332
|
-
%t509 = call core.clamp(%t501,
|
|
333
|
-
%t523 = call core.gte(%t521,
|
|
303
|
+
%t509 = call core.clamp(%t501, 0, %t507) :: integer
|
|
304
|
+
%t523 = call core.gte(%t521, 0) :: boolean
|
|
334
305
|
%t524 = call core.lt(%t521, %t499) :: boolean
|
|
335
|
-
%t529 = call core.clamp(%t521,
|
|
306
|
+
%t529 = call core.clamp(%t521, 0, %t507) :: integer
|
|
336
307
|
%t541 = call core.add(%t540, %t499) :: integer
|
|
337
308
|
%t505 = call core.and(%t503, %t504) :: boolean
|
|
338
309
|
%t510 = gather %t253, %t509 :: any
|
|
@@ -343,61 +314,61 @@
|
|
|
343
314
|
%t531 = length %t530 :: integer
|
|
344
315
|
%t543 = gather %t253, %t542 :: any
|
|
345
316
|
%t544 = length %t543 :: integer
|
|
346
|
-
%t600 = call core.sub(%t511,
|
|
347
|
-
%t656 = call core.sub(%t531,
|
|
348
|
-
%t552 = call core.sub(%t544,
|
|
317
|
+
%t600 = call core.sub(%t511, 1) :: integer
|
|
318
|
+
%t656 = call core.sub(%t531, 1) :: integer
|
|
319
|
+
%t552 = call core.sub(%t544, 1) :: integer
|
|
349
320
|
loop col id=L24 in %rows_el_254 as el=%col_el_256, idx=%col_i_257
|
|
350
321
|
%t512 = call core.mod(%col_i_257, %t511) :: integer
|
|
351
322
|
%t513 = call core.add(%t512, %t511) :: integer
|
|
352
323
|
%t514 = call core.mod(%t513, %t511) :: integer
|
|
353
324
|
%t515 = gather %t510, %t514 :: integer
|
|
354
|
-
%t517 = select %t505, %t515,
|
|
325
|
+
%t517 = select %t505, %t515, 0 :: integer
|
|
355
326
|
%t532 = call core.mod(%col_i_257, %t531) :: integer
|
|
356
327
|
%t533 = call core.add(%t532, %t531) :: integer
|
|
357
328
|
%t534 = call core.mod(%t533, %t531) :: integer
|
|
358
329
|
%t535 = gather %t530, %t534 :: integer
|
|
359
|
-
%t537 = select %t525, %t535,
|
|
360
|
-
%t546 = call core.sub(%col_i_257,
|
|
361
|
-
%t548 = call core.gte(%t546,
|
|
330
|
+
%t537 = select %t525, %t535, 0 :: integer
|
|
331
|
+
%t546 = call core.sub(%col_i_257, -1) :: integer
|
|
332
|
+
%t548 = call core.gte(%t546, 0) :: boolean
|
|
362
333
|
%t549 = call core.lt(%t546, %t544) :: boolean
|
|
363
334
|
%t550 = call core.and(%t548, %t549) :: boolean
|
|
364
|
-
%t554 = call core.clamp(%t546,
|
|
335
|
+
%t554 = call core.clamp(%t546, 0, %t552) :: integer
|
|
365
336
|
%t555 = gather %t543, %t554 :: integer
|
|
366
|
-
%t557 = select %t550, %t555,
|
|
367
|
-
%t566 = call core.sub(%col_i_257,
|
|
368
|
-
%t568 = call core.gte(%t566,
|
|
337
|
+
%t557 = select %t550, %t555, 0 :: integer
|
|
338
|
+
%t566 = call core.sub(%col_i_257, 1) :: integer
|
|
339
|
+
%t568 = call core.gte(%t566, 0) :: boolean
|
|
369
340
|
%t569 = call core.lt(%t566, %t544) :: boolean
|
|
370
341
|
%t570 = call core.and(%t568, %t569) :: boolean
|
|
371
|
-
%t574 = call core.clamp(%t566,
|
|
342
|
+
%t574 = call core.clamp(%t566, 0, %t552) :: integer
|
|
372
343
|
%t575 = gather %t543, %t574 :: integer
|
|
373
|
-
%t577 = select %t570, %t575,
|
|
344
|
+
%t577 = select %t570, %t575, 0 :: integer
|
|
374
345
|
%t596 = call core.lt(%t546, %t511) :: boolean
|
|
375
346
|
%t597 = call core.and(%t548, %t596) :: boolean
|
|
376
347
|
%t598 = call core.and(%t505, %t597) :: boolean
|
|
377
|
-
%t602 = call core.clamp(%t546,
|
|
348
|
+
%t602 = call core.clamp(%t546, 0, %t600) :: integer
|
|
378
349
|
%t603 = gather %t510, %t602 :: integer
|
|
379
|
-
%t605 = select %t598, %t603,
|
|
350
|
+
%t605 = select %t598, %t603, 0 :: integer
|
|
380
351
|
%t624 = call core.lt(%t566, %t511) :: boolean
|
|
381
352
|
%t625 = call core.and(%t568, %t624) :: boolean
|
|
382
353
|
%t626 = call core.and(%t505, %t625) :: boolean
|
|
383
|
-
%t630 = call core.clamp(%t566,
|
|
354
|
+
%t630 = call core.clamp(%t566, 0, %t600) :: integer
|
|
384
355
|
%t631 = gather %t510, %t630 :: integer
|
|
385
|
-
%t633 = select %t626, %t631,
|
|
356
|
+
%t633 = select %t626, %t631, 0 :: integer
|
|
386
357
|
%t652 = call core.lt(%t546, %t531) :: boolean
|
|
387
358
|
%t653 = call core.and(%t548, %t652) :: boolean
|
|
388
359
|
%t654 = call core.and(%t525, %t653) :: boolean
|
|
389
|
-
%t658 = call core.clamp(%t546,
|
|
360
|
+
%t658 = call core.clamp(%t546, 0, %t656) :: integer
|
|
390
361
|
%t659 = gather %t530, %t658 :: integer
|
|
391
|
-
%t661 = select %t654, %t659,
|
|
362
|
+
%t661 = select %t654, %t659, 0 :: integer
|
|
392
363
|
%t680 = call core.lt(%t566, %t531) :: boolean
|
|
393
364
|
%t681 = call core.and(%t568, %t680) :: boolean
|
|
394
365
|
%t682 = call core.and(%t525, %t681) :: boolean
|
|
395
|
-
%t686 = call core.clamp(%t566,
|
|
366
|
+
%t686 = call core.clamp(%t566, 0, %t656) :: integer
|
|
396
367
|
%t687 = gather %t530, %t686 :: integer
|
|
397
|
-
%t689 = select %t682, %t687,
|
|
368
|
+
%t689 = select %t682, %t687, 0 :: integer
|
|
398
369
|
%t496 = make_tuple(%t517, %t537, %t557, %t577, %t605, %t633, %t661, %t689) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
|
|
399
370
|
%t497 = fold %t496 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
|
|
400
|
-
%t260 = call core.eq(%t497,
|
|
371
|
+
%t260 = call core.eq(%t497, 3) :: boolean
|
|
401
372
|
yield %t260
|
|
402
373
|
end_loop
|
|
403
374
|
end_loop
|
|
@@ -405,21 +376,17 @@
|
|
|
405
376
|
(Declaration n2_alive
|
|
406
377
|
%t261 = load_input "rows" :: array
|
|
407
378
|
%t702 = length %t261 :: integer
|
|
408
|
-
%
|
|
409
|
-
%t705 = const 0 :: integer
|
|
410
|
-
%t709 = const 1 :: integer
|
|
411
|
-
%t267 = const 2 :: integer
|
|
412
|
-
%t710 = call core.sub(%t702, %t709) :: integer
|
|
379
|
+
%t710 = call core.sub(%t702, 1) :: integer
|
|
413
380
|
loop rows id=L25 in %t261 as el=%rows_el_262, idx=%rows_i_263
|
|
414
|
-
%t704 = call core.sub(%rows_i_263,
|
|
415
|
-
%t724 = call core.sub(%rows_i_263,
|
|
381
|
+
%t704 = call core.sub(%rows_i_263, -1) :: integer
|
|
382
|
+
%t724 = call core.sub(%rows_i_263, 1) :: integer
|
|
416
383
|
%t743 = call core.mod(%rows_i_263, %t702) :: integer
|
|
417
|
-
%t706 = call core.gte(%t704,
|
|
384
|
+
%t706 = call core.gte(%t704, 0) :: boolean
|
|
418
385
|
%t707 = call core.lt(%t704, %t702) :: boolean
|
|
419
|
-
%t712 = call core.clamp(%t704,
|
|
420
|
-
%t726 = call core.gte(%t724,
|
|
386
|
+
%t712 = call core.clamp(%t704, 0, %t710) :: integer
|
|
387
|
+
%t726 = call core.gte(%t724, 0) :: boolean
|
|
421
388
|
%t727 = call core.lt(%t724, %t702) :: boolean
|
|
422
|
-
%t732 = call core.clamp(%t724,
|
|
389
|
+
%t732 = call core.clamp(%t724, 0, %t710) :: integer
|
|
423
390
|
%t744 = call core.add(%t743, %t702) :: integer
|
|
424
391
|
%t708 = call core.and(%t706, %t707) :: boolean
|
|
425
392
|
%t713 = gather %t261, %t712 :: any
|
|
@@ -430,61 +397,61 @@
|
|
|
430
397
|
%t734 = length %t733 :: integer
|
|
431
398
|
%t746 = gather %t261, %t745 :: any
|
|
432
399
|
%t747 = length %t746 :: integer
|
|
433
|
-
%t803 = call core.sub(%t714,
|
|
434
|
-
%t859 = call core.sub(%t734,
|
|
435
|
-
%t755 = call core.sub(%t747,
|
|
400
|
+
%t803 = call core.sub(%t714, 1) :: integer
|
|
401
|
+
%t859 = call core.sub(%t734, 1) :: integer
|
|
402
|
+
%t755 = call core.sub(%t747, 1) :: integer
|
|
436
403
|
loop col id=L26 in %rows_el_262 as el=%col_el_264, idx=%col_i_265
|
|
437
404
|
%t715 = call core.mod(%col_i_265, %t714) :: integer
|
|
438
405
|
%t716 = call core.add(%t715, %t714) :: integer
|
|
439
406
|
%t717 = call core.mod(%t716, %t714) :: integer
|
|
440
407
|
%t718 = gather %t713, %t717 :: integer
|
|
441
|
-
%t720 = select %t708, %t718,
|
|
408
|
+
%t720 = select %t708, %t718, 0 :: integer
|
|
442
409
|
%t735 = call core.mod(%col_i_265, %t734) :: integer
|
|
443
410
|
%t736 = call core.add(%t735, %t734) :: integer
|
|
444
411
|
%t737 = call core.mod(%t736, %t734) :: integer
|
|
445
412
|
%t738 = gather %t733, %t737 :: integer
|
|
446
|
-
%t740 = select %t728, %t738,
|
|
447
|
-
%t749 = call core.sub(%col_i_265,
|
|
448
|
-
%t751 = call core.gte(%t749,
|
|
413
|
+
%t740 = select %t728, %t738, 0 :: integer
|
|
414
|
+
%t749 = call core.sub(%col_i_265, -1) :: integer
|
|
415
|
+
%t751 = call core.gte(%t749, 0) :: boolean
|
|
449
416
|
%t752 = call core.lt(%t749, %t747) :: boolean
|
|
450
417
|
%t753 = call core.and(%t751, %t752) :: boolean
|
|
451
|
-
%t757 = call core.clamp(%t749,
|
|
418
|
+
%t757 = call core.clamp(%t749, 0, %t755) :: integer
|
|
452
419
|
%t758 = gather %t746, %t757 :: integer
|
|
453
|
-
%t760 = select %t753, %t758,
|
|
454
|
-
%t769 = call core.sub(%col_i_265,
|
|
455
|
-
%t771 = call core.gte(%t769,
|
|
420
|
+
%t760 = select %t753, %t758, 0 :: integer
|
|
421
|
+
%t769 = call core.sub(%col_i_265, 1) :: integer
|
|
422
|
+
%t771 = call core.gte(%t769, 0) :: boolean
|
|
456
423
|
%t772 = call core.lt(%t769, %t747) :: boolean
|
|
457
424
|
%t773 = call core.and(%t771, %t772) :: boolean
|
|
458
|
-
%t777 = call core.clamp(%t769,
|
|
425
|
+
%t777 = call core.clamp(%t769, 0, %t755) :: integer
|
|
459
426
|
%t778 = gather %t746, %t777 :: integer
|
|
460
|
-
%t780 = select %t773, %t778,
|
|
427
|
+
%t780 = select %t773, %t778, 0 :: integer
|
|
461
428
|
%t799 = call core.lt(%t749, %t714) :: boolean
|
|
462
429
|
%t800 = call core.and(%t751, %t799) :: boolean
|
|
463
430
|
%t801 = call core.and(%t708, %t800) :: boolean
|
|
464
|
-
%t805 = call core.clamp(%t749,
|
|
431
|
+
%t805 = call core.clamp(%t749, 0, %t803) :: integer
|
|
465
432
|
%t806 = gather %t713, %t805 :: integer
|
|
466
|
-
%t808 = select %t801, %t806,
|
|
433
|
+
%t808 = select %t801, %t806, 0 :: integer
|
|
467
434
|
%t827 = call core.lt(%t769, %t714) :: boolean
|
|
468
435
|
%t828 = call core.and(%t771, %t827) :: boolean
|
|
469
436
|
%t829 = call core.and(%t708, %t828) :: boolean
|
|
470
|
-
%t833 = call core.clamp(%t769,
|
|
437
|
+
%t833 = call core.clamp(%t769, 0, %t803) :: integer
|
|
471
438
|
%t834 = gather %t713, %t833 :: integer
|
|
472
|
-
%t836 = select %t829, %t834,
|
|
439
|
+
%t836 = select %t829, %t834, 0 :: integer
|
|
473
440
|
%t855 = call core.lt(%t749, %t734) :: boolean
|
|
474
441
|
%t856 = call core.and(%t751, %t855) :: boolean
|
|
475
442
|
%t857 = call core.and(%t728, %t856) :: boolean
|
|
476
|
-
%t861 = call core.clamp(%t749,
|
|
443
|
+
%t861 = call core.clamp(%t749, 0, %t859) :: integer
|
|
477
444
|
%t862 = gather %t733, %t861 :: integer
|
|
478
|
-
%t864 = select %t857, %t862,
|
|
445
|
+
%t864 = select %t857, %t862, 0 :: integer
|
|
479
446
|
%t883 = call core.lt(%t769, %t734) :: boolean
|
|
480
447
|
%t884 = call core.and(%t771, %t883) :: boolean
|
|
481
448
|
%t885 = call core.and(%t728, %t884) :: boolean
|
|
482
|
-
%t889 = call core.clamp(%t769,
|
|
449
|
+
%t889 = call core.clamp(%t769, 0, %t859) :: integer
|
|
483
450
|
%t890 = gather %t733, %t889 :: integer
|
|
484
|
-
%t892 = select %t885, %t890,
|
|
451
|
+
%t892 = select %t885, %t890, 0 :: integer
|
|
485
452
|
%t699 = make_tuple(%t720, %t740, %t760, %t780, %t808, %t836, %t864, %t892) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
|
|
486
453
|
%t700 = fold %t699 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
|
|
487
|
-
%t268 = call core.eq(%t700,
|
|
454
|
+
%t268 = call core.eq(%t700, 2) :: boolean
|
|
488
455
|
yield %t268
|
|
489
456
|
end_loop
|
|
490
457
|
end_loop
|
|
@@ -492,22 +459,17 @@
|
|
|
492
459
|
(Declaration keep_alive
|
|
493
460
|
%t269 = load_input "rows" :: array
|
|
494
461
|
%t909 = length %t269 :: integer
|
|
495
|
-
%
|
|
496
|
-
%t912 = const 0 :: integer
|
|
497
|
-
%t916 = const 1 :: integer
|
|
498
|
-
%t895 = const 2 :: integer
|
|
499
|
-
%t1102 = const 0 :: integer
|
|
500
|
-
%t917 = call core.sub(%t909, %t916) :: integer
|
|
462
|
+
%t917 = call core.sub(%t909, 1) :: integer
|
|
501
463
|
loop rows id=L27 in %t269 as el=%rows_el_270, idx=%rows_i_271
|
|
502
|
-
%t911 = call core.sub(%rows_i_271,
|
|
503
|
-
%t931 = call core.sub(%rows_i_271,
|
|
464
|
+
%t911 = call core.sub(%rows_i_271, -1) :: integer
|
|
465
|
+
%t931 = call core.sub(%rows_i_271, 1) :: integer
|
|
504
466
|
%t950 = call core.mod(%rows_i_271, %t909) :: integer
|
|
505
|
-
%t913 = call core.gte(%t911,
|
|
467
|
+
%t913 = call core.gte(%t911, 0) :: boolean
|
|
506
468
|
%t914 = call core.lt(%t911, %t909) :: boolean
|
|
507
|
-
%t919 = call core.clamp(%t911,
|
|
508
|
-
%t933 = call core.gte(%t931,
|
|
469
|
+
%t919 = call core.clamp(%t911, 0, %t917) :: integer
|
|
470
|
+
%t933 = call core.gte(%t931, 0) :: boolean
|
|
509
471
|
%t934 = call core.lt(%t931, %t909) :: boolean
|
|
510
|
-
%t939 = call core.clamp(%t931,
|
|
472
|
+
%t939 = call core.clamp(%t931, 0, %t917) :: integer
|
|
511
473
|
%t951 = call core.add(%t950, %t909) :: integer
|
|
512
474
|
%t915 = call core.and(%t913, %t914) :: boolean
|
|
513
475
|
%t920 = gather %t269, %t919 :: any
|
|
@@ -518,62 +480,62 @@
|
|
|
518
480
|
%t941 = length %t940 :: integer
|
|
519
481
|
%t953 = gather %t269, %t952 :: any
|
|
520
482
|
%t954 = length %t953 :: integer
|
|
521
|
-
%t1010 = call core.sub(%t921,
|
|
522
|
-
%t1066 = call core.sub(%t941,
|
|
523
|
-
%t962 = call core.sub(%t954,
|
|
483
|
+
%t1010 = call core.sub(%t921, 1) :: integer
|
|
484
|
+
%t1066 = call core.sub(%t941, 1) :: integer
|
|
485
|
+
%t962 = call core.sub(%t954, 1) :: integer
|
|
524
486
|
loop col id=L28 in %rows_el_270 as el=%col_el_272, idx=%col_i_273
|
|
525
487
|
%t922 = call core.mod(%col_i_273, %t921) :: integer
|
|
526
488
|
%t923 = call core.add(%t922, %t921) :: integer
|
|
527
489
|
%t924 = call core.mod(%t923, %t921) :: integer
|
|
528
490
|
%t925 = gather %t920, %t924 :: integer
|
|
529
|
-
%t927 = select %t915, %t925,
|
|
491
|
+
%t927 = select %t915, %t925, 0 :: integer
|
|
530
492
|
%t942 = call core.mod(%col_i_273, %t941) :: integer
|
|
531
493
|
%t943 = call core.add(%t942, %t941) :: integer
|
|
532
494
|
%t944 = call core.mod(%t943, %t941) :: integer
|
|
533
495
|
%t945 = gather %t940, %t944 :: integer
|
|
534
|
-
%t947 = select %t935, %t945,
|
|
535
|
-
%t956 = call core.sub(%col_i_273,
|
|
536
|
-
%t958 = call core.gte(%t956,
|
|
496
|
+
%t947 = select %t935, %t945, 0 :: integer
|
|
497
|
+
%t956 = call core.sub(%col_i_273, -1) :: integer
|
|
498
|
+
%t958 = call core.gte(%t956, 0) :: boolean
|
|
537
499
|
%t959 = call core.lt(%t956, %t954) :: boolean
|
|
538
500
|
%t960 = call core.and(%t958, %t959) :: boolean
|
|
539
|
-
%t964 = call core.clamp(%t956,
|
|
501
|
+
%t964 = call core.clamp(%t956, 0, %t962) :: integer
|
|
540
502
|
%t965 = gather %t953, %t964 :: integer
|
|
541
|
-
%t967 = select %t960, %t965,
|
|
542
|
-
%t976 = call core.sub(%col_i_273,
|
|
543
|
-
%t978 = call core.gte(%t976,
|
|
503
|
+
%t967 = select %t960, %t965, 0 :: integer
|
|
504
|
+
%t976 = call core.sub(%col_i_273, 1) :: integer
|
|
505
|
+
%t978 = call core.gte(%t976, 0) :: boolean
|
|
544
506
|
%t979 = call core.lt(%t976, %t954) :: boolean
|
|
545
507
|
%t980 = call core.and(%t978, %t979) :: boolean
|
|
546
|
-
%t984 = call core.clamp(%t976,
|
|
508
|
+
%t984 = call core.clamp(%t976, 0, %t962) :: integer
|
|
547
509
|
%t985 = gather %t953, %t984 :: integer
|
|
548
|
-
%t987 = select %t980, %t985,
|
|
510
|
+
%t987 = select %t980, %t985, 0 :: integer
|
|
549
511
|
%t1006 = call core.lt(%t956, %t921) :: boolean
|
|
550
512
|
%t1007 = call core.and(%t958, %t1006) :: boolean
|
|
551
513
|
%t1008 = call core.and(%t915, %t1007) :: boolean
|
|
552
|
-
%t1012 = call core.clamp(%t956,
|
|
514
|
+
%t1012 = call core.clamp(%t956, 0, %t1010) :: integer
|
|
553
515
|
%t1013 = gather %t920, %t1012 :: integer
|
|
554
|
-
%t1015 = select %t1008, %t1013,
|
|
516
|
+
%t1015 = select %t1008, %t1013, 0 :: integer
|
|
555
517
|
%t1034 = call core.lt(%t976, %t921) :: boolean
|
|
556
518
|
%t1035 = call core.and(%t978, %t1034) :: boolean
|
|
557
519
|
%t1036 = call core.and(%t915, %t1035) :: boolean
|
|
558
|
-
%t1040 = call core.clamp(%t976,
|
|
520
|
+
%t1040 = call core.clamp(%t976, 0, %t1010) :: integer
|
|
559
521
|
%t1041 = gather %t920, %t1040 :: integer
|
|
560
|
-
%t1043 = select %t1036, %t1041,
|
|
522
|
+
%t1043 = select %t1036, %t1041, 0 :: integer
|
|
561
523
|
%t1062 = call core.lt(%t956, %t941) :: boolean
|
|
562
524
|
%t1063 = call core.and(%t958, %t1062) :: boolean
|
|
563
525
|
%t1064 = call core.and(%t935, %t1063) :: boolean
|
|
564
|
-
%t1068 = call core.clamp(%t956,
|
|
526
|
+
%t1068 = call core.clamp(%t956, 0, %t1066) :: integer
|
|
565
527
|
%t1069 = gather %t940, %t1068 :: integer
|
|
566
|
-
%t1071 = select %t1064, %t1069,
|
|
528
|
+
%t1071 = select %t1064, %t1069, 0 :: integer
|
|
567
529
|
%t1090 = call core.lt(%t976, %t941) :: boolean
|
|
568
530
|
%t1091 = call core.and(%t978, %t1090) :: boolean
|
|
569
531
|
%t1092 = call core.and(%t935, %t1091) :: boolean
|
|
570
|
-
%t1096 = call core.clamp(%t976,
|
|
532
|
+
%t1096 = call core.clamp(%t976, 0, %t1066) :: integer
|
|
571
533
|
%t1097 = gather %t940, %t1096 :: integer
|
|
572
|
-
%t1099 = select %t1092, %t1097,
|
|
534
|
+
%t1099 = select %t1092, %t1097, 0 :: integer
|
|
573
535
|
%t906 = make_tuple(%t927, %t947, %t967, %t987, %t1015, %t1043, %t1071, %t1099) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
|
|
574
536
|
%t907 = fold %t906 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
|
|
575
|
-
%t896 = call core.eq(%t907,
|
|
576
|
-
%t1103 = call core.gt(%col_el_272,
|
|
537
|
+
%t896 = call core.eq(%t907, 2) :: boolean
|
|
538
|
+
%t1103 = call core.gt(%col_el_272, 0) :: boolean
|
|
577
539
|
%t276 = call core.and(%t896, %t1103) :: boolean
|
|
578
540
|
yield %t276
|
|
579
541
|
end_loop
|
|
@@ -582,23 +544,17 @@
|
|
|
582
544
|
(Declaration next_alive
|
|
583
545
|
%t277 = load_input "rows" :: array
|
|
584
546
|
%t1121 = length %t277 :: integer
|
|
585
|
-
%
|
|
586
|
-
%t1124 = const 0 :: integer
|
|
587
|
-
%t1128 = const 1 :: integer
|
|
588
|
-
%t1107 = const 3 :: integer
|
|
589
|
-
%t1318 = const 2 :: integer
|
|
590
|
-
%t1525 = const 0 :: integer
|
|
591
|
-
%t1129 = call core.sub(%t1121, %t1128) :: integer
|
|
547
|
+
%t1129 = call core.sub(%t1121, 1) :: integer
|
|
592
548
|
loop rows id=L29 in %t277 as el=%rows_el_278, idx=%rows_i_279
|
|
593
|
-
%t1123 = call core.sub(%rows_i_279,
|
|
594
|
-
%t1143 = call core.sub(%rows_i_279,
|
|
549
|
+
%t1123 = call core.sub(%rows_i_279, -1) :: integer
|
|
550
|
+
%t1143 = call core.sub(%rows_i_279, 1) :: integer
|
|
595
551
|
%t1162 = call core.mod(%rows_i_279, %t1121) :: integer
|
|
596
|
-
%t1125 = call core.gte(%t1123,
|
|
552
|
+
%t1125 = call core.gte(%t1123, 0) :: boolean
|
|
597
553
|
%t1126 = call core.lt(%t1123, %t1121) :: boolean
|
|
598
|
-
%t1131 = call core.clamp(%t1123,
|
|
599
|
-
%t1145 = call core.gte(%t1143,
|
|
554
|
+
%t1131 = call core.clamp(%t1123, 0, %t1129) :: integer
|
|
555
|
+
%t1145 = call core.gte(%t1143, 0) :: boolean
|
|
600
556
|
%t1146 = call core.lt(%t1143, %t1121) :: boolean
|
|
601
|
-
%t1151 = call core.clamp(%t1143,
|
|
557
|
+
%t1151 = call core.clamp(%t1143, 0, %t1129) :: integer
|
|
602
558
|
%t1163 = call core.add(%t1162, %t1121) :: integer
|
|
603
559
|
%t1127 = call core.and(%t1125, %t1126) :: boolean
|
|
604
560
|
%t1132 = gather %t277, %t1131 :: any
|
|
@@ -609,63 +565,63 @@
|
|
|
609
565
|
%t1153 = length %t1152 :: integer
|
|
610
566
|
%t1165 = gather %t277, %t1164 :: any
|
|
611
567
|
%t1166 = length %t1165 :: integer
|
|
612
|
-
%t1222 = call core.sub(%t1133,
|
|
613
|
-
%t1278 = call core.sub(%t1153,
|
|
614
|
-
%t1174 = call core.sub(%t1166,
|
|
568
|
+
%t1222 = call core.sub(%t1133, 1) :: integer
|
|
569
|
+
%t1278 = call core.sub(%t1153, 1) :: integer
|
|
570
|
+
%t1174 = call core.sub(%t1166, 1) :: integer
|
|
615
571
|
loop col id=L30 in %rows_el_278 as el=%col_el_280, idx=%col_i_281
|
|
616
572
|
%t1134 = call core.mod(%col_i_281, %t1133) :: integer
|
|
617
573
|
%t1135 = call core.add(%t1134, %t1133) :: integer
|
|
618
574
|
%t1136 = call core.mod(%t1135, %t1133) :: integer
|
|
619
575
|
%t1137 = gather %t1132, %t1136 :: integer
|
|
620
|
-
%t1139 = select %t1127, %t1137,
|
|
576
|
+
%t1139 = select %t1127, %t1137, 0 :: integer
|
|
621
577
|
%t1154 = call core.mod(%col_i_281, %t1153) :: integer
|
|
622
578
|
%t1155 = call core.add(%t1154, %t1153) :: integer
|
|
623
579
|
%t1156 = call core.mod(%t1155, %t1153) :: integer
|
|
624
580
|
%t1157 = gather %t1152, %t1156 :: integer
|
|
625
|
-
%t1159 = select %t1147, %t1157,
|
|
626
|
-
%t1168 = call core.sub(%col_i_281,
|
|
627
|
-
%t1170 = call core.gte(%t1168,
|
|
581
|
+
%t1159 = select %t1147, %t1157, 0 :: integer
|
|
582
|
+
%t1168 = call core.sub(%col_i_281, -1) :: integer
|
|
583
|
+
%t1170 = call core.gte(%t1168, 0) :: boolean
|
|
628
584
|
%t1171 = call core.lt(%t1168, %t1166) :: boolean
|
|
629
585
|
%t1172 = call core.and(%t1170, %t1171) :: boolean
|
|
630
|
-
%t1176 = call core.clamp(%t1168,
|
|
586
|
+
%t1176 = call core.clamp(%t1168, 0, %t1174) :: integer
|
|
631
587
|
%t1177 = gather %t1165, %t1176 :: integer
|
|
632
|
-
%t1179 = select %t1172, %t1177,
|
|
633
|
-
%t1188 = call core.sub(%col_i_281,
|
|
634
|
-
%t1190 = call core.gte(%t1188,
|
|
588
|
+
%t1179 = select %t1172, %t1177, 0 :: integer
|
|
589
|
+
%t1188 = call core.sub(%col_i_281, 1) :: integer
|
|
590
|
+
%t1190 = call core.gte(%t1188, 0) :: boolean
|
|
635
591
|
%t1191 = call core.lt(%t1188, %t1166) :: boolean
|
|
636
592
|
%t1192 = call core.and(%t1190, %t1191) :: boolean
|
|
637
|
-
%t1196 = call core.clamp(%t1188,
|
|
593
|
+
%t1196 = call core.clamp(%t1188, 0, %t1174) :: integer
|
|
638
594
|
%t1197 = gather %t1165, %t1196 :: integer
|
|
639
|
-
%t1199 = select %t1192, %t1197,
|
|
595
|
+
%t1199 = select %t1192, %t1197, 0 :: integer
|
|
640
596
|
%t1218 = call core.lt(%t1168, %t1133) :: boolean
|
|
641
597
|
%t1219 = call core.and(%t1170, %t1218) :: boolean
|
|
642
598
|
%t1220 = call core.and(%t1127, %t1219) :: boolean
|
|
643
|
-
%t1224 = call core.clamp(%t1168,
|
|
599
|
+
%t1224 = call core.clamp(%t1168, 0, %t1222) :: integer
|
|
644
600
|
%t1225 = gather %t1132, %t1224 :: integer
|
|
645
|
-
%t1227 = select %t1220, %t1225,
|
|
601
|
+
%t1227 = select %t1220, %t1225, 0 :: integer
|
|
646
602
|
%t1246 = call core.lt(%t1188, %t1133) :: boolean
|
|
647
603
|
%t1247 = call core.and(%t1190, %t1246) :: boolean
|
|
648
604
|
%t1248 = call core.and(%t1127, %t1247) :: boolean
|
|
649
|
-
%t1252 = call core.clamp(%t1188,
|
|
605
|
+
%t1252 = call core.clamp(%t1188, 0, %t1222) :: integer
|
|
650
606
|
%t1253 = gather %t1132, %t1252 :: integer
|
|
651
|
-
%t1255 = select %t1248, %t1253,
|
|
607
|
+
%t1255 = select %t1248, %t1253, 0 :: integer
|
|
652
608
|
%t1274 = call core.lt(%t1168, %t1153) :: boolean
|
|
653
609
|
%t1275 = call core.and(%t1170, %t1274) :: boolean
|
|
654
610
|
%t1276 = call core.and(%t1147, %t1275) :: boolean
|
|
655
|
-
%t1280 = call core.clamp(%t1168,
|
|
611
|
+
%t1280 = call core.clamp(%t1168, 0, %t1278) :: integer
|
|
656
612
|
%t1281 = gather %t1152, %t1280 :: integer
|
|
657
|
-
%t1283 = select %t1276, %t1281,
|
|
613
|
+
%t1283 = select %t1276, %t1281, 0 :: integer
|
|
658
614
|
%t1302 = call core.lt(%t1188, %t1153) :: boolean
|
|
659
615
|
%t1303 = call core.and(%t1190, %t1302) :: boolean
|
|
660
616
|
%t1304 = call core.and(%t1147, %t1303) :: boolean
|
|
661
|
-
%t1308 = call core.clamp(%t1188,
|
|
617
|
+
%t1308 = call core.clamp(%t1188, 0, %t1278) :: integer
|
|
662
618
|
%t1309 = gather %t1152, %t1308 :: integer
|
|
663
|
-
%t1311 = select %t1304, %t1309,
|
|
619
|
+
%t1311 = select %t1304, %t1309, 0 :: integer
|
|
664
620
|
%t1118 = make_tuple(%t1139, %t1159, %t1179, %t1199, %t1227, %t1255, %t1283, %t1311) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
|
|
665
621
|
%t1119 = fold %t1118 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
|
|
666
|
-
%t1108 = call core.eq(%t1119,
|
|
667
|
-
%t1319 = call core.eq(%t1119,
|
|
668
|
-
%t1526 = call core.gt(%col_el_280,
|
|
622
|
+
%t1108 = call core.eq(%t1119, 3) :: boolean
|
|
623
|
+
%t1319 = call core.eq(%t1119, 2) :: boolean
|
|
624
|
+
%t1526 = call core.gt(%col_el_280, 0) :: boolean
|
|
669
625
|
%t1315 = call core.and(%t1319, %t1526) :: boolean
|
|
670
626
|
%t284 = call core.or(%t1108, %t1315) :: boolean
|
|
671
627
|
yield %t284
|
|
@@ -675,24 +631,17 @@
|
|
|
675
631
|
(Declaration next_state
|
|
676
632
|
%t285 = load_input "rows" :: array
|
|
677
633
|
%t1548 = length %t285 :: integer
|
|
678
|
-
%
|
|
679
|
-
%t1551 = const 0 :: integer
|
|
680
|
-
%t1555 = const 1 :: integer
|
|
681
|
-
%t1534 = const 3 :: integer
|
|
682
|
-
%t1745 = const 2 :: integer
|
|
683
|
-
%t1952 = const 0 :: integer
|
|
684
|
-
%t291 = const 1 :: integer
|
|
685
|
-
%t1556 = call core.sub(%t1548, %t1555) :: integer
|
|
634
|
+
%t1556 = call core.sub(%t1548, 1) :: integer
|
|
686
635
|
loop rows id=L31 in %t285 as el=%rows_el_286, idx=%rows_i_287
|
|
687
|
-
%t1550 = call core.sub(%rows_i_287,
|
|
688
|
-
%t1570 = call core.sub(%rows_i_287,
|
|
636
|
+
%t1550 = call core.sub(%rows_i_287, -1) :: integer
|
|
637
|
+
%t1570 = call core.sub(%rows_i_287, 1) :: integer
|
|
689
638
|
%t1589 = call core.mod(%rows_i_287, %t1548) :: integer
|
|
690
|
-
%t1552 = call core.gte(%t1550,
|
|
639
|
+
%t1552 = call core.gte(%t1550, 0) :: boolean
|
|
691
640
|
%t1553 = call core.lt(%t1550, %t1548) :: boolean
|
|
692
|
-
%t1558 = call core.clamp(%t1550,
|
|
693
|
-
%t1572 = call core.gte(%t1570,
|
|
641
|
+
%t1558 = call core.clamp(%t1550, 0, %t1556) :: integer
|
|
642
|
+
%t1572 = call core.gte(%t1570, 0) :: boolean
|
|
694
643
|
%t1573 = call core.lt(%t1570, %t1548) :: boolean
|
|
695
|
-
%t1578 = call core.clamp(%t1570,
|
|
644
|
+
%t1578 = call core.clamp(%t1570, 0, %t1556) :: integer
|
|
696
645
|
%t1590 = call core.add(%t1589, %t1548) :: integer
|
|
697
646
|
%t1554 = call core.and(%t1552, %t1553) :: boolean
|
|
698
647
|
%t1559 = gather %t285, %t1558 :: any
|
|
@@ -703,66 +652,66 @@
|
|
|
703
652
|
%t1580 = length %t1579 :: integer
|
|
704
653
|
%t1592 = gather %t285, %t1591 :: any
|
|
705
654
|
%t1593 = length %t1592 :: integer
|
|
706
|
-
%t1649 = call core.sub(%t1560,
|
|
707
|
-
%t1705 = call core.sub(%t1580,
|
|
708
|
-
%t1601 = call core.sub(%t1593,
|
|
655
|
+
%t1649 = call core.sub(%t1560, 1) :: integer
|
|
656
|
+
%t1705 = call core.sub(%t1580, 1) :: integer
|
|
657
|
+
%t1601 = call core.sub(%t1593, 1) :: integer
|
|
709
658
|
loop col id=L32 in %rows_el_286 as el=%col_el_288, idx=%col_i_289
|
|
710
659
|
%t1561 = call core.mod(%col_i_289, %t1560) :: integer
|
|
711
660
|
%t1562 = call core.add(%t1561, %t1560) :: integer
|
|
712
661
|
%t1563 = call core.mod(%t1562, %t1560) :: integer
|
|
713
662
|
%t1564 = gather %t1559, %t1563 :: integer
|
|
714
|
-
%t1566 = select %t1554, %t1564,
|
|
663
|
+
%t1566 = select %t1554, %t1564, 0 :: integer
|
|
715
664
|
%t1581 = call core.mod(%col_i_289, %t1580) :: integer
|
|
716
665
|
%t1582 = call core.add(%t1581, %t1580) :: integer
|
|
717
666
|
%t1583 = call core.mod(%t1582, %t1580) :: integer
|
|
718
667
|
%t1584 = gather %t1579, %t1583 :: integer
|
|
719
|
-
%t1586 = select %t1574, %t1584,
|
|
720
|
-
%t1595 = call core.sub(%col_i_289,
|
|
721
|
-
%t1597 = call core.gte(%t1595,
|
|
668
|
+
%t1586 = select %t1574, %t1584, 0 :: integer
|
|
669
|
+
%t1595 = call core.sub(%col_i_289, -1) :: integer
|
|
670
|
+
%t1597 = call core.gte(%t1595, 0) :: boolean
|
|
722
671
|
%t1598 = call core.lt(%t1595, %t1593) :: boolean
|
|
723
672
|
%t1599 = call core.and(%t1597, %t1598) :: boolean
|
|
724
|
-
%t1603 = call core.clamp(%t1595,
|
|
673
|
+
%t1603 = call core.clamp(%t1595, 0, %t1601) :: integer
|
|
725
674
|
%t1604 = gather %t1592, %t1603 :: integer
|
|
726
|
-
%t1606 = select %t1599, %t1604,
|
|
727
|
-
%t1615 = call core.sub(%col_i_289,
|
|
728
|
-
%t1617 = call core.gte(%t1615,
|
|
675
|
+
%t1606 = select %t1599, %t1604, 0 :: integer
|
|
676
|
+
%t1615 = call core.sub(%col_i_289, 1) :: integer
|
|
677
|
+
%t1617 = call core.gte(%t1615, 0) :: boolean
|
|
729
678
|
%t1618 = call core.lt(%t1615, %t1593) :: boolean
|
|
730
679
|
%t1619 = call core.and(%t1617, %t1618) :: boolean
|
|
731
|
-
%t1623 = call core.clamp(%t1615,
|
|
680
|
+
%t1623 = call core.clamp(%t1615, 0, %t1601) :: integer
|
|
732
681
|
%t1624 = gather %t1592, %t1623 :: integer
|
|
733
|
-
%t1626 = select %t1619, %t1624,
|
|
682
|
+
%t1626 = select %t1619, %t1624, 0 :: integer
|
|
734
683
|
%t1645 = call core.lt(%t1595, %t1560) :: boolean
|
|
735
684
|
%t1646 = call core.and(%t1597, %t1645) :: boolean
|
|
736
685
|
%t1647 = call core.and(%t1554, %t1646) :: boolean
|
|
737
|
-
%t1651 = call core.clamp(%t1595,
|
|
686
|
+
%t1651 = call core.clamp(%t1595, 0, %t1649) :: integer
|
|
738
687
|
%t1652 = gather %t1559, %t1651 :: integer
|
|
739
|
-
%t1654 = select %t1647, %t1652,
|
|
688
|
+
%t1654 = select %t1647, %t1652, 0 :: integer
|
|
740
689
|
%t1673 = call core.lt(%t1615, %t1560) :: boolean
|
|
741
690
|
%t1674 = call core.and(%t1617, %t1673) :: boolean
|
|
742
691
|
%t1675 = call core.and(%t1554, %t1674) :: boolean
|
|
743
|
-
%t1679 = call core.clamp(%t1615,
|
|
692
|
+
%t1679 = call core.clamp(%t1615, 0, %t1649) :: integer
|
|
744
693
|
%t1680 = gather %t1559, %t1679 :: integer
|
|
745
|
-
%t1682 = select %t1675, %t1680,
|
|
694
|
+
%t1682 = select %t1675, %t1680, 0 :: integer
|
|
746
695
|
%t1701 = call core.lt(%t1595, %t1580) :: boolean
|
|
747
696
|
%t1702 = call core.and(%t1597, %t1701) :: boolean
|
|
748
697
|
%t1703 = call core.and(%t1574, %t1702) :: boolean
|
|
749
|
-
%t1707 = call core.clamp(%t1595,
|
|
698
|
+
%t1707 = call core.clamp(%t1595, 0, %t1705) :: integer
|
|
750
699
|
%t1708 = gather %t1579, %t1707 :: integer
|
|
751
|
-
%t1710 = select %t1703, %t1708,
|
|
700
|
+
%t1710 = select %t1703, %t1708, 0 :: integer
|
|
752
701
|
%t1729 = call core.lt(%t1615, %t1580) :: boolean
|
|
753
702
|
%t1730 = call core.and(%t1617, %t1729) :: boolean
|
|
754
703
|
%t1731 = call core.and(%t1574, %t1730) :: boolean
|
|
755
|
-
%t1735 = call core.clamp(%t1615,
|
|
704
|
+
%t1735 = call core.clamp(%t1615, 0, %t1705) :: integer
|
|
756
705
|
%t1736 = gather %t1579, %t1735 :: integer
|
|
757
|
-
%t1738 = select %t1731, %t1736,
|
|
706
|
+
%t1738 = select %t1731, %t1736, 0 :: integer
|
|
758
707
|
%t1545 = make_tuple(%t1566, %t1586, %t1606, %t1626, %t1654, %t1682, %t1710, %t1738) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
|
|
759
708
|
%t1546 = fold %t1545 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
|
|
760
|
-
%t1535 = call core.eq(%t1546,
|
|
761
|
-
%t1746 = call core.eq(%t1546,
|
|
762
|
-
%t1953 = call core.gt(%col_el_288,
|
|
709
|
+
%t1535 = call core.eq(%t1546, 3) :: boolean
|
|
710
|
+
%t1746 = call core.eq(%t1546, 2) :: boolean
|
|
711
|
+
%t1953 = call core.gt(%col_el_288, 0) :: boolean
|
|
763
712
|
%t1742 = call core.and(%t1746, %t1953) :: boolean
|
|
764
713
|
%t1531 = call core.or(%t1535, %t1742) :: boolean
|
|
765
|
-
%t293 = select %t1531,
|
|
714
|
+
%t293 = select %t1531, 1, 0 :: integer
|
|
766
715
|
yield %t293
|
|
767
716
|
end_loop
|
|
768
717
|
end_loop
|