kumi 0.0.24 → 0.0.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +14 -0
- data/README.md +70 -71
- data/data/functions/agg/boolean.yaml +6 -2
- data/data/functions/agg/numeric.yaml +32 -16
- data/data/functions/agg/string.yaml +4 -3
- data/data/functions/core/arithmetic.yaml +62 -14
- data/data/functions/core/boolean.yaml +12 -6
- data/data/functions/core/comparison.yaml +25 -13
- data/data/functions/core/constructor.yaml +16 -8
- data/data/functions/core/select.yaml +3 -1
- data/data/functions/core/stencil.yaml +14 -5
- data/data/functions/core/string.yaml +9 -4
- data/data/kernels/ruby/agg/numeric.yaml +1 -1
- data/docs/UNSAT_DETECTION.md +83 -0
- data/golden/array_element/expected/nast.txt +1 -1
- data/golden/array_element/expected/schema_ruby.rb +1 -1
- data/golden/array_index/expected/nast.txt +7 -7
- data/golden/array_index/expected/schema_ruby.rb +1 -1
- data/golden/array_operations/expected/nast.txt +2 -2
- data/golden/array_operations/expected/schema_ruby.rb +1 -1
- data/golden/array_operations/expected/snast.txt +3 -3
- data/golden/cascade_logic/expected/lir_02_inlined.txt +8 -8
- data/golden/cascade_logic/expected/schema_ruby.rb +1 -1
- data/golden/cascade_logic/expected/snast.txt +2 -2
- data/golden/chained_fusion/expected/lir_02_inlined.txt +36 -36
- data/golden/chained_fusion/expected/lir_03_cse.txt +23 -23
- data/golden/chained_fusion/expected/lir_04_1_loop_fusion.txt +25 -25
- data/golden/chained_fusion/expected/lir_04_loop_invcm.txt +23 -23
- data/golden/chained_fusion/expected/lir_06_const_prop.txt +23 -23
- data/golden/chained_fusion/expected/nast.txt +2 -2
- data/golden/chained_fusion/expected/schema_javascript.mjs +23 -23
- data/golden/chained_fusion/expected/schema_ruby.rb +28 -28
- data/golden/element_arrays/expected/nast.txt +2 -2
- data/golden/element_arrays/expected/schema_ruby.rb +1 -1
- data/golden/element_arrays/expected/snast.txt +1 -1
- data/golden/empty_and_null_inputs/expected/lir_02_inlined.txt +18 -18
- data/golden/empty_and_null_inputs/expected/lir_03_cse.txt +17 -17
- data/golden/empty_and_null_inputs/expected/lir_04_1_loop_fusion.txt +17 -17
- data/golden/empty_and_null_inputs/expected/lir_04_loop_invcm.txt +17 -17
- data/golden/empty_and_null_inputs/expected/lir_06_const_prop.txt +17 -17
- data/golden/empty_and_null_inputs/expected/nast.txt +3 -3
- data/golden/empty_and_null_inputs/expected/schema_javascript.mjs +13 -13
- data/golden/empty_and_null_inputs/expected/schema_ruby.rb +18 -18
- data/golden/function_overload/expected/ast.txt +29 -0
- data/golden/function_overload/expected/input_plan.txt +4 -0
- data/golden/function_overload/expected/lir_00_unoptimized.txt +18 -0
- data/golden/function_overload/expected/lir_01_hoist_scalar_references.txt +18 -0
- data/golden/function_overload/expected/lir_02_inlined.txt +20 -0
- data/golden/function_overload/expected/lir_03_cse.txt +20 -0
- data/golden/function_overload/expected/lir_04_1_loop_fusion.txt +20 -0
- data/golden/function_overload/expected/lir_04_loop_invcm.txt +20 -0
- data/golden/function_overload/expected/lir_06_const_prop.txt +20 -0
- data/golden/function_overload/expected/nast.txt +22 -0
- data/golden/function_overload/expected/schema_javascript.mjs +12 -0
- data/golden/function_overload/expected/schema_ruby.rb +39 -0
- data/golden/function_overload/expected/snast.txt +22 -0
- data/golden/function_overload/input.json +8 -0
- data/golden/function_overload/schema.kumi +19 -0
- data/golden/game_of_life/expected/lir_00_unoptimized.txt +4 -4
- data/golden/game_of_life/expected/lir_01_hoist_scalar_references.txt +4 -4
- data/golden/game_of_life/expected/lir_02_inlined.txt +1294 -1294
- data/golden/game_of_life/expected/lir_03_cse.txt +403 -399
- data/golden/game_of_life/expected/lir_04_1_loop_fusion.txt +403 -399
- data/golden/game_of_life/expected/lir_04_loop_invcm.txt +403 -399
- data/golden/game_of_life/expected/lir_06_const_prop.txt +403 -399
- data/golden/game_of_life/expected/nast.txt +4 -4
- data/golden/game_of_life/expected/schema_javascript.mjs +87 -85
- data/golden/game_of_life/expected/schema_ruby.rb +88 -86
- data/golden/game_of_life/expected/snast.txt +10 -10
- data/golden/hash_keys/expected/schema_ruby.rb +1 -1
- data/golden/hash_value/expected/nast.txt +1 -1
- data/golden/hash_value/expected/schema_ruby.rb +1 -1
- data/golden/hash_value/expected/snast.txt +1 -1
- data/golden/hierarchical_complex/expected/lir_02_inlined.txt +15 -15
- data/golden/hierarchical_complex/expected/lir_03_cse.txt +1 -1
- data/golden/hierarchical_complex/expected/lir_04_1_loop_fusion.txt +1 -1
- data/golden/hierarchical_complex/expected/lir_04_loop_invcm.txt +1 -1
- data/golden/hierarchical_complex/expected/lir_06_const_prop.txt +1 -1
- data/golden/hierarchical_complex/expected/nast.txt +3 -3
- data/golden/hierarchical_complex/expected/schema_javascript.mjs +1 -1
- data/golden/hierarchical_complex/expected/schema_ruby.rb +2 -2
- data/golden/hierarchical_complex/expected/snast.txt +3 -3
- data/golden/inline_rename_scope_leak/expected/nast.txt +3 -3
- data/golden/inline_rename_scope_leak/expected/schema_ruby.rb +1 -1
- data/golden/input_reference/expected/nast.txt +2 -2
- data/golden/input_reference/expected/schema_ruby.rb +1 -1
- data/golden/interleaved_fusion/expected/lir_02_inlined.txt +35 -35
- data/golden/interleaved_fusion/expected/lir_03_cse.txt +26 -26
- data/golden/interleaved_fusion/expected/lir_04_1_loop_fusion.txt +27 -26
- data/golden/interleaved_fusion/expected/lir_04_loop_invcm.txt +26 -26
- data/golden/interleaved_fusion/expected/lir_06_const_prop.txt +26 -26
- data/golden/interleaved_fusion/expected/nast.txt +2 -2
- data/golden/interleaved_fusion/expected/schema_javascript.mjs +23 -23
- data/golden/interleaved_fusion/expected/schema_ruby.rb +29 -29
- data/golden/let_inline/expected/nast.txt +4 -4
- data/golden/let_inline/expected/schema_ruby.rb +1 -1
- data/golden/loop_fusion/expected/lir_02_inlined.txt +17 -17
- data/golden/loop_fusion/expected/lir_03_cse.txt +14 -14
- data/golden/loop_fusion/expected/lir_04_1_loop_fusion.txt +14 -14
- data/golden/loop_fusion/expected/lir_04_loop_invcm.txt +14 -14
- data/golden/loop_fusion/expected/lir_06_const_prop.txt +14 -14
- data/golden/loop_fusion/expected/nast.txt +1 -1
- data/golden/loop_fusion/expected/schema_javascript.mjs +12 -12
- data/golden/loop_fusion/expected/schema_ruby.rb +16 -16
- data/golden/min_reduce_scope/expected/nast.txt +3 -3
- data/golden/min_reduce_scope/expected/schema_ruby.rb +1 -1
- data/golden/min_reduce_scope/expected/snast.txt +1 -1
- data/golden/mixed_dimensions/expected/lir_02_inlined.txt +5 -5
- data/golden/mixed_dimensions/expected/lir_03_cse.txt +5 -5
- data/golden/mixed_dimensions/expected/lir_04_1_loop_fusion.txt +5 -5
- data/golden/mixed_dimensions/expected/lir_04_loop_invcm.txt +5 -5
- data/golden/mixed_dimensions/expected/lir_06_const_prop.txt +5 -5
- data/golden/mixed_dimensions/expected/nast.txt +2 -2
- data/golden/mixed_dimensions/expected/schema_javascript.mjs +3 -3
- data/golden/mixed_dimensions/expected/schema_ruby.rb +6 -6
- data/golden/multirank_hoisting/expected/lir_02_inlined.txt +48 -48
- data/golden/multirank_hoisting/expected/lir_03_cse.txt +35 -35
- data/golden/multirank_hoisting/expected/lir_04_1_loop_fusion.txt +35 -35
- data/golden/multirank_hoisting/expected/lir_04_loop_invcm.txt +35 -35
- data/golden/multirank_hoisting/expected/lir_06_const_prop.txt +35 -35
- data/golden/multirank_hoisting/expected/nast.txt +7 -7
- data/golden/multirank_hoisting/expected/schema_javascript.mjs +34 -34
- data/golden/multirank_hoisting/expected/schema_ruby.rb +36 -36
- data/golden/nested_hash/expected/nast.txt +1 -1
- data/golden/nested_hash/expected/schema_ruby.rb +1 -1
- data/golden/reduction_broadcast/expected/lir_02_inlined.txt +30 -30
- data/golden/reduction_broadcast/expected/lir_03_cse.txt +22 -22
- data/golden/reduction_broadcast/expected/lir_04_1_loop_fusion.txt +22 -22
- data/golden/reduction_broadcast/expected/lir_04_loop_invcm.txt +22 -22
- data/golden/reduction_broadcast/expected/lir_06_const_prop.txt +22 -22
- data/golden/reduction_broadcast/expected/nast.txt +3 -3
- data/golden/reduction_broadcast/expected/schema_javascript.mjs +18 -18
- data/golden/reduction_broadcast/expected/schema_ruby.rb +23 -23
- data/golden/reduction_broadcast/expected/snast.txt +1 -1
- data/golden/roll/expected/schema_ruby.rb +1 -1
- data/golden/shift/expected/schema_ruby.rb +1 -1
- data/golden/shift_2d/expected/schema_ruby.rb +1 -1
- data/golden/simple_math/expected/lir_00_unoptimized.txt +1 -1
- data/golden/simple_math/expected/lir_01_hoist_scalar_references.txt +1 -1
- data/golden/simple_math/expected/lir_02_inlined.txt +1 -1
- data/golden/simple_math/expected/lir_03_cse.txt +1 -1
- data/golden/simple_math/expected/lir_04_1_loop_fusion.txt +1 -1
- data/golden/simple_math/expected/lir_04_loop_invcm.txt +1 -1
- data/golden/simple_math/expected/lir_06_const_prop.txt +1 -1
- data/golden/simple_math/expected/nast.txt +5 -5
- data/golden/simple_math/expected/schema_ruby.rb +1 -1
- data/golden/simple_math/expected/snast.txt +2 -2
- data/golden/streaming_basics/expected/lir_02_inlined.txt +25 -25
- data/golden/streaming_basics/expected/lir_03_cse.txt +13 -13
- data/golden/streaming_basics/expected/lir_04_1_loop_fusion.txt +13 -13
- data/golden/streaming_basics/expected/lir_04_loop_invcm.txt +13 -13
- data/golden/streaming_basics/expected/lir_06_const_prop.txt +13 -13
- data/golden/streaming_basics/expected/nast.txt +8 -8
- data/golden/streaming_basics/expected/schema_javascript.mjs +13 -13
- data/golden/streaming_basics/expected/schema_ruby.rb +14 -14
- data/golden/streaming_basics/expected/snast.txt +1 -1
- data/golden/tuples/expected/lir_00_unoptimized.txt +5 -5
- data/golden/tuples/expected/lir_01_hoist_scalar_references.txt +5 -5
- data/golden/tuples/expected/lir_02_inlined.txt +5 -5
- data/golden/tuples/expected/lir_03_cse.txt +5 -5
- data/golden/tuples/expected/lir_04_1_loop_fusion.txt +5 -5
- data/golden/tuples/expected/lir_04_loop_invcm.txt +5 -5
- data/golden/tuples/expected/lir_06_const_prop.txt +5 -5
- data/golden/tuples/expected/nast.txt +4 -4
- data/golden/tuples/expected/schema_ruby.rb +1 -1
- data/golden/tuples/expected/snast.txt +6 -6
- data/golden/tuples_and_arrays/expected/lir_00_unoptimized.txt +1 -1
- data/golden/tuples_and_arrays/expected/lir_01_hoist_scalar_references.txt +1 -1
- data/golden/tuples_and_arrays/expected/lir_02_inlined.txt +17 -17
- data/golden/tuples_and_arrays/expected/lir_03_cse.txt +13 -13
- data/golden/tuples_and_arrays/expected/lir_04_1_loop_fusion.txt +13 -13
- data/golden/tuples_and_arrays/expected/lir_04_loop_invcm.txt +13 -13
- data/golden/tuples_and_arrays/expected/lir_06_const_prop.txt +13 -13
- data/golden/tuples_and_arrays/expected/nast.txt +3 -3
- data/golden/tuples_and_arrays/expected/schema_javascript.mjs +13 -13
- data/golden/tuples_and_arrays/expected/schema_ruby.rb +14 -14
- data/golden/tuples_and_arrays/expected/snast.txt +2 -2
- data/golden/us_tax_2024/expected/ast.txt +63 -670
- data/golden/us_tax_2024/expected/input_plan.txt +8 -45
- data/golden/us_tax_2024/expected/lir_00_unoptimized.txt +253 -863
- data/golden/us_tax_2024/expected/lir_01_hoist_scalar_references.txt +253 -863
- data/golden/us_tax_2024/expected/lir_02_inlined.txt +1215 -5139
- data/golden/us_tax_2024/expected/lir_03_cse.txt +587 -2460
- data/golden/us_tax_2024/expected/lir_04_1_loop_fusion.txt +632 -2480
- data/golden/us_tax_2024/expected/lir_04_loop_invcm.txt +587 -2400
- data/golden/us_tax_2024/expected/lir_06_const_prop.txt +587 -2400
- data/golden/us_tax_2024/expected/nast.txt +123 -826
- data/golden/us_tax_2024/expected/schema_javascript.mjs +127 -581
- data/golden/us_tax_2024/expected/schema_ruby.rb +135 -610
- data/golden/us_tax_2024/expected/snast.txt +155 -858
- data/golden/us_tax_2024/expected.json +120 -1
- data/golden/us_tax_2024/input.json +18 -9
- data/golden/us_tax_2024/schema.kumi +48 -178
- data/golden/with_constants/expected/lir_00_unoptimized.txt +1 -1
- data/golden/with_constants/expected/lir_01_hoist_scalar_references.txt +1 -1
- data/golden/with_constants/expected/lir_02_inlined.txt +1 -1
- data/golden/with_constants/expected/lir_03_cse.txt +1 -1
- data/golden/with_constants/expected/lir_04_1_loop_fusion.txt +1 -1
- data/golden/with_constants/expected/lir_04_loop_invcm.txt +1 -1
- data/golden/with_constants/expected/lir_06_const_prop.txt +1 -1
- data/golden/with_constants/expected/nast.txt +2 -2
- data/golden/with_constants/expected/schema_ruby.rb +1 -1
- data/golden/with_constants/expected/snast.txt +2 -2
- data/lib/kumi/analyzer.rb +12 -12
- data/lib/kumi/core/analyzer/passes/formal_constraint_propagator.rb +236 -0
- data/lib/kumi/core/analyzer/passes/input_collector.rb +22 -4
- data/lib/kumi/core/analyzer/passes/lir/inline_declarations_pass.rb +118 -74
- data/lib/kumi/core/analyzer/passes/nast_dimensional_analyzer_pass.rb +64 -18
- data/lib/kumi/core/analyzer/passes/normalize_to_nast_pass.rb +9 -4
- data/lib/kumi/core/analyzer/passes/snast_pass.rb +3 -1
- data/lib/kumi/core/analyzer/passes/unsat_detector.rb +172 -198
- data/lib/kumi/core/error_reporter.rb +36 -1
- data/lib/kumi/core/errors.rb +33 -1
- data/lib/kumi/core/functions/function_spec.rb +5 -4
- data/lib/kumi/core/functions/loader.rb +17 -1
- data/lib/kumi/core/functions/overload_resolver.rb +164 -0
- data/lib/kumi/core/functions/type_error_reporter.rb +118 -0
- data/lib/kumi/core/functions/type_rules.rb +155 -35
- data/lib/kumi/core/types/inference.rb +29 -22
- data/lib/kumi/core/types/normalizer.rb +29 -45
- data/lib/kumi/core/types/validator.rb +16 -27
- data/lib/kumi/core/types/value_objects.rb +116 -0
- data/lib/kumi/core/types.rb +45 -37
- data/lib/kumi/registry_v2/loader.rb +90 -0
- data/lib/kumi/registry_v2.rb +18 -1
- data/lib/kumi/version.rb +1 -1
- metadata +21 -7
- data/lib/kumi/core/analyzer/unsat_constant_evaluator.rb +0 -59
- data/lib/kumi/core/atom_unsat_solver.rb +0 -396
- data/lib/kumi/core/constraint_relationship_solver.rb +0 -641
- data/lib/kumi/core/types/builder.rb +0 -23
- data/lib/kumi/core/types/compatibility.rb +0 -96
- data/lib/kumi/core/types/formatter.rb +0 -26
@@ -299,8 +299,8 @@
|
|
299
299
|
%t482 = call core.clamp(%t362, %t298, %t452) :: integer
|
300
300
|
%t483 = gather %t326, %t482 :: integer
|
301
301
|
%t485 = select %t478, %t483, %t298 :: integer
|
302
|
-
%t243 = make_tuple(%t313, %t333, %t353, %t373, %t401, %t429, %t457, %t485) :: tuple<integer>
|
303
|
-
%t244 = fold %t243 fn="agg.sum" ::
|
302
|
+
%t243 = make_tuple(%t313, %t333, %t353, %t373, %t401, %t429, %t457, %t485) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
|
303
|
+
%t244 = fold %t243 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
|
304
304
|
yield %t244
|
305
305
|
end_loop
|
306
306
|
end_loop
|
@@ -319,83 +319,83 @@
|
|
319
319
|
%t253 = load_input "rows" :: array
|
320
320
|
loop rows id=L23 in %t253 as el=%rows_el_254, idx=%rows_i_255
|
321
321
|
loop col id=L24 in %rows_el_254 as el=%col_el_256, idx=%col_i_257
|
322
|
-
%
|
323
|
-
%
|
324
|
-
%
|
325
|
-
%
|
326
|
-
%
|
327
|
-
%
|
328
|
-
%
|
329
|
-
%
|
330
|
-
%
|
331
|
-
%
|
332
|
-
%
|
333
|
-
%
|
334
|
-
%
|
335
|
-
%
|
336
|
-
%
|
337
|
-
%
|
338
|
-
%
|
339
|
-
%
|
340
|
-
%
|
341
|
-
%
|
342
|
-
%
|
343
|
-
%
|
344
|
-
%
|
345
|
-
%
|
346
|
-
%
|
347
|
-
%
|
348
|
-
%
|
349
|
-
%
|
350
|
-
%
|
351
|
-
%
|
352
|
-
%
|
353
|
-
%
|
354
|
-
%
|
355
|
-
%
|
356
|
-
%
|
357
|
-
%
|
358
|
-
%
|
359
|
-
%
|
360
|
-
%
|
361
|
-
%
|
362
|
-
%
|
363
|
-
%
|
364
|
-
%
|
365
|
-
%
|
366
|
-
%
|
367
|
-
%
|
368
|
-
%
|
369
|
-
%
|
370
|
-
%
|
371
|
-
%
|
372
|
-
%
|
373
|
-
%
|
374
|
-
%
|
375
|
-
%
|
376
|
-
%
|
377
|
-
%
|
378
|
-
%
|
379
|
-
%
|
380
|
-
%
|
381
|
-
%
|
382
|
-
%
|
383
|
-
%
|
384
|
-
%
|
385
|
-
%
|
386
|
-
%
|
387
|
-
%
|
388
|
-
%
|
389
|
-
%
|
390
|
-
%
|
391
|
-
%
|
392
|
-
%
|
393
|
-
%
|
394
|
-
%
|
395
|
-
%
|
396
|
-
%
|
397
|
-
%t496 = make_tuple(%
|
398
|
-
%t497 = fold %t496 fn="agg.sum" ::
|
322
|
+
%t499 = length %t253 :: integer
|
323
|
+
%t500 = const -1 :: integer
|
324
|
+
%t501 = call core.sub(%rows_i_255, %t500) :: integer
|
325
|
+
%t502 = const 0 :: integer
|
326
|
+
%t503 = call core.gte(%t501, %t502) :: boolean
|
327
|
+
%t504 = call core.lt(%t501, %t499) :: boolean
|
328
|
+
%t505 = call core.and(%t503, %t504) :: boolean
|
329
|
+
%t506 = const 1 :: integer
|
330
|
+
%t507 = call core.sub(%t499, %t506) :: integer
|
331
|
+
%t509 = call core.clamp(%t501, %t502, %t507) :: integer
|
332
|
+
%t510 = gather %t253, %t509 :: any
|
333
|
+
%t511 = length %t510 :: integer
|
334
|
+
%t512 = call core.mod(%col_i_257, %t511) :: integer
|
335
|
+
%t513 = call core.add(%t512, %t511) :: integer
|
336
|
+
%t514 = call core.mod(%t513, %t511) :: integer
|
337
|
+
%t515 = gather %t510, %t514 :: integer
|
338
|
+
%t517 = select %t505, %t515, %t502 :: integer
|
339
|
+
%t521 = call core.sub(%rows_i_255, %t506) :: integer
|
340
|
+
%t523 = call core.gte(%t521, %t502) :: boolean
|
341
|
+
%t524 = call core.lt(%t521, %t499) :: boolean
|
342
|
+
%t525 = call core.and(%t523, %t524) :: boolean
|
343
|
+
%t529 = call core.clamp(%t521, %t502, %t507) :: integer
|
344
|
+
%t530 = gather %t253, %t529 :: any
|
345
|
+
%t531 = length %t530 :: integer
|
346
|
+
%t532 = call core.mod(%col_i_257, %t531) :: integer
|
347
|
+
%t533 = call core.add(%t532, %t531) :: integer
|
348
|
+
%t534 = call core.mod(%t533, %t531) :: integer
|
349
|
+
%t535 = gather %t530, %t534 :: integer
|
350
|
+
%t537 = select %t525, %t535, %t502 :: integer
|
351
|
+
%t540 = call core.mod(%rows_i_255, %t499) :: integer
|
352
|
+
%t541 = call core.add(%t540, %t499) :: integer
|
353
|
+
%t542 = call core.mod(%t541, %t499) :: integer
|
354
|
+
%t543 = gather %t253, %t542 :: any
|
355
|
+
%t544 = length %t543 :: integer
|
356
|
+
%t546 = call core.sub(%col_i_257, %t500) :: integer
|
357
|
+
%t548 = call core.gte(%t546, %t502) :: boolean
|
358
|
+
%t549 = call core.lt(%t546, %t544) :: boolean
|
359
|
+
%t550 = call core.and(%t548, %t549) :: boolean
|
360
|
+
%t552 = call core.sub(%t544, %t506) :: integer
|
361
|
+
%t554 = call core.clamp(%t546, %t502, %t552) :: integer
|
362
|
+
%t555 = gather %t543, %t554 :: integer
|
363
|
+
%t557 = select %t550, %t555, %t502 :: integer
|
364
|
+
%t566 = call core.sub(%col_i_257, %t506) :: integer
|
365
|
+
%t568 = call core.gte(%t566, %t502) :: boolean
|
366
|
+
%t569 = call core.lt(%t566, %t544) :: boolean
|
367
|
+
%t570 = call core.and(%t568, %t569) :: boolean
|
368
|
+
%t574 = call core.clamp(%t566, %t502, %t552) :: integer
|
369
|
+
%t575 = gather %t543, %t574 :: integer
|
370
|
+
%t577 = select %t570, %t575, %t502 :: integer
|
371
|
+
%t596 = call core.lt(%t546, %t511) :: boolean
|
372
|
+
%t597 = call core.and(%t548, %t596) :: boolean
|
373
|
+
%t598 = call core.and(%t505, %t597) :: boolean
|
374
|
+
%t600 = call core.sub(%t511, %t506) :: integer
|
375
|
+
%t602 = call core.clamp(%t546, %t502, %t600) :: integer
|
376
|
+
%t603 = gather %t510, %t602 :: integer
|
377
|
+
%t605 = select %t598, %t603, %t502 :: integer
|
378
|
+
%t624 = call core.lt(%t566, %t511) :: boolean
|
379
|
+
%t625 = call core.and(%t568, %t624) :: boolean
|
380
|
+
%t626 = call core.and(%t505, %t625) :: boolean
|
381
|
+
%t630 = call core.clamp(%t566, %t502, %t600) :: integer
|
382
|
+
%t631 = gather %t510, %t630 :: integer
|
383
|
+
%t633 = select %t626, %t631, %t502 :: integer
|
384
|
+
%t652 = call core.lt(%t546, %t531) :: boolean
|
385
|
+
%t653 = call core.and(%t548, %t652) :: boolean
|
386
|
+
%t654 = call core.and(%t525, %t653) :: boolean
|
387
|
+
%t656 = call core.sub(%t531, %t506) :: integer
|
388
|
+
%t658 = call core.clamp(%t546, %t502, %t656) :: integer
|
389
|
+
%t659 = gather %t530, %t658 :: integer
|
390
|
+
%t661 = select %t654, %t659, %t502 :: integer
|
391
|
+
%t680 = call core.lt(%t566, %t531) :: boolean
|
392
|
+
%t681 = call core.and(%t568, %t680) :: boolean
|
393
|
+
%t682 = call core.and(%t525, %t681) :: boolean
|
394
|
+
%t686 = call core.clamp(%t566, %t502, %t656) :: integer
|
395
|
+
%t687 = gather %t530, %t686 :: integer
|
396
|
+
%t689 = select %t682, %t687, %t502 :: integer
|
397
|
+
%t496 = make_tuple(%t517, %t537, %t557, %t577, %t605, %t633, %t661, %t689) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
|
398
|
+
%t497 = fold %t496 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
|
399
399
|
%t259 = const 3 :: integer
|
400
400
|
%t260 = call core.eq(%t497, %t259) :: boolean
|
401
401
|
yield %t260
|
@@ -406,85 +406,85 @@
|
|
406
406
|
%t261 = load_input "rows" :: array
|
407
407
|
loop rows id=L25 in %t261 as el=%rows_el_262, idx=%rows_i_263
|
408
408
|
loop col id=L26 in %rows_el_262 as el=%col_el_264, idx=%col_i_265
|
409
|
-
%
|
410
|
-
%
|
411
|
-
%
|
412
|
-
%
|
413
|
-
%
|
414
|
-
%
|
409
|
+
%t702 = length %t261 :: integer
|
410
|
+
%t703 = const -1 :: integer
|
411
|
+
%t704 = call core.sub(%rows_i_263, %t703) :: integer
|
412
|
+
%t705 = const 0 :: integer
|
413
|
+
%t706 = call core.gte(%t704, %t705) :: boolean
|
414
|
+
%t707 = call core.lt(%t704, %t702) :: boolean
|
415
|
+
%t708 = call core.and(%t706, %t707) :: boolean
|
416
|
+
%t709 = const 1 :: integer
|
417
|
+
%t710 = call core.sub(%t702, %t709) :: integer
|
418
|
+
%t712 = call core.clamp(%t704, %t705, %t710) :: integer
|
419
|
+
%t713 = gather %t261, %t712 :: any
|
420
|
+
%t714 = length %t713 :: integer
|
421
|
+
%t715 = call core.mod(%col_i_265, %t714) :: integer
|
422
|
+
%t716 = call core.add(%t715, %t714) :: integer
|
423
|
+
%t717 = call core.mod(%t716, %t714) :: integer
|
424
|
+
%t718 = gather %t713, %t717 :: integer
|
425
|
+
%t720 = select %t708, %t718, %t705 :: integer
|
426
|
+
%t724 = call core.sub(%rows_i_263, %t709) :: integer
|
427
|
+
%t726 = call core.gte(%t724, %t705) :: boolean
|
428
|
+
%t727 = call core.lt(%t724, %t702) :: boolean
|
415
429
|
%t728 = call core.and(%t726, %t727) :: boolean
|
416
|
-
%
|
417
|
-
%t730 = call core.sub(%t722, %t729) :: integer
|
418
|
-
%t732 = call core.clamp(%t724, %t725, %t730) :: integer
|
430
|
+
%t732 = call core.clamp(%t724, %t705, %t710) :: integer
|
419
431
|
%t733 = gather %t261, %t732 :: any
|
420
432
|
%t734 = length %t733 :: integer
|
421
433
|
%t735 = call core.mod(%col_i_265, %t734) :: integer
|
422
434
|
%t736 = call core.add(%t735, %t734) :: integer
|
423
435
|
%t737 = call core.mod(%t736, %t734) :: integer
|
424
436
|
%t738 = gather %t733, %t737 :: integer
|
425
|
-
%t740 = select %t728, %t738, %
|
426
|
-
%
|
427
|
-
%
|
428
|
-
%
|
429
|
-
%
|
430
|
-
%
|
431
|
-
%
|
432
|
-
%
|
433
|
-
%
|
434
|
-
%
|
435
|
-
%
|
436
|
-
%
|
437
|
-
%
|
438
|
-
%
|
439
|
-
%
|
440
|
-
%
|
441
|
-
%
|
442
|
-
%t767 = length %t766 :: integer
|
443
|
-
%t769 = call core.sub(%col_i_265, %t723) :: integer
|
444
|
-
%t771 = call core.gte(%t769, %t725) :: boolean
|
445
|
-
%t772 = call core.lt(%t769, %t767) :: boolean
|
437
|
+
%t740 = select %t728, %t738, %t705 :: integer
|
438
|
+
%t743 = call core.mod(%rows_i_263, %t702) :: integer
|
439
|
+
%t744 = call core.add(%t743, %t702) :: integer
|
440
|
+
%t745 = call core.mod(%t744, %t702) :: integer
|
441
|
+
%t746 = gather %t261, %t745 :: any
|
442
|
+
%t747 = length %t746 :: integer
|
443
|
+
%t749 = call core.sub(%col_i_265, %t703) :: integer
|
444
|
+
%t751 = call core.gte(%t749, %t705) :: boolean
|
445
|
+
%t752 = call core.lt(%t749, %t747) :: boolean
|
446
|
+
%t753 = call core.and(%t751, %t752) :: boolean
|
447
|
+
%t755 = call core.sub(%t747, %t709) :: integer
|
448
|
+
%t757 = call core.clamp(%t749, %t705, %t755) :: integer
|
449
|
+
%t758 = gather %t746, %t757 :: integer
|
450
|
+
%t760 = select %t753, %t758, %t705 :: integer
|
451
|
+
%t769 = call core.sub(%col_i_265, %t709) :: integer
|
452
|
+
%t771 = call core.gte(%t769, %t705) :: boolean
|
453
|
+
%t772 = call core.lt(%t769, %t747) :: boolean
|
446
454
|
%t773 = call core.and(%t771, %t772) :: boolean
|
447
|
-
%
|
448
|
-
%
|
449
|
-
%
|
450
|
-
%
|
451
|
-
%
|
452
|
-
%
|
453
|
-
%
|
454
|
-
%
|
455
|
-
%
|
456
|
-
%
|
457
|
-
%
|
458
|
-
%
|
459
|
-
%
|
460
|
-
%
|
461
|
-
%
|
462
|
-
%
|
463
|
-
%
|
464
|
-
%
|
465
|
-
%
|
466
|
-
%
|
467
|
-
%
|
468
|
-
%
|
469
|
-
%
|
470
|
-
%
|
471
|
-
%
|
472
|
-
%
|
473
|
-
%
|
474
|
-
%
|
475
|
-
%
|
476
|
-
%
|
477
|
-
%
|
478
|
-
%t903 = call core.lt(%t789, %t754) :: boolean
|
479
|
-
%t904 = call core.and(%t791, %t903) :: boolean
|
480
|
-
%t905 = call core.and(%t748, %t904) :: boolean
|
481
|
-
%t909 = call core.clamp(%t789, %t725, %t879) :: integer
|
482
|
-
%t910 = gather %t753, %t909 :: integer
|
483
|
-
%t912 = select %t905, %t910, %t725 :: integer
|
484
|
-
%t507 = make_tuple(%t740, %t760, %t780, %t800, %t828, %t856, %t884, %t912) :: tuple<integer>
|
485
|
-
%t508 = fold %t507 fn="agg.sum" ::
|
455
|
+
%t777 = call core.clamp(%t769, %t705, %t755) :: integer
|
456
|
+
%t778 = gather %t746, %t777 :: integer
|
457
|
+
%t780 = select %t773, %t778, %t705 :: integer
|
458
|
+
%t799 = call core.lt(%t749, %t714) :: boolean
|
459
|
+
%t800 = call core.and(%t751, %t799) :: boolean
|
460
|
+
%t801 = call core.and(%t708, %t800) :: boolean
|
461
|
+
%t803 = call core.sub(%t714, %t709) :: integer
|
462
|
+
%t805 = call core.clamp(%t749, %t705, %t803) :: integer
|
463
|
+
%t806 = gather %t713, %t805 :: integer
|
464
|
+
%t808 = select %t801, %t806, %t705 :: integer
|
465
|
+
%t827 = call core.lt(%t769, %t714) :: boolean
|
466
|
+
%t828 = call core.and(%t771, %t827) :: boolean
|
467
|
+
%t829 = call core.and(%t708, %t828) :: boolean
|
468
|
+
%t833 = call core.clamp(%t769, %t705, %t803) :: integer
|
469
|
+
%t834 = gather %t713, %t833 :: integer
|
470
|
+
%t836 = select %t829, %t834, %t705 :: integer
|
471
|
+
%t855 = call core.lt(%t749, %t734) :: boolean
|
472
|
+
%t856 = call core.and(%t751, %t855) :: boolean
|
473
|
+
%t857 = call core.and(%t728, %t856) :: boolean
|
474
|
+
%t859 = call core.sub(%t734, %t709) :: integer
|
475
|
+
%t861 = call core.clamp(%t749, %t705, %t859) :: integer
|
476
|
+
%t862 = gather %t733, %t861 :: integer
|
477
|
+
%t864 = select %t857, %t862, %t705 :: integer
|
478
|
+
%t883 = call core.lt(%t769, %t734) :: boolean
|
479
|
+
%t884 = call core.and(%t771, %t883) :: boolean
|
480
|
+
%t885 = call core.and(%t728, %t884) :: boolean
|
481
|
+
%t889 = call core.clamp(%t769, %t705, %t859) :: integer
|
482
|
+
%t890 = gather %t733, %t889 :: integer
|
483
|
+
%t892 = select %t885, %t890, %t705 :: integer
|
484
|
+
%t699 = make_tuple(%t720, %t740, %t760, %t780, %t808, %t836, %t864, %t892) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
|
485
|
+
%t700 = fold %t699 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
|
486
486
|
%t267 = const 2 :: integer
|
487
|
-
%t268 = call core.eq(%
|
487
|
+
%t268 = call core.eq(%t700, %t267) :: boolean
|
488
488
|
yield %t268
|
489
489
|
end_loop
|
490
490
|
end_loop
|
@@ -493,87 +493,88 @@
|
|
493
493
|
%t269 = load_input "rows" :: array
|
494
494
|
loop rows id=L27 in %t269 as el=%rows_el_270, idx=%rows_i_271
|
495
495
|
loop col id=L28 in %rows_el_270 as el=%col_el_272, idx=%col_i_273
|
496
|
-
%
|
497
|
-
%
|
498
|
-
%
|
499
|
-
%
|
500
|
-
%
|
501
|
-
%
|
502
|
-
%
|
503
|
-
%
|
504
|
-
%
|
505
|
-
%
|
506
|
-
%
|
507
|
-
%
|
508
|
-
%
|
509
|
-
%
|
510
|
-
%
|
511
|
-
%
|
512
|
-
%
|
513
|
-
%
|
514
|
-
%
|
515
|
-
%
|
516
|
-
%
|
517
|
-
%
|
518
|
-
%
|
519
|
-
%
|
520
|
-
%
|
521
|
-
%
|
522
|
-
%
|
523
|
-
%
|
524
|
-
%
|
525
|
-
%
|
526
|
-
%
|
527
|
-
%
|
528
|
-
%
|
529
|
-
%
|
530
|
-
%
|
531
|
-
%
|
532
|
-
%
|
533
|
-
%
|
534
|
-
%
|
535
|
-
%
|
536
|
-
%
|
537
|
-
%
|
538
|
-
%
|
539
|
-
%
|
540
|
-
%
|
541
|
-
%
|
542
|
-
%
|
543
|
-
%
|
544
|
-
%
|
545
|
-
%
|
546
|
-
%
|
547
|
-
%
|
548
|
-
%
|
549
|
-
%
|
550
|
-
%
|
551
|
-
%
|
552
|
-
%
|
553
|
-
%
|
554
|
-
%
|
555
|
-
%
|
556
|
-
%
|
557
|
-
%
|
558
|
-
%
|
559
|
-
%
|
560
|
-
%
|
561
|
-
%
|
562
|
-
%
|
563
|
-
%
|
564
|
-
%
|
565
|
-
%
|
566
|
-
%
|
567
|
-
%
|
568
|
-
%
|
569
|
-
%
|
570
|
-
%
|
571
|
-
%
|
572
|
-
%
|
573
|
-
%
|
574
|
-
%
|
575
|
-
%
|
576
|
-
%
|
496
|
+
%t909 = length %t269 :: integer
|
497
|
+
%t910 = const -1 :: integer
|
498
|
+
%t911 = call core.sub(%rows_i_271, %t910) :: integer
|
499
|
+
%t912 = const 0 :: integer
|
500
|
+
%t913 = call core.gte(%t911, %t912) :: boolean
|
501
|
+
%t914 = call core.lt(%t911, %t909) :: boolean
|
502
|
+
%t915 = call core.and(%t913, %t914) :: boolean
|
503
|
+
%t916 = const 1 :: integer
|
504
|
+
%t917 = call core.sub(%t909, %t916) :: integer
|
505
|
+
%t919 = call core.clamp(%t911, %t912, %t917) :: integer
|
506
|
+
%t920 = gather %t269, %t919 :: any
|
507
|
+
%t921 = length %t920 :: integer
|
508
|
+
%t922 = call core.mod(%col_i_273, %t921) :: integer
|
509
|
+
%t923 = call core.add(%t922, %t921) :: integer
|
510
|
+
%t924 = call core.mod(%t923, %t921) :: integer
|
511
|
+
%t925 = gather %t920, %t924 :: integer
|
512
|
+
%t927 = select %t915, %t925, %t912 :: integer
|
513
|
+
%t931 = call core.sub(%rows_i_271, %t916) :: integer
|
514
|
+
%t933 = call core.gte(%t931, %t912) :: boolean
|
515
|
+
%t934 = call core.lt(%t931, %t909) :: boolean
|
516
|
+
%t935 = call core.and(%t933, %t934) :: boolean
|
517
|
+
%t939 = call core.clamp(%t931, %t912, %t917) :: integer
|
518
|
+
%t940 = gather %t269, %t939 :: any
|
519
|
+
%t941 = length %t940 :: integer
|
520
|
+
%t942 = call core.mod(%col_i_273, %t941) :: integer
|
521
|
+
%t943 = call core.add(%t942, %t941) :: integer
|
522
|
+
%t944 = call core.mod(%t943, %t941) :: integer
|
523
|
+
%t945 = gather %t940, %t944 :: integer
|
524
|
+
%t947 = select %t935, %t945, %t912 :: integer
|
525
|
+
%t950 = call core.mod(%rows_i_271, %t909) :: integer
|
526
|
+
%t951 = call core.add(%t950, %t909) :: integer
|
527
|
+
%t952 = call core.mod(%t951, %t909) :: integer
|
528
|
+
%t953 = gather %t269, %t952 :: any
|
529
|
+
%t954 = length %t953 :: integer
|
530
|
+
%t956 = call core.sub(%col_i_273, %t910) :: integer
|
531
|
+
%t958 = call core.gte(%t956, %t912) :: boolean
|
532
|
+
%t959 = call core.lt(%t956, %t954) :: boolean
|
533
|
+
%t960 = call core.and(%t958, %t959) :: boolean
|
534
|
+
%t962 = call core.sub(%t954, %t916) :: integer
|
535
|
+
%t964 = call core.clamp(%t956, %t912, %t962) :: integer
|
536
|
+
%t965 = gather %t953, %t964 :: integer
|
537
|
+
%t967 = select %t960, %t965, %t912 :: integer
|
538
|
+
%t976 = call core.sub(%col_i_273, %t916) :: integer
|
539
|
+
%t978 = call core.gte(%t976, %t912) :: boolean
|
540
|
+
%t979 = call core.lt(%t976, %t954) :: boolean
|
541
|
+
%t980 = call core.and(%t978, %t979) :: boolean
|
542
|
+
%t984 = call core.clamp(%t976, %t912, %t962) :: integer
|
543
|
+
%t985 = gather %t953, %t984 :: integer
|
544
|
+
%t987 = select %t980, %t985, %t912 :: integer
|
545
|
+
%t1006 = call core.lt(%t956, %t921) :: boolean
|
546
|
+
%t1007 = call core.and(%t958, %t1006) :: boolean
|
547
|
+
%t1008 = call core.and(%t915, %t1007) :: boolean
|
548
|
+
%t1010 = call core.sub(%t921, %t916) :: integer
|
549
|
+
%t1012 = call core.clamp(%t956, %t912, %t1010) :: integer
|
550
|
+
%t1013 = gather %t920, %t1012 :: integer
|
551
|
+
%t1015 = select %t1008, %t1013, %t912 :: integer
|
552
|
+
%t1034 = call core.lt(%t976, %t921) :: boolean
|
553
|
+
%t1035 = call core.and(%t978, %t1034) :: boolean
|
554
|
+
%t1036 = call core.and(%t915, %t1035) :: boolean
|
555
|
+
%t1040 = call core.clamp(%t976, %t912, %t1010) :: integer
|
556
|
+
%t1041 = gather %t920, %t1040 :: integer
|
557
|
+
%t1043 = select %t1036, %t1041, %t912 :: integer
|
558
|
+
%t1062 = call core.lt(%t956, %t941) :: boolean
|
559
|
+
%t1063 = call core.and(%t958, %t1062) :: boolean
|
560
|
+
%t1064 = call core.and(%t935, %t1063) :: boolean
|
561
|
+
%t1066 = call core.sub(%t941, %t916) :: integer
|
562
|
+
%t1068 = call core.clamp(%t956, %t912, %t1066) :: integer
|
563
|
+
%t1069 = gather %t940, %t1068 :: integer
|
564
|
+
%t1071 = select %t1064, %t1069, %t912 :: integer
|
565
|
+
%t1090 = call core.lt(%t976, %t941) :: boolean
|
566
|
+
%t1091 = call core.and(%t978, %t1090) :: boolean
|
567
|
+
%t1092 = call core.and(%t935, %t1091) :: boolean
|
568
|
+
%t1096 = call core.clamp(%t976, %t912, %t1066) :: integer
|
569
|
+
%t1097 = gather %t940, %t1096 :: integer
|
570
|
+
%t1099 = select %t1092, %t1097, %t912 :: integer
|
571
|
+
%t906 = make_tuple(%t927, %t947, %t967, %t987, %t1015, %t1043, %t1071, %t1099) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
|
572
|
+
%t907 = fold %t906 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
|
573
|
+
%t895 = const 2 :: integer
|
574
|
+
%t896 = call core.eq(%t907, %t895) :: boolean
|
575
|
+
%t1102 = const 0 :: integer
|
576
|
+
%t1103 = call core.gt(%col_el_272, %t1102) :: boolean
|
577
|
+
%t276 = call core.and(%t896, %t1103) :: boolean
|
577
578
|
yield %t276
|
578
579
|
end_loop
|
579
580
|
end_loop
|
@@ -582,90 +583,91 @@
|
|
582
583
|
%t277 = load_input "rows" :: array
|
583
584
|
loop rows id=L29 in %t277 as el=%rows_el_278, idx=%rows_i_279
|
584
585
|
loop col id=L30 in %rows_el_278 as el=%col_el_280, idx=%col_i_281
|
585
|
-
%
|
586
|
-
%
|
587
|
-
%
|
588
|
-
%
|
589
|
-
%
|
590
|
-
%
|
591
|
-
%
|
592
|
-
%
|
593
|
-
%
|
594
|
-
%
|
595
|
-
%
|
596
|
-
%
|
597
|
-
%
|
598
|
-
%
|
599
|
-
%
|
600
|
-
%
|
601
|
-
%
|
602
|
-
%
|
603
|
-
%
|
604
|
-
%
|
605
|
-
%
|
606
|
-
%
|
607
|
-
%
|
608
|
-
%
|
609
|
-
%
|
610
|
-
%
|
611
|
-
%
|
612
|
-
%
|
613
|
-
%
|
614
|
-
%
|
615
|
-
%
|
616
|
-
%
|
617
|
-
%
|
618
|
-
%
|
619
|
-
%
|
620
|
-
%
|
621
|
-
%
|
622
|
-
%
|
623
|
-
%
|
624
|
-
%
|
625
|
-
%
|
626
|
-
%
|
627
|
-
%
|
628
|
-
%
|
629
|
-
%
|
630
|
-
%
|
631
|
-
%
|
632
|
-
%
|
633
|
-
%
|
634
|
-
%
|
635
|
-
%
|
636
|
-
%
|
637
|
-
%
|
638
|
-
%
|
639
|
-
%
|
640
|
-
%
|
641
|
-
%
|
642
|
-
%
|
643
|
-
%
|
644
|
-
%
|
645
|
-
%
|
646
|
-
%
|
647
|
-
%
|
648
|
-
%
|
649
|
-
%
|
650
|
-
%
|
651
|
-
%
|
652
|
-
%
|
653
|
-
%
|
654
|
-
%
|
655
|
-
%
|
656
|
-
%
|
657
|
-
%
|
658
|
-
%
|
659
|
-
%
|
660
|
-
%
|
661
|
-
%
|
662
|
-
%
|
663
|
-
%
|
664
|
-
%
|
665
|
-
%
|
666
|
-
%
|
667
|
-
%
|
668
|
-
%
|
586
|
+
%t1121 = length %t277 :: integer
|
587
|
+
%t1122 = const -1 :: integer
|
588
|
+
%t1123 = call core.sub(%rows_i_279, %t1122) :: integer
|
589
|
+
%t1124 = const 0 :: integer
|
590
|
+
%t1125 = call core.gte(%t1123, %t1124) :: boolean
|
591
|
+
%t1126 = call core.lt(%t1123, %t1121) :: boolean
|
592
|
+
%t1127 = call core.and(%t1125, %t1126) :: boolean
|
593
|
+
%t1128 = const 1 :: integer
|
594
|
+
%t1129 = call core.sub(%t1121, %t1128) :: integer
|
595
|
+
%t1131 = call core.clamp(%t1123, %t1124, %t1129) :: integer
|
596
|
+
%t1132 = gather %t277, %t1131 :: any
|
597
|
+
%t1133 = length %t1132 :: integer
|
598
|
+
%t1134 = call core.mod(%col_i_281, %t1133) :: integer
|
599
|
+
%t1135 = call core.add(%t1134, %t1133) :: integer
|
600
|
+
%t1136 = call core.mod(%t1135, %t1133) :: integer
|
601
|
+
%t1137 = gather %t1132, %t1136 :: integer
|
602
|
+
%t1139 = select %t1127, %t1137, %t1124 :: integer
|
603
|
+
%t1143 = call core.sub(%rows_i_279, %t1128) :: integer
|
604
|
+
%t1145 = call core.gte(%t1143, %t1124) :: boolean
|
605
|
+
%t1146 = call core.lt(%t1143, %t1121) :: boolean
|
606
|
+
%t1147 = call core.and(%t1145, %t1146) :: boolean
|
607
|
+
%t1151 = call core.clamp(%t1143, %t1124, %t1129) :: integer
|
608
|
+
%t1152 = gather %t277, %t1151 :: any
|
609
|
+
%t1153 = length %t1152 :: integer
|
610
|
+
%t1154 = call core.mod(%col_i_281, %t1153) :: integer
|
611
|
+
%t1155 = call core.add(%t1154, %t1153) :: integer
|
612
|
+
%t1156 = call core.mod(%t1155, %t1153) :: integer
|
613
|
+
%t1157 = gather %t1152, %t1156 :: integer
|
614
|
+
%t1159 = select %t1147, %t1157, %t1124 :: integer
|
615
|
+
%t1162 = call core.mod(%rows_i_279, %t1121) :: integer
|
616
|
+
%t1163 = call core.add(%t1162, %t1121) :: integer
|
617
|
+
%t1164 = call core.mod(%t1163, %t1121) :: integer
|
618
|
+
%t1165 = gather %t277, %t1164 :: any
|
619
|
+
%t1166 = length %t1165 :: integer
|
620
|
+
%t1168 = call core.sub(%col_i_281, %t1122) :: integer
|
621
|
+
%t1170 = call core.gte(%t1168, %t1124) :: boolean
|
622
|
+
%t1171 = call core.lt(%t1168, %t1166) :: boolean
|
623
|
+
%t1172 = call core.and(%t1170, %t1171) :: boolean
|
624
|
+
%t1174 = call core.sub(%t1166, %t1128) :: integer
|
625
|
+
%t1176 = call core.clamp(%t1168, %t1124, %t1174) :: integer
|
626
|
+
%t1177 = gather %t1165, %t1176 :: integer
|
627
|
+
%t1179 = select %t1172, %t1177, %t1124 :: integer
|
628
|
+
%t1188 = call core.sub(%col_i_281, %t1128) :: integer
|
629
|
+
%t1190 = call core.gte(%t1188, %t1124) :: boolean
|
630
|
+
%t1191 = call core.lt(%t1188, %t1166) :: boolean
|
631
|
+
%t1192 = call core.and(%t1190, %t1191) :: boolean
|
632
|
+
%t1196 = call core.clamp(%t1188, %t1124, %t1174) :: integer
|
633
|
+
%t1197 = gather %t1165, %t1196 :: integer
|
634
|
+
%t1199 = select %t1192, %t1197, %t1124 :: integer
|
635
|
+
%t1218 = call core.lt(%t1168, %t1133) :: boolean
|
636
|
+
%t1219 = call core.and(%t1170, %t1218) :: boolean
|
637
|
+
%t1220 = call core.and(%t1127, %t1219) :: boolean
|
638
|
+
%t1222 = call core.sub(%t1133, %t1128) :: integer
|
639
|
+
%t1224 = call core.clamp(%t1168, %t1124, %t1222) :: integer
|
640
|
+
%t1225 = gather %t1132, %t1224 :: integer
|
641
|
+
%t1227 = select %t1220, %t1225, %t1124 :: integer
|
642
|
+
%t1246 = call core.lt(%t1188, %t1133) :: boolean
|
643
|
+
%t1247 = call core.and(%t1190, %t1246) :: boolean
|
644
|
+
%t1248 = call core.and(%t1127, %t1247) :: boolean
|
645
|
+
%t1252 = call core.clamp(%t1188, %t1124, %t1222) :: integer
|
646
|
+
%t1253 = gather %t1132, %t1252 :: integer
|
647
|
+
%t1255 = select %t1248, %t1253, %t1124 :: integer
|
648
|
+
%t1274 = call core.lt(%t1168, %t1153) :: boolean
|
649
|
+
%t1275 = call core.and(%t1170, %t1274) :: boolean
|
650
|
+
%t1276 = call core.and(%t1147, %t1275) :: boolean
|
651
|
+
%t1278 = call core.sub(%t1153, %t1128) :: integer
|
652
|
+
%t1280 = call core.clamp(%t1168, %t1124, %t1278) :: integer
|
653
|
+
%t1281 = gather %t1152, %t1280 :: integer
|
654
|
+
%t1283 = select %t1276, %t1281, %t1124 :: integer
|
655
|
+
%t1302 = call core.lt(%t1188, %t1153) :: boolean
|
656
|
+
%t1303 = call core.and(%t1190, %t1302) :: boolean
|
657
|
+
%t1304 = call core.and(%t1147, %t1303) :: boolean
|
658
|
+
%t1308 = call core.clamp(%t1188, %t1124, %t1278) :: integer
|
659
|
+
%t1309 = gather %t1152, %t1308 :: integer
|
660
|
+
%t1311 = select %t1304, %t1309, %t1124 :: integer
|
661
|
+
%t1118 = make_tuple(%t1139, %t1159, %t1179, %t1199, %t1227, %t1255, %t1283, %t1311) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
|
662
|
+
%t1119 = fold %t1118 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
|
663
|
+
%t1107 = const 3 :: integer
|
664
|
+
%t1108 = call core.eq(%t1119, %t1107) :: boolean
|
665
|
+
%t1318 = const 2 :: integer
|
666
|
+
%t1319 = call core.eq(%t1119, %t1318) :: boolean
|
667
|
+
%t1525 = const 0 :: integer
|
668
|
+
%t1526 = call core.gt(%col_el_280, %t1525) :: boolean
|
669
|
+
%t1315 = call core.and(%t1319, %t1526) :: boolean
|
670
|
+
%t284 = call core.or(%t1108, %t1315) :: boolean
|
669
671
|
yield %t284
|
670
672
|
end_loop
|
671
673
|
end_loop
|
@@ -674,91 +676,93 @@
|
|
674
676
|
%t285 = load_input "rows" :: array
|
675
677
|
loop rows id=L31 in %t285 as el=%rows_el_286, idx=%rows_i_287
|
676
678
|
loop col id=L32 in %rows_el_286 as el=%col_el_288, idx=%col_i_289
|
677
|
-
%
|
678
|
-
%
|
679
|
-
%
|
680
|
-
%
|
681
|
-
%
|
682
|
-
%
|
683
|
-
%
|
684
|
-
%
|
685
|
-
%
|
686
|
-
%
|
687
|
-
%
|
688
|
-
%
|
689
|
-
%
|
690
|
-
%
|
691
|
-
%
|
692
|
-
%
|
693
|
-
%
|
694
|
-
%
|
695
|
-
%
|
696
|
-
%
|
697
|
-
%
|
698
|
-
%
|
699
|
-
%
|
700
|
-
%
|
701
|
-
%
|
702
|
-
%
|
703
|
-
%
|
704
|
-
%
|
705
|
-
%
|
706
|
-
%
|
707
|
-
%
|
708
|
-
%
|
709
|
-
%
|
710
|
-
%
|
711
|
-
%
|
712
|
-
%
|
713
|
-
%
|
714
|
-
%
|
715
|
-
%
|
716
|
-
%
|
717
|
-
%
|
718
|
-
%
|
719
|
-
%
|
720
|
-
%
|
721
|
-
%
|
722
|
-
%
|
723
|
-
%
|
724
|
-
%
|
725
|
-
%
|
726
|
-
%
|
727
|
-
%
|
728
|
-
%
|
729
|
-
%
|
730
|
-
%
|
731
|
-
%
|
732
|
-
%
|
733
|
-
%
|
734
|
-
%
|
735
|
-
%
|
736
|
-
%
|
737
|
-
%
|
738
|
-
%
|
739
|
-
%
|
740
|
-
%
|
741
|
-
%
|
742
|
-
%
|
743
|
-
%
|
744
|
-
%
|
745
|
-
%
|
746
|
-
%
|
747
|
-
%
|
748
|
-
%
|
749
|
-
%
|
750
|
-
%
|
751
|
-
%
|
752
|
-
%
|
753
|
-
%
|
754
|
-
%
|
755
|
-
%
|
756
|
-
%
|
757
|
-
%
|
758
|
-
%
|
759
|
-
%
|
760
|
-
%
|
761
|
-
%
|
679
|
+
%t1548 = length %t285 :: integer
|
680
|
+
%t1549 = const -1 :: integer
|
681
|
+
%t1550 = call core.sub(%rows_i_287, %t1549) :: integer
|
682
|
+
%t1551 = const 0 :: integer
|
683
|
+
%t1552 = call core.gte(%t1550, %t1551) :: boolean
|
684
|
+
%t1553 = call core.lt(%t1550, %t1548) :: boolean
|
685
|
+
%t1554 = call core.and(%t1552, %t1553) :: boolean
|
686
|
+
%t1555 = const 1 :: integer
|
687
|
+
%t1556 = call core.sub(%t1548, %t1555) :: integer
|
688
|
+
%t1558 = call core.clamp(%t1550, %t1551, %t1556) :: integer
|
689
|
+
%t1559 = gather %t285, %t1558 :: any
|
690
|
+
%t1560 = length %t1559 :: integer
|
691
|
+
%t1561 = call core.mod(%col_i_289, %t1560) :: integer
|
692
|
+
%t1562 = call core.add(%t1561, %t1560) :: integer
|
693
|
+
%t1563 = call core.mod(%t1562, %t1560) :: integer
|
694
|
+
%t1564 = gather %t1559, %t1563 :: integer
|
695
|
+
%t1566 = select %t1554, %t1564, %t1551 :: integer
|
696
|
+
%t1570 = call core.sub(%rows_i_287, %t1555) :: integer
|
697
|
+
%t1572 = call core.gte(%t1570, %t1551) :: boolean
|
698
|
+
%t1573 = call core.lt(%t1570, %t1548) :: boolean
|
699
|
+
%t1574 = call core.and(%t1572, %t1573) :: boolean
|
700
|
+
%t1578 = call core.clamp(%t1570, %t1551, %t1556) :: integer
|
701
|
+
%t1579 = gather %t285, %t1578 :: any
|
702
|
+
%t1580 = length %t1579 :: integer
|
703
|
+
%t1581 = call core.mod(%col_i_289, %t1580) :: integer
|
704
|
+
%t1582 = call core.add(%t1581, %t1580) :: integer
|
705
|
+
%t1583 = call core.mod(%t1582, %t1580) :: integer
|
706
|
+
%t1584 = gather %t1579, %t1583 :: integer
|
707
|
+
%t1586 = select %t1574, %t1584, %t1551 :: integer
|
708
|
+
%t1589 = call core.mod(%rows_i_287, %t1548) :: integer
|
709
|
+
%t1590 = call core.add(%t1589, %t1548) :: integer
|
710
|
+
%t1591 = call core.mod(%t1590, %t1548) :: integer
|
711
|
+
%t1592 = gather %t285, %t1591 :: any
|
712
|
+
%t1593 = length %t1592 :: integer
|
713
|
+
%t1595 = call core.sub(%col_i_289, %t1549) :: integer
|
714
|
+
%t1597 = call core.gte(%t1595, %t1551) :: boolean
|
715
|
+
%t1598 = call core.lt(%t1595, %t1593) :: boolean
|
716
|
+
%t1599 = call core.and(%t1597, %t1598) :: boolean
|
717
|
+
%t1601 = call core.sub(%t1593, %t1555) :: integer
|
718
|
+
%t1603 = call core.clamp(%t1595, %t1551, %t1601) :: integer
|
719
|
+
%t1604 = gather %t1592, %t1603 :: integer
|
720
|
+
%t1606 = select %t1599, %t1604, %t1551 :: integer
|
721
|
+
%t1615 = call core.sub(%col_i_289, %t1555) :: integer
|
722
|
+
%t1617 = call core.gte(%t1615, %t1551) :: boolean
|
723
|
+
%t1618 = call core.lt(%t1615, %t1593) :: boolean
|
724
|
+
%t1619 = call core.and(%t1617, %t1618) :: boolean
|
725
|
+
%t1623 = call core.clamp(%t1615, %t1551, %t1601) :: integer
|
726
|
+
%t1624 = gather %t1592, %t1623 :: integer
|
727
|
+
%t1626 = select %t1619, %t1624, %t1551 :: integer
|
728
|
+
%t1645 = call core.lt(%t1595, %t1560) :: boolean
|
729
|
+
%t1646 = call core.and(%t1597, %t1645) :: boolean
|
730
|
+
%t1647 = call core.and(%t1554, %t1646) :: boolean
|
731
|
+
%t1649 = call core.sub(%t1560, %t1555) :: integer
|
732
|
+
%t1651 = call core.clamp(%t1595, %t1551, %t1649) :: integer
|
733
|
+
%t1652 = gather %t1559, %t1651 :: integer
|
734
|
+
%t1654 = select %t1647, %t1652, %t1551 :: integer
|
735
|
+
%t1673 = call core.lt(%t1615, %t1560) :: boolean
|
736
|
+
%t1674 = call core.and(%t1617, %t1673) :: boolean
|
737
|
+
%t1675 = call core.and(%t1554, %t1674) :: boolean
|
738
|
+
%t1679 = call core.clamp(%t1615, %t1551, %t1649) :: integer
|
739
|
+
%t1680 = gather %t1559, %t1679 :: integer
|
740
|
+
%t1682 = select %t1675, %t1680, %t1551 :: integer
|
741
|
+
%t1701 = call core.lt(%t1595, %t1580) :: boolean
|
742
|
+
%t1702 = call core.and(%t1597, %t1701) :: boolean
|
743
|
+
%t1703 = call core.and(%t1574, %t1702) :: boolean
|
744
|
+
%t1705 = call core.sub(%t1580, %t1555) :: integer
|
745
|
+
%t1707 = call core.clamp(%t1595, %t1551, %t1705) :: integer
|
746
|
+
%t1708 = gather %t1579, %t1707 :: integer
|
747
|
+
%t1710 = select %t1703, %t1708, %t1551 :: integer
|
748
|
+
%t1729 = call core.lt(%t1615, %t1580) :: boolean
|
749
|
+
%t1730 = call core.and(%t1617, %t1729) :: boolean
|
750
|
+
%t1731 = call core.and(%t1574, %t1730) :: boolean
|
751
|
+
%t1735 = call core.clamp(%t1615, %t1551, %t1705) :: integer
|
752
|
+
%t1736 = gather %t1579, %t1735 :: integer
|
753
|
+
%t1738 = select %t1731, %t1736, %t1551 :: integer
|
754
|
+
%t1545 = make_tuple(%t1566, %t1586, %t1606, %t1626, %t1654, %t1682, %t1710, %t1738) :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
|
755
|
+
%t1546 = fold %t1545 fn="agg.sum" :: tuple<integer, integer, integer, integer, integer, integer, integer, integer>
|
756
|
+
%t1534 = const 3 :: integer
|
757
|
+
%t1535 = call core.eq(%t1546, %t1534) :: boolean
|
758
|
+
%t1745 = const 2 :: integer
|
759
|
+
%t1746 = call core.eq(%t1546, %t1745) :: boolean
|
760
|
+
%t1952 = const 0 :: integer
|
761
|
+
%t1953 = call core.gt(%col_el_288, %t1952) :: boolean
|
762
|
+
%t1742 = call core.and(%t1746, %t1953) :: boolean
|
763
|
+
%t1531 = call core.or(%t1535, %t1742) :: boolean
|
764
|
+
%t291 = const 1 :: integer
|
765
|
+
%t293 = select %t1531, %t291, %t1952 :: integer
|
762
766
|
yield %t293
|
763
767
|
end_loop
|
764
768
|
end_loop
|