kumi 0.0.18 → 0.0.19
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/.rubocop.yml +4 -1
- data/.ruby-version +1 -0
- data/CHANGELOG.md +25 -0
- data/CLAUDE.md +26 -139
- data/README.md +143 -372
- data/data/functions/agg/boolean.yaml +14 -0
- data/data/functions/agg/numeric.yaml +80 -0
- data/data/functions/agg/string.yaml +8 -0
- data/data/functions/core/arithmetic.yaml +50 -0
- data/data/functions/core/boolean.yaml +18 -0
- data/data/functions/core/comparison.yaml +42 -0
- data/data/functions/core/constructor.yaml +32 -0
- data/data/functions/core/select.yaml +7 -0
- data/data/functions/core/stencil.yaml +21 -0
- data/data/functions/core/string.yaml +19 -0
- data/data/kernels/javascript/agg/boolean.yaml +12 -0
- data/data/kernels/javascript/agg/numeric.yaml +27 -0
- data/data/kernels/javascript/agg/string.yaml +5 -0
- data/data/kernels/javascript/core/arithmetic.yaml +32 -0
- data/data/kernels/javascript/core/boolean.yaml +12 -0
- data/data/kernels/javascript/core/comparison.yaml +24 -0
- data/data/kernels/javascript/core/constructor.yaml +15 -0
- data/data/kernels/javascript/core/select.yaml +7 -0
- data/data/kernels/javascript/core/string.yaml +12 -0
- data/data/kernels/ruby/agg/boolean.yaml +18 -0
- data/data/kernels/ruby/agg/numeric.yaml +29 -0
- data/data/kernels/ruby/agg/string.yaml +5 -0
- data/data/kernels/ruby/core/arithmetic.yaml +38 -0
- data/data/kernels/ruby/core/boolean.yaml +15 -0
- data/data/kernels/ruby/core/comparison.yaml +30 -0
- data/data/kernels/ruby/core/constructor.yaml +17 -0
- data/data/kernels/ruby/core/select.yaml +4 -0
- data/data/kernels/ruby/core/string.yaml +15 -0
- data/debug_ordering.rb +52 -0
- data/docs/FORM_SCHEMA.md +85 -0
- data/docs/OUTPUT_SCHEMA.md +69 -0
- data/docs/SYNTAX.md +626 -373
- data/golden/array_element/expected/ast.txt +21 -0
- data/golden/array_element/expected/input_plan.txt +5 -0
- data/golden/array_element/expected/lir_00_unoptimized.txt +13 -0
- data/golden/array_element/expected/lir_01_hoist_scalar_references.txt +13 -0
- data/golden/array_element/expected/lir_02_inlined.txt +13 -0
- data/golden/array_element/expected/lir_03_cse.txt +13 -0
- data/golden/array_element/expected/lir_04_1_loop_fusion.txt +13 -0
- data/golden/array_element/expected/lir_04_loop_invcm.txt +13 -0
- data/golden/array_element/expected/lir_06_const_prop.txt +13 -0
- data/golden/array_element/expected/nast.txt +7 -0
- data/golden/array_element/expected/schema_javascript.mjs +13 -0
- data/golden/array_element/expected/schema_ruby.rb +41 -0
- data/golden/array_element/expected/snast.txt +7 -0
- data/golden/array_element/expected.json +5 -0
- data/golden/array_element/input.json +9 -0
- data/golden/array_element/schema.kumi +11 -0
- data/golden/array_index/expected/ast.txt +59 -0
- data/golden/array_index/expected/input_plan.txt +5 -0
- data/golden/array_index/expected/lir_00_unoptimized.txt +41 -0
- data/golden/array_index/expected/lir_01_hoist_scalar_references.txt +41 -0
- data/golden/array_index/expected/lir_02_inlined.txt +42 -0
- data/golden/array_index/expected/lir_03_cse.txt +40 -0
- data/golden/array_index/expected/lir_04_1_loop_fusion.txt +40 -0
- data/golden/array_index/expected/lir_04_loop_invcm.txt +40 -0
- data/golden/array_index/expected/lir_06_const_prop.txt +40 -0
- data/golden/array_index/expected/nast.txt +33 -0
- data/golden/array_index/expected/schema_javascript.mjs +46 -0
- data/golden/array_index/expected/schema_ruby.rb +75 -0
- data/golden/array_index/expected/snast.txt +33 -0
- data/golden/array_index/expected.json +5 -0
- data/golden/array_index/input.json +1 -0
- data/golden/array_index/schema.kumi +19 -0
- data/golden/array_operations/expected/ast.txt +50 -0
- data/golden/array_operations/expected/input_plan.txt +10 -0
- data/golden/array_operations/expected/lir_00_unoptimized.txt +47 -0
- data/golden/array_operations/expected/lir_01_hoist_scalar_references.txt +47 -0
- data/golden/array_operations/expected/lir_02_inlined.txt +47 -0
- data/golden/array_operations/expected/lir_03_cse.txt +47 -0
- data/golden/array_operations/expected/lir_04_1_loop_fusion.txt +47 -0
- data/golden/array_operations/expected/lir_04_loop_invcm.txt +47 -0
- data/golden/array_operations/expected/lir_06_const_prop.txt +47 -0
- data/golden/array_operations/expected/nast.txt +32 -0
- data/golden/array_operations/expected/schema_javascript.mjs +60 -0
- data/golden/array_operations/expected/schema_ruby.rb +91 -0
- data/golden/array_operations/expected/snast.txt +32 -0
- data/golden/array_operations/expected.json +27 -0
- data/golden/array_operations/input.json +8 -0
- data/golden/array_operations/schema.kumi +12 -10
- data/golden/cascade_logic/expected/ast.txt +37 -0
- data/golden/cascade_logic/expected/input_plan.txt +2 -0
- data/golden/cascade_logic/expected/lir_00_unoptimized.txt +29 -0
- data/golden/cascade_logic/expected/lir_01_hoist_scalar_references.txt +29 -0
- data/golden/cascade_logic/expected/lir_02_inlined.txt +37 -0
- data/golden/cascade_logic/expected/lir_03_cse.txt +30 -0
- data/golden/cascade_logic/expected/lir_04_1_loop_fusion.txt +30 -0
- data/golden/cascade_logic/expected/lir_04_loop_invcm.txt +30 -0
- data/golden/cascade_logic/expected/lir_06_const_prop.txt +30 -0
- data/golden/cascade_logic/expected/nast.txt +32 -0
- data/golden/cascade_logic/expected/schema_javascript.mjs +31 -0
- data/golden/cascade_logic/expected/schema_ruby.rb +57 -0
- data/golden/cascade_logic/expected/snast.txt +32 -0
- data/golden/cascade_logic/expected.json +5 -0
- data/golden/cascade_logic/input.json +4 -0
- data/golden/cascade_logic/schema.kumi +1 -3
- data/golden/chained_fusion/expected/ast.txt +57 -0
- data/golden/chained_fusion/expected/input_plan.txt +13 -0
- data/golden/chained_fusion/expected/lir_00_unoptimized.txt +76 -0
- data/golden/chained_fusion/expected/lir_01_hoist_scalar_references.txt +76 -0
- data/golden/chained_fusion/expected/lir_02_inlined.txt +114 -0
- data/golden/chained_fusion/expected/lir_03_cse.txt +97 -0
- data/golden/chained_fusion/expected/lir_04_1_loop_fusion.txt +99 -0
- data/golden/chained_fusion/expected/lir_04_loop_invcm.txt +97 -0
- data/golden/chained_fusion/expected/lir_06_const_prop.txt +97 -0
- data/golden/chained_fusion/expected/nast.txt +55 -0
- data/golden/chained_fusion/expected/schema_javascript.mjs +116 -0
- data/golden/chained_fusion/expected/schema_ruby.rb +149 -0
- data/golden/chained_fusion/expected/snast.txt +55 -0
- data/golden/chained_fusion/expected.json +45 -0
- data/golden/chained_fusion/input.json +51 -0
- data/golden/chained_fusion/schema.kumi +52 -0
- data/golden/element_arrays/expected/ast.txt +55 -0
- data/golden/element_arrays/expected/input_plan.txt +7 -0
- data/golden/element_arrays/expected/lir_00_unoptimized.txt +81 -0
- data/golden/element_arrays/expected/lir_01_hoist_scalar_references.txt +81 -0
- data/golden/element_arrays/expected/lir_02_inlined.txt +85 -0
- data/golden/element_arrays/expected/lir_03_cse.txt +83 -0
- data/golden/element_arrays/expected/lir_04_1_loop_fusion.txt +83 -0
- data/golden/element_arrays/expected/lir_04_loop_invcm.txt +83 -0
- data/golden/element_arrays/expected/lir_06_const_prop.txt +83 -0
- data/golden/element_arrays/expected/nast.txt +42 -0
- data/golden/element_arrays/expected/schema_javascript.mjs +106 -0
- data/golden/element_arrays/expected/schema_ruby.rb +141 -0
- data/golden/element_arrays/expected/snast.txt +42 -0
- data/golden/element_arrays/expected.json +55 -0
- data/golden/element_arrays/input.json +12 -0
- data/golden/element_arrays/schema.kumi +21 -0
- data/golden/empty_and_null_inputs/expected/ast.txt +42 -0
- data/golden/empty_and_null_inputs/expected/input_plan.txt +12 -0
- data/golden/empty_and_null_inputs/expected/lir_00_unoptimized.txt +31 -0
- data/golden/empty_and_null_inputs/expected/lir_01_hoist_scalar_references.txt +31 -0
- data/golden/empty_and_null_inputs/expected/lir_02_inlined.txt +51 -0
- data/golden/empty_and_null_inputs/expected/lir_03_cse.txt +49 -0
- data/golden/empty_and_null_inputs/expected/lir_04_1_loop_fusion.txt +49 -0
- data/golden/empty_and_null_inputs/expected/lir_04_loop_invcm.txt +49 -0
- data/golden/empty_and_null_inputs/expected/lir_06_const_prop.txt +49 -0
- data/golden/empty_and_null_inputs/expected/nast.txt +18 -0
- data/golden/empty_and_null_inputs/expected/schema_javascript.mjs +47 -0
- data/golden/empty_and_null_inputs/expected/schema_ruby.rb +79 -0
- data/golden/empty_and_null_inputs/expected/snast.txt +18 -0
- data/golden/empty_and_null_inputs/expected.json +8 -0
- data/golden/empty_and_null_inputs/input.json +16 -0
- data/golden/empty_and_null_inputs/schema.kumi +30 -0
- data/golden/game_of_life/expected/ast.txt +118 -0
- data/golden/game_of_life/expected/input_plan.txt +5 -0
- data/golden/game_of_life/expected/lir_00_unoptimized.txt +343 -0
- data/golden/game_of_life/expected/lir_01_hoist_scalar_references.txt +343 -0
- data/golden/game_of_life/expected/lir_02_inlined.txt +1918 -0
- data/golden/game_of_life/expected/lir_03_cse.txt +766 -0
- data/golden/game_of_life/expected/lir_04_1_loop_fusion.txt +766 -0
- data/golden/game_of_life/expected/lir_04_loop_invcm.txt +766 -0
- data/golden/game_of_life/expected/lir_06_const_prop.txt +766 -0
- data/golden/game_of_life/expected/nast.txt +104 -0
- data/golden/game_of_life/expected/schema_javascript.mjs +98 -0
- data/golden/game_of_life/expected/schema_ruby.rb +125 -0
- data/golden/game_of_life/expected/snast.txt +104 -0
- data/golden/game_of_life/expected.json +3 -0
- data/golden/game_of_life/input.json +8 -0
- data/golden/game_of_life/schema.kumi +33 -0
- data/golden/hash_keys/expected/ast.txt +29 -0
- data/golden/hash_keys/expected/input_plan.txt +2 -0
- data/golden/hash_keys/expected/lir_00_unoptimized.txt +18 -0
- data/golden/hash_keys/expected/lir_01_hoist_scalar_references.txt +18 -0
- data/golden/hash_keys/expected/lir_02_inlined.txt +18 -0
- data/golden/hash_keys/expected/lir_03_cse.txt +18 -0
- data/golden/hash_keys/expected/lir_04_1_loop_fusion.txt +18 -0
- data/golden/hash_keys/expected/lir_04_loop_invcm.txt +18 -0
- data/golden/hash_keys/expected/lir_06_const_prop.txt +18 -0
- data/golden/hash_keys/expected/nast.txt +46 -0
- data/golden/hash_keys/expected/schema_javascript.mjs +34 -0
- data/golden/hash_keys/expected/schema_ruby.rb +61 -0
- data/golden/hash_keys/expected/snast.txt +46 -0
- data/golden/hash_keys/expected.json +20 -0
- data/golden/hash_keys/input.json +4 -0
- data/golden/hash_keys/schema.kumi +14 -0
- data/golden/hash_value/expected/ast.txt +37 -0
- data/golden/hash_value/expected/input_plan.txt +7 -0
- data/golden/hash_value/expected/lir_00_unoptimized.txt +30 -0
- data/golden/hash_value/expected/lir_01_hoist_scalar_references.txt +30 -0
- data/golden/hash_value/expected/lir_02_inlined.txt +36 -0
- data/golden/hash_value/expected/lir_03_cse.txt +33 -0
- data/golden/hash_value/expected/lir_04_1_loop_fusion.txt +33 -0
- data/golden/hash_value/expected/lir_04_loop_invcm.txt +33 -0
- data/golden/hash_value/expected/lir_06_const_prop.txt +33 -0
- data/golden/hash_value/expected/nast.txt +25 -0
- data/golden/hash_value/expected/schema_javascript.mjs +46 -0
- data/golden/hash_value/expected/schema_ruby.rb +75 -0
- data/golden/hash_value/expected/snast.txt +25 -0
- data/golden/hash_value/expected.json +19 -0
- data/golden/hash_value/input.json +12 -0
- data/golden/hash_value/schema.kumi +19 -0
- data/golden/hierarchical_complex/expected/ast.txt +85 -0
- data/golden/hierarchical_complex/expected/input_plan.txt +23 -0
- data/golden/hierarchical_complex/expected/lir_00_unoptimized.txt +87 -0
- data/golden/hierarchical_complex/expected/lir_01_hoist_scalar_references.txt +87 -0
- data/golden/hierarchical_complex/expected/lir_02_inlined.txt +115 -0
- data/golden/hierarchical_complex/expected/lir_03_cse.txt +89 -0
- data/golden/hierarchical_complex/expected/lir_04_1_loop_fusion.txt +89 -0
- data/golden/hierarchical_complex/expected/lir_04_loop_invcm.txt +89 -0
- data/golden/hierarchical_complex/expected/lir_06_const_prop.txt +89 -0
- data/golden/hierarchical_complex/expected/nast.txt +49 -0
- data/golden/hierarchical_complex/expected/schema_javascript.mjs +121 -0
- data/golden/hierarchical_complex/expected/schema_ruby.rb +151 -0
- data/golden/hierarchical_complex/expected/snast.txt +49 -0
- data/golden/hierarchical_complex/expected.json +34 -0
- data/golden/hierarchical_complex/input.json +26 -0
- data/golden/hierarchical_complex/schema.kumi +38 -0
- data/golden/input_reference/expected/ast.txt +46 -0
- data/golden/input_reference/expected/input_plan.txt +15 -0
- data/golden/input_reference/expected/lir_00_unoptimized.txt +39 -0
- data/golden/input_reference/expected/lir_01_hoist_scalar_references.txt +39 -0
- data/golden/input_reference/expected/lir_02_inlined.txt +39 -0
- data/golden/input_reference/expected/lir_03_cse.txt +39 -0
- data/golden/input_reference/expected/lir_04_1_loop_fusion.txt +39 -0
- data/golden/input_reference/expected/lir_04_loop_invcm.txt +39 -0
- data/golden/input_reference/expected/lir_06_const_prop.txt +39 -0
- data/golden/input_reference/expected/nast.txt +21 -0
- data/golden/input_reference/expected/schema_javascript.mjs +45 -0
- data/golden/input_reference/expected/schema_ruby.rb +74 -0
- data/golden/input_reference/expected/snast.txt +21 -0
- data/golden/input_reference/expected.json +7 -0
- data/golden/input_reference/input.json +11 -0
- data/golden/input_reference/schema.kumi +22 -0
- data/golden/interleaved_fusion/expected/ast.txt +51 -0
- data/golden/interleaved_fusion/expected/input_plan.txt +13 -0
- data/golden/interleaved_fusion/expected/lir_00_unoptimized.txt +53 -0
- data/golden/interleaved_fusion/expected/lir_01_hoist_scalar_references.txt +53 -0
- data/golden/interleaved_fusion/expected/lir_02_inlined.txt +89 -0
- data/golden/interleaved_fusion/expected/lir_03_cse.txt +77 -0
- data/golden/interleaved_fusion/expected/lir_04_1_loop_fusion.txt +77 -0
- data/golden/interleaved_fusion/expected/lir_04_loop_invcm.txt +77 -0
- data/golden/interleaved_fusion/expected/lir_06_const_prop.txt +77 -0
- data/golden/interleaved_fusion/expected/nast.txt +41 -0
- data/golden/interleaved_fusion/expected/schema_javascript.mjs +86 -0
- data/golden/interleaved_fusion/expected/schema_ruby.rb +122 -0
- data/golden/interleaved_fusion/expected/snast.txt +41 -0
- data/golden/interleaved_fusion/expected.json +37 -0
- data/golden/interleaved_fusion/input.json +26 -0
- data/golden/interleaved_fusion/schema.kumi +57 -0
- data/golden/let_inline/expected/ast.txt +33 -0
- data/golden/let_inline/expected/input_plan.txt +2 -0
- data/golden/let_inline/expected/lir_00_unoptimized.txt +26 -0
- data/golden/let_inline/expected/lir_01_hoist_scalar_references.txt +26 -0
- data/golden/let_inline/expected/lir_02_inlined.txt +36 -0
- data/golden/let_inline/expected/lir_03_cse.txt +30 -0
- data/golden/let_inline/expected/lir_04_1_loop_fusion.txt +30 -0
- data/golden/let_inline/expected/lir_04_loop_invcm.txt +30 -0
- data/golden/let_inline/expected/lir_06_const_prop.txt +30 -0
- data/golden/let_inline/expected/nast.txt +26 -0
- data/golden/let_inline/expected/schema_javascript.mjs +11 -0
- data/golden/let_inline/expected/schema_ruby.rb +37 -0
- data/golden/let_inline/expected/snast.txt +26 -0
- data/golden/let_inline/expected.json +1 -0
- data/golden/let_inline/input.json +1 -0
- data/golden/let_inline/schema.kumi +11 -0
- data/golden/loop_fusion/expected/ast.txt +44 -0
- data/golden/loop_fusion/expected/input_plan.txt +13 -0
- data/golden/loop_fusion/expected/lir_00_unoptimized.txt +43 -0
- data/golden/loop_fusion/expected/lir_01_hoist_scalar_references.txt +43 -0
- data/golden/loop_fusion/expected/lir_02_inlined.txt +62 -0
- data/golden/loop_fusion/expected/lir_03_cse.txt +57 -0
- data/golden/loop_fusion/expected/lir_04_1_loop_fusion.txt +57 -0
- data/golden/loop_fusion/expected/lir_04_loop_invcm.txt +57 -0
- data/golden/loop_fusion/expected/lir_06_const_prop.txt +57 -0
- data/golden/loop_fusion/expected/nast.txt +32 -0
- data/golden/loop_fusion/expected/schema_javascript.mjs +64 -0
- data/golden/loop_fusion/expected/schema_ruby.rb +97 -0
- data/golden/loop_fusion/expected/snast.txt +32 -0
- data/golden/loop_fusion/expected.json +30 -0
- data/golden/loop_fusion/input.json +28 -0
- data/golden/loop_fusion/schema.kumi +32 -0
- data/golden/min_reduce_scope/expected/ast.txt +49 -0
- data/golden/min_reduce_scope/expected/input_plan.txt +9 -0
- data/golden/min_reduce_scope/expected/lir_00_unoptimized.txt +59 -0
- data/golden/min_reduce_scope/expected/lir_01_hoist_scalar_references.txt +59 -0
- data/golden/min_reduce_scope/expected/lir_02_inlined.txt +63 -0
- data/golden/min_reduce_scope/expected/lir_03_cse.txt +60 -0
- data/golden/min_reduce_scope/expected/lir_04_1_loop_fusion.txt +60 -0
- data/golden/min_reduce_scope/expected/lir_04_loop_invcm.txt +60 -0
- data/golden/min_reduce_scope/expected/lir_06_const_prop.txt +60 -0
- data/golden/min_reduce_scope/expected/nast.txt +29 -0
- data/golden/min_reduce_scope/expected/schema_javascript.mjs +66 -0
- data/golden/min_reduce_scope/expected/schema_ruby.rb +99 -0
- data/golden/min_reduce_scope/expected/snast.txt +29 -0
- data/golden/min_reduce_scope/expected.json +9 -0
- data/golden/min_reduce_scope/input.json +18 -0
- data/golden/min_reduce_scope/schema.kumi +25 -0
- data/golden/mixed_dimensions/expected/ast.txt +54 -0
- data/golden/mixed_dimensions/expected/input_plan.txt +15 -0
- data/golden/mixed_dimensions/expected/lir_00_unoptimized.txt +42 -0
- data/golden/mixed_dimensions/expected/lir_01_hoist_scalar_references.txt +42 -0
- data/golden/mixed_dimensions/expected/lir_02_inlined.txt +48 -0
- data/golden/mixed_dimensions/expected/lir_03_cse.txt +48 -0
- data/golden/mixed_dimensions/expected/lir_04_1_loop_fusion.txt +48 -0
- data/golden/mixed_dimensions/expected/lir_04_loop_invcm.txt +48 -0
- data/golden/mixed_dimensions/expected/lir_06_const_prop.txt +48 -0
- data/golden/mixed_dimensions/expected/nast.txt +22 -0
- data/golden/mixed_dimensions/expected/schema_javascript.mjs +53 -0
- data/golden/mixed_dimensions/expected/schema_ruby.rb +84 -0
- data/golden/mixed_dimensions/expected/snast.txt +22 -0
- data/golden/mixed_dimensions/expected.json +6 -0
- data/golden/mixed_dimensions/input.json +22 -0
- data/golden/mixed_dimensions/schema.kumi +35 -0
- data/golden/multirank_hoisting/expected/ast.txt +72 -0
- data/golden/multirank_hoisting/expected/input_plan.txt +18 -0
- data/golden/multirank_hoisting/expected/lir_00_unoptimized.txt +75 -0
- data/golden/multirank_hoisting/expected/lir_01_hoist_scalar_references.txt +75 -0
- data/golden/multirank_hoisting/expected/lir_02_inlined.txt +126 -0
- data/golden/multirank_hoisting/expected/lir_03_cse.txt +109 -0
- data/golden/multirank_hoisting/expected/lir_04_1_loop_fusion.txt +109 -0
- data/golden/multirank_hoisting/expected/lir_04_loop_invcm.txt +109 -0
- data/golden/multirank_hoisting/expected/lir_06_const_prop.txt +109 -0
- data/golden/multirank_hoisting/expected/nast.txt +39 -0
- data/golden/multirank_hoisting/expected/schema_javascript.mjs +128 -0
- data/golden/multirank_hoisting/expected/schema_ruby.rb +162 -0
- data/golden/multirank_hoisting/expected/snast.txt +39 -0
- data/golden/multirank_hoisting/expected.json +15 -0
- data/golden/multirank_hoisting/input.json +19 -0
- data/golden/multirank_hoisting/schema.kumi +38 -0
- data/golden/nested_hash/expected/ast.txt +22 -0
- data/golden/nested_hash/expected/input_plan.txt +5 -0
- data/golden/nested_hash/expected/lir_00_unoptimized.txt +10 -0
- data/golden/nested_hash/expected/lir_01_hoist_scalar_references.txt +10 -0
- data/golden/nested_hash/expected/lir_02_inlined.txt +10 -0
- data/golden/nested_hash/expected/lir_03_cse.txt +10 -0
- data/golden/nested_hash/expected/lir_04_1_loop_fusion.txt +10 -0
- data/golden/nested_hash/expected/lir_04_loop_invcm.txt +10 -0
- data/golden/nested_hash/expected/lir_06_const_prop.txt +10 -0
- data/golden/nested_hash/expected/nast.txt +8 -0
- data/golden/nested_hash/expected/schema_javascript.mjs +9 -0
- data/golden/nested_hash/expected/schema_ruby.rb +35 -0
- data/golden/nested_hash/expected/snast.txt +8 -0
- data/golden/nested_hash/expected.json +3 -0
- data/golden/nested_hash/input.json +7 -0
- data/golden/nested_hash/schema.kumi +11 -0
- data/golden/reduction_broadcast/expected/ast.txt +49 -0
- data/golden/reduction_broadcast/expected/input_plan.txt +13 -0
- data/golden/reduction_broadcast/expected/lir_00_unoptimized.txt +49 -0
- data/golden/reduction_broadcast/expected/lir_01_hoist_scalar_references.txt +49 -0
- data/golden/reduction_broadcast/expected/lir_02_inlined.txt +80 -0
- data/golden/reduction_broadcast/expected/lir_03_cse.txt +68 -0
- data/golden/reduction_broadcast/expected/lir_04_1_loop_fusion.txt +68 -0
- data/golden/reduction_broadcast/expected/lir_04_loop_invcm.txt +68 -0
- data/golden/reduction_broadcast/expected/lir_06_const_prop.txt +68 -0
- data/golden/reduction_broadcast/expected/nast.txt +24 -0
- data/golden/reduction_broadcast/expected/schema_javascript.mjs +74 -0
- data/golden/reduction_broadcast/expected/schema_ruby.rb +110 -0
- data/golden/reduction_broadcast/expected/snast.txt +24 -0
- data/golden/reduction_broadcast/expected.json +25 -0
- data/golden/reduction_broadcast/input.json +19 -0
- data/golden/reduction_broadcast/schema.kumi +34 -0
- data/golden/roll/expected/ast.txt +36 -0
- data/golden/roll/expected/input_plan.txt +3 -0
- data/golden/roll/expected/lir_00_unoptimized.txt +56 -0
- data/golden/roll/expected/lir_01_hoist_scalar_references.txt +56 -0
- data/golden/roll/expected/lir_02_inlined.txt +56 -0
- data/golden/roll/expected/lir_03_cse.txt +55 -0
- data/golden/roll/expected/lir_04_1_loop_fusion.txt +55 -0
- data/golden/roll/expected/lir_04_loop_invcm.txt +55 -0
- data/golden/roll/expected/lir_06_const_prop.txt +55 -0
- data/golden/roll/expected/nast.txt +26 -0
- data/golden/roll/expected/schema_javascript.mjs +65 -0
- data/golden/roll/expected/schema_ruby.rb +95 -0
- data/golden/roll/expected/snast.txt +26 -0
- data/golden/roll/expected.json +6 -0
- data/golden/roll/input.json +1 -0
- data/golden/roll/schema.kumi +13 -0
- data/golden/shift/expected/ast.txt +48 -0
- data/golden/shift/expected/input_plan.txt +3 -0
- data/golden/shift/expected/lir_00_unoptimized.txt +96 -0
- data/golden/shift/expected/lir_01_hoist_scalar_references.txt +96 -0
- data/golden/shift/expected/lir_02_inlined.txt +96 -0
- data/golden/shift/expected/lir_03_cse.txt +90 -0
- data/golden/shift/expected/lir_04_1_loop_fusion.txt +90 -0
- data/golden/shift/expected/lir_04_loop_invcm.txt +90 -0
- data/golden/shift/expected/lir_06_const_prop.txt +90 -0
- data/golden/shift/expected/nast.txt +38 -0
- data/golden/shift/expected/schema_javascript.mjs +106 -0
- data/golden/shift/expected/schema_ruby.rb +138 -0
- data/golden/shift/expected/snast.txt +38 -0
- data/golden/shift/expected.json +8 -0
- data/golden/shift/input.json +1 -0
- data/golden/shift/schema.kumi +15 -0
- data/golden/shift_2d/expected/ast.txt +88 -0
- data/golden/shift_2d/expected/input_plan.txt +5 -0
- data/golden/shift_2d/expected/lir_00_unoptimized.txt +274 -0
- data/golden/shift_2d/expected/lir_01_hoist_scalar_references.txt +274 -0
- data/golden/shift_2d/expected/lir_02_inlined.txt +274 -0
- data/golden/shift_2d/expected/lir_03_cse.txt +262 -0
- data/golden/shift_2d/expected/lir_04_1_loop_fusion.txt +262 -0
- data/golden/shift_2d/expected/lir_04_loop_invcm.txt +262 -0
- data/golden/shift_2d/expected/lir_06_const_prop.txt +262 -0
- data/golden/shift_2d/expected/nast.txt +74 -0
- data/golden/shift_2d/expected/schema_javascript.mjs +320 -0
- data/golden/shift_2d/expected/schema_ruby.rb +358 -0
- data/golden/shift_2d/expected/snast.txt +74 -0
- data/golden/shift_2d/expected.json +15 -0
- data/golden/shift_2d/input.json +14 -0
- data/golden/shift_2d/schema.kumi +25 -0
- data/golden/simple_math/expected/ast.txt +40 -0
- data/golden/simple_math/expected/input_plan.txt +2 -0
- data/golden/simple_math/expected/lir_00_unoptimized.txt +31 -0
- data/golden/simple_math/expected/lir_01_hoist_scalar_references.txt +31 -0
- data/golden/simple_math/expected/lir_02_inlined.txt +31 -0
- data/golden/simple_math/expected/lir_03_cse.txt +31 -0
- data/golden/simple_math/expected/lir_04_1_loop_fusion.txt +31 -0
- data/golden/simple_math/expected/lir_04_loop_invcm.txt +31 -0
- data/golden/simple_math/expected/lir_06_const_prop.txt +31 -0
- data/golden/simple_math/expected/nast.txt +33 -0
- data/golden/simple_math/expected/schema_javascript.mjs +33 -0
- data/golden/simple_math/expected/schema_ruby.rb +59 -0
- data/golden/simple_math/expected/snast.txt +33 -0
- data/golden/simple_math/expected.json +1 -0
- data/golden/simple_math/input.json +4 -0
- data/golden/simple_math/schema.kumi +2 -1
- data/golden/streaming_basics/expected/ast.txt +64 -0
- data/golden/streaming_basics/expected/input_plan.txt +8 -0
- data/golden/streaming_basics/expected/lir_00_unoptimized.txt +73 -0
- data/golden/streaming_basics/expected/lir_01_hoist_scalar_references.txt +73 -0
- data/golden/streaming_basics/expected/lir_02_inlined.txt +100 -0
- data/golden/streaming_basics/expected/lir_03_cse.txt +84 -0
- data/golden/streaming_basics/expected/lir_04_1_loop_fusion.txt +84 -0
- data/golden/streaming_basics/expected/lir_04_loop_invcm.txt +84 -0
- data/golden/streaming_basics/expected/lir_06_const_prop.txt +84 -0
- data/golden/streaming_basics/expected/nast.txt +48 -0
- data/golden/streaming_basics/expected/schema_javascript.mjs +94 -0
- data/golden/streaming_basics/expected/schema_ruby.rb +127 -0
- data/golden/streaming_basics/expected/snast.txt +48 -0
- data/golden/streaming_basics/expected.json +10 -0
- data/golden/streaming_basics/input.json +8 -0
- data/golden/streaming_basics/schema.kumi +24 -0
- data/golden/tuples/expected/ast.txt +48 -0
- data/golden/tuples/expected/input_plan.txt +1 -0
- data/golden/tuples/expected/lir_00_unoptimized.txt +40 -0
- data/golden/tuples/expected/lir_01_hoist_scalar_references.txt +40 -0
- data/golden/tuples/expected/lir_02_inlined.txt +48 -0
- data/golden/tuples/expected/lir_03_cse.txt +48 -0
- data/golden/tuples/expected/lir_04_1_loop_fusion.txt +48 -0
- data/golden/tuples/expected/lir_04_loop_invcm.txt +48 -0
- data/golden/tuples/expected/lir_06_const_prop.txt +48 -0
- data/golden/tuples/expected/nast.txt +42 -0
- data/golden/tuples/expected/schema_javascript.mjs +51 -0
- data/golden/tuples/expected/schema_ruby.rb +77 -0
- data/golden/tuples/expected/snast.txt +42 -0
- data/golden/tuples/expected.json +7 -0
- data/golden/tuples/input.json +3 -0
- data/golden/tuples/schema.kumi +11 -0
- data/golden/tuples_and_arrays/expected/ast.txt +44 -0
- data/golden/tuples_and_arrays/expected/input_plan.txt +7 -0
- data/golden/tuples_and_arrays/expected/lir_00_unoptimized.txt +41 -0
- data/golden/tuples_and_arrays/expected/lir_01_hoist_scalar_references.txt +41 -0
- data/golden/tuples_and_arrays/expected/lir_02_inlined.txt +62 -0
- data/golden/tuples_and_arrays/expected/lir_03_cse.txt +51 -0
- data/golden/tuples_and_arrays/expected/lir_04_1_loop_fusion.txt +51 -0
- data/golden/tuples_and_arrays/expected/lir_04_loop_invcm.txt +51 -0
- data/golden/tuples_and_arrays/expected/lir_06_const_prop.txt +51 -0
- data/golden/tuples_and_arrays/expected/nast.txt +28 -0
- data/golden/tuples_and_arrays/expected/schema_javascript.mjs +58 -0
- data/golden/tuples_and_arrays/expected/schema_ruby.rb +88 -0
- data/golden/tuples_and_arrays/expected/snast.txt +28 -0
- data/golden/tuples_and_arrays/expected.json +18 -0
- data/golden/tuples_and_arrays/input.json +7 -0
- data/golden/tuples_and_arrays/schema.kumi +38 -0
- data/golden/with_constants/expected/ast.txt +28 -0
- data/golden/with_constants/expected/input_plan.txt +2 -0
- data/golden/with_constants/expected/lir_00_unoptimized.txt +17 -0
- data/golden/with_constants/expected/lir_01_hoist_scalar_references.txt +17 -0
- data/golden/with_constants/expected/lir_02_inlined.txt +17 -0
- data/golden/with_constants/expected/lir_03_cse.txt +17 -0
- data/golden/with_constants/expected/lir_04_1_loop_fusion.txt +17 -0
- data/golden/with_constants/expected/lir_04_loop_invcm.txt +17 -0
- data/golden/with_constants/expected/lir_06_const_prop.txt +17 -0
- data/golden/with_constants/expected/nast.txt +21 -0
- data/golden/with_constants/expected/schema_javascript.mjs +18 -0
- data/golden/with_constants/expected/schema_ruby.rb +44 -0
- data/golden/with_constants/expected/snast.txt +15 -0
- data/golden/with_constants/schema.kumi +10 -0
- data/lib/kumi/analyzer.rb +76 -24
- data/lib/kumi/configuration.rb +60 -0
- data/lib/kumi/core/analyzer/binder.rb +121 -0
- data/lib/kumi/core/analyzer/checkpoint.rb +15 -9
- data/lib/kumi/core/analyzer/constant_evaluator.rb +32 -37
- data/lib/kumi/core/analyzer/constant_folding_helpers.rb +55 -0
- data/lib/kumi/core/analyzer/debug.rb +14 -16
- data/lib/kumi/core/analyzer/fn_aliases.rb +46 -0
- data/lib/kumi/core/analyzer/folder.rb +94 -0
- data/lib/kumi/core/analyzer/macro_expander.rb +69 -0
- data/lib/kumi/core/analyzer/passes/assemble_irv2_pass.rb +130 -0
- data/lib/kumi/core/analyzer/passes/attach_anchors_pass.rb +71 -0
- data/lib/kumi/core/analyzer/passes/attach_terminal_info_pass.rb +181 -0
- data/lib/kumi/core/analyzer/passes/codegen/js/declaration_emitter.rb +317 -0
- data/lib/kumi/core/analyzer/passes/codegen/js/emitter.rb +75 -0
- data/lib/kumi/core/analyzer/passes/codegen/js/output_buffer.rb +103 -0
- data/lib/kumi/core/analyzer/passes/codegen/js_pass.rb +27 -0
- data/lib/kumi/core/analyzer/passes/codegen/ruby/declaration_emitter.rb +321 -0
- data/lib/kumi/core/analyzer/passes/codegen/ruby/emitter.rb +85 -0
- data/lib/kumi/core/analyzer/passes/codegen/ruby/output_buffer.rb +111 -0
- data/lib/kumi/core/analyzer/passes/codegen/ruby_pass.rb +32 -0
- data/lib/kumi/core/analyzer/passes/constant_folding_pass.rb +33 -0
- data/lib/kumi/core/analyzer/passes/contract_checker_pass.rb +220 -0
- data/lib/kumi/core/analyzer/passes/dependency_resolver.rb +5 -6
- data/lib/kumi/core/analyzer/passes/input_access_planner_pass.rb +7 -3
- data/lib/kumi/core/analyzer/passes/input_collector.rb +74 -122
- data/lib/kumi/core/analyzer/passes/input_form_schema_pass.rb +43 -0
- data/lib/kumi/core/analyzer/passes/ir_dependency_pass.rb +1 -1
- data/lib/kumi/core/analyzer/passes/ir_execution_schedule_pass.rb +1 -1
- data/lib/kumi/core/analyzer/passes/join_reduce_planning_pass.rb +21 -23
- data/lib/kumi/core/analyzer/passes/lir/constant_propagation_pass.rb +84 -0
- data/lib/kumi/core/analyzer/passes/lir/dead_code_elimination_pass.rb +93 -0
- data/lib/kumi/core/analyzer/passes/lir/hoist_scalar_references_pass.rb +115 -0
- data/lib/kumi/core/analyzer/passes/lir/inline_declarations_pass.rb +274 -0
- data/lib/kumi/core/analyzer/passes/lir/instruction_scheduling_pass.rb +198 -0
- data/lib/kumi/core/analyzer/passes/lir/kernel_binding_pass.rb +30 -0
- data/lib/kumi/core/analyzer/passes/lir/local_cse_pass.rb +121 -0
- data/lib/kumi/core/analyzer/passes/lir/loop_fusion_pass.rb +156 -0
- data/lib/kumi/core/analyzer/passes/lir/loop_invariant_code_motion_pass.rb +148 -0
- data/lib/kumi/core/analyzer/passes/lir/lower_pass.rb +407 -0
- data/lib/kumi/core/analyzer/passes/lir/stencil_emitter.rb +243 -0
- data/lib/kumi/core/analyzer/passes/lir/validation_pass.rb +83 -0
- data/lib/kumi/core/analyzer/passes/load_input_cse.rb +17 -16
- data/lib/kumi/core/analyzer/passes/lower_to_ir_pass.rb +4 -2
- data/lib/kumi/core/analyzer/passes/lower_to_irv2_pass.rb +197 -0
- data/lib/kumi/core/analyzer/passes/name_indexer.rb +4 -1
- data/lib/kumi/core/analyzer/passes/nast_dimensional_analyzer_pass.rb +237 -0
- data/lib/kumi/core/analyzer/passes/normalize_to_nast_pass.rb +156 -0
- data/lib/kumi/core/analyzer/passes/output_schema_pass.rb +38 -0
- data/lib/kumi/core/analyzer/passes/pass_base.rb +30 -4
- data/lib/kumi/core/analyzer/passes/precompute_access_paths_pass.rb +93 -0
- data/lib/kumi/core/analyzer/passes/scope_resolution_pass.rb +33 -30
- data/lib/kumi/core/analyzer/passes/semantic_constraint_validator.rb +5 -26
- data/lib/kumi/core/analyzer/passes/snast_pass.rb +229 -0
- data/lib/kumi/core/analyzer/passes/toposorter.rb +1 -0
- data/lib/kumi/core/analyzer/passes/type_checker.rb +13 -0
- data/lib/kumi/core/analyzer/passes/type_inferencer_pass.rb +14 -16
- data/lib/kumi/core/analyzer/passes/unsat_detector.rb +2 -1
- data/lib/kumi/core/analyzer/plans.rb +12 -0
- data/lib/kumi/core/analyzer/state_serde.rb +4 -4
- data/lib/kumi/core/analyzer/structs/access_plan.rb +2 -2
- data/lib/kumi/core/analyzer/unsat_constant_evaluator.rb +59 -0
- data/lib/kumi/core/compiler/access_codegen.rb +1 -1
- data/lib/kumi/core/compiler/access_emit/base.rb +9 -5
- data/lib/kumi/core/compiler/access_emit/each_indexed.rb +10 -3
- data/lib/kumi/core/compiler/access_emit/materialize.rb +12 -5
- data/lib/kumi/core/compiler/access_emit/ravel.rb +10 -3
- data/lib/kumi/core/compiler/access_emit/read.rb +4 -1
- data/lib/kumi/core/compiler/access_planner.rb +42 -4
- data/lib/kumi/core/compiler/access_planner_v2.rb +164 -0
- data/lib/kumi/core/explain.rb +18 -11
- data/lib/kumi/core/functions/loader.rb +47 -0
- data/lib/kumi/core/functions/model.rb +10 -0
- data/lib/kumi/core/functions/type_rules.rb +108 -0
- data/lib/kumi/core/ir/execution_engine/interpreter.rb +1 -1
- data/lib/kumi/core/ir/execution_engine/profiler.rb +107 -97
- data/lib/kumi/core/ir.rb +6 -2
- data/lib/kumi/core/irv2/builder.rb +48 -0
- data/lib/kumi/core/irv2/declaration.rb +28 -0
- data/lib/kumi/core/irv2/module.rb +108 -0
- data/lib/kumi/core/irv2/value.rb +28 -0
- data/lib/kumi/core/lir/analyze.rb +64 -0
- data/lib/kumi/core/lir/build.rb +363 -0
- data/lib/kumi/core/lir/emit.rb +62 -0
- data/lib/kumi/core/lir/structs/instruction.rb +44 -0
- data/lib/kumi/core/lir/structs/literal.rb +14 -0
- data/lib/kumi/core/lir/structs/stamp.rb +13 -0
- data/lib/kumi/core/lir/support/error.rb +9 -0
- data/lib/kumi/core/lir/support/ids.rb +34 -0
- data/lib/kumi/core/lir/validate.rb +74 -0
- data/lib/kumi/core/lir.rb +34 -0
- data/lib/kumi/core/nast.rb +216 -0
- data/lib/kumi/core/ruby_parser/dsl.rb +2 -2
- data/lib/kumi/core/ruby_parser/dsl_cascade_builder.rb +1 -1
- data/lib/kumi/core/ruby_parser/expression_converter.rb +10 -0
- data/lib/kumi/core/ruby_parser/input_builder.rb +16 -17
- data/lib/kumi/core/ruby_parser/schema_builder.rb +36 -10
- data/lib/kumi/core/ruby_parser/sugar.rb +64 -0
- data/lib/kumi/core/types/builder.rb +2 -2
- data/lib/kumi/core/types/normalizer.rb +2 -0
- data/lib/kumi/core/types/validator.rb +10 -3
- data/lib/kumi/core/types.rb +7 -0
- data/lib/kumi/dev/codegen.rb +194 -0
- data/lib/kumi/dev/golden/generator.rb +105 -0
- data/lib/kumi/dev/golden/reporter.rb +160 -0
- data/lib/kumi/dev/golden/representation.rb +45 -0
- data/lib/kumi/dev/golden/result.rb +98 -0
- data/lib/kumi/dev/golden/runtime_test.rb +93 -0
- data/lib/kumi/dev/golden/suite.rb +131 -0
- data/lib/kumi/dev/golden/verifier.rb +76 -0
- data/lib/kumi/dev/golden.rb +75 -0
- data/lib/kumi/dev/ir.rb +4 -4
- data/lib/kumi/dev/parse.rb +1 -1
- data/lib/kumi/dev/pretty_printer.rb +229 -0
- data/lib/kumi/dev/printer/irv2_formatter.rb +163 -0
- data/lib/kumi/dev/printer/width_aware_json.rb +44 -0
- data/lib/kumi/dev/profile_aggregator.rb +36 -38
- data/lib/kumi/dev/profile_runner.rb +19 -23
- data/lib/kumi/dev/runner.rb +12 -22
- data/lib/kumi/dev/support/kumi_runner.mjs +39 -0
- data/lib/kumi/dev.rb +3 -3
- data/lib/kumi/frontends/ruby.rb +12 -12
- data/lib/kumi/frontends/text.rb +26 -21
- data/lib/kumi/frontends.rb +6 -8
- data/lib/kumi/kernel_registry.rb +59 -0
- data/lib/kumi/pack/builder.rb +229 -0
- data/lib/kumi/pack.rb +15 -0
- data/lib/kumi/registry_v2/loader.rb +81 -0
- data/lib/kumi/registry_v2.rb +118 -0
- data/lib/kumi/schema.rb +83 -43
- data/lib/kumi/support/diff.rb +3 -2
- data/lib/kumi/support/ir_render.rb +1 -1
- data/lib/kumi/support/lir_printer.rb +143 -0
- data/lib/kumi/support/nast_printer.rb +93 -0
- data/lib/kumi/support/s_expression_printer.rb +5 -4
- data/lib/kumi/support/snast_printer.rb +111 -0
- data/lib/kumi/syntax/call_expression.rb +1 -1
- data/lib/kumi/syntax/input_declaration.rb +2 -2
- data/lib/kumi/syntax/node.rb +4 -12
- data/lib/kumi/syntax/root.rb +10 -0
- data/lib/kumi/syntax/trait_declaration.rb +1 -0
- data/lib/kumi/syntax/value_declaration.rb +1 -0
- data/lib/kumi/version.rb +1 -1
- data/lib/kumi.rb +47 -5
- metadata +571 -54
- data/docs/AST.md +0 -133
- data/docs/DSL.md +0 -154
- data/docs/FUNCTIONS.md +0 -176
- data/docs/VECTOR_SEMANTICS.md +0 -286
- data/docs/compiler_design_principles.md +0 -86
- data/docs/dev/analyzer-debug.md +0 -52
- data/docs/dev/parse-command.md +0 -64
- data/docs/dev/vm-profiling.md +0 -95
- data/docs/development/README.md +0 -120
- data/docs/development/error-reporting.md +0 -361
- data/docs/features/README.md +0 -58
- data/docs/features/analysis-type-inference.md +0 -42
- data/docs/features/analysis-unsat-detection.md +0 -71
- data/docs/features/hierarchical-broadcasting.md +0 -415
- data/docs/features/input-declaration-system.md +0 -58
- data/docs/features/performance.md +0 -14
- data/docs/features/s-expression-printer.md +0 -77
- data/docs/schema_metadata/broadcasts.md +0 -53
- data/docs/schema_metadata/cascades.md +0 -45
- data/docs/schema_metadata/declarations.md +0 -54
- data/docs/schema_metadata/dependencies.md +0 -57
- data/docs/schema_metadata/evaluation_order.md +0 -29
- data/docs/schema_metadata/examples.md +0 -95
- data/docs/schema_metadata/inferred_types.md +0 -46
- data/docs/schema_metadata/inputs.md +0 -86
- data/docs/schema_metadata.md +0 -108
- data/golden/mixed_nesting/schema.kumi +0 -42
- data/lib/kumi/core/function_registry/collection_functions.rb +0 -298
- data/lib/kumi/core/function_registry/comparison_functions.rb +0 -33
- data/lib/kumi/core/function_registry/conditional_functions.rb +0 -48
- data/lib/kumi/core/function_registry/function_builder.rb +0 -184
- data/lib/kumi/core/function_registry/logical_functions.rb +0 -214
- data/lib/kumi/core/function_registry/math_functions.rb +0 -74
- data/lib/kumi/core/function_registry/stat_functions.rb +0 -156
- data/lib/kumi/core/function_registry/string_functions.rb +0 -57
- data/lib/kumi/core/function_registry/type_functions.rb +0 -53
- data/lib/kumi/core/function_registry.rb +0 -176
- data/lib/kumi/registry.rb +0 -32
- data/lib/kumi/runtime/executable.rb +0 -135
- data/lib/kumi/runtime/run.rb +0 -105
- data/performance_results.txt +0 -63
- data/scripts/analyze_broadcast_methods.rb +0 -68
- data/scripts/analyze_cascade_methods.rb +0 -74
- data/scripts/check_broadcasting_coverage.rb +0 -51
- data/scripts/find_dead_code.rb +0 -114
- data/scripts/generate_function_docs.rb +0 -71
- data/scripts/test_mixed_nesting_performance.rb +0 -206
@@ -0,0 +1,1918 @@
|
|
1
|
+
(LIR
|
2
|
+
(Declaration a
|
3
|
+
%t1 = load_input "rows" :: array
|
4
|
+
loop rows id=L1 in %t1 as el=%rows_el_2, idx=%rows_i_3
|
5
|
+
loop col id=L2 in %rows_el_2 as el=%col_el_4, idx=%col_i_5
|
6
|
+
yield %col_el_4
|
7
|
+
end_loop
|
8
|
+
end_loop
|
9
|
+
)
|
10
|
+
(Declaration n
|
11
|
+
%t6 = load_input "rows" :: array
|
12
|
+
loop rows id=L3 in %t6 as el=%rows_el_7, idx=%rows_i_8
|
13
|
+
loop col id=L4 in %rows_el_7 as el=%col_el_9, idx=%col_i_10
|
14
|
+
%t11 = Length %t6 :: integer
|
15
|
+
%t12 = const -1 :: integer
|
16
|
+
%t13 = call core.sub(%rows_i_8, %t12) :: integer
|
17
|
+
%t14 = const 0 :: integer
|
18
|
+
%t15 = call core.gte(%t13, %t14) :: boolean
|
19
|
+
%t16 = call core.lt(%t13, %t11) :: boolean
|
20
|
+
%t17 = call core.and(%t15, %t16) :: boolean
|
21
|
+
%t18 = const 1 :: integer
|
22
|
+
%t19 = call core.sub(%t11, %t18) :: integer
|
23
|
+
%t20 = const 0 :: integer
|
24
|
+
%t21 = call core.clamp(%t13, %t20, %t19) :: integer
|
25
|
+
%t22 = Gather %t6, %t21 :: any
|
26
|
+
%t23 = Length %t22 :: integer
|
27
|
+
%t24 = call core.mod(%col_i_10, %t23) :: integer
|
28
|
+
%t25 = call core.add(%t24, %t23) :: integer
|
29
|
+
%t26 = call core.mod(%t25, %t23) :: integer
|
30
|
+
%t27 = Gather %t22, %t26 :: integer
|
31
|
+
%t28 = const 0 :: integer
|
32
|
+
%t29 = select %t17, %t27, %t28 :: integer
|
33
|
+
yield %t29
|
34
|
+
end_loop
|
35
|
+
end_loop
|
36
|
+
)
|
37
|
+
(Declaration s
|
38
|
+
%t30 = load_input "rows" :: array
|
39
|
+
loop rows id=L5 in %t30 as el=%rows_el_31, idx=%rows_i_32
|
40
|
+
loop col id=L6 in %rows_el_31 as el=%col_el_33, idx=%col_i_34
|
41
|
+
%t35 = Length %t30 :: integer
|
42
|
+
%t36 = const 1 :: integer
|
43
|
+
%t37 = call core.sub(%rows_i_32, %t36) :: integer
|
44
|
+
%t38 = const 0 :: integer
|
45
|
+
%t39 = call core.gte(%t37, %t38) :: boolean
|
46
|
+
%t40 = call core.lt(%t37, %t35) :: boolean
|
47
|
+
%t41 = call core.and(%t39, %t40) :: boolean
|
48
|
+
%t42 = const 1 :: integer
|
49
|
+
%t43 = call core.sub(%t35, %t42) :: integer
|
50
|
+
%t44 = const 0 :: integer
|
51
|
+
%t45 = call core.clamp(%t37, %t44, %t43) :: integer
|
52
|
+
%t46 = Gather %t30, %t45 :: any
|
53
|
+
%t47 = Length %t46 :: integer
|
54
|
+
%t48 = call core.mod(%col_i_34, %t47) :: integer
|
55
|
+
%t49 = call core.add(%t48, %t47) :: integer
|
56
|
+
%t50 = call core.mod(%t49, %t47) :: integer
|
57
|
+
%t51 = Gather %t46, %t50 :: integer
|
58
|
+
%t52 = const 0 :: integer
|
59
|
+
%t53 = select %t41, %t51, %t52 :: integer
|
60
|
+
yield %t53
|
61
|
+
end_loop
|
62
|
+
end_loop
|
63
|
+
)
|
64
|
+
(Declaration w
|
65
|
+
%t54 = load_input "rows" :: array
|
66
|
+
loop rows id=L7 in %t54 as el=%rows_el_55, idx=%rows_i_56
|
67
|
+
loop col id=L8 in %rows_el_55 as el=%col_el_57, idx=%col_i_58
|
68
|
+
%t59 = Length %t54 :: integer
|
69
|
+
%t60 = call core.mod(%rows_i_56, %t59) :: integer
|
70
|
+
%t61 = call core.add(%t60, %t59) :: integer
|
71
|
+
%t62 = call core.mod(%t61, %t59) :: integer
|
72
|
+
%t63 = Gather %t54, %t62 :: any
|
73
|
+
%t64 = Length %t63 :: integer
|
74
|
+
%t65 = const -1 :: integer
|
75
|
+
%t66 = call core.sub(%col_i_58, %t65) :: integer
|
76
|
+
%t67 = const 0 :: integer
|
77
|
+
%t68 = call core.gte(%t66, %t67) :: boolean
|
78
|
+
%t69 = call core.lt(%t66, %t64) :: boolean
|
79
|
+
%t70 = call core.and(%t68, %t69) :: boolean
|
80
|
+
%t71 = const 1 :: integer
|
81
|
+
%t72 = call core.sub(%t64, %t71) :: integer
|
82
|
+
%t73 = const 0 :: integer
|
83
|
+
%t74 = call core.clamp(%t66, %t73, %t72) :: integer
|
84
|
+
%t75 = Gather %t63, %t74 :: integer
|
85
|
+
%t76 = const 0 :: integer
|
86
|
+
%t77 = select %t70, %t75, %t76 :: integer
|
87
|
+
yield %t77
|
88
|
+
end_loop
|
89
|
+
end_loop
|
90
|
+
)
|
91
|
+
(Declaration e
|
92
|
+
%t78 = load_input "rows" :: array
|
93
|
+
loop rows id=L9 in %t78 as el=%rows_el_79, idx=%rows_i_80
|
94
|
+
loop col id=L10 in %rows_el_79 as el=%col_el_81, idx=%col_i_82
|
95
|
+
%t83 = Length %t78 :: integer
|
96
|
+
%t84 = call core.mod(%rows_i_80, %t83) :: integer
|
97
|
+
%t85 = call core.add(%t84, %t83) :: integer
|
98
|
+
%t86 = call core.mod(%t85, %t83) :: integer
|
99
|
+
%t87 = Gather %t78, %t86 :: any
|
100
|
+
%t88 = Length %t87 :: integer
|
101
|
+
%t89 = const 1 :: integer
|
102
|
+
%t90 = call core.sub(%col_i_82, %t89) :: integer
|
103
|
+
%t91 = const 0 :: integer
|
104
|
+
%t92 = call core.gte(%t90, %t91) :: boolean
|
105
|
+
%t93 = call core.lt(%t90, %t88) :: boolean
|
106
|
+
%t94 = call core.and(%t92, %t93) :: boolean
|
107
|
+
%t95 = const 1 :: integer
|
108
|
+
%t96 = call core.sub(%t88, %t95) :: integer
|
109
|
+
%t97 = const 0 :: integer
|
110
|
+
%t98 = call core.clamp(%t90, %t97, %t96) :: integer
|
111
|
+
%t99 = Gather %t87, %t98 :: integer
|
112
|
+
%t100 = const 0 :: integer
|
113
|
+
%t101 = select %t94, %t99, %t100 :: integer
|
114
|
+
yield %t101
|
115
|
+
end_loop
|
116
|
+
end_loop
|
117
|
+
)
|
118
|
+
(Declaration nw
|
119
|
+
%t102 = load_input "rows" :: array
|
120
|
+
loop rows id=L11 in %t102 as el=%rows_el_103, idx=%rows_i_104
|
121
|
+
loop col id=L12 in %rows_el_103 as el=%col_el_105, idx=%col_i_106
|
122
|
+
%t107 = Length %t102 :: integer
|
123
|
+
%t108 = const -1 :: integer
|
124
|
+
%t109 = call core.sub(%rows_i_104, %t108) :: integer
|
125
|
+
%t110 = const 0 :: integer
|
126
|
+
%t111 = call core.gte(%t109, %t110) :: boolean
|
127
|
+
%t112 = call core.lt(%t109, %t107) :: boolean
|
128
|
+
%t113 = call core.and(%t111, %t112) :: boolean
|
129
|
+
%t114 = const 1 :: integer
|
130
|
+
%t115 = call core.sub(%t107, %t114) :: integer
|
131
|
+
%t116 = const 0 :: integer
|
132
|
+
%t117 = call core.clamp(%t109, %t116, %t115) :: integer
|
133
|
+
%t118 = Gather %t102, %t117 :: any
|
134
|
+
%t119 = Length %t118 :: integer
|
135
|
+
%t120 = const -1 :: integer
|
136
|
+
%t121 = call core.sub(%col_i_106, %t120) :: integer
|
137
|
+
%t122 = const 0 :: integer
|
138
|
+
%t123 = call core.gte(%t121, %t122) :: boolean
|
139
|
+
%t124 = call core.lt(%t121, %t119) :: boolean
|
140
|
+
%t125 = call core.and(%t123, %t124) :: boolean
|
141
|
+
%t126 = call core.and(%t113, %t125) :: boolean
|
142
|
+
%t127 = const 1 :: integer
|
143
|
+
%t128 = call core.sub(%t119, %t127) :: integer
|
144
|
+
%t129 = const 0 :: integer
|
145
|
+
%t130 = call core.clamp(%t121, %t129, %t128) :: integer
|
146
|
+
%t131 = Gather %t118, %t130 :: integer
|
147
|
+
%t132 = const 0 :: integer
|
148
|
+
%t133 = select %t126, %t131, %t132 :: integer
|
149
|
+
yield %t133
|
150
|
+
end_loop
|
151
|
+
end_loop
|
152
|
+
)
|
153
|
+
(Declaration ne
|
154
|
+
%t134 = load_input "rows" :: array
|
155
|
+
loop rows id=L13 in %t134 as el=%rows_el_135, idx=%rows_i_136
|
156
|
+
loop col id=L14 in %rows_el_135 as el=%col_el_137, idx=%col_i_138
|
157
|
+
%t139 = Length %t134 :: integer
|
158
|
+
%t140 = const -1 :: integer
|
159
|
+
%t141 = call core.sub(%rows_i_136, %t140) :: integer
|
160
|
+
%t142 = const 0 :: integer
|
161
|
+
%t143 = call core.gte(%t141, %t142) :: boolean
|
162
|
+
%t144 = call core.lt(%t141, %t139) :: boolean
|
163
|
+
%t145 = call core.and(%t143, %t144) :: boolean
|
164
|
+
%t146 = const 1 :: integer
|
165
|
+
%t147 = call core.sub(%t139, %t146) :: integer
|
166
|
+
%t148 = const 0 :: integer
|
167
|
+
%t149 = call core.clamp(%t141, %t148, %t147) :: integer
|
168
|
+
%t150 = Gather %t134, %t149 :: any
|
169
|
+
%t151 = Length %t150 :: integer
|
170
|
+
%t152 = const 1 :: integer
|
171
|
+
%t153 = call core.sub(%col_i_138, %t152) :: integer
|
172
|
+
%t154 = const 0 :: integer
|
173
|
+
%t155 = call core.gte(%t153, %t154) :: boolean
|
174
|
+
%t156 = call core.lt(%t153, %t151) :: boolean
|
175
|
+
%t157 = call core.and(%t155, %t156) :: boolean
|
176
|
+
%t158 = call core.and(%t145, %t157) :: boolean
|
177
|
+
%t159 = const 1 :: integer
|
178
|
+
%t160 = call core.sub(%t151, %t159) :: integer
|
179
|
+
%t161 = const 0 :: integer
|
180
|
+
%t162 = call core.clamp(%t153, %t161, %t160) :: integer
|
181
|
+
%t163 = Gather %t150, %t162 :: integer
|
182
|
+
%t164 = const 0 :: integer
|
183
|
+
%t165 = select %t158, %t163, %t164 :: integer
|
184
|
+
yield %t165
|
185
|
+
end_loop
|
186
|
+
end_loop
|
187
|
+
)
|
188
|
+
(Declaration sw
|
189
|
+
%t166 = load_input "rows" :: array
|
190
|
+
loop rows id=L15 in %t166 as el=%rows_el_167, idx=%rows_i_168
|
191
|
+
loop col id=L16 in %rows_el_167 as el=%col_el_169, idx=%col_i_170
|
192
|
+
%t171 = Length %t166 :: integer
|
193
|
+
%t172 = const 1 :: integer
|
194
|
+
%t173 = call core.sub(%rows_i_168, %t172) :: integer
|
195
|
+
%t174 = const 0 :: integer
|
196
|
+
%t175 = call core.gte(%t173, %t174) :: boolean
|
197
|
+
%t176 = call core.lt(%t173, %t171) :: boolean
|
198
|
+
%t177 = call core.and(%t175, %t176) :: boolean
|
199
|
+
%t178 = const 1 :: integer
|
200
|
+
%t179 = call core.sub(%t171, %t178) :: integer
|
201
|
+
%t180 = const 0 :: integer
|
202
|
+
%t181 = call core.clamp(%t173, %t180, %t179) :: integer
|
203
|
+
%t182 = Gather %t166, %t181 :: any
|
204
|
+
%t183 = Length %t182 :: integer
|
205
|
+
%t184 = const -1 :: integer
|
206
|
+
%t185 = call core.sub(%col_i_170, %t184) :: integer
|
207
|
+
%t186 = const 0 :: integer
|
208
|
+
%t187 = call core.gte(%t185, %t186) :: boolean
|
209
|
+
%t188 = call core.lt(%t185, %t183) :: boolean
|
210
|
+
%t189 = call core.and(%t187, %t188) :: boolean
|
211
|
+
%t190 = call core.and(%t177, %t189) :: boolean
|
212
|
+
%t191 = const 1 :: integer
|
213
|
+
%t192 = call core.sub(%t183, %t191) :: integer
|
214
|
+
%t193 = const 0 :: integer
|
215
|
+
%t194 = call core.clamp(%t185, %t193, %t192) :: integer
|
216
|
+
%t195 = Gather %t182, %t194 :: integer
|
217
|
+
%t196 = const 0 :: integer
|
218
|
+
%t197 = select %t190, %t195, %t196 :: integer
|
219
|
+
yield %t197
|
220
|
+
end_loop
|
221
|
+
end_loop
|
222
|
+
)
|
223
|
+
(Declaration se
|
224
|
+
%t198 = load_input "rows" :: array
|
225
|
+
loop rows id=L17 in %t198 as el=%rows_el_199, idx=%rows_i_200
|
226
|
+
loop col id=L18 in %rows_el_199 as el=%col_el_201, idx=%col_i_202
|
227
|
+
%t203 = Length %t198 :: integer
|
228
|
+
%t204 = const 1 :: integer
|
229
|
+
%t205 = call core.sub(%rows_i_200, %t204) :: integer
|
230
|
+
%t206 = const 0 :: integer
|
231
|
+
%t207 = call core.gte(%t205, %t206) :: boolean
|
232
|
+
%t208 = call core.lt(%t205, %t203) :: boolean
|
233
|
+
%t209 = call core.and(%t207, %t208) :: boolean
|
234
|
+
%t210 = const 1 :: integer
|
235
|
+
%t211 = call core.sub(%t203, %t210) :: integer
|
236
|
+
%t212 = const 0 :: integer
|
237
|
+
%t213 = call core.clamp(%t205, %t212, %t211) :: integer
|
238
|
+
%t214 = Gather %t198, %t213 :: any
|
239
|
+
%t215 = Length %t214 :: integer
|
240
|
+
%t216 = const 1 :: integer
|
241
|
+
%t217 = call core.sub(%col_i_202, %t216) :: integer
|
242
|
+
%t218 = const 0 :: integer
|
243
|
+
%t219 = call core.gte(%t217, %t218) :: boolean
|
244
|
+
%t220 = call core.lt(%t217, %t215) :: boolean
|
245
|
+
%t221 = call core.and(%t219, %t220) :: boolean
|
246
|
+
%t222 = call core.and(%t209, %t221) :: boolean
|
247
|
+
%t223 = const 1 :: integer
|
248
|
+
%t224 = call core.sub(%t215, %t223) :: integer
|
249
|
+
%t225 = const 0 :: integer
|
250
|
+
%t226 = call core.clamp(%t217, %t225, %t224) :: integer
|
251
|
+
%t227 = Gather %t214, %t226 :: integer
|
252
|
+
%t228 = const 0 :: integer
|
253
|
+
%t229 = select %t222, %t227, %t228 :: integer
|
254
|
+
yield %t229
|
255
|
+
end_loop
|
256
|
+
end_loop
|
257
|
+
)
|
258
|
+
(Declaration neighbors
|
259
|
+
%t230 = load_input "rows" :: array
|
260
|
+
loop rows id=L19 in %t230 as el=%rows_el_231, idx=%rows_i_232
|
261
|
+
loop col id=L20 in %rows_el_231 as el=%col_el_233, idx=%col_i_234
|
262
|
+
%t294 = load_input "rows" :: array
|
263
|
+
%t295 = Length %t294 :: integer
|
264
|
+
%t296 = const -1 :: integer
|
265
|
+
%t297 = call core.sub(%rows_i_232, %t296) :: integer
|
266
|
+
%t298 = const 0 :: integer
|
267
|
+
%t299 = call core.gte(%t297, %t298) :: boolean
|
268
|
+
%t300 = call core.lt(%t297, %t295) :: boolean
|
269
|
+
%t301 = call core.and(%t299, %t300) :: boolean
|
270
|
+
%t302 = const 1 :: integer
|
271
|
+
%t303 = call core.sub(%t295, %t302) :: integer
|
272
|
+
%t304 = const 0 :: integer
|
273
|
+
%t305 = call core.clamp(%t297, %t304, %t303) :: integer
|
274
|
+
%t306 = Gather %t294, %t305 :: any
|
275
|
+
%t307 = Length %t306 :: integer
|
276
|
+
%t308 = call core.mod(%col_i_234, %t307) :: integer
|
277
|
+
%t309 = call core.add(%t308, %t307) :: integer
|
278
|
+
%t310 = call core.mod(%t309, %t307) :: integer
|
279
|
+
%t311 = Gather %t306, %t310 :: integer
|
280
|
+
%t312 = const 0 :: integer
|
281
|
+
%t313 = select %t301, %t311, %t312 :: integer
|
282
|
+
%t314 = load_input "rows" :: array
|
283
|
+
%t315 = Length %t314 :: integer
|
284
|
+
%t316 = const 1 :: integer
|
285
|
+
%t317 = call core.sub(%rows_i_232, %t316) :: integer
|
286
|
+
%t318 = const 0 :: integer
|
287
|
+
%t319 = call core.gte(%t317, %t318) :: boolean
|
288
|
+
%t320 = call core.lt(%t317, %t315) :: boolean
|
289
|
+
%t321 = call core.and(%t319, %t320) :: boolean
|
290
|
+
%t322 = const 1 :: integer
|
291
|
+
%t323 = call core.sub(%t315, %t322) :: integer
|
292
|
+
%t324 = const 0 :: integer
|
293
|
+
%t325 = call core.clamp(%t317, %t324, %t323) :: integer
|
294
|
+
%t326 = Gather %t314, %t325 :: any
|
295
|
+
%t327 = Length %t326 :: integer
|
296
|
+
%t328 = call core.mod(%col_i_234, %t327) :: integer
|
297
|
+
%t329 = call core.add(%t328, %t327) :: integer
|
298
|
+
%t330 = call core.mod(%t329, %t327) :: integer
|
299
|
+
%t331 = Gather %t326, %t330 :: integer
|
300
|
+
%t332 = const 0 :: integer
|
301
|
+
%t333 = select %t321, %t331, %t332 :: integer
|
302
|
+
%t334 = load_input "rows" :: array
|
303
|
+
%t335 = Length %t334 :: integer
|
304
|
+
%t336 = call core.mod(%rows_i_232, %t335) :: integer
|
305
|
+
%t337 = call core.add(%t336, %t335) :: integer
|
306
|
+
%t338 = call core.mod(%t337, %t335) :: integer
|
307
|
+
%t339 = Gather %t334, %t338 :: any
|
308
|
+
%t340 = Length %t339 :: integer
|
309
|
+
%t341 = const -1 :: integer
|
310
|
+
%t342 = call core.sub(%col_i_234, %t341) :: integer
|
311
|
+
%t343 = const 0 :: integer
|
312
|
+
%t344 = call core.gte(%t342, %t343) :: boolean
|
313
|
+
%t345 = call core.lt(%t342, %t340) :: boolean
|
314
|
+
%t346 = call core.and(%t344, %t345) :: boolean
|
315
|
+
%t347 = const 1 :: integer
|
316
|
+
%t348 = call core.sub(%t340, %t347) :: integer
|
317
|
+
%t349 = const 0 :: integer
|
318
|
+
%t350 = call core.clamp(%t342, %t349, %t348) :: integer
|
319
|
+
%t351 = Gather %t339, %t350 :: integer
|
320
|
+
%t352 = const 0 :: integer
|
321
|
+
%t353 = select %t346, %t351, %t352 :: integer
|
322
|
+
%t354 = load_input "rows" :: array
|
323
|
+
%t355 = Length %t354 :: integer
|
324
|
+
%t356 = call core.mod(%rows_i_232, %t355) :: integer
|
325
|
+
%t357 = call core.add(%t356, %t355) :: integer
|
326
|
+
%t358 = call core.mod(%t357, %t355) :: integer
|
327
|
+
%t359 = Gather %t354, %t358 :: any
|
328
|
+
%t360 = Length %t359 :: integer
|
329
|
+
%t361 = const 1 :: integer
|
330
|
+
%t362 = call core.sub(%col_i_234, %t361) :: integer
|
331
|
+
%t363 = const 0 :: integer
|
332
|
+
%t364 = call core.gte(%t362, %t363) :: boolean
|
333
|
+
%t365 = call core.lt(%t362, %t360) :: boolean
|
334
|
+
%t366 = call core.and(%t364, %t365) :: boolean
|
335
|
+
%t367 = const 1 :: integer
|
336
|
+
%t368 = call core.sub(%t360, %t367) :: integer
|
337
|
+
%t369 = const 0 :: integer
|
338
|
+
%t370 = call core.clamp(%t362, %t369, %t368) :: integer
|
339
|
+
%t371 = Gather %t359, %t370 :: integer
|
340
|
+
%t372 = const 0 :: integer
|
341
|
+
%t373 = select %t366, %t371, %t372 :: integer
|
342
|
+
%t374 = load_input "rows" :: array
|
343
|
+
%t375 = Length %t374 :: integer
|
344
|
+
%t376 = const -1 :: integer
|
345
|
+
%t377 = call core.sub(%rows_i_232, %t376) :: integer
|
346
|
+
%t378 = const 0 :: integer
|
347
|
+
%t379 = call core.gte(%t377, %t378) :: boolean
|
348
|
+
%t380 = call core.lt(%t377, %t375) :: boolean
|
349
|
+
%t381 = call core.and(%t379, %t380) :: boolean
|
350
|
+
%t382 = const 1 :: integer
|
351
|
+
%t383 = call core.sub(%t375, %t382) :: integer
|
352
|
+
%t384 = const 0 :: integer
|
353
|
+
%t385 = call core.clamp(%t377, %t384, %t383) :: integer
|
354
|
+
%t386 = Gather %t374, %t385 :: any
|
355
|
+
%t387 = Length %t386 :: integer
|
356
|
+
%t388 = const -1 :: integer
|
357
|
+
%t389 = call core.sub(%col_i_234, %t388) :: integer
|
358
|
+
%t390 = const 0 :: integer
|
359
|
+
%t391 = call core.gte(%t389, %t390) :: boolean
|
360
|
+
%t392 = call core.lt(%t389, %t387) :: boolean
|
361
|
+
%t393 = call core.and(%t391, %t392) :: boolean
|
362
|
+
%t394 = call core.and(%t381, %t393) :: boolean
|
363
|
+
%t395 = const 1 :: integer
|
364
|
+
%t396 = call core.sub(%t387, %t395) :: integer
|
365
|
+
%t397 = const 0 :: integer
|
366
|
+
%t398 = call core.clamp(%t389, %t397, %t396) :: integer
|
367
|
+
%t399 = Gather %t386, %t398 :: integer
|
368
|
+
%t400 = const 0 :: integer
|
369
|
+
%t401 = select %t394, %t399, %t400 :: integer
|
370
|
+
%t402 = load_input "rows" :: array
|
371
|
+
%t403 = Length %t402 :: integer
|
372
|
+
%t404 = const -1 :: integer
|
373
|
+
%t405 = call core.sub(%rows_i_232, %t404) :: integer
|
374
|
+
%t406 = const 0 :: integer
|
375
|
+
%t407 = call core.gte(%t405, %t406) :: boolean
|
376
|
+
%t408 = call core.lt(%t405, %t403) :: boolean
|
377
|
+
%t409 = call core.and(%t407, %t408) :: boolean
|
378
|
+
%t410 = const 1 :: integer
|
379
|
+
%t411 = call core.sub(%t403, %t410) :: integer
|
380
|
+
%t412 = const 0 :: integer
|
381
|
+
%t413 = call core.clamp(%t405, %t412, %t411) :: integer
|
382
|
+
%t414 = Gather %t402, %t413 :: any
|
383
|
+
%t415 = Length %t414 :: integer
|
384
|
+
%t416 = const 1 :: integer
|
385
|
+
%t417 = call core.sub(%col_i_234, %t416) :: integer
|
386
|
+
%t418 = const 0 :: integer
|
387
|
+
%t419 = call core.gte(%t417, %t418) :: boolean
|
388
|
+
%t420 = call core.lt(%t417, %t415) :: boolean
|
389
|
+
%t421 = call core.and(%t419, %t420) :: boolean
|
390
|
+
%t422 = call core.and(%t409, %t421) :: boolean
|
391
|
+
%t423 = const 1 :: integer
|
392
|
+
%t424 = call core.sub(%t415, %t423) :: integer
|
393
|
+
%t425 = const 0 :: integer
|
394
|
+
%t426 = call core.clamp(%t417, %t425, %t424) :: integer
|
395
|
+
%t427 = Gather %t414, %t426 :: integer
|
396
|
+
%t428 = const 0 :: integer
|
397
|
+
%t429 = select %t422, %t427, %t428 :: integer
|
398
|
+
%t430 = load_input "rows" :: array
|
399
|
+
%t431 = Length %t430 :: integer
|
400
|
+
%t432 = const 1 :: integer
|
401
|
+
%t433 = call core.sub(%rows_i_232, %t432) :: integer
|
402
|
+
%t434 = const 0 :: integer
|
403
|
+
%t435 = call core.gte(%t433, %t434) :: boolean
|
404
|
+
%t436 = call core.lt(%t433, %t431) :: boolean
|
405
|
+
%t437 = call core.and(%t435, %t436) :: boolean
|
406
|
+
%t438 = const 1 :: integer
|
407
|
+
%t439 = call core.sub(%t431, %t438) :: integer
|
408
|
+
%t440 = const 0 :: integer
|
409
|
+
%t441 = call core.clamp(%t433, %t440, %t439) :: integer
|
410
|
+
%t442 = Gather %t430, %t441 :: any
|
411
|
+
%t443 = Length %t442 :: integer
|
412
|
+
%t444 = const -1 :: integer
|
413
|
+
%t445 = call core.sub(%col_i_234, %t444) :: integer
|
414
|
+
%t446 = const 0 :: integer
|
415
|
+
%t447 = call core.gte(%t445, %t446) :: boolean
|
416
|
+
%t448 = call core.lt(%t445, %t443) :: boolean
|
417
|
+
%t449 = call core.and(%t447, %t448) :: boolean
|
418
|
+
%t450 = call core.and(%t437, %t449) :: boolean
|
419
|
+
%t451 = const 1 :: integer
|
420
|
+
%t452 = call core.sub(%t443, %t451) :: integer
|
421
|
+
%t453 = const 0 :: integer
|
422
|
+
%t454 = call core.clamp(%t445, %t453, %t452) :: integer
|
423
|
+
%t455 = Gather %t442, %t454 :: integer
|
424
|
+
%t456 = const 0 :: integer
|
425
|
+
%t457 = select %t450, %t455, %t456 :: integer
|
426
|
+
%t458 = load_input "rows" :: array
|
427
|
+
%t459 = Length %t458 :: integer
|
428
|
+
%t460 = const 1 :: integer
|
429
|
+
%t461 = call core.sub(%rows_i_232, %t460) :: integer
|
430
|
+
%t462 = const 0 :: integer
|
431
|
+
%t463 = call core.gte(%t461, %t462) :: boolean
|
432
|
+
%t464 = call core.lt(%t461, %t459) :: boolean
|
433
|
+
%t465 = call core.and(%t463, %t464) :: boolean
|
434
|
+
%t466 = const 1 :: integer
|
435
|
+
%t467 = call core.sub(%t459, %t466) :: integer
|
436
|
+
%t468 = const 0 :: integer
|
437
|
+
%t469 = call core.clamp(%t461, %t468, %t467) :: integer
|
438
|
+
%t470 = Gather %t458, %t469 :: any
|
439
|
+
%t471 = Length %t470 :: integer
|
440
|
+
%t472 = const 1 :: integer
|
441
|
+
%t473 = call core.sub(%col_i_234, %t472) :: integer
|
442
|
+
%t474 = const 0 :: integer
|
443
|
+
%t475 = call core.gte(%t473, %t474) :: boolean
|
444
|
+
%t476 = call core.lt(%t473, %t471) :: boolean
|
445
|
+
%t477 = call core.and(%t475, %t476) :: boolean
|
446
|
+
%t478 = call core.and(%t465, %t477) :: boolean
|
447
|
+
%t479 = const 1 :: integer
|
448
|
+
%t480 = call core.sub(%t471, %t479) :: integer
|
449
|
+
%t481 = const 0 :: integer
|
450
|
+
%t482 = call core.clamp(%t473, %t481, %t480) :: integer
|
451
|
+
%t483 = Gather %t470, %t482 :: integer
|
452
|
+
%t484 = const 0 :: integer
|
453
|
+
%t485 = select %t478, %t483, %t484 :: integer
|
454
|
+
%t243 = make_tuple(%t313, %t333, %t353, %t373, %t401, %t429, %t457, %t485) :: tuple<integer>
|
455
|
+
%t244 = Fold %t243 fn="agg.sum" ::
|
456
|
+
yield %t244
|
457
|
+
end_loop
|
458
|
+
end_loop
|
459
|
+
)
|
460
|
+
(Declaration alive
|
461
|
+
%t245 = load_input "rows" :: array
|
462
|
+
loop rows id=L21 in %t245 as el=%rows_el_246, idx=%rows_i_247
|
463
|
+
loop col id=L22 in %rows_el_246 as el=%col_el_248, idx=%col_i_249
|
464
|
+
%t486 = load_input "rows" :: array
|
465
|
+
%t251 = const 0 :: integer
|
466
|
+
%t252 = call core.gt(%col_el_248, %t251) :: boolean
|
467
|
+
yield %t252
|
468
|
+
end_loop
|
469
|
+
end_loop
|
470
|
+
)
|
471
|
+
(Declaration n3_alive
|
472
|
+
%t253 = load_input "rows" :: array
|
473
|
+
loop rows id=L23 in %t253 as el=%rows_el_254, idx=%rows_i_255
|
474
|
+
loop col id=L24 in %rows_el_254 as el=%col_el_256, idx=%col_i_257
|
475
|
+
%t487 = load_input "rows" :: array
|
476
|
+
%t529 = load_input "rows" :: array
|
477
|
+
%t530 = Length %t529 :: integer
|
478
|
+
%t531 = const -1 :: integer
|
479
|
+
%t532 = call core.sub(%rows_i_255, %t531) :: integer
|
480
|
+
%t533 = const 0 :: integer
|
481
|
+
%t534 = call core.gte(%t532, %t533) :: boolean
|
482
|
+
%t535 = call core.lt(%t532, %t530) :: boolean
|
483
|
+
%t536 = call core.and(%t534, %t535) :: boolean
|
484
|
+
%t537 = const 1 :: integer
|
485
|
+
%t538 = call core.sub(%t530, %t537) :: integer
|
486
|
+
%t539 = const 0 :: integer
|
487
|
+
%t540 = call core.clamp(%t532, %t539, %t538) :: integer
|
488
|
+
%t541 = Gather %t529, %t540 :: any
|
489
|
+
%t542 = Length %t541 :: integer
|
490
|
+
%t543 = call core.mod(%col_i_257, %t542) :: integer
|
491
|
+
%t544 = call core.add(%t543, %t542) :: integer
|
492
|
+
%t545 = call core.mod(%t544, %t542) :: integer
|
493
|
+
%t546 = Gather %t541, %t545 :: integer
|
494
|
+
%t547 = const 0 :: integer
|
495
|
+
%t548 = select %t536, %t546, %t547 :: integer
|
496
|
+
%t549 = load_input "rows" :: array
|
497
|
+
%t550 = Length %t549 :: integer
|
498
|
+
%t551 = const 1 :: integer
|
499
|
+
%t552 = call core.sub(%rows_i_255, %t551) :: integer
|
500
|
+
%t553 = const 0 :: integer
|
501
|
+
%t554 = call core.gte(%t552, %t553) :: boolean
|
502
|
+
%t555 = call core.lt(%t552, %t550) :: boolean
|
503
|
+
%t556 = call core.and(%t554, %t555) :: boolean
|
504
|
+
%t557 = const 1 :: integer
|
505
|
+
%t558 = call core.sub(%t550, %t557) :: integer
|
506
|
+
%t559 = const 0 :: integer
|
507
|
+
%t560 = call core.clamp(%t552, %t559, %t558) :: integer
|
508
|
+
%t561 = Gather %t549, %t560 :: any
|
509
|
+
%t562 = Length %t561 :: integer
|
510
|
+
%t563 = call core.mod(%col_i_257, %t562) :: integer
|
511
|
+
%t564 = call core.add(%t563, %t562) :: integer
|
512
|
+
%t565 = call core.mod(%t564, %t562) :: integer
|
513
|
+
%t566 = Gather %t561, %t565 :: integer
|
514
|
+
%t567 = const 0 :: integer
|
515
|
+
%t568 = select %t556, %t566, %t567 :: integer
|
516
|
+
%t569 = load_input "rows" :: array
|
517
|
+
%t570 = Length %t569 :: integer
|
518
|
+
%t571 = call core.mod(%rows_i_255, %t570) :: integer
|
519
|
+
%t572 = call core.add(%t571, %t570) :: integer
|
520
|
+
%t573 = call core.mod(%t572, %t570) :: integer
|
521
|
+
%t574 = Gather %t569, %t573 :: any
|
522
|
+
%t575 = Length %t574 :: integer
|
523
|
+
%t576 = const -1 :: integer
|
524
|
+
%t577 = call core.sub(%col_i_257, %t576) :: integer
|
525
|
+
%t578 = const 0 :: integer
|
526
|
+
%t579 = call core.gte(%t577, %t578) :: boolean
|
527
|
+
%t580 = call core.lt(%t577, %t575) :: boolean
|
528
|
+
%t581 = call core.and(%t579, %t580) :: boolean
|
529
|
+
%t582 = const 1 :: integer
|
530
|
+
%t583 = call core.sub(%t575, %t582) :: integer
|
531
|
+
%t584 = const 0 :: integer
|
532
|
+
%t585 = call core.clamp(%t577, %t584, %t583) :: integer
|
533
|
+
%t586 = Gather %t574, %t585 :: integer
|
534
|
+
%t587 = const 0 :: integer
|
535
|
+
%t588 = select %t581, %t586, %t587 :: integer
|
536
|
+
%t589 = load_input "rows" :: array
|
537
|
+
%t590 = Length %t589 :: integer
|
538
|
+
%t591 = call core.mod(%rows_i_255, %t590) :: integer
|
539
|
+
%t592 = call core.add(%t591, %t590) :: integer
|
540
|
+
%t593 = call core.mod(%t592, %t590) :: integer
|
541
|
+
%t594 = Gather %t589, %t593 :: any
|
542
|
+
%t595 = Length %t594 :: integer
|
543
|
+
%t596 = const 1 :: integer
|
544
|
+
%t597 = call core.sub(%col_i_257, %t596) :: integer
|
545
|
+
%t598 = const 0 :: integer
|
546
|
+
%t599 = call core.gte(%t597, %t598) :: boolean
|
547
|
+
%t600 = call core.lt(%t597, %t595) :: boolean
|
548
|
+
%t601 = call core.and(%t599, %t600) :: boolean
|
549
|
+
%t602 = const 1 :: integer
|
550
|
+
%t603 = call core.sub(%t595, %t602) :: integer
|
551
|
+
%t604 = const 0 :: integer
|
552
|
+
%t605 = call core.clamp(%t597, %t604, %t603) :: integer
|
553
|
+
%t606 = Gather %t594, %t605 :: integer
|
554
|
+
%t607 = const 0 :: integer
|
555
|
+
%t608 = select %t601, %t606, %t607 :: integer
|
556
|
+
%t609 = load_input "rows" :: array
|
557
|
+
%t610 = Length %t609 :: integer
|
558
|
+
%t611 = const -1 :: integer
|
559
|
+
%t612 = call core.sub(%rows_i_255, %t611) :: integer
|
560
|
+
%t613 = const 0 :: integer
|
561
|
+
%t614 = call core.gte(%t612, %t613) :: boolean
|
562
|
+
%t615 = call core.lt(%t612, %t610) :: boolean
|
563
|
+
%t616 = call core.and(%t614, %t615) :: boolean
|
564
|
+
%t617 = const 1 :: integer
|
565
|
+
%t618 = call core.sub(%t610, %t617) :: integer
|
566
|
+
%t619 = const 0 :: integer
|
567
|
+
%t620 = call core.clamp(%t612, %t619, %t618) :: integer
|
568
|
+
%t621 = Gather %t609, %t620 :: any
|
569
|
+
%t622 = Length %t621 :: integer
|
570
|
+
%t623 = const -1 :: integer
|
571
|
+
%t624 = call core.sub(%col_i_257, %t623) :: integer
|
572
|
+
%t625 = const 0 :: integer
|
573
|
+
%t626 = call core.gte(%t624, %t625) :: boolean
|
574
|
+
%t627 = call core.lt(%t624, %t622) :: boolean
|
575
|
+
%t628 = call core.and(%t626, %t627) :: boolean
|
576
|
+
%t629 = call core.and(%t616, %t628) :: boolean
|
577
|
+
%t630 = const 1 :: integer
|
578
|
+
%t631 = call core.sub(%t622, %t630) :: integer
|
579
|
+
%t632 = const 0 :: integer
|
580
|
+
%t633 = call core.clamp(%t624, %t632, %t631) :: integer
|
581
|
+
%t634 = Gather %t621, %t633 :: integer
|
582
|
+
%t635 = const 0 :: integer
|
583
|
+
%t636 = select %t629, %t634, %t635 :: integer
|
584
|
+
%t637 = load_input "rows" :: array
|
585
|
+
%t638 = Length %t637 :: integer
|
586
|
+
%t639 = const -1 :: integer
|
587
|
+
%t640 = call core.sub(%rows_i_255, %t639) :: integer
|
588
|
+
%t641 = const 0 :: integer
|
589
|
+
%t642 = call core.gte(%t640, %t641) :: boolean
|
590
|
+
%t643 = call core.lt(%t640, %t638) :: boolean
|
591
|
+
%t644 = call core.and(%t642, %t643) :: boolean
|
592
|
+
%t645 = const 1 :: integer
|
593
|
+
%t646 = call core.sub(%t638, %t645) :: integer
|
594
|
+
%t647 = const 0 :: integer
|
595
|
+
%t648 = call core.clamp(%t640, %t647, %t646) :: integer
|
596
|
+
%t649 = Gather %t637, %t648 :: any
|
597
|
+
%t650 = Length %t649 :: integer
|
598
|
+
%t651 = const 1 :: integer
|
599
|
+
%t652 = call core.sub(%col_i_257, %t651) :: integer
|
600
|
+
%t653 = const 0 :: integer
|
601
|
+
%t654 = call core.gte(%t652, %t653) :: boolean
|
602
|
+
%t655 = call core.lt(%t652, %t650) :: boolean
|
603
|
+
%t656 = call core.and(%t654, %t655) :: boolean
|
604
|
+
%t657 = call core.and(%t644, %t656) :: boolean
|
605
|
+
%t658 = const 1 :: integer
|
606
|
+
%t659 = call core.sub(%t650, %t658) :: integer
|
607
|
+
%t660 = const 0 :: integer
|
608
|
+
%t661 = call core.clamp(%t652, %t660, %t659) :: integer
|
609
|
+
%t662 = Gather %t649, %t661 :: integer
|
610
|
+
%t663 = const 0 :: integer
|
611
|
+
%t664 = select %t657, %t662, %t663 :: integer
|
612
|
+
%t665 = load_input "rows" :: array
|
613
|
+
%t666 = Length %t665 :: integer
|
614
|
+
%t667 = const 1 :: integer
|
615
|
+
%t668 = call core.sub(%rows_i_255, %t667) :: integer
|
616
|
+
%t669 = const 0 :: integer
|
617
|
+
%t670 = call core.gte(%t668, %t669) :: boolean
|
618
|
+
%t671 = call core.lt(%t668, %t666) :: boolean
|
619
|
+
%t672 = call core.and(%t670, %t671) :: boolean
|
620
|
+
%t673 = const 1 :: integer
|
621
|
+
%t674 = call core.sub(%t666, %t673) :: integer
|
622
|
+
%t675 = const 0 :: integer
|
623
|
+
%t676 = call core.clamp(%t668, %t675, %t674) :: integer
|
624
|
+
%t677 = Gather %t665, %t676 :: any
|
625
|
+
%t678 = Length %t677 :: integer
|
626
|
+
%t679 = const -1 :: integer
|
627
|
+
%t680 = call core.sub(%col_i_257, %t679) :: integer
|
628
|
+
%t681 = const 0 :: integer
|
629
|
+
%t682 = call core.gte(%t680, %t681) :: boolean
|
630
|
+
%t683 = call core.lt(%t680, %t678) :: boolean
|
631
|
+
%t684 = call core.and(%t682, %t683) :: boolean
|
632
|
+
%t685 = call core.and(%t672, %t684) :: boolean
|
633
|
+
%t686 = const 1 :: integer
|
634
|
+
%t687 = call core.sub(%t678, %t686) :: integer
|
635
|
+
%t688 = const 0 :: integer
|
636
|
+
%t689 = call core.clamp(%t680, %t688, %t687) :: integer
|
637
|
+
%t690 = Gather %t677, %t689 :: integer
|
638
|
+
%t691 = const 0 :: integer
|
639
|
+
%t692 = select %t685, %t690, %t691 :: integer
|
640
|
+
%t693 = load_input "rows" :: array
|
641
|
+
%t694 = Length %t693 :: integer
|
642
|
+
%t695 = const 1 :: integer
|
643
|
+
%t696 = call core.sub(%rows_i_255, %t695) :: integer
|
644
|
+
%t697 = const 0 :: integer
|
645
|
+
%t698 = call core.gte(%t696, %t697) :: boolean
|
646
|
+
%t699 = call core.lt(%t696, %t694) :: boolean
|
647
|
+
%t700 = call core.and(%t698, %t699) :: boolean
|
648
|
+
%t701 = const 1 :: integer
|
649
|
+
%t702 = call core.sub(%t694, %t701) :: integer
|
650
|
+
%t703 = const 0 :: integer
|
651
|
+
%t704 = call core.clamp(%t696, %t703, %t702) :: integer
|
652
|
+
%t705 = Gather %t693, %t704 :: any
|
653
|
+
%t706 = Length %t705 :: integer
|
654
|
+
%t707 = const 1 :: integer
|
655
|
+
%t708 = call core.sub(%col_i_257, %t707) :: integer
|
656
|
+
%t709 = const 0 :: integer
|
657
|
+
%t710 = call core.gte(%t708, %t709) :: boolean
|
658
|
+
%t711 = call core.lt(%t708, %t706) :: boolean
|
659
|
+
%t712 = call core.and(%t710, %t711) :: boolean
|
660
|
+
%t713 = call core.and(%t700, %t712) :: boolean
|
661
|
+
%t714 = const 1 :: integer
|
662
|
+
%t715 = call core.sub(%t706, %t714) :: integer
|
663
|
+
%t716 = const 0 :: integer
|
664
|
+
%t717 = call core.clamp(%t708, %t716, %t715) :: integer
|
665
|
+
%t718 = Gather %t705, %t717 :: integer
|
666
|
+
%t719 = const 0 :: integer
|
667
|
+
%t720 = select %t713, %t718, %t719 :: integer
|
668
|
+
%t496 = make_tuple(%t548, %t568, %t588, %t608, %t636, %t664, %t692, %t720) :: tuple<integer>
|
669
|
+
%t497 = Fold %t496 fn="agg.sum" ::
|
670
|
+
%t259 = const 3 :: integer
|
671
|
+
%t260 = call core.eq(%t497, %t259) :: boolean
|
672
|
+
yield %t260
|
673
|
+
end_loop
|
674
|
+
end_loop
|
675
|
+
)
|
676
|
+
(Declaration n2_alive
|
677
|
+
%t261 = load_input "rows" :: array
|
678
|
+
loop rows id=L25 in %t261 as el=%rows_el_262, idx=%rows_i_263
|
679
|
+
loop col id=L26 in %rows_el_262 as el=%col_el_264, idx=%col_i_265
|
680
|
+
%t498 = load_input "rows" :: array
|
681
|
+
%t721 = load_input "rows" :: array
|
682
|
+
%t722 = Length %t721 :: integer
|
683
|
+
%t723 = const -1 :: integer
|
684
|
+
%t724 = call core.sub(%rows_i_263, %t723) :: integer
|
685
|
+
%t725 = const 0 :: integer
|
686
|
+
%t726 = call core.gte(%t724, %t725) :: boolean
|
687
|
+
%t727 = call core.lt(%t724, %t722) :: boolean
|
688
|
+
%t728 = call core.and(%t726, %t727) :: boolean
|
689
|
+
%t729 = const 1 :: integer
|
690
|
+
%t730 = call core.sub(%t722, %t729) :: integer
|
691
|
+
%t731 = const 0 :: integer
|
692
|
+
%t732 = call core.clamp(%t724, %t731, %t730) :: integer
|
693
|
+
%t733 = Gather %t721, %t732 :: any
|
694
|
+
%t734 = Length %t733 :: integer
|
695
|
+
%t735 = call core.mod(%col_i_265, %t734) :: integer
|
696
|
+
%t736 = call core.add(%t735, %t734) :: integer
|
697
|
+
%t737 = call core.mod(%t736, %t734) :: integer
|
698
|
+
%t738 = Gather %t733, %t737 :: integer
|
699
|
+
%t739 = const 0 :: integer
|
700
|
+
%t740 = select %t728, %t738, %t739 :: integer
|
701
|
+
%t741 = load_input "rows" :: array
|
702
|
+
%t742 = Length %t741 :: integer
|
703
|
+
%t743 = const 1 :: integer
|
704
|
+
%t744 = call core.sub(%rows_i_263, %t743) :: integer
|
705
|
+
%t745 = const 0 :: integer
|
706
|
+
%t746 = call core.gte(%t744, %t745) :: boolean
|
707
|
+
%t747 = call core.lt(%t744, %t742) :: boolean
|
708
|
+
%t748 = call core.and(%t746, %t747) :: boolean
|
709
|
+
%t749 = const 1 :: integer
|
710
|
+
%t750 = call core.sub(%t742, %t749) :: integer
|
711
|
+
%t751 = const 0 :: integer
|
712
|
+
%t752 = call core.clamp(%t744, %t751, %t750) :: integer
|
713
|
+
%t753 = Gather %t741, %t752 :: any
|
714
|
+
%t754 = Length %t753 :: integer
|
715
|
+
%t755 = call core.mod(%col_i_265, %t754) :: integer
|
716
|
+
%t756 = call core.add(%t755, %t754) :: integer
|
717
|
+
%t757 = call core.mod(%t756, %t754) :: integer
|
718
|
+
%t758 = Gather %t753, %t757 :: integer
|
719
|
+
%t759 = const 0 :: integer
|
720
|
+
%t760 = select %t748, %t758, %t759 :: integer
|
721
|
+
%t761 = load_input "rows" :: array
|
722
|
+
%t762 = Length %t761 :: integer
|
723
|
+
%t763 = call core.mod(%rows_i_263, %t762) :: integer
|
724
|
+
%t764 = call core.add(%t763, %t762) :: integer
|
725
|
+
%t765 = call core.mod(%t764, %t762) :: integer
|
726
|
+
%t766 = Gather %t761, %t765 :: any
|
727
|
+
%t767 = Length %t766 :: integer
|
728
|
+
%t768 = const -1 :: integer
|
729
|
+
%t769 = call core.sub(%col_i_265, %t768) :: integer
|
730
|
+
%t770 = const 0 :: integer
|
731
|
+
%t771 = call core.gte(%t769, %t770) :: boolean
|
732
|
+
%t772 = call core.lt(%t769, %t767) :: boolean
|
733
|
+
%t773 = call core.and(%t771, %t772) :: boolean
|
734
|
+
%t774 = const 1 :: integer
|
735
|
+
%t775 = call core.sub(%t767, %t774) :: integer
|
736
|
+
%t776 = const 0 :: integer
|
737
|
+
%t777 = call core.clamp(%t769, %t776, %t775) :: integer
|
738
|
+
%t778 = Gather %t766, %t777 :: integer
|
739
|
+
%t779 = const 0 :: integer
|
740
|
+
%t780 = select %t773, %t778, %t779 :: integer
|
741
|
+
%t781 = load_input "rows" :: array
|
742
|
+
%t782 = Length %t781 :: integer
|
743
|
+
%t783 = call core.mod(%rows_i_263, %t782) :: integer
|
744
|
+
%t784 = call core.add(%t783, %t782) :: integer
|
745
|
+
%t785 = call core.mod(%t784, %t782) :: integer
|
746
|
+
%t786 = Gather %t781, %t785 :: any
|
747
|
+
%t787 = Length %t786 :: integer
|
748
|
+
%t788 = const 1 :: integer
|
749
|
+
%t789 = call core.sub(%col_i_265, %t788) :: integer
|
750
|
+
%t790 = const 0 :: integer
|
751
|
+
%t791 = call core.gte(%t789, %t790) :: boolean
|
752
|
+
%t792 = call core.lt(%t789, %t787) :: boolean
|
753
|
+
%t793 = call core.and(%t791, %t792) :: boolean
|
754
|
+
%t794 = const 1 :: integer
|
755
|
+
%t795 = call core.sub(%t787, %t794) :: integer
|
756
|
+
%t796 = const 0 :: integer
|
757
|
+
%t797 = call core.clamp(%t789, %t796, %t795) :: integer
|
758
|
+
%t798 = Gather %t786, %t797 :: integer
|
759
|
+
%t799 = const 0 :: integer
|
760
|
+
%t800 = select %t793, %t798, %t799 :: integer
|
761
|
+
%t801 = load_input "rows" :: array
|
762
|
+
%t802 = Length %t801 :: integer
|
763
|
+
%t803 = const -1 :: integer
|
764
|
+
%t804 = call core.sub(%rows_i_263, %t803) :: integer
|
765
|
+
%t805 = const 0 :: integer
|
766
|
+
%t806 = call core.gte(%t804, %t805) :: boolean
|
767
|
+
%t807 = call core.lt(%t804, %t802) :: boolean
|
768
|
+
%t808 = call core.and(%t806, %t807) :: boolean
|
769
|
+
%t809 = const 1 :: integer
|
770
|
+
%t810 = call core.sub(%t802, %t809) :: integer
|
771
|
+
%t811 = const 0 :: integer
|
772
|
+
%t812 = call core.clamp(%t804, %t811, %t810) :: integer
|
773
|
+
%t813 = Gather %t801, %t812 :: any
|
774
|
+
%t814 = Length %t813 :: integer
|
775
|
+
%t815 = const -1 :: integer
|
776
|
+
%t816 = call core.sub(%col_i_265, %t815) :: integer
|
777
|
+
%t817 = const 0 :: integer
|
778
|
+
%t818 = call core.gte(%t816, %t817) :: boolean
|
779
|
+
%t819 = call core.lt(%t816, %t814) :: boolean
|
780
|
+
%t820 = call core.and(%t818, %t819) :: boolean
|
781
|
+
%t821 = call core.and(%t808, %t820) :: boolean
|
782
|
+
%t822 = const 1 :: integer
|
783
|
+
%t823 = call core.sub(%t814, %t822) :: integer
|
784
|
+
%t824 = const 0 :: integer
|
785
|
+
%t825 = call core.clamp(%t816, %t824, %t823) :: integer
|
786
|
+
%t826 = Gather %t813, %t825 :: integer
|
787
|
+
%t827 = const 0 :: integer
|
788
|
+
%t828 = select %t821, %t826, %t827 :: integer
|
789
|
+
%t829 = load_input "rows" :: array
|
790
|
+
%t830 = Length %t829 :: integer
|
791
|
+
%t831 = const -1 :: integer
|
792
|
+
%t832 = call core.sub(%rows_i_263, %t831) :: integer
|
793
|
+
%t833 = const 0 :: integer
|
794
|
+
%t834 = call core.gte(%t832, %t833) :: boolean
|
795
|
+
%t835 = call core.lt(%t832, %t830) :: boolean
|
796
|
+
%t836 = call core.and(%t834, %t835) :: boolean
|
797
|
+
%t837 = const 1 :: integer
|
798
|
+
%t838 = call core.sub(%t830, %t837) :: integer
|
799
|
+
%t839 = const 0 :: integer
|
800
|
+
%t840 = call core.clamp(%t832, %t839, %t838) :: integer
|
801
|
+
%t841 = Gather %t829, %t840 :: any
|
802
|
+
%t842 = Length %t841 :: integer
|
803
|
+
%t843 = const 1 :: integer
|
804
|
+
%t844 = call core.sub(%col_i_265, %t843) :: integer
|
805
|
+
%t845 = const 0 :: integer
|
806
|
+
%t846 = call core.gte(%t844, %t845) :: boolean
|
807
|
+
%t847 = call core.lt(%t844, %t842) :: boolean
|
808
|
+
%t848 = call core.and(%t846, %t847) :: boolean
|
809
|
+
%t849 = call core.and(%t836, %t848) :: boolean
|
810
|
+
%t850 = const 1 :: integer
|
811
|
+
%t851 = call core.sub(%t842, %t850) :: integer
|
812
|
+
%t852 = const 0 :: integer
|
813
|
+
%t853 = call core.clamp(%t844, %t852, %t851) :: integer
|
814
|
+
%t854 = Gather %t841, %t853 :: integer
|
815
|
+
%t855 = const 0 :: integer
|
816
|
+
%t856 = select %t849, %t854, %t855 :: integer
|
817
|
+
%t857 = load_input "rows" :: array
|
818
|
+
%t858 = Length %t857 :: integer
|
819
|
+
%t859 = const 1 :: integer
|
820
|
+
%t860 = call core.sub(%rows_i_263, %t859) :: integer
|
821
|
+
%t861 = const 0 :: integer
|
822
|
+
%t862 = call core.gte(%t860, %t861) :: boolean
|
823
|
+
%t863 = call core.lt(%t860, %t858) :: boolean
|
824
|
+
%t864 = call core.and(%t862, %t863) :: boolean
|
825
|
+
%t865 = const 1 :: integer
|
826
|
+
%t866 = call core.sub(%t858, %t865) :: integer
|
827
|
+
%t867 = const 0 :: integer
|
828
|
+
%t868 = call core.clamp(%t860, %t867, %t866) :: integer
|
829
|
+
%t869 = Gather %t857, %t868 :: any
|
830
|
+
%t870 = Length %t869 :: integer
|
831
|
+
%t871 = const -1 :: integer
|
832
|
+
%t872 = call core.sub(%col_i_265, %t871) :: integer
|
833
|
+
%t873 = const 0 :: integer
|
834
|
+
%t874 = call core.gte(%t872, %t873) :: boolean
|
835
|
+
%t875 = call core.lt(%t872, %t870) :: boolean
|
836
|
+
%t876 = call core.and(%t874, %t875) :: boolean
|
837
|
+
%t877 = call core.and(%t864, %t876) :: boolean
|
838
|
+
%t878 = const 1 :: integer
|
839
|
+
%t879 = call core.sub(%t870, %t878) :: integer
|
840
|
+
%t880 = const 0 :: integer
|
841
|
+
%t881 = call core.clamp(%t872, %t880, %t879) :: integer
|
842
|
+
%t882 = Gather %t869, %t881 :: integer
|
843
|
+
%t883 = const 0 :: integer
|
844
|
+
%t884 = select %t877, %t882, %t883 :: integer
|
845
|
+
%t885 = load_input "rows" :: array
|
846
|
+
%t886 = Length %t885 :: integer
|
847
|
+
%t887 = const 1 :: integer
|
848
|
+
%t888 = call core.sub(%rows_i_263, %t887) :: integer
|
849
|
+
%t889 = const 0 :: integer
|
850
|
+
%t890 = call core.gte(%t888, %t889) :: boolean
|
851
|
+
%t891 = call core.lt(%t888, %t886) :: boolean
|
852
|
+
%t892 = call core.and(%t890, %t891) :: boolean
|
853
|
+
%t893 = const 1 :: integer
|
854
|
+
%t894 = call core.sub(%t886, %t893) :: integer
|
855
|
+
%t895 = const 0 :: integer
|
856
|
+
%t896 = call core.clamp(%t888, %t895, %t894) :: integer
|
857
|
+
%t897 = Gather %t885, %t896 :: any
|
858
|
+
%t898 = Length %t897 :: integer
|
859
|
+
%t899 = const 1 :: integer
|
860
|
+
%t900 = call core.sub(%col_i_265, %t899) :: integer
|
861
|
+
%t901 = const 0 :: integer
|
862
|
+
%t902 = call core.gte(%t900, %t901) :: boolean
|
863
|
+
%t903 = call core.lt(%t900, %t898) :: boolean
|
864
|
+
%t904 = call core.and(%t902, %t903) :: boolean
|
865
|
+
%t905 = call core.and(%t892, %t904) :: boolean
|
866
|
+
%t906 = const 1 :: integer
|
867
|
+
%t907 = call core.sub(%t898, %t906) :: integer
|
868
|
+
%t908 = const 0 :: integer
|
869
|
+
%t909 = call core.clamp(%t900, %t908, %t907) :: integer
|
870
|
+
%t910 = Gather %t897, %t909 :: integer
|
871
|
+
%t911 = const 0 :: integer
|
872
|
+
%t912 = select %t905, %t910, %t911 :: integer
|
873
|
+
%t507 = make_tuple(%t740, %t760, %t780, %t800, %t828, %t856, %t884, %t912) :: tuple<integer>
|
874
|
+
%t508 = Fold %t507 fn="agg.sum" ::
|
875
|
+
%t267 = const 2 :: integer
|
876
|
+
%t268 = call core.eq(%t508, %t267) :: boolean
|
877
|
+
yield %t268
|
878
|
+
end_loop
|
879
|
+
end_loop
|
880
|
+
)
|
881
|
+
(Declaration keep_alive
|
882
|
+
%t269 = load_input "rows" :: array
|
883
|
+
loop rows id=L27 in %t269 as el=%rows_el_270, idx=%rows_i_271
|
884
|
+
loop col id=L28 in %rows_el_270 as el=%col_el_272, idx=%col_i_273
|
885
|
+
%t509 = load_input "rows" :: array
|
886
|
+
%t913 = load_input "rows" :: array
|
887
|
+
%t914 = load_input "rows" :: array
|
888
|
+
%t915 = Length %t914 :: integer
|
889
|
+
%t916 = const -1 :: integer
|
890
|
+
%t917 = call core.sub(%rows_i_271, %t916) :: integer
|
891
|
+
%t918 = const 0 :: integer
|
892
|
+
%t919 = call core.gte(%t917, %t918) :: boolean
|
893
|
+
%t920 = call core.lt(%t917, %t915) :: boolean
|
894
|
+
%t921 = call core.and(%t919, %t920) :: boolean
|
895
|
+
%t922 = const 1 :: integer
|
896
|
+
%t923 = call core.sub(%t915, %t922) :: integer
|
897
|
+
%t924 = const 0 :: integer
|
898
|
+
%t925 = call core.clamp(%t917, %t924, %t923) :: integer
|
899
|
+
%t926 = Gather %t914, %t925 :: any
|
900
|
+
%t927 = Length %t926 :: integer
|
901
|
+
%t928 = call core.mod(%col_i_273, %t927) :: integer
|
902
|
+
%t929 = call core.add(%t928, %t927) :: integer
|
903
|
+
%t930 = call core.mod(%t929, %t927) :: integer
|
904
|
+
%t931 = Gather %t926, %t930 :: integer
|
905
|
+
%t932 = const 0 :: integer
|
906
|
+
%t933 = select %t921, %t931, %t932 :: integer
|
907
|
+
%t934 = load_input "rows" :: array
|
908
|
+
%t935 = Length %t934 :: integer
|
909
|
+
%t936 = const 1 :: integer
|
910
|
+
%t937 = call core.sub(%rows_i_271, %t936) :: integer
|
911
|
+
%t938 = const 0 :: integer
|
912
|
+
%t939 = call core.gte(%t937, %t938) :: boolean
|
913
|
+
%t940 = call core.lt(%t937, %t935) :: boolean
|
914
|
+
%t941 = call core.and(%t939, %t940) :: boolean
|
915
|
+
%t942 = const 1 :: integer
|
916
|
+
%t943 = call core.sub(%t935, %t942) :: integer
|
917
|
+
%t944 = const 0 :: integer
|
918
|
+
%t945 = call core.clamp(%t937, %t944, %t943) :: integer
|
919
|
+
%t946 = Gather %t934, %t945 :: any
|
920
|
+
%t947 = Length %t946 :: integer
|
921
|
+
%t948 = call core.mod(%col_i_273, %t947) :: integer
|
922
|
+
%t949 = call core.add(%t948, %t947) :: integer
|
923
|
+
%t950 = call core.mod(%t949, %t947) :: integer
|
924
|
+
%t951 = Gather %t946, %t950 :: integer
|
925
|
+
%t952 = const 0 :: integer
|
926
|
+
%t953 = select %t941, %t951, %t952 :: integer
|
927
|
+
%t954 = load_input "rows" :: array
|
928
|
+
%t955 = Length %t954 :: integer
|
929
|
+
%t956 = call core.mod(%rows_i_271, %t955) :: integer
|
930
|
+
%t957 = call core.add(%t956, %t955) :: integer
|
931
|
+
%t958 = call core.mod(%t957, %t955) :: integer
|
932
|
+
%t959 = Gather %t954, %t958 :: any
|
933
|
+
%t960 = Length %t959 :: integer
|
934
|
+
%t961 = const -1 :: integer
|
935
|
+
%t962 = call core.sub(%col_i_273, %t961) :: integer
|
936
|
+
%t963 = const 0 :: integer
|
937
|
+
%t964 = call core.gte(%t962, %t963) :: boolean
|
938
|
+
%t965 = call core.lt(%t962, %t960) :: boolean
|
939
|
+
%t966 = call core.and(%t964, %t965) :: boolean
|
940
|
+
%t967 = const 1 :: integer
|
941
|
+
%t968 = call core.sub(%t960, %t967) :: integer
|
942
|
+
%t969 = const 0 :: integer
|
943
|
+
%t970 = call core.clamp(%t962, %t969, %t968) :: integer
|
944
|
+
%t971 = Gather %t959, %t970 :: integer
|
945
|
+
%t972 = const 0 :: integer
|
946
|
+
%t973 = select %t966, %t971, %t972 :: integer
|
947
|
+
%t974 = load_input "rows" :: array
|
948
|
+
%t975 = Length %t974 :: integer
|
949
|
+
%t976 = call core.mod(%rows_i_271, %t975) :: integer
|
950
|
+
%t977 = call core.add(%t976, %t975) :: integer
|
951
|
+
%t978 = call core.mod(%t977, %t975) :: integer
|
952
|
+
%t979 = Gather %t974, %t978 :: any
|
953
|
+
%t980 = Length %t979 :: integer
|
954
|
+
%t981 = const 1 :: integer
|
955
|
+
%t982 = call core.sub(%col_i_273, %t981) :: integer
|
956
|
+
%t983 = const 0 :: integer
|
957
|
+
%t984 = call core.gte(%t982, %t983) :: boolean
|
958
|
+
%t985 = call core.lt(%t982, %t980) :: boolean
|
959
|
+
%t986 = call core.and(%t984, %t985) :: boolean
|
960
|
+
%t987 = const 1 :: integer
|
961
|
+
%t988 = call core.sub(%t980, %t987) :: integer
|
962
|
+
%t989 = const 0 :: integer
|
963
|
+
%t990 = call core.clamp(%t982, %t989, %t988) :: integer
|
964
|
+
%t991 = Gather %t979, %t990 :: integer
|
965
|
+
%t992 = const 0 :: integer
|
966
|
+
%t993 = select %t986, %t991, %t992 :: integer
|
967
|
+
%t994 = load_input "rows" :: array
|
968
|
+
%t995 = Length %t994 :: integer
|
969
|
+
%t996 = const -1 :: integer
|
970
|
+
%t997 = call core.sub(%rows_i_271, %t996) :: integer
|
971
|
+
%t998 = const 0 :: integer
|
972
|
+
%t999 = call core.gte(%t997, %t998) :: boolean
|
973
|
+
%t1000 = call core.lt(%t997, %t995) :: boolean
|
974
|
+
%t1001 = call core.and(%t999, %t1000) :: boolean
|
975
|
+
%t1002 = const 1 :: integer
|
976
|
+
%t1003 = call core.sub(%t995, %t1002) :: integer
|
977
|
+
%t1004 = const 0 :: integer
|
978
|
+
%t1005 = call core.clamp(%t997, %t1004, %t1003) :: integer
|
979
|
+
%t1006 = Gather %t994, %t1005 :: any
|
980
|
+
%t1007 = Length %t1006 :: integer
|
981
|
+
%t1008 = const -1 :: integer
|
982
|
+
%t1009 = call core.sub(%col_i_273, %t1008) :: integer
|
983
|
+
%t1010 = const 0 :: integer
|
984
|
+
%t1011 = call core.gte(%t1009, %t1010) :: boolean
|
985
|
+
%t1012 = call core.lt(%t1009, %t1007) :: boolean
|
986
|
+
%t1013 = call core.and(%t1011, %t1012) :: boolean
|
987
|
+
%t1014 = call core.and(%t1001, %t1013) :: boolean
|
988
|
+
%t1015 = const 1 :: integer
|
989
|
+
%t1016 = call core.sub(%t1007, %t1015) :: integer
|
990
|
+
%t1017 = const 0 :: integer
|
991
|
+
%t1018 = call core.clamp(%t1009, %t1017, %t1016) :: integer
|
992
|
+
%t1019 = Gather %t1006, %t1018 :: integer
|
993
|
+
%t1020 = const 0 :: integer
|
994
|
+
%t1021 = select %t1014, %t1019, %t1020 :: integer
|
995
|
+
%t1022 = load_input "rows" :: array
|
996
|
+
%t1023 = Length %t1022 :: integer
|
997
|
+
%t1024 = const -1 :: integer
|
998
|
+
%t1025 = call core.sub(%rows_i_271, %t1024) :: integer
|
999
|
+
%t1026 = const 0 :: integer
|
1000
|
+
%t1027 = call core.gte(%t1025, %t1026) :: boolean
|
1001
|
+
%t1028 = call core.lt(%t1025, %t1023) :: boolean
|
1002
|
+
%t1029 = call core.and(%t1027, %t1028) :: boolean
|
1003
|
+
%t1030 = const 1 :: integer
|
1004
|
+
%t1031 = call core.sub(%t1023, %t1030) :: integer
|
1005
|
+
%t1032 = const 0 :: integer
|
1006
|
+
%t1033 = call core.clamp(%t1025, %t1032, %t1031) :: integer
|
1007
|
+
%t1034 = Gather %t1022, %t1033 :: any
|
1008
|
+
%t1035 = Length %t1034 :: integer
|
1009
|
+
%t1036 = const 1 :: integer
|
1010
|
+
%t1037 = call core.sub(%col_i_273, %t1036) :: integer
|
1011
|
+
%t1038 = const 0 :: integer
|
1012
|
+
%t1039 = call core.gte(%t1037, %t1038) :: boolean
|
1013
|
+
%t1040 = call core.lt(%t1037, %t1035) :: boolean
|
1014
|
+
%t1041 = call core.and(%t1039, %t1040) :: boolean
|
1015
|
+
%t1042 = call core.and(%t1029, %t1041) :: boolean
|
1016
|
+
%t1043 = const 1 :: integer
|
1017
|
+
%t1044 = call core.sub(%t1035, %t1043) :: integer
|
1018
|
+
%t1045 = const 0 :: integer
|
1019
|
+
%t1046 = call core.clamp(%t1037, %t1045, %t1044) :: integer
|
1020
|
+
%t1047 = Gather %t1034, %t1046 :: integer
|
1021
|
+
%t1048 = const 0 :: integer
|
1022
|
+
%t1049 = select %t1042, %t1047, %t1048 :: integer
|
1023
|
+
%t1050 = load_input "rows" :: array
|
1024
|
+
%t1051 = Length %t1050 :: integer
|
1025
|
+
%t1052 = const 1 :: integer
|
1026
|
+
%t1053 = call core.sub(%rows_i_271, %t1052) :: integer
|
1027
|
+
%t1054 = const 0 :: integer
|
1028
|
+
%t1055 = call core.gte(%t1053, %t1054) :: boolean
|
1029
|
+
%t1056 = call core.lt(%t1053, %t1051) :: boolean
|
1030
|
+
%t1057 = call core.and(%t1055, %t1056) :: boolean
|
1031
|
+
%t1058 = const 1 :: integer
|
1032
|
+
%t1059 = call core.sub(%t1051, %t1058) :: integer
|
1033
|
+
%t1060 = const 0 :: integer
|
1034
|
+
%t1061 = call core.clamp(%t1053, %t1060, %t1059) :: integer
|
1035
|
+
%t1062 = Gather %t1050, %t1061 :: any
|
1036
|
+
%t1063 = Length %t1062 :: integer
|
1037
|
+
%t1064 = const -1 :: integer
|
1038
|
+
%t1065 = call core.sub(%col_i_273, %t1064) :: integer
|
1039
|
+
%t1066 = const 0 :: integer
|
1040
|
+
%t1067 = call core.gte(%t1065, %t1066) :: boolean
|
1041
|
+
%t1068 = call core.lt(%t1065, %t1063) :: boolean
|
1042
|
+
%t1069 = call core.and(%t1067, %t1068) :: boolean
|
1043
|
+
%t1070 = call core.and(%t1057, %t1069) :: boolean
|
1044
|
+
%t1071 = const 1 :: integer
|
1045
|
+
%t1072 = call core.sub(%t1063, %t1071) :: integer
|
1046
|
+
%t1073 = const 0 :: integer
|
1047
|
+
%t1074 = call core.clamp(%t1065, %t1073, %t1072) :: integer
|
1048
|
+
%t1075 = Gather %t1062, %t1074 :: integer
|
1049
|
+
%t1076 = const 0 :: integer
|
1050
|
+
%t1077 = select %t1070, %t1075, %t1076 :: integer
|
1051
|
+
%t1078 = load_input "rows" :: array
|
1052
|
+
%t1079 = Length %t1078 :: integer
|
1053
|
+
%t1080 = const 1 :: integer
|
1054
|
+
%t1081 = call core.sub(%rows_i_271, %t1080) :: integer
|
1055
|
+
%t1082 = const 0 :: integer
|
1056
|
+
%t1083 = call core.gte(%t1081, %t1082) :: boolean
|
1057
|
+
%t1084 = call core.lt(%t1081, %t1079) :: boolean
|
1058
|
+
%t1085 = call core.and(%t1083, %t1084) :: boolean
|
1059
|
+
%t1086 = const 1 :: integer
|
1060
|
+
%t1087 = call core.sub(%t1079, %t1086) :: integer
|
1061
|
+
%t1088 = const 0 :: integer
|
1062
|
+
%t1089 = call core.clamp(%t1081, %t1088, %t1087) :: integer
|
1063
|
+
%t1090 = Gather %t1078, %t1089 :: any
|
1064
|
+
%t1091 = Length %t1090 :: integer
|
1065
|
+
%t1092 = const 1 :: integer
|
1066
|
+
%t1093 = call core.sub(%col_i_273, %t1092) :: integer
|
1067
|
+
%t1094 = const 0 :: integer
|
1068
|
+
%t1095 = call core.gte(%t1093, %t1094) :: boolean
|
1069
|
+
%t1096 = call core.lt(%t1093, %t1091) :: boolean
|
1070
|
+
%t1097 = call core.and(%t1095, %t1096) :: boolean
|
1071
|
+
%t1098 = call core.and(%t1085, %t1097) :: boolean
|
1072
|
+
%t1099 = const 1 :: integer
|
1073
|
+
%t1100 = call core.sub(%t1091, %t1099) :: integer
|
1074
|
+
%t1101 = const 0 :: integer
|
1075
|
+
%t1102 = call core.clamp(%t1093, %t1101, %t1100) :: integer
|
1076
|
+
%t1103 = Gather %t1090, %t1102 :: integer
|
1077
|
+
%t1104 = const 0 :: integer
|
1078
|
+
%t1105 = select %t1098, %t1103, %t1104 :: integer
|
1079
|
+
%t1106 = make_tuple(%t933, %t953, %t973, %t993, %t1021, %t1049, %t1077, %t1105) :: tuple<integer>
|
1080
|
+
%t1107 = Fold %t1106 fn="agg.sum" ::
|
1081
|
+
%t511 = const 2 :: integer
|
1082
|
+
%t512 = call core.eq(%t1107, %t511) :: boolean
|
1083
|
+
%t513 = load_input "rows" :: array
|
1084
|
+
%t1108 = load_input "rows" :: array
|
1085
|
+
%t515 = const 0 :: integer
|
1086
|
+
%t516 = call core.gt(%col_el_272, %t515) :: boolean
|
1087
|
+
%t276 = call core.and(%t512, %t516) :: boolean
|
1088
|
+
yield %t276
|
1089
|
+
end_loop
|
1090
|
+
end_loop
|
1091
|
+
)
|
1092
|
+
(Declaration next_alive
|
1093
|
+
%t277 = load_input "rows" :: array
|
1094
|
+
loop rows id=L29 in %t277 as el=%rows_el_278, idx=%rows_i_279
|
1095
|
+
loop col id=L30 in %rows_el_278 as el=%col_el_280, idx=%col_i_281
|
1096
|
+
%t517 = load_input "rows" :: array
|
1097
|
+
%t1109 = load_input "rows" :: array
|
1098
|
+
%t1110 = load_input "rows" :: array
|
1099
|
+
%t1111 = Length %t1110 :: integer
|
1100
|
+
%t1112 = const -1 :: integer
|
1101
|
+
%t1113 = call core.sub(%rows_i_279, %t1112) :: integer
|
1102
|
+
%t1114 = const 0 :: integer
|
1103
|
+
%t1115 = call core.gte(%t1113, %t1114) :: boolean
|
1104
|
+
%t1116 = call core.lt(%t1113, %t1111) :: boolean
|
1105
|
+
%t1117 = call core.and(%t1115, %t1116) :: boolean
|
1106
|
+
%t1118 = const 1 :: integer
|
1107
|
+
%t1119 = call core.sub(%t1111, %t1118) :: integer
|
1108
|
+
%t1120 = const 0 :: integer
|
1109
|
+
%t1121 = call core.clamp(%t1113, %t1120, %t1119) :: integer
|
1110
|
+
%t1122 = Gather %t1110, %t1121 :: any
|
1111
|
+
%t1123 = Length %t1122 :: integer
|
1112
|
+
%t1124 = call core.mod(%col_i_281, %t1123) :: integer
|
1113
|
+
%t1125 = call core.add(%t1124, %t1123) :: integer
|
1114
|
+
%t1126 = call core.mod(%t1125, %t1123) :: integer
|
1115
|
+
%t1127 = Gather %t1122, %t1126 :: integer
|
1116
|
+
%t1128 = const 0 :: integer
|
1117
|
+
%t1129 = select %t1117, %t1127, %t1128 :: integer
|
1118
|
+
%t1130 = load_input "rows" :: array
|
1119
|
+
%t1131 = Length %t1130 :: integer
|
1120
|
+
%t1132 = const 1 :: integer
|
1121
|
+
%t1133 = call core.sub(%rows_i_279, %t1132) :: integer
|
1122
|
+
%t1134 = const 0 :: integer
|
1123
|
+
%t1135 = call core.gte(%t1133, %t1134) :: boolean
|
1124
|
+
%t1136 = call core.lt(%t1133, %t1131) :: boolean
|
1125
|
+
%t1137 = call core.and(%t1135, %t1136) :: boolean
|
1126
|
+
%t1138 = const 1 :: integer
|
1127
|
+
%t1139 = call core.sub(%t1131, %t1138) :: integer
|
1128
|
+
%t1140 = const 0 :: integer
|
1129
|
+
%t1141 = call core.clamp(%t1133, %t1140, %t1139) :: integer
|
1130
|
+
%t1142 = Gather %t1130, %t1141 :: any
|
1131
|
+
%t1143 = Length %t1142 :: integer
|
1132
|
+
%t1144 = call core.mod(%col_i_281, %t1143) :: integer
|
1133
|
+
%t1145 = call core.add(%t1144, %t1143) :: integer
|
1134
|
+
%t1146 = call core.mod(%t1145, %t1143) :: integer
|
1135
|
+
%t1147 = Gather %t1142, %t1146 :: integer
|
1136
|
+
%t1148 = const 0 :: integer
|
1137
|
+
%t1149 = select %t1137, %t1147, %t1148 :: integer
|
1138
|
+
%t1150 = load_input "rows" :: array
|
1139
|
+
%t1151 = Length %t1150 :: integer
|
1140
|
+
%t1152 = call core.mod(%rows_i_279, %t1151) :: integer
|
1141
|
+
%t1153 = call core.add(%t1152, %t1151) :: integer
|
1142
|
+
%t1154 = call core.mod(%t1153, %t1151) :: integer
|
1143
|
+
%t1155 = Gather %t1150, %t1154 :: any
|
1144
|
+
%t1156 = Length %t1155 :: integer
|
1145
|
+
%t1157 = const -1 :: integer
|
1146
|
+
%t1158 = call core.sub(%col_i_281, %t1157) :: integer
|
1147
|
+
%t1159 = const 0 :: integer
|
1148
|
+
%t1160 = call core.gte(%t1158, %t1159) :: boolean
|
1149
|
+
%t1161 = call core.lt(%t1158, %t1156) :: boolean
|
1150
|
+
%t1162 = call core.and(%t1160, %t1161) :: boolean
|
1151
|
+
%t1163 = const 1 :: integer
|
1152
|
+
%t1164 = call core.sub(%t1156, %t1163) :: integer
|
1153
|
+
%t1165 = const 0 :: integer
|
1154
|
+
%t1166 = call core.clamp(%t1158, %t1165, %t1164) :: integer
|
1155
|
+
%t1167 = Gather %t1155, %t1166 :: integer
|
1156
|
+
%t1168 = const 0 :: integer
|
1157
|
+
%t1169 = select %t1162, %t1167, %t1168 :: integer
|
1158
|
+
%t1170 = load_input "rows" :: array
|
1159
|
+
%t1171 = Length %t1170 :: integer
|
1160
|
+
%t1172 = call core.mod(%rows_i_279, %t1171) :: integer
|
1161
|
+
%t1173 = call core.add(%t1172, %t1171) :: integer
|
1162
|
+
%t1174 = call core.mod(%t1173, %t1171) :: integer
|
1163
|
+
%t1175 = Gather %t1170, %t1174 :: any
|
1164
|
+
%t1176 = Length %t1175 :: integer
|
1165
|
+
%t1177 = const 1 :: integer
|
1166
|
+
%t1178 = call core.sub(%col_i_281, %t1177) :: integer
|
1167
|
+
%t1179 = const 0 :: integer
|
1168
|
+
%t1180 = call core.gte(%t1178, %t1179) :: boolean
|
1169
|
+
%t1181 = call core.lt(%t1178, %t1176) :: boolean
|
1170
|
+
%t1182 = call core.and(%t1180, %t1181) :: boolean
|
1171
|
+
%t1183 = const 1 :: integer
|
1172
|
+
%t1184 = call core.sub(%t1176, %t1183) :: integer
|
1173
|
+
%t1185 = const 0 :: integer
|
1174
|
+
%t1186 = call core.clamp(%t1178, %t1185, %t1184) :: integer
|
1175
|
+
%t1187 = Gather %t1175, %t1186 :: integer
|
1176
|
+
%t1188 = const 0 :: integer
|
1177
|
+
%t1189 = select %t1182, %t1187, %t1188 :: integer
|
1178
|
+
%t1190 = load_input "rows" :: array
|
1179
|
+
%t1191 = Length %t1190 :: integer
|
1180
|
+
%t1192 = const -1 :: integer
|
1181
|
+
%t1193 = call core.sub(%rows_i_279, %t1192) :: integer
|
1182
|
+
%t1194 = const 0 :: integer
|
1183
|
+
%t1195 = call core.gte(%t1193, %t1194) :: boolean
|
1184
|
+
%t1196 = call core.lt(%t1193, %t1191) :: boolean
|
1185
|
+
%t1197 = call core.and(%t1195, %t1196) :: boolean
|
1186
|
+
%t1198 = const 1 :: integer
|
1187
|
+
%t1199 = call core.sub(%t1191, %t1198) :: integer
|
1188
|
+
%t1200 = const 0 :: integer
|
1189
|
+
%t1201 = call core.clamp(%t1193, %t1200, %t1199) :: integer
|
1190
|
+
%t1202 = Gather %t1190, %t1201 :: any
|
1191
|
+
%t1203 = Length %t1202 :: integer
|
1192
|
+
%t1204 = const -1 :: integer
|
1193
|
+
%t1205 = call core.sub(%col_i_281, %t1204) :: integer
|
1194
|
+
%t1206 = const 0 :: integer
|
1195
|
+
%t1207 = call core.gte(%t1205, %t1206) :: boolean
|
1196
|
+
%t1208 = call core.lt(%t1205, %t1203) :: boolean
|
1197
|
+
%t1209 = call core.and(%t1207, %t1208) :: boolean
|
1198
|
+
%t1210 = call core.and(%t1197, %t1209) :: boolean
|
1199
|
+
%t1211 = const 1 :: integer
|
1200
|
+
%t1212 = call core.sub(%t1203, %t1211) :: integer
|
1201
|
+
%t1213 = const 0 :: integer
|
1202
|
+
%t1214 = call core.clamp(%t1205, %t1213, %t1212) :: integer
|
1203
|
+
%t1215 = Gather %t1202, %t1214 :: integer
|
1204
|
+
%t1216 = const 0 :: integer
|
1205
|
+
%t1217 = select %t1210, %t1215, %t1216 :: integer
|
1206
|
+
%t1218 = load_input "rows" :: array
|
1207
|
+
%t1219 = Length %t1218 :: integer
|
1208
|
+
%t1220 = const -1 :: integer
|
1209
|
+
%t1221 = call core.sub(%rows_i_279, %t1220) :: integer
|
1210
|
+
%t1222 = const 0 :: integer
|
1211
|
+
%t1223 = call core.gte(%t1221, %t1222) :: boolean
|
1212
|
+
%t1224 = call core.lt(%t1221, %t1219) :: boolean
|
1213
|
+
%t1225 = call core.and(%t1223, %t1224) :: boolean
|
1214
|
+
%t1226 = const 1 :: integer
|
1215
|
+
%t1227 = call core.sub(%t1219, %t1226) :: integer
|
1216
|
+
%t1228 = const 0 :: integer
|
1217
|
+
%t1229 = call core.clamp(%t1221, %t1228, %t1227) :: integer
|
1218
|
+
%t1230 = Gather %t1218, %t1229 :: any
|
1219
|
+
%t1231 = Length %t1230 :: integer
|
1220
|
+
%t1232 = const 1 :: integer
|
1221
|
+
%t1233 = call core.sub(%col_i_281, %t1232) :: integer
|
1222
|
+
%t1234 = const 0 :: integer
|
1223
|
+
%t1235 = call core.gte(%t1233, %t1234) :: boolean
|
1224
|
+
%t1236 = call core.lt(%t1233, %t1231) :: boolean
|
1225
|
+
%t1237 = call core.and(%t1235, %t1236) :: boolean
|
1226
|
+
%t1238 = call core.and(%t1225, %t1237) :: boolean
|
1227
|
+
%t1239 = const 1 :: integer
|
1228
|
+
%t1240 = call core.sub(%t1231, %t1239) :: integer
|
1229
|
+
%t1241 = const 0 :: integer
|
1230
|
+
%t1242 = call core.clamp(%t1233, %t1241, %t1240) :: integer
|
1231
|
+
%t1243 = Gather %t1230, %t1242 :: integer
|
1232
|
+
%t1244 = const 0 :: integer
|
1233
|
+
%t1245 = select %t1238, %t1243, %t1244 :: integer
|
1234
|
+
%t1246 = load_input "rows" :: array
|
1235
|
+
%t1247 = Length %t1246 :: integer
|
1236
|
+
%t1248 = const 1 :: integer
|
1237
|
+
%t1249 = call core.sub(%rows_i_279, %t1248) :: integer
|
1238
|
+
%t1250 = const 0 :: integer
|
1239
|
+
%t1251 = call core.gte(%t1249, %t1250) :: boolean
|
1240
|
+
%t1252 = call core.lt(%t1249, %t1247) :: boolean
|
1241
|
+
%t1253 = call core.and(%t1251, %t1252) :: boolean
|
1242
|
+
%t1254 = const 1 :: integer
|
1243
|
+
%t1255 = call core.sub(%t1247, %t1254) :: integer
|
1244
|
+
%t1256 = const 0 :: integer
|
1245
|
+
%t1257 = call core.clamp(%t1249, %t1256, %t1255) :: integer
|
1246
|
+
%t1258 = Gather %t1246, %t1257 :: any
|
1247
|
+
%t1259 = Length %t1258 :: integer
|
1248
|
+
%t1260 = const -1 :: integer
|
1249
|
+
%t1261 = call core.sub(%col_i_281, %t1260) :: integer
|
1250
|
+
%t1262 = const 0 :: integer
|
1251
|
+
%t1263 = call core.gte(%t1261, %t1262) :: boolean
|
1252
|
+
%t1264 = call core.lt(%t1261, %t1259) :: boolean
|
1253
|
+
%t1265 = call core.and(%t1263, %t1264) :: boolean
|
1254
|
+
%t1266 = call core.and(%t1253, %t1265) :: boolean
|
1255
|
+
%t1267 = const 1 :: integer
|
1256
|
+
%t1268 = call core.sub(%t1259, %t1267) :: integer
|
1257
|
+
%t1269 = const 0 :: integer
|
1258
|
+
%t1270 = call core.clamp(%t1261, %t1269, %t1268) :: integer
|
1259
|
+
%t1271 = Gather %t1258, %t1270 :: integer
|
1260
|
+
%t1272 = const 0 :: integer
|
1261
|
+
%t1273 = select %t1266, %t1271, %t1272 :: integer
|
1262
|
+
%t1274 = load_input "rows" :: array
|
1263
|
+
%t1275 = Length %t1274 :: integer
|
1264
|
+
%t1276 = const 1 :: integer
|
1265
|
+
%t1277 = call core.sub(%rows_i_279, %t1276) :: integer
|
1266
|
+
%t1278 = const 0 :: integer
|
1267
|
+
%t1279 = call core.gte(%t1277, %t1278) :: boolean
|
1268
|
+
%t1280 = call core.lt(%t1277, %t1275) :: boolean
|
1269
|
+
%t1281 = call core.and(%t1279, %t1280) :: boolean
|
1270
|
+
%t1282 = const 1 :: integer
|
1271
|
+
%t1283 = call core.sub(%t1275, %t1282) :: integer
|
1272
|
+
%t1284 = const 0 :: integer
|
1273
|
+
%t1285 = call core.clamp(%t1277, %t1284, %t1283) :: integer
|
1274
|
+
%t1286 = Gather %t1274, %t1285 :: any
|
1275
|
+
%t1287 = Length %t1286 :: integer
|
1276
|
+
%t1288 = const 1 :: integer
|
1277
|
+
%t1289 = call core.sub(%col_i_281, %t1288) :: integer
|
1278
|
+
%t1290 = const 0 :: integer
|
1279
|
+
%t1291 = call core.gte(%t1289, %t1290) :: boolean
|
1280
|
+
%t1292 = call core.lt(%t1289, %t1287) :: boolean
|
1281
|
+
%t1293 = call core.and(%t1291, %t1292) :: boolean
|
1282
|
+
%t1294 = call core.and(%t1281, %t1293) :: boolean
|
1283
|
+
%t1295 = const 1 :: integer
|
1284
|
+
%t1296 = call core.sub(%t1287, %t1295) :: integer
|
1285
|
+
%t1297 = const 0 :: integer
|
1286
|
+
%t1298 = call core.clamp(%t1289, %t1297, %t1296) :: integer
|
1287
|
+
%t1299 = Gather %t1286, %t1298 :: integer
|
1288
|
+
%t1300 = const 0 :: integer
|
1289
|
+
%t1301 = select %t1294, %t1299, %t1300 :: integer
|
1290
|
+
%t1302 = make_tuple(%t1129, %t1149, %t1169, %t1189, %t1217, %t1245, %t1273, %t1301) :: tuple<integer>
|
1291
|
+
%t1303 = Fold %t1302 fn="agg.sum" ::
|
1292
|
+
%t519 = const 3 :: integer
|
1293
|
+
%t520 = call core.eq(%t1303, %t519) :: boolean
|
1294
|
+
%t521 = load_input "rows" :: array
|
1295
|
+
%t1304 = load_input "rows" :: array
|
1296
|
+
%t1305 = load_input "rows" :: array
|
1297
|
+
%t1346 = load_input "rows" :: array
|
1298
|
+
%t1347 = Length %t1346 :: integer
|
1299
|
+
%t1348 = const -1 :: integer
|
1300
|
+
%t1349 = call core.sub(%rows_i_279, %t1348) :: integer
|
1301
|
+
%t1350 = const 0 :: integer
|
1302
|
+
%t1351 = call core.gte(%t1349, %t1350) :: boolean
|
1303
|
+
%t1352 = call core.lt(%t1349, %t1347) :: boolean
|
1304
|
+
%t1353 = call core.and(%t1351, %t1352) :: boolean
|
1305
|
+
%t1354 = const 1 :: integer
|
1306
|
+
%t1355 = call core.sub(%t1347, %t1354) :: integer
|
1307
|
+
%t1356 = const 0 :: integer
|
1308
|
+
%t1357 = call core.clamp(%t1349, %t1356, %t1355) :: integer
|
1309
|
+
%t1358 = Gather %t1346, %t1357 :: any
|
1310
|
+
%t1359 = Length %t1358 :: integer
|
1311
|
+
%t1360 = call core.mod(%col_i_281, %t1359) :: integer
|
1312
|
+
%t1361 = call core.add(%t1360, %t1359) :: integer
|
1313
|
+
%t1362 = call core.mod(%t1361, %t1359) :: integer
|
1314
|
+
%t1363 = Gather %t1358, %t1362 :: integer
|
1315
|
+
%t1364 = const 0 :: integer
|
1316
|
+
%t1365 = select %t1353, %t1363, %t1364 :: integer
|
1317
|
+
%t1366 = load_input "rows" :: array
|
1318
|
+
%t1367 = Length %t1366 :: integer
|
1319
|
+
%t1368 = const 1 :: integer
|
1320
|
+
%t1369 = call core.sub(%rows_i_279, %t1368) :: integer
|
1321
|
+
%t1370 = const 0 :: integer
|
1322
|
+
%t1371 = call core.gte(%t1369, %t1370) :: boolean
|
1323
|
+
%t1372 = call core.lt(%t1369, %t1367) :: boolean
|
1324
|
+
%t1373 = call core.and(%t1371, %t1372) :: boolean
|
1325
|
+
%t1374 = const 1 :: integer
|
1326
|
+
%t1375 = call core.sub(%t1367, %t1374) :: integer
|
1327
|
+
%t1376 = const 0 :: integer
|
1328
|
+
%t1377 = call core.clamp(%t1369, %t1376, %t1375) :: integer
|
1329
|
+
%t1378 = Gather %t1366, %t1377 :: any
|
1330
|
+
%t1379 = Length %t1378 :: integer
|
1331
|
+
%t1380 = call core.mod(%col_i_281, %t1379) :: integer
|
1332
|
+
%t1381 = call core.add(%t1380, %t1379) :: integer
|
1333
|
+
%t1382 = call core.mod(%t1381, %t1379) :: integer
|
1334
|
+
%t1383 = Gather %t1378, %t1382 :: integer
|
1335
|
+
%t1384 = const 0 :: integer
|
1336
|
+
%t1385 = select %t1373, %t1383, %t1384 :: integer
|
1337
|
+
%t1386 = load_input "rows" :: array
|
1338
|
+
%t1387 = Length %t1386 :: integer
|
1339
|
+
%t1388 = call core.mod(%rows_i_279, %t1387) :: integer
|
1340
|
+
%t1389 = call core.add(%t1388, %t1387) :: integer
|
1341
|
+
%t1390 = call core.mod(%t1389, %t1387) :: integer
|
1342
|
+
%t1391 = Gather %t1386, %t1390 :: any
|
1343
|
+
%t1392 = Length %t1391 :: integer
|
1344
|
+
%t1393 = const -1 :: integer
|
1345
|
+
%t1394 = call core.sub(%col_i_281, %t1393) :: integer
|
1346
|
+
%t1395 = const 0 :: integer
|
1347
|
+
%t1396 = call core.gte(%t1394, %t1395) :: boolean
|
1348
|
+
%t1397 = call core.lt(%t1394, %t1392) :: boolean
|
1349
|
+
%t1398 = call core.and(%t1396, %t1397) :: boolean
|
1350
|
+
%t1399 = const 1 :: integer
|
1351
|
+
%t1400 = call core.sub(%t1392, %t1399) :: integer
|
1352
|
+
%t1401 = const 0 :: integer
|
1353
|
+
%t1402 = call core.clamp(%t1394, %t1401, %t1400) :: integer
|
1354
|
+
%t1403 = Gather %t1391, %t1402 :: integer
|
1355
|
+
%t1404 = const 0 :: integer
|
1356
|
+
%t1405 = select %t1398, %t1403, %t1404 :: integer
|
1357
|
+
%t1406 = load_input "rows" :: array
|
1358
|
+
%t1407 = Length %t1406 :: integer
|
1359
|
+
%t1408 = call core.mod(%rows_i_279, %t1407) :: integer
|
1360
|
+
%t1409 = call core.add(%t1408, %t1407) :: integer
|
1361
|
+
%t1410 = call core.mod(%t1409, %t1407) :: integer
|
1362
|
+
%t1411 = Gather %t1406, %t1410 :: any
|
1363
|
+
%t1412 = Length %t1411 :: integer
|
1364
|
+
%t1413 = const 1 :: integer
|
1365
|
+
%t1414 = call core.sub(%col_i_281, %t1413) :: integer
|
1366
|
+
%t1415 = const 0 :: integer
|
1367
|
+
%t1416 = call core.gte(%t1414, %t1415) :: boolean
|
1368
|
+
%t1417 = call core.lt(%t1414, %t1412) :: boolean
|
1369
|
+
%t1418 = call core.and(%t1416, %t1417) :: boolean
|
1370
|
+
%t1419 = const 1 :: integer
|
1371
|
+
%t1420 = call core.sub(%t1412, %t1419) :: integer
|
1372
|
+
%t1421 = const 0 :: integer
|
1373
|
+
%t1422 = call core.clamp(%t1414, %t1421, %t1420) :: integer
|
1374
|
+
%t1423 = Gather %t1411, %t1422 :: integer
|
1375
|
+
%t1424 = const 0 :: integer
|
1376
|
+
%t1425 = select %t1418, %t1423, %t1424 :: integer
|
1377
|
+
%t1426 = load_input "rows" :: array
|
1378
|
+
%t1427 = Length %t1426 :: integer
|
1379
|
+
%t1428 = const -1 :: integer
|
1380
|
+
%t1429 = call core.sub(%rows_i_279, %t1428) :: integer
|
1381
|
+
%t1430 = const 0 :: integer
|
1382
|
+
%t1431 = call core.gte(%t1429, %t1430) :: boolean
|
1383
|
+
%t1432 = call core.lt(%t1429, %t1427) :: boolean
|
1384
|
+
%t1433 = call core.and(%t1431, %t1432) :: boolean
|
1385
|
+
%t1434 = const 1 :: integer
|
1386
|
+
%t1435 = call core.sub(%t1427, %t1434) :: integer
|
1387
|
+
%t1436 = const 0 :: integer
|
1388
|
+
%t1437 = call core.clamp(%t1429, %t1436, %t1435) :: integer
|
1389
|
+
%t1438 = Gather %t1426, %t1437 :: any
|
1390
|
+
%t1439 = Length %t1438 :: integer
|
1391
|
+
%t1440 = const -1 :: integer
|
1392
|
+
%t1441 = call core.sub(%col_i_281, %t1440) :: integer
|
1393
|
+
%t1442 = const 0 :: integer
|
1394
|
+
%t1443 = call core.gte(%t1441, %t1442) :: boolean
|
1395
|
+
%t1444 = call core.lt(%t1441, %t1439) :: boolean
|
1396
|
+
%t1445 = call core.and(%t1443, %t1444) :: boolean
|
1397
|
+
%t1446 = call core.and(%t1433, %t1445) :: boolean
|
1398
|
+
%t1447 = const 1 :: integer
|
1399
|
+
%t1448 = call core.sub(%t1439, %t1447) :: integer
|
1400
|
+
%t1449 = const 0 :: integer
|
1401
|
+
%t1450 = call core.clamp(%t1441, %t1449, %t1448) :: integer
|
1402
|
+
%t1451 = Gather %t1438, %t1450 :: integer
|
1403
|
+
%t1452 = const 0 :: integer
|
1404
|
+
%t1453 = select %t1446, %t1451, %t1452 :: integer
|
1405
|
+
%t1454 = load_input "rows" :: array
|
1406
|
+
%t1455 = Length %t1454 :: integer
|
1407
|
+
%t1456 = const -1 :: integer
|
1408
|
+
%t1457 = call core.sub(%rows_i_279, %t1456) :: integer
|
1409
|
+
%t1458 = const 0 :: integer
|
1410
|
+
%t1459 = call core.gte(%t1457, %t1458) :: boolean
|
1411
|
+
%t1460 = call core.lt(%t1457, %t1455) :: boolean
|
1412
|
+
%t1461 = call core.and(%t1459, %t1460) :: boolean
|
1413
|
+
%t1462 = const 1 :: integer
|
1414
|
+
%t1463 = call core.sub(%t1455, %t1462) :: integer
|
1415
|
+
%t1464 = const 0 :: integer
|
1416
|
+
%t1465 = call core.clamp(%t1457, %t1464, %t1463) :: integer
|
1417
|
+
%t1466 = Gather %t1454, %t1465 :: any
|
1418
|
+
%t1467 = Length %t1466 :: integer
|
1419
|
+
%t1468 = const 1 :: integer
|
1420
|
+
%t1469 = call core.sub(%col_i_281, %t1468) :: integer
|
1421
|
+
%t1470 = const 0 :: integer
|
1422
|
+
%t1471 = call core.gte(%t1469, %t1470) :: boolean
|
1423
|
+
%t1472 = call core.lt(%t1469, %t1467) :: boolean
|
1424
|
+
%t1473 = call core.and(%t1471, %t1472) :: boolean
|
1425
|
+
%t1474 = call core.and(%t1461, %t1473) :: boolean
|
1426
|
+
%t1475 = const 1 :: integer
|
1427
|
+
%t1476 = call core.sub(%t1467, %t1475) :: integer
|
1428
|
+
%t1477 = const 0 :: integer
|
1429
|
+
%t1478 = call core.clamp(%t1469, %t1477, %t1476) :: integer
|
1430
|
+
%t1479 = Gather %t1466, %t1478 :: integer
|
1431
|
+
%t1480 = const 0 :: integer
|
1432
|
+
%t1481 = select %t1474, %t1479, %t1480 :: integer
|
1433
|
+
%t1482 = load_input "rows" :: array
|
1434
|
+
%t1483 = Length %t1482 :: integer
|
1435
|
+
%t1484 = const 1 :: integer
|
1436
|
+
%t1485 = call core.sub(%rows_i_279, %t1484) :: integer
|
1437
|
+
%t1486 = const 0 :: integer
|
1438
|
+
%t1487 = call core.gte(%t1485, %t1486) :: boolean
|
1439
|
+
%t1488 = call core.lt(%t1485, %t1483) :: boolean
|
1440
|
+
%t1489 = call core.and(%t1487, %t1488) :: boolean
|
1441
|
+
%t1490 = const 1 :: integer
|
1442
|
+
%t1491 = call core.sub(%t1483, %t1490) :: integer
|
1443
|
+
%t1492 = const 0 :: integer
|
1444
|
+
%t1493 = call core.clamp(%t1485, %t1492, %t1491) :: integer
|
1445
|
+
%t1494 = Gather %t1482, %t1493 :: any
|
1446
|
+
%t1495 = Length %t1494 :: integer
|
1447
|
+
%t1496 = const -1 :: integer
|
1448
|
+
%t1497 = call core.sub(%col_i_281, %t1496) :: integer
|
1449
|
+
%t1498 = const 0 :: integer
|
1450
|
+
%t1499 = call core.gte(%t1497, %t1498) :: boolean
|
1451
|
+
%t1500 = call core.lt(%t1497, %t1495) :: boolean
|
1452
|
+
%t1501 = call core.and(%t1499, %t1500) :: boolean
|
1453
|
+
%t1502 = call core.and(%t1489, %t1501) :: boolean
|
1454
|
+
%t1503 = const 1 :: integer
|
1455
|
+
%t1504 = call core.sub(%t1495, %t1503) :: integer
|
1456
|
+
%t1505 = const 0 :: integer
|
1457
|
+
%t1506 = call core.clamp(%t1497, %t1505, %t1504) :: integer
|
1458
|
+
%t1507 = Gather %t1494, %t1506 :: integer
|
1459
|
+
%t1508 = const 0 :: integer
|
1460
|
+
%t1509 = select %t1502, %t1507, %t1508 :: integer
|
1461
|
+
%t1510 = load_input "rows" :: array
|
1462
|
+
%t1511 = Length %t1510 :: integer
|
1463
|
+
%t1512 = const 1 :: integer
|
1464
|
+
%t1513 = call core.sub(%rows_i_279, %t1512) :: integer
|
1465
|
+
%t1514 = const 0 :: integer
|
1466
|
+
%t1515 = call core.gte(%t1513, %t1514) :: boolean
|
1467
|
+
%t1516 = call core.lt(%t1513, %t1511) :: boolean
|
1468
|
+
%t1517 = call core.and(%t1515, %t1516) :: boolean
|
1469
|
+
%t1518 = const 1 :: integer
|
1470
|
+
%t1519 = call core.sub(%t1511, %t1518) :: integer
|
1471
|
+
%t1520 = const 0 :: integer
|
1472
|
+
%t1521 = call core.clamp(%t1513, %t1520, %t1519) :: integer
|
1473
|
+
%t1522 = Gather %t1510, %t1521 :: any
|
1474
|
+
%t1523 = Length %t1522 :: integer
|
1475
|
+
%t1524 = const 1 :: integer
|
1476
|
+
%t1525 = call core.sub(%col_i_281, %t1524) :: integer
|
1477
|
+
%t1526 = const 0 :: integer
|
1478
|
+
%t1527 = call core.gte(%t1525, %t1526) :: boolean
|
1479
|
+
%t1528 = call core.lt(%t1525, %t1523) :: boolean
|
1480
|
+
%t1529 = call core.and(%t1527, %t1528) :: boolean
|
1481
|
+
%t1530 = call core.and(%t1517, %t1529) :: boolean
|
1482
|
+
%t1531 = const 1 :: integer
|
1483
|
+
%t1532 = call core.sub(%t1523, %t1531) :: integer
|
1484
|
+
%t1533 = const 0 :: integer
|
1485
|
+
%t1534 = call core.clamp(%t1525, %t1533, %t1532) :: integer
|
1486
|
+
%t1535 = Gather %t1522, %t1534 :: integer
|
1487
|
+
%t1536 = const 0 :: integer
|
1488
|
+
%t1537 = select %t1530, %t1535, %t1536 :: integer
|
1489
|
+
%t1314 = make_tuple(%t1365, %t1385, %t1405, %t1425, %t1453, %t1481, %t1509, %t1537) :: tuple<integer>
|
1490
|
+
%t1315 = Fold %t1314 fn="agg.sum" ::
|
1491
|
+
%t1316 = const 2 :: integer
|
1492
|
+
%t1317 = call core.eq(%t1315, %t1316) :: boolean
|
1493
|
+
%t1318 = load_input "rows" :: array
|
1494
|
+
%t1319 = load_input "rows" :: array
|
1495
|
+
%t1320 = const 0 :: integer
|
1496
|
+
%t1321 = call core.gt(%col_el_280, %t1320) :: boolean
|
1497
|
+
%t524 = call core.and(%t1317, %t1321) :: boolean
|
1498
|
+
%t284 = call core.or(%t520, %t524) :: boolean
|
1499
|
+
yield %t284
|
1500
|
+
end_loop
|
1501
|
+
end_loop
|
1502
|
+
)
|
1503
|
+
(Declaration next_state
|
1504
|
+
%t285 = load_input "rows" :: array
|
1505
|
+
loop rows id=L31 in %t285 as el=%rows_el_286, idx=%rows_i_287
|
1506
|
+
loop col id=L32 in %rows_el_286 as el=%col_el_288, idx=%col_i_289
|
1507
|
+
%t525 = load_input "rows" :: array
|
1508
|
+
%t1322 = load_input "rows" :: array
|
1509
|
+
%t1323 = load_input "rows" :: array
|
1510
|
+
%t1538 = load_input "rows" :: array
|
1511
|
+
%t1539 = Length %t1538 :: integer
|
1512
|
+
%t1540 = const -1 :: integer
|
1513
|
+
%t1541 = call core.sub(%rows_i_287, %t1540) :: integer
|
1514
|
+
%t1542 = const 0 :: integer
|
1515
|
+
%t1543 = call core.gte(%t1541, %t1542) :: boolean
|
1516
|
+
%t1544 = call core.lt(%t1541, %t1539) :: boolean
|
1517
|
+
%t1545 = call core.and(%t1543, %t1544) :: boolean
|
1518
|
+
%t1546 = const 1 :: integer
|
1519
|
+
%t1547 = call core.sub(%t1539, %t1546) :: integer
|
1520
|
+
%t1548 = const 0 :: integer
|
1521
|
+
%t1549 = call core.clamp(%t1541, %t1548, %t1547) :: integer
|
1522
|
+
%t1550 = Gather %t1538, %t1549 :: any
|
1523
|
+
%t1551 = Length %t1550 :: integer
|
1524
|
+
%t1552 = call core.mod(%col_i_289, %t1551) :: integer
|
1525
|
+
%t1553 = call core.add(%t1552, %t1551) :: integer
|
1526
|
+
%t1554 = call core.mod(%t1553, %t1551) :: integer
|
1527
|
+
%t1555 = Gather %t1550, %t1554 :: integer
|
1528
|
+
%t1556 = const 0 :: integer
|
1529
|
+
%t1557 = select %t1545, %t1555, %t1556 :: integer
|
1530
|
+
%t1558 = load_input "rows" :: array
|
1531
|
+
%t1559 = Length %t1558 :: integer
|
1532
|
+
%t1560 = const 1 :: integer
|
1533
|
+
%t1561 = call core.sub(%rows_i_287, %t1560) :: integer
|
1534
|
+
%t1562 = const 0 :: integer
|
1535
|
+
%t1563 = call core.gte(%t1561, %t1562) :: boolean
|
1536
|
+
%t1564 = call core.lt(%t1561, %t1559) :: boolean
|
1537
|
+
%t1565 = call core.and(%t1563, %t1564) :: boolean
|
1538
|
+
%t1566 = const 1 :: integer
|
1539
|
+
%t1567 = call core.sub(%t1559, %t1566) :: integer
|
1540
|
+
%t1568 = const 0 :: integer
|
1541
|
+
%t1569 = call core.clamp(%t1561, %t1568, %t1567) :: integer
|
1542
|
+
%t1570 = Gather %t1558, %t1569 :: any
|
1543
|
+
%t1571 = Length %t1570 :: integer
|
1544
|
+
%t1572 = call core.mod(%col_i_289, %t1571) :: integer
|
1545
|
+
%t1573 = call core.add(%t1572, %t1571) :: integer
|
1546
|
+
%t1574 = call core.mod(%t1573, %t1571) :: integer
|
1547
|
+
%t1575 = Gather %t1570, %t1574 :: integer
|
1548
|
+
%t1576 = const 0 :: integer
|
1549
|
+
%t1577 = select %t1565, %t1575, %t1576 :: integer
|
1550
|
+
%t1578 = load_input "rows" :: array
|
1551
|
+
%t1579 = Length %t1578 :: integer
|
1552
|
+
%t1580 = call core.mod(%rows_i_287, %t1579) :: integer
|
1553
|
+
%t1581 = call core.add(%t1580, %t1579) :: integer
|
1554
|
+
%t1582 = call core.mod(%t1581, %t1579) :: integer
|
1555
|
+
%t1583 = Gather %t1578, %t1582 :: any
|
1556
|
+
%t1584 = Length %t1583 :: integer
|
1557
|
+
%t1585 = const -1 :: integer
|
1558
|
+
%t1586 = call core.sub(%col_i_289, %t1585) :: integer
|
1559
|
+
%t1587 = const 0 :: integer
|
1560
|
+
%t1588 = call core.gte(%t1586, %t1587) :: boolean
|
1561
|
+
%t1589 = call core.lt(%t1586, %t1584) :: boolean
|
1562
|
+
%t1590 = call core.and(%t1588, %t1589) :: boolean
|
1563
|
+
%t1591 = const 1 :: integer
|
1564
|
+
%t1592 = call core.sub(%t1584, %t1591) :: integer
|
1565
|
+
%t1593 = const 0 :: integer
|
1566
|
+
%t1594 = call core.clamp(%t1586, %t1593, %t1592) :: integer
|
1567
|
+
%t1595 = Gather %t1583, %t1594 :: integer
|
1568
|
+
%t1596 = const 0 :: integer
|
1569
|
+
%t1597 = select %t1590, %t1595, %t1596 :: integer
|
1570
|
+
%t1598 = load_input "rows" :: array
|
1571
|
+
%t1599 = Length %t1598 :: integer
|
1572
|
+
%t1600 = call core.mod(%rows_i_287, %t1599) :: integer
|
1573
|
+
%t1601 = call core.add(%t1600, %t1599) :: integer
|
1574
|
+
%t1602 = call core.mod(%t1601, %t1599) :: integer
|
1575
|
+
%t1603 = Gather %t1598, %t1602 :: any
|
1576
|
+
%t1604 = Length %t1603 :: integer
|
1577
|
+
%t1605 = const 1 :: integer
|
1578
|
+
%t1606 = call core.sub(%col_i_289, %t1605) :: integer
|
1579
|
+
%t1607 = const 0 :: integer
|
1580
|
+
%t1608 = call core.gte(%t1606, %t1607) :: boolean
|
1581
|
+
%t1609 = call core.lt(%t1606, %t1604) :: boolean
|
1582
|
+
%t1610 = call core.and(%t1608, %t1609) :: boolean
|
1583
|
+
%t1611 = const 1 :: integer
|
1584
|
+
%t1612 = call core.sub(%t1604, %t1611) :: integer
|
1585
|
+
%t1613 = const 0 :: integer
|
1586
|
+
%t1614 = call core.clamp(%t1606, %t1613, %t1612) :: integer
|
1587
|
+
%t1615 = Gather %t1603, %t1614 :: integer
|
1588
|
+
%t1616 = const 0 :: integer
|
1589
|
+
%t1617 = select %t1610, %t1615, %t1616 :: integer
|
1590
|
+
%t1618 = load_input "rows" :: array
|
1591
|
+
%t1619 = Length %t1618 :: integer
|
1592
|
+
%t1620 = const -1 :: integer
|
1593
|
+
%t1621 = call core.sub(%rows_i_287, %t1620) :: integer
|
1594
|
+
%t1622 = const 0 :: integer
|
1595
|
+
%t1623 = call core.gte(%t1621, %t1622) :: boolean
|
1596
|
+
%t1624 = call core.lt(%t1621, %t1619) :: boolean
|
1597
|
+
%t1625 = call core.and(%t1623, %t1624) :: boolean
|
1598
|
+
%t1626 = const 1 :: integer
|
1599
|
+
%t1627 = call core.sub(%t1619, %t1626) :: integer
|
1600
|
+
%t1628 = const 0 :: integer
|
1601
|
+
%t1629 = call core.clamp(%t1621, %t1628, %t1627) :: integer
|
1602
|
+
%t1630 = Gather %t1618, %t1629 :: any
|
1603
|
+
%t1631 = Length %t1630 :: integer
|
1604
|
+
%t1632 = const -1 :: integer
|
1605
|
+
%t1633 = call core.sub(%col_i_289, %t1632) :: integer
|
1606
|
+
%t1634 = const 0 :: integer
|
1607
|
+
%t1635 = call core.gte(%t1633, %t1634) :: boolean
|
1608
|
+
%t1636 = call core.lt(%t1633, %t1631) :: boolean
|
1609
|
+
%t1637 = call core.and(%t1635, %t1636) :: boolean
|
1610
|
+
%t1638 = call core.and(%t1625, %t1637) :: boolean
|
1611
|
+
%t1639 = const 1 :: integer
|
1612
|
+
%t1640 = call core.sub(%t1631, %t1639) :: integer
|
1613
|
+
%t1641 = const 0 :: integer
|
1614
|
+
%t1642 = call core.clamp(%t1633, %t1641, %t1640) :: integer
|
1615
|
+
%t1643 = Gather %t1630, %t1642 :: integer
|
1616
|
+
%t1644 = const 0 :: integer
|
1617
|
+
%t1645 = select %t1638, %t1643, %t1644 :: integer
|
1618
|
+
%t1646 = load_input "rows" :: array
|
1619
|
+
%t1647 = Length %t1646 :: integer
|
1620
|
+
%t1648 = const -1 :: integer
|
1621
|
+
%t1649 = call core.sub(%rows_i_287, %t1648) :: integer
|
1622
|
+
%t1650 = const 0 :: integer
|
1623
|
+
%t1651 = call core.gte(%t1649, %t1650) :: boolean
|
1624
|
+
%t1652 = call core.lt(%t1649, %t1647) :: boolean
|
1625
|
+
%t1653 = call core.and(%t1651, %t1652) :: boolean
|
1626
|
+
%t1654 = const 1 :: integer
|
1627
|
+
%t1655 = call core.sub(%t1647, %t1654) :: integer
|
1628
|
+
%t1656 = const 0 :: integer
|
1629
|
+
%t1657 = call core.clamp(%t1649, %t1656, %t1655) :: integer
|
1630
|
+
%t1658 = Gather %t1646, %t1657 :: any
|
1631
|
+
%t1659 = Length %t1658 :: integer
|
1632
|
+
%t1660 = const 1 :: integer
|
1633
|
+
%t1661 = call core.sub(%col_i_289, %t1660) :: integer
|
1634
|
+
%t1662 = const 0 :: integer
|
1635
|
+
%t1663 = call core.gte(%t1661, %t1662) :: boolean
|
1636
|
+
%t1664 = call core.lt(%t1661, %t1659) :: boolean
|
1637
|
+
%t1665 = call core.and(%t1663, %t1664) :: boolean
|
1638
|
+
%t1666 = call core.and(%t1653, %t1665) :: boolean
|
1639
|
+
%t1667 = const 1 :: integer
|
1640
|
+
%t1668 = call core.sub(%t1659, %t1667) :: integer
|
1641
|
+
%t1669 = const 0 :: integer
|
1642
|
+
%t1670 = call core.clamp(%t1661, %t1669, %t1668) :: integer
|
1643
|
+
%t1671 = Gather %t1658, %t1670 :: integer
|
1644
|
+
%t1672 = const 0 :: integer
|
1645
|
+
%t1673 = select %t1666, %t1671, %t1672 :: integer
|
1646
|
+
%t1674 = load_input "rows" :: array
|
1647
|
+
%t1675 = Length %t1674 :: integer
|
1648
|
+
%t1676 = const 1 :: integer
|
1649
|
+
%t1677 = call core.sub(%rows_i_287, %t1676) :: integer
|
1650
|
+
%t1678 = const 0 :: integer
|
1651
|
+
%t1679 = call core.gte(%t1677, %t1678) :: boolean
|
1652
|
+
%t1680 = call core.lt(%t1677, %t1675) :: boolean
|
1653
|
+
%t1681 = call core.and(%t1679, %t1680) :: boolean
|
1654
|
+
%t1682 = const 1 :: integer
|
1655
|
+
%t1683 = call core.sub(%t1675, %t1682) :: integer
|
1656
|
+
%t1684 = const 0 :: integer
|
1657
|
+
%t1685 = call core.clamp(%t1677, %t1684, %t1683) :: integer
|
1658
|
+
%t1686 = Gather %t1674, %t1685 :: any
|
1659
|
+
%t1687 = Length %t1686 :: integer
|
1660
|
+
%t1688 = const -1 :: integer
|
1661
|
+
%t1689 = call core.sub(%col_i_289, %t1688) :: integer
|
1662
|
+
%t1690 = const 0 :: integer
|
1663
|
+
%t1691 = call core.gte(%t1689, %t1690) :: boolean
|
1664
|
+
%t1692 = call core.lt(%t1689, %t1687) :: boolean
|
1665
|
+
%t1693 = call core.and(%t1691, %t1692) :: boolean
|
1666
|
+
%t1694 = call core.and(%t1681, %t1693) :: boolean
|
1667
|
+
%t1695 = const 1 :: integer
|
1668
|
+
%t1696 = call core.sub(%t1687, %t1695) :: integer
|
1669
|
+
%t1697 = const 0 :: integer
|
1670
|
+
%t1698 = call core.clamp(%t1689, %t1697, %t1696) :: integer
|
1671
|
+
%t1699 = Gather %t1686, %t1698 :: integer
|
1672
|
+
%t1700 = const 0 :: integer
|
1673
|
+
%t1701 = select %t1694, %t1699, %t1700 :: integer
|
1674
|
+
%t1702 = load_input "rows" :: array
|
1675
|
+
%t1703 = Length %t1702 :: integer
|
1676
|
+
%t1704 = const 1 :: integer
|
1677
|
+
%t1705 = call core.sub(%rows_i_287, %t1704) :: integer
|
1678
|
+
%t1706 = const 0 :: integer
|
1679
|
+
%t1707 = call core.gte(%t1705, %t1706) :: boolean
|
1680
|
+
%t1708 = call core.lt(%t1705, %t1703) :: boolean
|
1681
|
+
%t1709 = call core.and(%t1707, %t1708) :: boolean
|
1682
|
+
%t1710 = const 1 :: integer
|
1683
|
+
%t1711 = call core.sub(%t1703, %t1710) :: integer
|
1684
|
+
%t1712 = const 0 :: integer
|
1685
|
+
%t1713 = call core.clamp(%t1705, %t1712, %t1711) :: integer
|
1686
|
+
%t1714 = Gather %t1702, %t1713 :: any
|
1687
|
+
%t1715 = Length %t1714 :: integer
|
1688
|
+
%t1716 = const 1 :: integer
|
1689
|
+
%t1717 = call core.sub(%col_i_289, %t1716) :: integer
|
1690
|
+
%t1718 = const 0 :: integer
|
1691
|
+
%t1719 = call core.gte(%t1717, %t1718) :: boolean
|
1692
|
+
%t1720 = call core.lt(%t1717, %t1715) :: boolean
|
1693
|
+
%t1721 = call core.and(%t1719, %t1720) :: boolean
|
1694
|
+
%t1722 = call core.and(%t1709, %t1721) :: boolean
|
1695
|
+
%t1723 = const 1 :: integer
|
1696
|
+
%t1724 = call core.sub(%t1715, %t1723) :: integer
|
1697
|
+
%t1725 = const 0 :: integer
|
1698
|
+
%t1726 = call core.clamp(%t1717, %t1725, %t1724) :: integer
|
1699
|
+
%t1727 = Gather %t1714, %t1726 :: integer
|
1700
|
+
%t1728 = const 0 :: integer
|
1701
|
+
%t1729 = select %t1722, %t1727, %t1728 :: integer
|
1702
|
+
%t1332 = make_tuple(%t1557, %t1577, %t1597, %t1617, %t1645, %t1673, %t1701, %t1729) :: tuple<integer>
|
1703
|
+
%t1333 = Fold %t1332 fn="agg.sum" ::
|
1704
|
+
%t1334 = const 3 :: integer
|
1705
|
+
%t1335 = call core.eq(%t1333, %t1334) :: boolean
|
1706
|
+
%t1336 = load_input "rows" :: array
|
1707
|
+
%t1337 = load_input "rows" :: array
|
1708
|
+
%t1730 = load_input "rows" :: array
|
1709
|
+
%t1731 = load_input "rows" :: array
|
1710
|
+
%t1732 = Length %t1731 :: integer
|
1711
|
+
%t1733 = const -1 :: integer
|
1712
|
+
%t1734 = call core.sub(%rows_i_287, %t1733) :: integer
|
1713
|
+
%t1735 = const 0 :: integer
|
1714
|
+
%t1736 = call core.gte(%t1734, %t1735) :: boolean
|
1715
|
+
%t1737 = call core.lt(%t1734, %t1732) :: boolean
|
1716
|
+
%t1738 = call core.and(%t1736, %t1737) :: boolean
|
1717
|
+
%t1739 = const 1 :: integer
|
1718
|
+
%t1740 = call core.sub(%t1732, %t1739) :: integer
|
1719
|
+
%t1741 = const 0 :: integer
|
1720
|
+
%t1742 = call core.clamp(%t1734, %t1741, %t1740) :: integer
|
1721
|
+
%t1743 = Gather %t1731, %t1742 :: any
|
1722
|
+
%t1744 = Length %t1743 :: integer
|
1723
|
+
%t1745 = call core.mod(%col_i_289, %t1744) :: integer
|
1724
|
+
%t1746 = call core.add(%t1745, %t1744) :: integer
|
1725
|
+
%t1747 = call core.mod(%t1746, %t1744) :: integer
|
1726
|
+
%t1748 = Gather %t1743, %t1747 :: integer
|
1727
|
+
%t1749 = const 0 :: integer
|
1728
|
+
%t1750 = select %t1738, %t1748, %t1749 :: integer
|
1729
|
+
%t1751 = load_input "rows" :: array
|
1730
|
+
%t1752 = Length %t1751 :: integer
|
1731
|
+
%t1753 = const 1 :: integer
|
1732
|
+
%t1754 = call core.sub(%rows_i_287, %t1753) :: integer
|
1733
|
+
%t1755 = const 0 :: integer
|
1734
|
+
%t1756 = call core.gte(%t1754, %t1755) :: boolean
|
1735
|
+
%t1757 = call core.lt(%t1754, %t1752) :: boolean
|
1736
|
+
%t1758 = call core.and(%t1756, %t1757) :: boolean
|
1737
|
+
%t1759 = const 1 :: integer
|
1738
|
+
%t1760 = call core.sub(%t1752, %t1759) :: integer
|
1739
|
+
%t1761 = const 0 :: integer
|
1740
|
+
%t1762 = call core.clamp(%t1754, %t1761, %t1760) :: integer
|
1741
|
+
%t1763 = Gather %t1751, %t1762 :: any
|
1742
|
+
%t1764 = Length %t1763 :: integer
|
1743
|
+
%t1765 = call core.mod(%col_i_289, %t1764) :: integer
|
1744
|
+
%t1766 = call core.add(%t1765, %t1764) :: integer
|
1745
|
+
%t1767 = call core.mod(%t1766, %t1764) :: integer
|
1746
|
+
%t1768 = Gather %t1763, %t1767 :: integer
|
1747
|
+
%t1769 = const 0 :: integer
|
1748
|
+
%t1770 = select %t1758, %t1768, %t1769 :: integer
|
1749
|
+
%t1771 = load_input "rows" :: array
|
1750
|
+
%t1772 = Length %t1771 :: integer
|
1751
|
+
%t1773 = call core.mod(%rows_i_287, %t1772) :: integer
|
1752
|
+
%t1774 = call core.add(%t1773, %t1772) :: integer
|
1753
|
+
%t1775 = call core.mod(%t1774, %t1772) :: integer
|
1754
|
+
%t1776 = Gather %t1771, %t1775 :: any
|
1755
|
+
%t1777 = Length %t1776 :: integer
|
1756
|
+
%t1778 = const -1 :: integer
|
1757
|
+
%t1779 = call core.sub(%col_i_289, %t1778) :: integer
|
1758
|
+
%t1780 = const 0 :: integer
|
1759
|
+
%t1781 = call core.gte(%t1779, %t1780) :: boolean
|
1760
|
+
%t1782 = call core.lt(%t1779, %t1777) :: boolean
|
1761
|
+
%t1783 = call core.and(%t1781, %t1782) :: boolean
|
1762
|
+
%t1784 = const 1 :: integer
|
1763
|
+
%t1785 = call core.sub(%t1777, %t1784) :: integer
|
1764
|
+
%t1786 = const 0 :: integer
|
1765
|
+
%t1787 = call core.clamp(%t1779, %t1786, %t1785) :: integer
|
1766
|
+
%t1788 = Gather %t1776, %t1787 :: integer
|
1767
|
+
%t1789 = const 0 :: integer
|
1768
|
+
%t1790 = select %t1783, %t1788, %t1789 :: integer
|
1769
|
+
%t1791 = load_input "rows" :: array
|
1770
|
+
%t1792 = Length %t1791 :: integer
|
1771
|
+
%t1793 = call core.mod(%rows_i_287, %t1792) :: integer
|
1772
|
+
%t1794 = call core.add(%t1793, %t1792) :: integer
|
1773
|
+
%t1795 = call core.mod(%t1794, %t1792) :: integer
|
1774
|
+
%t1796 = Gather %t1791, %t1795 :: any
|
1775
|
+
%t1797 = Length %t1796 :: integer
|
1776
|
+
%t1798 = const 1 :: integer
|
1777
|
+
%t1799 = call core.sub(%col_i_289, %t1798) :: integer
|
1778
|
+
%t1800 = const 0 :: integer
|
1779
|
+
%t1801 = call core.gte(%t1799, %t1800) :: boolean
|
1780
|
+
%t1802 = call core.lt(%t1799, %t1797) :: boolean
|
1781
|
+
%t1803 = call core.and(%t1801, %t1802) :: boolean
|
1782
|
+
%t1804 = const 1 :: integer
|
1783
|
+
%t1805 = call core.sub(%t1797, %t1804) :: integer
|
1784
|
+
%t1806 = const 0 :: integer
|
1785
|
+
%t1807 = call core.clamp(%t1799, %t1806, %t1805) :: integer
|
1786
|
+
%t1808 = Gather %t1796, %t1807 :: integer
|
1787
|
+
%t1809 = const 0 :: integer
|
1788
|
+
%t1810 = select %t1803, %t1808, %t1809 :: integer
|
1789
|
+
%t1811 = load_input "rows" :: array
|
1790
|
+
%t1812 = Length %t1811 :: integer
|
1791
|
+
%t1813 = const -1 :: integer
|
1792
|
+
%t1814 = call core.sub(%rows_i_287, %t1813) :: integer
|
1793
|
+
%t1815 = const 0 :: integer
|
1794
|
+
%t1816 = call core.gte(%t1814, %t1815) :: boolean
|
1795
|
+
%t1817 = call core.lt(%t1814, %t1812) :: boolean
|
1796
|
+
%t1818 = call core.and(%t1816, %t1817) :: boolean
|
1797
|
+
%t1819 = const 1 :: integer
|
1798
|
+
%t1820 = call core.sub(%t1812, %t1819) :: integer
|
1799
|
+
%t1821 = const 0 :: integer
|
1800
|
+
%t1822 = call core.clamp(%t1814, %t1821, %t1820) :: integer
|
1801
|
+
%t1823 = Gather %t1811, %t1822 :: any
|
1802
|
+
%t1824 = Length %t1823 :: integer
|
1803
|
+
%t1825 = const -1 :: integer
|
1804
|
+
%t1826 = call core.sub(%col_i_289, %t1825) :: integer
|
1805
|
+
%t1827 = const 0 :: integer
|
1806
|
+
%t1828 = call core.gte(%t1826, %t1827) :: boolean
|
1807
|
+
%t1829 = call core.lt(%t1826, %t1824) :: boolean
|
1808
|
+
%t1830 = call core.and(%t1828, %t1829) :: boolean
|
1809
|
+
%t1831 = call core.and(%t1818, %t1830) :: boolean
|
1810
|
+
%t1832 = const 1 :: integer
|
1811
|
+
%t1833 = call core.sub(%t1824, %t1832) :: integer
|
1812
|
+
%t1834 = const 0 :: integer
|
1813
|
+
%t1835 = call core.clamp(%t1826, %t1834, %t1833) :: integer
|
1814
|
+
%t1836 = Gather %t1823, %t1835 :: integer
|
1815
|
+
%t1837 = const 0 :: integer
|
1816
|
+
%t1838 = select %t1831, %t1836, %t1837 :: integer
|
1817
|
+
%t1839 = load_input "rows" :: array
|
1818
|
+
%t1840 = Length %t1839 :: integer
|
1819
|
+
%t1841 = const -1 :: integer
|
1820
|
+
%t1842 = call core.sub(%rows_i_287, %t1841) :: integer
|
1821
|
+
%t1843 = const 0 :: integer
|
1822
|
+
%t1844 = call core.gte(%t1842, %t1843) :: boolean
|
1823
|
+
%t1845 = call core.lt(%t1842, %t1840) :: boolean
|
1824
|
+
%t1846 = call core.and(%t1844, %t1845) :: boolean
|
1825
|
+
%t1847 = const 1 :: integer
|
1826
|
+
%t1848 = call core.sub(%t1840, %t1847) :: integer
|
1827
|
+
%t1849 = const 0 :: integer
|
1828
|
+
%t1850 = call core.clamp(%t1842, %t1849, %t1848) :: integer
|
1829
|
+
%t1851 = Gather %t1839, %t1850 :: any
|
1830
|
+
%t1852 = Length %t1851 :: integer
|
1831
|
+
%t1853 = const 1 :: integer
|
1832
|
+
%t1854 = call core.sub(%col_i_289, %t1853) :: integer
|
1833
|
+
%t1855 = const 0 :: integer
|
1834
|
+
%t1856 = call core.gte(%t1854, %t1855) :: boolean
|
1835
|
+
%t1857 = call core.lt(%t1854, %t1852) :: boolean
|
1836
|
+
%t1858 = call core.and(%t1856, %t1857) :: boolean
|
1837
|
+
%t1859 = call core.and(%t1846, %t1858) :: boolean
|
1838
|
+
%t1860 = const 1 :: integer
|
1839
|
+
%t1861 = call core.sub(%t1852, %t1860) :: integer
|
1840
|
+
%t1862 = const 0 :: integer
|
1841
|
+
%t1863 = call core.clamp(%t1854, %t1862, %t1861) :: integer
|
1842
|
+
%t1864 = Gather %t1851, %t1863 :: integer
|
1843
|
+
%t1865 = const 0 :: integer
|
1844
|
+
%t1866 = select %t1859, %t1864, %t1865 :: integer
|
1845
|
+
%t1867 = load_input "rows" :: array
|
1846
|
+
%t1868 = Length %t1867 :: integer
|
1847
|
+
%t1869 = const 1 :: integer
|
1848
|
+
%t1870 = call core.sub(%rows_i_287, %t1869) :: integer
|
1849
|
+
%t1871 = const 0 :: integer
|
1850
|
+
%t1872 = call core.gte(%t1870, %t1871) :: boolean
|
1851
|
+
%t1873 = call core.lt(%t1870, %t1868) :: boolean
|
1852
|
+
%t1874 = call core.and(%t1872, %t1873) :: boolean
|
1853
|
+
%t1875 = const 1 :: integer
|
1854
|
+
%t1876 = call core.sub(%t1868, %t1875) :: integer
|
1855
|
+
%t1877 = const 0 :: integer
|
1856
|
+
%t1878 = call core.clamp(%t1870, %t1877, %t1876) :: integer
|
1857
|
+
%t1879 = Gather %t1867, %t1878 :: any
|
1858
|
+
%t1880 = Length %t1879 :: integer
|
1859
|
+
%t1881 = const -1 :: integer
|
1860
|
+
%t1882 = call core.sub(%col_i_289, %t1881) :: integer
|
1861
|
+
%t1883 = const 0 :: integer
|
1862
|
+
%t1884 = call core.gte(%t1882, %t1883) :: boolean
|
1863
|
+
%t1885 = call core.lt(%t1882, %t1880) :: boolean
|
1864
|
+
%t1886 = call core.and(%t1884, %t1885) :: boolean
|
1865
|
+
%t1887 = call core.and(%t1874, %t1886) :: boolean
|
1866
|
+
%t1888 = const 1 :: integer
|
1867
|
+
%t1889 = call core.sub(%t1880, %t1888) :: integer
|
1868
|
+
%t1890 = const 0 :: integer
|
1869
|
+
%t1891 = call core.clamp(%t1882, %t1890, %t1889) :: integer
|
1870
|
+
%t1892 = Gather %t1879, %t1891 :: integer
|
1871
|
+
%t1893 = const 0 :: integer
|
1872
|
+
%t1894 = select %t1887, %t1892, %t1893 :: integer
|
1873
|
+
%t1895 = load_input "rows" :: array
|
1874
|
+
%t1896 = Length %t1895 :: integer
|
1875
|
+
%t1897 = const 1 :: integer
|
1876
|
+
%t1898 = call core.sub(%rows_i_287, %t1897) :: integer
|
1877
|
+
%t1899 = const 0 :: integer
|
1878
|
+
%t1900 = call core.gte(%t1898, %t1899) :: boolean
|
1879
|
+
%t1901 = call core.lt(%t1898, %t1896) :: boolean
|
1880
|
+
%t1902 = call core.and(%t1900, %t1901) :: boolean
|
1881
|
+
%t1903 = const 1 :: integer
|
1882
|
+
%t1904 = call core.sub(%t1896, %t1903) :: integer
|
1883
|
+
%t1905 = const 0 :: integer
|
1884
|
+
%t1906 = call core.clamp(%t1898, %t1905, %t1904) :: integer
|
1885
|
+
%t1907 = Gather %t1895, %t1906 :: any
|
1886
|
+
%t1908 = Length %t1907 :: integer
|
1887
|
+
%t1909 = const 1 :: integer
|
1888
|
+
%t1910 = call core.sub(%col_i_289, %t1909) :: integer
|
1889
|
+
%t1911 = const 0 :: integer
|
1890
|
+
%t1912 = call core.gte(%t1910, %t1911) :: boolean
|
1891
|
+
%t1913 = call core.lt(%t1910, %t1908) :: boolean
|
1892
|
+
%t1914 = call core.and(%t1912, %t1913) :: boolean
|
1893
|
+
%t1915 = call core.and(%t1902, %t1914) :: boolean
|
1894
|
+
%t1916 = const 1 :: integer
|
1895
|
+
%t1917 = call core.sub(%t1908, %t1916) :: integer
|
1896
|
+
%t1918 = const 0 :: integer
|
1897
|
+
%t1919 = call core.clamp(%t1910, %t1918, %t1917) :: integer
|
1898
|
+
%t1920 = Gather %t1907, %t1919 :: integer
|
1899
|
+
%t1921 = const 0 :: integer
|
1900
|
+
%t1922 = select %t1915, %t1920, %t1921 :: integer
|
1901
|
+
%t1923 = make_tuple(%t1750, %t1770, %t1790, %t1810, %t1838, %t1866, %t1894, %t1922) :: tuple<integer>
|
1902
|
+
%t1924 = Fold %t1923 fn="agg.sum" ::
|
1903
|
+
%t1339 = const 2 :: integer
|
1904
|
+
%t1340 = call core.eq(%t1924, %t1339) :: boolean
|
1905
|
+
%t1341 = load_input "rows" :: array
|
1906
|
+
%t1925 = load_input "rows" :: array
|
1907
|
+
%t1343 = const 0 :: integer
|
1908
|
+
%t1344 = call core.gt(%col_el_288, %t1343) :: boolean
|
1909
|
+
%t1345 = call core.and(%t1340, %t1344) :: boolean
|
1910
|
+
%t528 = call core.or(%t1335, %t1345) :: boolean
|
1911
|
+
%t291 = const 1 :: integer
|
1912
|
+
%t292 = const 0 :: integer
|
1913
|
+
%t293 = select %t528, %t291, %t292 :: integer
|
1914
|
+
yield %t293
|
1915
|
+
end_loop
|
1916
|
+
end_loop
|
1917
|
+
)
|
1918
|
+
)
|