kumi 0.0.17 → 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.
Files changed (676) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +4 -1
  3. data/.ruby-version +1 -0
  4. data/CHANGELOG.md +28 -0
  5. data/CLAUDE.md +26 -139
  6. data/README.md +143 -372
  7. data/data/functions/agg/boolean.yaml +14 -0
  8. data/data/functions/agg/numeric.yaml +80 -0
  9. data/data/functions/agg/string.yaml +8 -0
  10. data/data/functions/core/arithmetic.yaml +50 -0
  11. data/data/functions/core/boolean.yaml +18 -0
  12. data/data/functions/core/comparison.yaml +42 -0
  13. data/data/functions/core/constructor.yaml +32 -0
  14. data/data/functions/core/select.yaml +7 -0
  15. data/data/functions/core/stencil.yaml +21 -0
  16. data/data/functions/core/string.yaml +19 -0
  17. data/data/kernels/javascript/agg/boolean.yaml +12 -0
  18. data/data/kernels/javascript/agg/numeric.yaml +27 -0
  19. data/data/kernels/javascript/agg/string.yaml +5 -0
  20. data/data/kernels/javascript/core/arithmetic.yaml +32 -0
  21. data/data/kernels/javascript/core/boolean.yaml +12 -0
  22. data/data/kernels/javascript/core/comparison.yaml +24 -0
  23. data/data/kernels/javascript/core/constructor.yaml +15 -0
  24. data/data/kernels/javascript/core/select.yaml +7 -0
  25. data/data/kernels/javascript/core/string.yaml +12 -0
  26. data/data/kernels/ruby/agg/boolean.yaml +18 -0
  27. data/data/kernels/ruby/agg/numeric.yaml +29 -0
  28. data/data/kernels/ruby/agg/string.yaml +5 -0
  29. data/data/kernels/ruby/core/arithmetic.yaml +38 -0
  30. data/data/kernels/ruby/core/boolean.yaml +15 -0
  31. data/data/kernels/ruby/core/comparison.yaml +30 -0
  32. data/data/kernels/ruby/core/constructor.yaml +17 -0
  33. data/data/kernels/ruby/core/select.yaml +4 -0
  34. data/data/kernels/ruby/core/string.yaml +15 -0
  35. data/debug_ordering.rb +52 -0
  36. data/docs/FORM_SCHEMA.md +85 -0
  37. data/docs/OUTPUT_SCHEMA.md +69 -0
  38. data/docs/SYNTAX.md +626 -373
  39. data/golden/array_element/expected/ast.txt +21 -0
  40. data/golden/array_element/expected/input_plan.txt +5 -0
  41. data/golden/array_element/expected/lir_00_unoptimized.txt +13 -0
  42. data/golden/array_element/expected/lir_01_hoist_scalar_references.txt +13 -0
  43. data/golden/array_element/expected/lir_02_inlined.txt +13 -0
  44. data/golden/array_element/expected/lir_03_cse.txt +13 -0
  45. data/golden/array_element/expected/lir_04_1_loop_fusion.txt +13 -0
  46. data/golden/array_element/expected/lir_04_loop_invcm.txt +13 -0
  47. data/golden/array_element/expected/lir_06_const_prop.txt +13 -0
  48. data/golden/array_element/expected/nast.txt +7 -0
  49. data/golden/array_element/expected/schema_javascript.mjs +13 -0
  50. data/golden/array_element/expected/schema_ruby.rb +41 -0
  51. data/golden/array_element/expected/snast.txt +7 -0
  52. data/golden/array_element/expected.json +5 -0
  53. data/golden/array_element/input.json +9 -0
  54. data/golden/array_element/schema.kumi +11 -0
  55. data/golden/array_index/expected/ast.txt +59 -0
  56. data/golden/array_index/expected/input_plan.txt +5 -0
  57. data/golden/array_index/expected/lir_00_unoptimized.txt +41 -0
  58. data/golden/array_index/expected/lir_01_hoist_scalar_references.txt +41 -0
  59. data/golden/array_index/expected/lir_02_inlined.txt +42 -0
  60. data/golden/array_index/expected/lir_03_cse.txt +40 -0
  61. data/golden/array_index/expected/lir_04_1_loop_fusion.txt +40 -0
  62. data/golden/array_index/expected/lir_04_loop_invcm.txt +40 -0
  63. data/golden/array_index/expected/lir_06_const_prop.txt +40 -0
  64. data/golden/array_index/expected/nast.txt +33 -0
  65. data/golden/array_index/expected/schema_javascript.mjs +46 -0
  66. data/golden/array_index/expected/schema_ruby.rb +75 -0
  67. data/golden/array_index/expected/snast.txt +33 -0
  68. data/golden/array_index/expected.json +5 -0
  69. data/golden/array_index/input.json +1 -0
  70. data/golden/array_index/schema.kumi +19 -0
  71. data/golden/array_operations/expected/ast.txt +50 -0
  72. data/golden/array_operations/expected/input_plan.txt +10 -0
  73. data/golden/array_operations/expected/lir_00_unoptimized.txt +47 -0
  74. data/golden/array_operations/expected/lir_01_hoist_scalar_references.txt +47 -0
  75. data/golden/array_operations/expected/lir_02_inlined.txt +47 -0
  76. data/golden/array_operations/expected/lir_03_cse.txt +47 -0
  77. data/golden/array_operations/expected/lir_04_1_loop_fusion.txt +47 -0
  78. data/golden/array_operations/expected/lir_04_loop_invcm.txt +47 -0
  79. data/golden/array_operations/expected/lir_06_const_prop.txt +47 -0
  80. data/golden/array_operations/expected/nast.txt +32 -0
  81. data/golden/array_operations/expected/schema_javascript.mjs +60 -0
  82. data/golden/array_operations/expected/schema_ruby.rb +91 -0
  83. data/golden/array_operations/expected/snast.txt +32 -0
  84. data/golden/array_operations/expected.json +27 -0
  85. data/golden/array_operations/input.json +8 -0
  86. data/golden/array_operations/schema.kumi +12 -10
  87. data/golden/cascade_logic/expected/ast.txt +37 -0
  88. data/golden/cascade_logic/expected/input_plan.txt +2 -0
  89. data/golden/cascade_logic/expected/lir_00_unoptimized.txt +29 -0
  90. data/golden/cascade_logic/expected/lir_01_hoist_scalar_references.txt +29 -0
  91. data/golden/cascade_logic/expected/lir_02_inlined.txt +37 -0
  92. data/golden/cascade_logic/expected/lir_03_cse.txt +30 -0
  93. data/golden/cascade_logic/expected/lir_04_1_loop_fusion.txt +30 -0
  94. data/golden/cascade_logic/expected/lir_04_loop_invcm.txt +30 -0
  95. data/golden/cascade_logic/expected/lir_06_const_prop.txt +30 -0
  96. data/golden/cascade_logic/expected/nast.txt +32 -0
  97. data/golden/cascade_logic/expected/schema_javascript.mjs +31 -0
  98. data/golden/cascade_logic/expected/schema_ruby.rb +57 -0
  99. data/golden/cascade_logic/expected/snast.txt +32 -0
  100. data/golden/cascade_logic/expected.json +5 -0
  101. data/golden/cascade_logic/input.json +4 -0
  102. data/golden/cascade_logic/schema.kumi +1 -3
  103. data/golden/chained_fusion/expected/ast.txt +57 -0
  104. data/golden/chained_fusion/expected/input_plan.txt +13 -0
  105. data/golden/chained_fusion/expected/lir_00_unoptimized.txt +76 -0
  106. data/golden/chained_fusion/expected/lir_01_hoist_scalar_references.txt +76 -0
  107. data/golden/chained_fusion/expected/lir_02_inlined.txt +114 -0
  108. data/golden/chained_fusion/expected/lir_03_cse.txt +97 -0
  109. data/golden/chained_fusion/expected/lir_04_1_loop_fusion.txt +99 -0
  110. data/golden/chained_fusion/expected/lir_04_loop_invcm.txt +97 -0
  111. data/golden/chained_fusion/expected/lir_06_const_prop.txt +97 -0
  112. data/golden/chained_fusion/expected/nast.txt +55 -0
  113. data/golden/chained_fusion/expected/schema_javascript.mjs +116 -0
  114. data/golden/chained_fusion/expected/schema_ruby.rb +149 -0
  115. data/golden/chained_fusion/expected/snast.txt +55 -0
  116. data/golden/chained_fusion/expected.json +45 -0
  117. data/golden/chained_fusion/input.json +51 -0
  118. data/golden/chained_fusion/schema.kumi +52 -0
  119. data/golden/element_arrays/expected/ast.txt +55 -0
  120. data/golden/element_arrays/expected/input_plan.txt +7 -0
  121. data/golden/element_arrays/expected/lir_00_unoptimized.txt +81 -0
  122. data/golden/element_arrays/expected/lir_01_hoist_scalar_references.txt +81 -0
  123. data/golden/element_arrays/expected/lir_02_inlined.txt +85 -0
  124. data/golden/element_arrays/expected/lir_03_cse.txt +83 -0
  125. data/golden/element_arrays/expected/lir_04_1_loop_fusion.txt +83 -0
  126. data/golden/element_arrays/expected/lir_04_loop_invcm.txt +83 -0
  127. data/golden/element_arrays/expected/lir_06_const_prop.txt +83 -0
  128. data/golden/element_arrays/expected/nast.txt +42 -0
  129. data/golden/element_arrays/expected/schema_javascript.mjs +106 -0
  130. data/golden/element_arrays/expected/schema_ruby.rb +141 -0
  131. data/golden/element_arrays/expected/snast.txt +42 -0
  132. data/golden/element_arrays/expected.json +55 -0
  133. data/golden/element_arrays/input.json +12 -0
  134. data/golden/element_arrays/schema.kumi +21 -0
  135. data/golden/empty_and_null_inputs/expected/ast.txt +42 -0
  136. data/golden/empty_and_null_inputs/expected/input_plan.txt +12 -0
  137. data/golden/empty_and_null_inputs/expected/lir_00_unoptimized.txt +31 -0
  138. data/golden/empty_and_null_inputs/expected/lir_01_hoist_scalar_references.txt +31 -0
  139. data/golden/empty_and_null_inputs/expected/lir_02_inlined.txt +51 -0
  140. data/golden/empty_and_null_inputs/expected/lir_03_cse.txt +49 -0
  141. data/golden/empty_and_null_inputs/expected/lir_04_1_loop_fusion.txt +49 -0
  142. data/golden/empty_and_null_inputs/expected/lir_04_loop_invcm.txt +49 -0
  143. data/golden/empty_and_null_inputs/expected/lir_06_const_prop.txt +49 -0
  144. data/golden/empty_and_null_inputs/expected/nast.txt +18 -0
  145. data/golden/empty_and_null_inputs/expected/schema_javascript.mjs +47 -0
  146. data/golden/empty_and_null_inputs/expected/schema_ruby.rb +79 -0
  147. data/golden/empty_and_null_inputs/expected/snast.txt +18 -0
  148. data/golden/empty_and_null_inputs/expected.json +8 -0
  149. data/golden/empty_and_null_inputs/input.json +16 -0
  150. data/golden/empty_and_null_inputs/schema.kumi +30 -0
  151. data/golden/game_of_life/expected/ast.txt +118 -0
  152. data/golden/game_of_life/expected/input_plan.txt +5 -0
  153. data/golden/game_of_life/expected/lir_00_unoptimized.txt +343 -0
  154. data/golden/game_of_life/expected/lir_01_hoist_scalar_references.txt +343 -0
  155. data/golden/game_of_life/expected/lir_02_inlined.txt +1918 -0
  156. data/golden/game_of_life/expected/lir_03_cse.txt +766 -0
  157. data/golden/game_of_life/expected/lir_04_1_loop_fusion.txt +766 -0
  158. data/golden/game_of_life/expected/lir_04_loop_invcm.txt +766 -0
  159. data/golden/game_of_life/expected/lir_06_const_prop.txt +766 -0
  160. data/golden/game_of_life/expected/nast.txt +104 -0
  161. data/golden/game_of_life/expected/schema_javascript.mjs +98 -0
  162. data/golden/game_of_life/expected/schema_ruby.rb +125 -0
  163. data/golden/game_of_life/expected/snast.txt +104 -0
  164. data/golden/game_of_life/expected.json +3 -0
  165. data/golden/game_of_life/input.json +8 -0
  166. data/golden/game_of_life/schema.kumi +33 -0
  167. data/golden/hash_keys/expected/ast.txt +29 -0
  168. data/golden/hash_keys/expected/input_plan.txt +2 -0
  169. data/golden/hash_keys/expected/lir_00_unoptimized.txt +18 -0
  170. data/golden/hash_keys/expected/lir_01_hoist_scalar_references.txt +18 -0
  171. data/golden/hash_keys/expected/lir_02_inlined.txt +18 -0
  172. data/golden/hash_keys/expected/lir_03_cse.txt +18 -0
  173. data/golden/hash_keys/expected/lir_04_1_loop_fusion.txt +18 -0
  174. data/golden/hash_keys/expected/lir_04_loop_invcm.txt +18 -0
  175. data/golden/hash_keys/expected/lir_06_const_prop.txt +18 -0
  176. data/golden/hash_keys/expected/nast.txt +46 -0
  177. data/golden/hash_keys/expected/schema_javascript.mjs +34 -0
  178. data/golden/hash_keys/expected/schema_ruby.rb +61 -0
  179. data/golden/hash_keys/expected/snast.txt +46 -0
  180. data/golden/hash_keys/expected.json +20 -0
  181. data/golden/hash_keys/input.json +4 -0
  182. data/golden/hash_keys/schema.kumi +14 -0
  183. data/golden/hash_value/expected/ast.txt +37 -0
  184. data/golden/hash_value/expected/input_plan.txt +7 -0
  185. data/golden/hash_value/expected/lir_00_unoptimized.txt +30 -0
  186. data/golden/hash_value/expected/lir_01_hoist_scalar_references.txt +30 -0
  187. data/golden/hash_value/expected/lir_02_inlined.txt +36 -0
  188. data/golden/hash_value/expected/lir_03_cse.txt +33 -0
  189. data/golden/hash_value/expected/lir_04_1_loop_fusion.txt +33 -0
  190. data/golden/hash_value/expected/lir_04_loop_invcm.txt +33 -0
  191. data/golden/hash_value/expected/lir_06_const_prop.txt +33 -0
  192. data/golden/hash_value/expected/nast.txt +25 -0
  193. data/golden/hash_value/expected/schema_javascript.mjs +46 -0
  194. data/golden/hash_value/expected/schema_ruby.rb +75 -0
  195. data/golden/hash_value/expected/snast.txt +25 -0
  196. data/golden/hash_value/expected.json +19 -0
  197. data/golden/hash_value/input.json +12 -0
  198. data/golden/hash_value/schema.kumi +19 -0
  199. data/golden/hierarchical_complex/expected/ast.txt +85 -0
  200. data/golden/hierarchical_complex/expected/input_plan.txt +23 -0
  201. data/golden/hierarchical_complex/expected/lir_00_unoptimized.txt +87 -0
  202. data/golden/hierarchical_complex/expected/lir_01_hoist_scalar_references.txt +87 -0
  203. data/golden/hierarchical_complex/expected/lir_02_inlined.txt +115 -0
  204. data/golden/hierarchical_complex/expected/lir_03_cse.txt +89 -0
  205. data/golden/hierarchical_complex/expected/lir_04_1_loop_fusion.txt +89 -0
  206. data/golden/hierarchical_complex/expected/lir_04_loop_invcm.txt +89 -0
  207. data/golden/hierarchical_complex/expected/lir_06_const_prop.txt +89 -0
  208. data/golden/hierarchical_complex/expected/nast.txt +49 -0
  209. data/golden/hierarchical_complex/expected/schema_javascript.mjs +121 -0
  210. data/golden/hierarchical_complex/expected/schema_ruby.rb +151 -0
  211. data/golden/hierarchical_complex/expected/snast.txt +49 -0
  212. data/golden/hierarchical_complex/expected.json +34 -0
  213. data/golden/hierarchical_complex/input.json +26 -0
  214. data/golden/hierarchical_complex/schema.kumi +38 -0
  215. data/golden/input_reference/expected/ast.txt +46 -0
  216. data/golden/input_reference/expected/input_plan.txt +15 -0
  217. data/golden/input_reference/expected/lir_00_unoptimized.txt +39 -0
  218. data/golden/input_reference/expected/lir_01_hoist_scalar_references.txt +39 -0
  219. data/golden/input_reference/expected/lir_02_inlined.txt +39 -0
  220. data/golden/input_reference/expected/lir_03_cse.txt +39 -0
  221. data/golden/input_reference/expected/lir_04_1_loop_fusion.txt +39 -0
  222. data/golden/input_reference/expected/lir_04_loop_invcm.txt +39 -0
  223. data/golden/input_reference/expected/lir_06_const_prop.txt +39 -0
  224. data/golden/input_reference/expected/nast.txt +21 -0
  225. data/golden/input_reference/expected/schema_javascript.mjs +45 -0
  226. data/golden/input_reference/expected/schema_ruby.rb +74 -0
  227. data/golden/input_reference/expected/snast.txt +21 -0
  228. data/golden/input_reference/expected.json +7 -0
  229. data/golden/input_reference/input.json +11 -0
  230. data/golden/input_reference/schema.kumi +22 -0
  231. data/golden/interleaved_fusion/expected/ast.txt +51 -0
  232. data/golden/interleaved_fusion/expected/input_plan.txt +13 -0
  233. data/golden/interleaved_fusion/expected/lir_00_unoptimized.txt +53 -0
  234. data/golden/interleaved_fusion/expected/lir_01_hoist_scalar_references.txt +53 -0
  235. data/golden/interleaved_fusion/expected/lir_02_inlined.txt +89 -0
  236. data/golden/interleaved_fusion/expected/lir_03_cse.txt +77 -0
  237. data/golden/interleaved_fusion/expected/lir_04_1_loop_fusion.txt +77 -0
  238. data/golden/interleaved_fusion/expected/lir_04_loop_invcm.txt +77 -0
  239. data/golden/interleaved_fusion/expected/lir_06_const_prop.txt +77 -0
  240. data/golden/interleaved_fusion/expected/nast.txt +41 -0
  241. data/golden/interleaved_fusion/expected/schema_javascript.mjs +86 -0
  242. data/golden/interleaved_fusion/expected/schema_ruby.rb +122 -0
  243. data/golden/interleaved_fusion/expected/snast.txt +41 -0
  244. data/golden/interleaved_fusion/expected.json +37 -0
  245. data/golden/interleaved_fusion/input.json +26 -0
  246. data/golden/interleaved_fusion/schema.kumi +57 -0
  247. data/golden/let_inline/expected/ast.txt +33 -0
  248. data/golden/let_inline/expected/input_plan.txt +2 -0
  249. data/golden/let_inline/expected/lir_00_unoptimized.txt +26 -0
  250. data/golden/let_inline/expected/lir_01_hoist_scalar_references.txt +26 -0
  251. data/golden/let_inline/expected/lir_02_inlined.txt +36 -0
  252. data/golden/let_inline/expected/lir_03_cse.txt +30 -0
  253. data/golden/let_inline/expected/lir_04_1_loop_fusion.txt +30 -0
  254. data/golden/let_inline/expected/lir_04_loop_invcm.txt +30 -0
  255. data/golden/let_inline/expected/lir_06_const_prop.txt +30 -0
  256. data/golden/let_inline/expected/nast.txt +26 -0
  257. data/golden/let_inline/expected/schema_javascript.mjs +11 -0
  258. data/golden/let_inline/expected/schema_ruby.rb +37 -0
  259. data/golden/let_inline/expected/snast.txt +26 -0
  260. data/golden/let_inline/expected.json +1 -0
  261. data/golden/let_inline/input.json +1 -0
  262. data/golden/let_inline/schema.kumi +11 -0
  263. data/golden/loop_fusion/expected/ast.txt +44 -0
  264. data/golden/loop_fusion/expected/input_plan.txt +13 -0
  265. data/golden/loop_fusion/expected/lir_00_unoptimized.txt +43 -0
  266. data/golden/loop_fusion/expected/lir_01_hoist_scalar_references.txt +43 -0
  267. data/golden/loop_fusion/expected/lir_02_inlined.txt +62 -0
  268. data/golden/loop_fusion/expected/lir_03_cse.txt +57 -0
  269. data/golden/loop_fusion/expected/lir_04_1_loop_fusion.txt +57 -0
  270. data/golden/loop_fusion/expected/lir_04_loop_invcm.txt +57 -0
  271. data/golden/loop_fusion/expected/lir_06_const_prop.txt +57 -0
  272. data/golden/loop_fusion/expected/nast.txt +32 -0
  273. data/golden/loop_fusion/expected/schema_javascript.mjs +64 -0
  274. data/golden/loop_fusion/expected/schema_ruby.rb +97 -0
  275. data/golden/loop_fusion/expected/snast.txt +32 -0
  276. data/golden/loop_fusion/expected.json +30 -0
  277. data/golden/loop_fusion/input.json +28 -0
  278. data/golden/loop_fusion/schema.kumi +32 -0
  279. data/golden/min_reduce_scope/expected/ast.txt +49 -0
  280. data/golden/min_reduce_scope/expected/input_plan.txt +9 -0
  281. data/golden/min_reduce_scope/expected/lir_00_unoptimized.txt +59 -0
  282. data/golden/min_reduce_scope/expected/lir_01_hoist_scalar_references.txt +59 -0
  283. data/golden/min_reduce_scope/expected/lir_02_inlined.txt +63 -0
  284. data/golden/min_reduce_scope/expected/lir_03_cse.txt +60 -0
  285. data/golden/min_reduce_scope/expected/lir_04_1_loop_fusion.txt +60 -0
  286. data/golden/min_reduce_scope/expected/lir_04_loop_invcm.txt +60 -0
  287. data/golden/min_reduce_scope/expected/lir_06_const_prop.txt +60 -0
  288. data/golden/min_reduce_scope/expected/nast.txt +29 -0
  289. data/golden/min_reduce_scope/expected/schema_javascript.mjs +66 -0
  290. data/golden/min_reduce_scope/expected/schema_ruby.rb +99 -0
  291. data/golden/min_reduce_scope/expected/snast.txt +29 -0
  292. data/golden/min_reduce_scope/expected.json +9 -0
  293. data/golden/min_reduce_scope/input.json +18 -0
  294. data/golden/min_reduce_scope/schema.kumi +25 -0
  295. data/golden/mixed_dimensions/expected/ast.txt +54 -0
  296. data/golden/mixed_dimensions/expected/input_plan.txt +15 -0
  297. data/golden/mixed_dimensions/expected/lir_00_unoptimized.txt +42 -0
  298. data/golden/mixed_dimensions/expected/lir_01_hoist_scalar_references.txt +42 -0
  299. data/golden/mixed_dimensions/expected/lir_02_inlined.txt +48 -0
  300. data/golden/mixed_dimensions/expected/lir_03_cse.txt +48 -0
  301. data/golden/mixed_dimensions/expected/lir_04_1_loop_fusion.txt +48 -0
  302. data/golden/mixed_dimensions/expected/lir_04_loop_invcm.txt +48 -0
  303. data/golden/mixed_dimensions/expected/lir_06_const_prop.txt +48 -0
  304. data/golden/mixed_dimensions/expected/nast.txt +22 -0
  305. data/golden/mixed_dimensions/expected/schema_javascript.mjs +53 -0
  306. data/golden/mixed_dimensions/expected/schema_ruby.rb +84 -0
  307. data/golden/mixed_dimensions/expected/snast.txt +22 -0
  308. data/golden/mixed_dimensions/expected.json +6 -0
  309. data/golden/mixed_dimensions/input.json +22 -0
  310. data/golden/mixed_dimensions/schema.kumi +35 -0
  311. data/golden/multirank_hoisting/expected/ast.txt +72 -0
  312. data/golden/multirank_hoisting/expected/input_plan.txt +18 -0
  313. data/golden/multirank_hoisting/expected/lir_00_unoptimized.txt +75 -0
  314. data/golden/multirank_hoisting/expected/lir_01_hoist_scalar_references.txt +75 -0
  315. data/golden/multirank_hoisting/expected/lir_02_inlined.txt +126 -0
  316. data/golden/multirank_hoisting/expected/lir_03_cse.txt +109 -0
  317. data/golden/multirank_hoisting/expected/lir_04_1_loop_fusion.txt +109 -0
  318. data/golden/multirank_hoisting/expected/lir_04_loop_invcm.txt +109 -0
  319. data/golden/multirank_hoisting/expected/lir_06_const_prop.txt +109 -0
  320. data/golden/multirank_hoisting/expected/nast.txt +39 -0
  321. data/golden/multirank_hoisting/expected/schema_javascript.mjs +128 -0
  322. data/golden/multirank_hoisting/expected/schema_ruby.rb +162 -0
  323. data/golden/multirank_hoisting/expected/snast.txt +39 -0
  324. data/golden/multirank_hoisting/expected.json +15 -0
  325. data/golden/multirank_hoisting/input.json +19 -0
  326. data/golden/multirank_hoisting/schema.kumi +38 -0
  327. data/golden/nested_hash/expected/ast.txt +22 -0
  328. data/golden/nested_hash/expected/input_plan.txt +5 -0
  329. data/golden/nested_hash/expected/lir_00_unoptimized.txt +10 -0
  330. data/golden/nested_hash/expected/lir_01_hoist_scalar_references.txt +10 -0
  331. data/golden/nested_hash/expected/lir_02_inlined.txt +10 -0
  332. data/golden/nested_hash/expected/lir_03_cse.txt +10 -0
  333. data/golden/nested_hash/expected/lir_04_1_loop_fusion.txt +10 -0
  334. data/golden/nested_hash/expected/lir_04_loop_invcm.txt +10 -0
  335. data/golden/nested_hash/expected/lir_06_const_prop.txt +10 -0
  336. data/golden/nested_hash/expected/nast.txt +8 -0
  337. data/golden/nested_hash/expected/schema_javascript.mjs +9 -0
  338. data/golden/nested_hash/expected/schema_ruby.rb +35 -0
  339. data/golden/nested_hash/expected/snast.txt +8 -0
  340. data/golden/nested_hash/expected.json +3 -0
  341. data/golden/nested_hash/input.json +7 -0
  342. data/golden/nested_hash/schema.kumi +11 -0
  343. data/golden/reduction_broadcast/expected/ast.txt +49 -0
  344. data/golden/reduction_broadcast/expected/input_plan.txt +13 -0
  345. data/golden/reduction_broadcast/expected/lir_00_unoptimized.txt +49 -0
  346. data/golden/reduction_broadcast/expected/lir_01_hoist_scalar_references.txt +49 -0
  347. data/golden/reduction_broadcast/expected/lir_02_inlined.txt +80 -0
  348. data/golden/reduction_broadcast/expected/lir_03_cse.txt +68 -0
  349. data/golden/reduction_broadcast/expected/lir_04_1_loop_fusion.txt +68 -0
  350. data/golden/reduction_broadcast/expected/lir_04_loop_invcm.txt +68 -0
  351. data/golden/reduction_broadcast/expected/lir_06_const_prop.txt +68 -0
  352. data/golden/reduction_broadcast/expected/nast.txt +24 -0
  353. data/golden/reduction_broadcast/expected/schema_javascript.mjs +74 -0
  354. data/golden/reduction_broadcast/expected/schema_ruby.rb +110 -0
  355. data/golden/reduction_broadcast/expected/snast.txt +24 -0
  356. data/golden/reduction_broadcast/expected.json +25 -0
  357. data/golden/reduction_broadcast/input.json +19 -0
  358. data/golden/reduction_broadcast/schema.kumi +34 -0
  359. data/golden/roll/expected/ast.txt +36 -0
  360. data/golden/roll/expected/input_plan.txt +3 -0
  361. data/golden/roll/expected/lir_00_unoptimized.txt +56 -0
  362. data/golden/roll/expected/lir_01_hoist_scalar_references.txt +56 -0
  363. data/golden/roll/expected/lir_02_inlined.txt +56 -0
  364. data/golden/roll/expected/lir_03_cse.txt +55 -0
  365. data/golden/roll/expected/lir_04_1_loop_fusion.txt +55 -0
  366. data/golden/roll/expected/lir_04_loop_invcm.txt +55 -0
  367. data/golden/roll/expected/lir_06_const_prop.txt +55 -0
  368. data/golden/roll/expected/nast.txt +26 -0
  369. data/golden/roll/expected/schema_javascript.mjs +65 -0
  370. data/golden/roll/expected/schema_ruby.rb +95 -0
  371. data/golden/roll/expected/snast.txt +26 -0
  372. data/golden/roll/expected.json +6 -0
  373. data/golden/roll/input.json +1 -0
  374. data/golden/roll/schema.kumi +13 -0
  375. data/golden/shift/expected/ast.txt +48 -0
  376. data/golden/shift/expected/input_plan.txt +3 -0
  377. data/golden/shift/expected/lir_00_unoptimized.txt +96 -0
  378. data/golden/shift/expected/lir_01_hoist_scalar_references.txt +96 -0
  379. data/golden/shift/expected/lir_02_inlined.txt +96 -0
  380. data/golden/shift/expected/lir_03_cse.txt +90 -0
  381. data/golden/shift/expected/lir_04_1_loop_fusion.txt +90 -0
  382. data/golden/shift/expected/lir_04_loop_invcm.txt +90 -0
  383. data/golden/shift/expected/lir_06_const_prop.txt +90 -0
  384. data/golden/shift/expected/nast.txt +38 -0
  385. data/golden/shift/expected/schema_javascript.mjs +106 -0
  386. data/golden/shift/expected/schema_ruby.rb +138 -0
  387. data/golden/shift/expected/snast.txt +38 -0
  388. data/golden/shift/expected.json +8 -0
  389. data/golden/shift/input.json +1 -0
  390. data/golden/shift/schema.kumi +15 -0
  391. data/golden/shift_2d/expected/ast.txt +88 -0
  392. data/golden/shift_2d/expected/input_plan.txt +5 -0
  393. data/golden/shift_2d/expected/lir_00_unoptimized.txt +274 -0
  394. data/golden/shift_2d/expected/lir_01_hoist_scalar_references.txt +274 -0
  395. data/golden/shift_2d/expected/lir_02_inlined.txt +274 -0
  396. data/golden/shift_2d/expected/lir_03_cse.txt +262 -0
  397. data/golden/shift_2d/expected/lir_04_1_loop_fusion.txt +262 -0
  398. data/golden/shift_2d/expected/lir_04_loop_invcm.txt +262 -0
  399. data/golden/shift_2d/expected/lir_06_const_prop.txt +262 -0
  400. data/golden/shift_2d/expected/nast.txt +74 -0
  401. data/golden/shift_2d/expected/schema_javascript.mjs +320 -0
  402. data/golden/shift_2d/expected/schema_ruby.rb +358 -0
  403. data/golden/shift_2d/expected/snast.txt +74 -0
  404. data/golden/shift_2d/expected.json +15 -0
  405. data/golden/shift_2d/input.json +14 -0
  406. data/golden/shift_2d/schema.kumi +25 -0
  407. data/golden/simple_math/expected/ast.txt +40 -0
  408. data/golden/simple_math/expected/input_plan.txt +2 -0
  409. data/golden/simple_math/expected/lir_00_unoptimized.txt +31 -0
  410. data/golden/simple_math/expected/lir_01_hoist_scalar_references.txt +31 -0
  411. data/golden/simple_math/expected/lir_02_inlined.txt +31 -0
  412. data/golden/simple_math/expected/lir_03_cse.txt +31 -0
  413. data/golden/simple_math/expected/lir_04_1_loop_fusion.txt +31 -0
  414. data/golden/simple_math/expected/lir_04_loop_invcm.txt +31 -0
  415. data/golden/simple_math/expected/lir_06_const_prop.txt +31 -0
  416. data/golden/simple_math/expected/nast.txt +33 -0
  417. data/golden/simple_math/expected/schema_javascript.mjs +33 -0
  418. data/golden/simple_math/expected/schema_ruby.rb +59 -0
  419. data/golden/simple_math/expected/snast.txt +33 -0
  420. data/golden/simple_math/expected.json +1 -0
  421. data/golden/simple_math/input.json +4 -0
  422. data/golden/simple_math/schema.kumi +2 -1
  423. data/golden/streaming_basics/expected/ast.txt +64 -0
  424. data/golden/streaming_basics/expected/input_plan.txt +8 -0
  425. data/golden/streaming_basics/expected/lir_00_unoptimized.txt +73 -0
  426. data/golden/streaming_basics/expected/lir_01_hoist_scalar_references.txt +73 -0
  427. data/golden/streaming_basics/expected/lir_02_inlined.txt +100 -0
  428. data/golden/streaming_basics/expected/lir_03_cse.txt +84 -0
  429. data/golden/streaming_basics/expected/lir_04_1_loop_fusion.txt +84 -0
  430. data/golden/streaming_basics/expected/lir_04_loop_invcm.txt +84 -0
  431. data/golden/streaming_basics/expected/lir_06_const_prop.txt +84 -0
  432. data/golden/streaming_basics/expected/nast.txt +48 -0
  433. data/golden/streaming_basics/expected/schema_javascript.mjs +94 -0
  434. data/golden/streaming_basics/expected/schema_ruby.rb +127 -0
  435. data/golden/streaming_basics/expected/snast.txt +48 -0
  436. data/golden/streaming_basics/expected.json +10 -0
  437. data/golden/streaming_basics/input.json +8 -0
  438. data/golden/streaming_basics/schema.kumi +24 -0
  439. data/golden/tuples/expected/ast.txt +48 -0
  440. data/golden/tuples/expected/input_plan.txt +1 -0
  441. data/golden/tuples/expected/lir_00_unoptimized.txt +40 -0
  442. data/golden/tuples/expected/lir_01_hoist_scalar_references.txt +40 -0
  443. data/golden/tuples/expected/lir_02_inlined.txt +48 -0
  444. data/golden/tuples/expected/lir_03_cse.txt +48 -0
  445. data/golden/tuples/expected/lir_04_1_loop_fusion.txt +48 -0
  446. data/golden/tuples/expected/lir_04_loop_invcm.txt +48 -0
  447. data/golden/tuples/expected/lir_06_const_prop.txt +48 -0
  448. data/golden/tuples/expected/nast.txt +42 -0
  449. data/golden/tuples/expected/schema_javascript.mjs +51 -0
  450. data/golden/tuples/expected/schema_ruby.rb +77 -0
  451. data/golden/tuples/expected/snast.txt +42 -0
  452. data/golden/tuples/expected.json +7 -0
  453. data/golden/tuples/input.json +3 -0
  454. data/golden/tuples/schema.kumi +11 -0
  455. data/golden/tuples_and_arrays/expected/ast.txt +44 -0
  456. data/golden/tuples_and_arrays/expected/input_plan.txt +7 -0
  457. data/golden/tuples_and_arrays/expected/lir_00_unoptimized.txt +41 -0
  458. data/golden/tuples_and_arrays/expected/lir_01_hoist_scalar_references.txt +41 -0
  459. data/golden/tuples_and_arrays/expected/lir_02_inlined.txt +62 -0
  460. data/golden/tuples_and_arrays/expected/lir_03_cse.txt +51 -0
  461. data/golden/tuples_and_arrays/expected/lir_04_1_loop_fusion.txt +51 -0
  462. data/golden/tuples_and_arrays/expected/lir_04_loop_invcm.txt +51 -0
  463. data/golden/tuples_and_arrays/expected/lir_06_const_prop.txt +51 -0
  464. data/golden/tuples_and_arrays/expected/nast.txt +28 -0
  465. data/golden/tuples_and_arrays/expected/schema_javascript.mjs +58 -0
  466. data/golden/tuples_and_arrays/expected/schema_ruby.rb +88 -0
  467. data/golden/tuples_and_arrays/expected/snast.txt +28 -0
  468. data/golden/tuples_and_arrays/expected.json +18 -0
  469. data/golden/tuples_and_arrays/input.json +7 -0
  470. data/golden/tuples_and_arrays/schema.kumi +38 -0
  471. data/golden/with_constants/expected/ast.txt +28 -0
  472. data/golden/with_constants/expected/input_plan.txt +2 -0
  473. data/golden/with_constants/expected/lir_00_unoptimized.txt +17 -0
  474. data/golden/with_constants/expected/lir_01_hoist_scalar_references.txt +17 -0
  475. data/golden/with_constants/expected/lir_02_inlined.txt +17 -0
  476. data/golden/with_constants/expected/lir_03_cse.txt +17 -0
  477. data/golden/with_constants/expected/lir_04_1_loop_fusion.txt +17 -0
  478. data/golden/with_constants/expected/lir_04_loop_invcm.txt +17 -0
  479. data/golden/with_constants/expected/lir_06_const_prop.txt +17 -0
  480. data/golden/with_constants/expected/nast.txt +21 -0
  481. data/golden/with_constants/expected/schema_javascript.mjs +18 -0
  482. data/golden/with_constants/expected/schema_ruby.rb +44 -0
  483. data/golden/with_constants/expected/snast.txt +15 -0
  484. data/golden/with_constants/schema.kumi +10 -0
  485. data/lib/kumi/analyzer.rb +76 -24
  486. data/lib/kumi/configuration.rb +60 -0
  487. data/lib/kumi/core/analyzer/binder.rb +121 -0
  488. data/lib/kumi/core/analyzer/checkpoint.rb +15 -9
  489. data/lib/kumi/core/analyzer/constant_evaluator.rb +32 -37
  490. data/lib/kumi/core/analyzer/constant_folding_helpers.rb +55 -0
  491. data/lib/kumi/core/analyzer/debug.rb +14 -16
  492. data/lib/kumi/core/analyzer/fn_aliases.rb +46 -0
  493. data/lib/kumi/core/analyzer/folder.rb +94 -0
  494. data/lib/kumi/core/analyzer/macro_expander.rb +69 -0
  495. data/lib/kumi/core/analyzer/passes/assemble_irv2_pass.rb +130 -0
  496. data/lib/kumi/core/analyzer/passes/attach_anchors_pass.rb +71 -0
  497. data/lib/kumi/core/analyzer/passes/attach_terminal_info_pass.rb +181 -0
  498. data/lib/kumi/core/analyzer/passes/codegen/js/declaration_emitter.rb +317 -0
  499. data/lib/kumi/core/analyzer/passes/codegen/js/emitter.rb +75 -0
  500. data/lib/kumi/core/analyzer/passes/codegen/js/output_buffer.rb +103 -0
  501. data/lib/kumi/core/analyzer/passes/codegen/js_pass.rb +27 -0
  502. data/lib/kumi/core/analyzer/passes/codegen/ruby/declaration_emitter.rb +321 -0
  503. data/lib/kumi/core/analyzer/passes/codegen/ruby/emitter.rb +85 -0
  504. data/lib/kumi/core/analyzer/passes/codegen/ruby/output_buffer.rb +111 -0
  505. data/lib/kumi/core/analyzer/passes/codegen/ruby_pass.rb +32 -0
  506. data/lib/kumi/core/analyzer/passes/constant_folding_pass.rb +33 -0
  507. data/lib/kumi/core/analyzer/passes/contract_checker_pass.rb +220 -0
  508. data/lib/kumi/core/analyzer/passes/dependency_resolver.rb +5 -6
  509. data/lib/kumi/core/analyzer/passes/input_access_planner_pass.rb +7 -3
  510. data/lib/kumi/core/analyzer/passes/input_collector.rb +74 -122
  511. data/lib/kumi/core/analyzer/passes/input_form_schema_pass.rb +43 -0
  512. data/lib/kumi/core/analyzer/passes/ir_dependency_pass.rb +1 -1
  513. data/lib/kumi/core/analyzer/passes/ir_execution_schedule_pass.rb +1 -1
  514. data/lib/kumi/core/analyzer/passes/join_reduce_planning_pass.rb +21 -23
  515. data/lib/kumi/core/analyzer/passes/lir/constant_propagation_pass.rb +84 -0
  516. data/lib/kumi/core/analyzer/passes/lir/dead_code_elimination_pass.rb +93 -0
  517. data/lib/kumi/core/analyzer/passes/lir/hoist_scalar_references_pass.rb +115 -0
  518. data/lib/kumi/core/analyzer/passes/lir/inline_declarations_pass.rb +274 -0
  519. data/lib/kumi/core/analyzer/passes/lir/instruction_scheduling_pass.rb +198 -0
  520. data/lib/kumi/core/analyzer/passes/lir/kernel_binding_pass.rb +30 -0
  521. data/lib/kumi/core/analyzer/passes/lir/local_cse_pass.rb +121 -0
  522. data/lib/kumi/core/analyzer/passes/lir/loop_fusion_pass.rb +156 -0
  523. data/lib/kumi/core/analyzer/passes/lir/loop_invariant_code_motion_pass.rb +148 -0
  524. data/lib/kumi/core/analyzer/passes/lir/lower_pass.rb +407 -0
  525. data/lib/kumi/core/analyzer/passes/lir/stencil_emitter.rb +243 -0
  526. data/lib/kumi/core/analyzer/passes/lir/validation_pass.rb +83 -0
  527. data/lib/kumi/core/analyzer/passes/load_input_cse.rb +17 -16
  528. data/lib/kumi/core/analyzer/passes/lower_to_ir_pass.rb +4 -2
  529. data/lib/kumi/core/analyzer/passes/lower_to_irv2_pass.rb +197 -0
  530. data/lib/kumi/core/analyzer/passes/name_indexer.rb +4 -1
  531. data/lib/kumi/core/analyzer/passes/nast_dimensional_analyzer_pass.rb +237 -0
  532. data/lib/kumi/core/analyzer/passes/normalize_to_nast_pass.rb +156 -0
  533. data/lib/kumi/core/analyzer/passes/output_schema_pass.rb +38 -0
  534. data/lib/kumi/core/analyzer/passes/pass_base.rb +30 -4
  535. data/lib/kumi/core/analyzer/passes/precompute_access_paths_pass.rb +93 -0
  536. data/lib/kumi/core/analyzer/passes/scope_resolution_pass.rb +33 -30
  537. data/lib/kumi/core/analyzer/passes/semantic_constraint_validator.rb +5 -26
  538. data/lib/kumi/core/analyzer/passes/snast_pass.rb +229 -0
  539. data/lib/kumi/core/analyzer/passes/toposorter.rb +1 -0
  540. data/lib/kumi/core/analyzer/passes/type_checker.rb +13 -0
  541. data/lib/kumi/core/analyzer/passes/type_inferencer_pass.rb +14 -16
  542. data/lib/kumi/core/analyzer/passes/unsat_detector.rb +2 -1
  543. data/lib/kumi/core/analyzer/plans.rb +12 -0
  544. data/lib/kumi/core/analyzer/state_serde.rb +4 -4
  545. data/lib/kumi/core/analyzer/structs/access_plan.rb +2 -2
  546. data/lib/kumi/core/analyzer/unsat_constant_evaluator.rb +59 -0
  547. data/lib/kumi/core/compiler/access_codegen.rb +1 -1
  548. data/lib/kumi/core/compiler/access_emit/base.rb +9 -5
  549. data/lib/kumi/core/compiler/access_emit/each_indexed.rb +10 -3
  550. data/lib/kumi/core/compiler/access_emit/materialize.rb +12 -5
  551. data/lib/kumi/core/compiler/access_emit/ravel.rb +10 -3
  552. data/lib/kumi/core/compiler/access_emit/read.rb +4 -1
  553. data/lib/kumi/core/compiler/access_planner.rb +42 -4
  554. data/lib/kumi/core/compiler/access_planner_v2.rb +164 -0
  555. data/lib/kumi/core/explain.rb +18 -11
  556. data/lib/kumi/core/functions/loader.rb +47 -0
  557. data/lib/kumi/core/functions/model.rb +10 -0
  558. data/lib/kumi/core/functions/type_rules.rb +108 -0
  559. data/lib/kumi/core/ir/execution_engine/interpreter.rb +1 -1
  560. data/lib/kumi/core/ir/execution_engine/profiler.rb +107 -97
  561. data/lib/kumi/core/ir.rb +6 -2
  562. data/lib/kumi/core/irv2/builder.rb +48 -0
  563. data/lib/kumi/core/irv2/declaration.rb +28 -0
  564. data/lib/kumi/core/irv2/module.rb +108 -0
  565. data/lib/kumi/core/irv2/value.rb +28 -0
  566. data/lib/kumi/core/lir/analyze.rb +64 -0
  567. data/lib/kumi/core/lir/build.rb +363 -0
  568. data/lib/kumi/core/lir/emit.rb +62 -0
  569. data/lib/kumi/core/lir/structs/instruction.rb +44 -0
  570. data/lib/kumi/core/lir/structs/literal.rb +14 -0
  571. data/lib/kumi/core/lir/structs/stamp.rb +13 -0
  572. data/lib/kumi/core/lir/support/error.rb +9 -0
  573. data/lib/kumi/core/lir/support/ids.rb +34 -0
  574. data/lib/kumi/core/lir/validate.rb +74 -0
  575. data/lib/kumi/core/lir.rb +34 -0
  576. data/lib/kumi/core/nast.rb +216 -0
  577. data/lib/kumi/core/ruby_parser/dsl.rb +2 -2
  578. data/lib/kumi/core/ruby_parser/dsl_cascade_builder.rb +1 -1
  579. data/lib/kumi/core/ruby_parser/expression_converter.rb +10 -0
  580. data/lib/kumi/core/ruby_parser/input_builder.rb +16 -17
  581. data/lib/kumi/core/ruby_parser/schema_builder.rb +36 -10
  582. data/lib/kumi/core/ruby_parser/sugar.rb +64 -0
  583. data/lib/kumi/core/types/builder.rb +2 -2
  584. data/lib/kumi/core/types/normalizer.rb +2 -0
  585. data/lib/kumi/core/types/validator.rb +10 -3
  586. data/lib/kumi/core/types.rb +7 -0
  587. data/lib/kumi/dev/codegen.rb +194 -0
  588. data/lib/kumi/dev/golden/generator.rb +105 -0
  589. data/lib/kumi/dev/golden/reporter.rb +160 -0
  590. data/lib/kumi/dev/golden/representation.rb +45 -0
  591. data/lib/kumi/dev/golden/result.rb +98 -0
  592. data/lib/kumi/dev/golden/runtime_test.rb +93 -0
  593. data/lib/kumi/dev/golden/suite.rb +131 -0
  594. data/lib/kumi/dev/golden/verifier.rb +76 -0
  595. data/lib/kumi/dev/golden.rb +75 -0
  596. data/lib/kumi/dev/ir.rb +4 -4
  597. data/lib/kumi/dev/parse.rb +1 -1
  598. data/lib/kumi/dev/pretty_printer.rb +229 -0
  599. data/lib/kumi/dev/printer/irv2_formatter.rb +163 -0
  600. data/lib/kumi/dev/printer/width_aware_json.rb +44 -0
  601. data/lib/kumi/dev/profile_aggregator.rb +36 -38
  602. data/lib/kumi/dev/profile_runner.rb +19 -23
  603. data/lib/kumi/dev/runner.rb +12 -22
  604. data/lib/kumi/dev/support/kumi_runner.mjs +39 -0
  605. data/lib/kumi/dev.rb +3 -3
  606. data/lib/kumi/frontends/ruby.rb +12 -12
  607. data/lib/kumi/frontends/text.rb +26 -21
  608. data/lib/kumi/frontends.rb +6 -8
  609. data/lib/kumi/kernel_registry.rb +59 -0
  610. data/lib/kumi/pack/builder.rb +229 -0
  611. data/lib/kumi/pack.rb +15 -0
  612. data/lib/kumi/registry_v2/loader.rb +81 -0
  613. data/lib/kumi/registry_v2.rb +118 -0
  614. data/lib/kumi/schema.rb +83 -43
  615. data/lib/kumi/support/diff.rb +3 -2
  616. data/lib/kumi/support/ir_render.rb +1 -1
  617. data/lib/kumi/support/lir_printer.rb +143 -0
  618. data/lib/kumi/support/nast_printer.rb +93 -0
  619. data/lib/kumi/support/s_expression_printer.rb +5 -4
  620. data/lib/kumi/support/snast_printer.rb +111 -0
  621. data/lib/kumi/syntax/call_expression.rb +1 -1
  622. data/lib/kumi/syntax/input_declaration.rb +2 -2
  623. data/lib/kumi/syntax/node.rb +4 -12
  624. data/lib/kumi/syntax/root.rb +10 -0
  625. data/lib/kumi/syntax/trait_declaration.rb +1 -0
  626. data/lib/kumi/syntax/value_declaration.rb +1 -0
  627. data/lib/kumi/version.rb +1 -1
  628. data/lib/kumi.rb +47 -5
  629. metadata +571 -54
  630. data/docs/AST.md +0 -133
  631. data/docs/DSL.md +0 -154
  632. data/docs/FUNCTIONS.md +0 -176
  633. data/docs/VECTOR_SEMANTICS.md +0 -286
  634. data/docs/compiler_design_principles.md +0 -86
  635. data/docs/dev/analyzer-debug.md +0 -52
  636. data/docs/dev/parse-command.md +0 -64
  637. data/docs/dev/vm-profiling.md +0 -95
  638. data/docs/development/README.md +0 -120
  639. data/docs/development/error-reporting.md +0 -361
  640. data/docs/features/README.md +0 -58
  641. data/docs/features/analysis-type-inference.md +0 -42
  642. data/docs/features/analysis-unsat-detection.md +0 -71
  643. data/docs/features/hierarchical-broadcasting.md +0 -415
  644. data/docs/features/input-declaration-system.md +0 -58
  645. data/docs/features/performance.md +0 -14
  646. data/docs/features/s-expression-printer.md +0 -77
  647. data/docs/schema_metadata/broadcasts.md +0 -53
  648. data/docs/schema_metadata/cascades.md +0 -45
  649. data/docs/schema_metadata/declarations.md +0 -54
  650. data/docs/schema_metadata/dependencies.md +0 -57
  651. data/docs/schema_metadata/evaluation_order.md +0 -29
  652. data/docs/schema_metadata/examples.md +0 -95
  653. data/docs/schema_metadata/inferred_types.md +0 -46
  654. data/docs/schema_metadata/inputs.md +0 -86
  655. data/docs/schema_metadata.md +0 -108
  656. data/golden/mixed_nesting/schema.kumi +0 -42
  657. data/lib/kumi/core/function_registry/collection_functions.rb +0 -298
  658. data/lib/kumi/core/function_registry/comparison_functions.rb +0 -33
  659. data/lib/kumi/core/function_registry/conditional_functions.rb +0 -48
  660. data/lib/kumi/core/function_registry/function_builder.rb +0 -184
  661. data/lib/kumi/core/function_registry/logical_functions.rb +0 -214
  662. data/lib/kumi/core/function_registry/math_functions.rb +0 -74
  663. data/lib/kumi/core/function_registry/stat_functions.rb +0 -156
  664. data/lib/kumi/core/function_registry/string_functions.rb +0 -57
  665. data/lib/kumi/core/function_registry/type_functions.rb +0 -53
  666. data/lib/kumi/core/function_registry.rb +0 -176
  667. data/lib/kumi/registry.rb +0 -32
  668. data/lib/kumi/runtime/executable.rb +0 -135
  669. data/lib/kumi/runtime/run.rb +0 -105
  670. data/performance_results.txt +0 -63
  671. data/scripts/analyze_broadcast_methods.rb +0 -68
  672. data/scripts/analyze_cascade_methods.rb +0 -74
  673. data/scripts/check_broadcasting_coverage.rb +0 -51
  674. data/scripts/find_dead_code.rb +0 -114
  675. data/scripts/generate_function_docs.rb +0 -71
  676. data/scripts/test_mixed_nesting_performance.rb +0 -206
@@ -0,0 +1,766 @@
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
+ %t21 = call core.clamp(%t13, %t14, %t19) :: integer
24
+ %t22 = Gather %t6, %t21 :: any
25
+ %t23 = Length %t22 :: integer
26
+ %t24 = call core.mod(%col_i_10, %t23) :: integer
27
+ %t25 = call core.add(%t24, %t23) :: integer
28
+ %t26 = call core.mod(%t25, %t23) :: integer
29
+ %t27 = Gather %t22, %t26 :: integer
30
+ %t29 = select %t17, %t27, %t14 :: integer
31
+ yield %t29
32
+ end_loop
33
+ end_loop
34
+ )
35
+ (Declaration s
36
+ %t30 = load_input "rows" :: array
37
+ loop rows id=L5 in %t30 as el=%rows_el_31, idx=%rows_i_32
38
+ loop col id=L6 in %rows_el_31 as el=%col_el_33, idx=%col_i_34
39
+ %t35 = Length %t30 :: integer
40
+ %t36 = const 1 :: integer
41
+ %t37 = call core.sub(%rows_i_32, %t36) :: integer
42
+ %t38 = const 0 :: integer
43
+ %t39 = call core.gte(%t37, %t38) :: boolean
44
+ %t40 = call core.lt(%t37, %t35) :: boolean
45
+ %t41 = call core.and(%t39, %t40) :: boolean
46
+ %t43 = call core.sub(%t35, %t36) :: integer
47
+ %t45 = call core.clamp(%t37, %t38, %t43) :: integer
48
+ %t46 = Gather %t30, %t45 :: any
49
+ %t47 = Length %t46 :: integer
50
+ %t48 = call core.mod(%col_i_34, %t47) :: integer
51
+ %t49 = call core.add(%t48, %t47) :: integer
52
+ %t50 = call core.mod(%t49, %t47) :: integer
53
+ %t51 = Gather %t46, %t50 :: integer
54
+ %t53 = select %t41, %t51, %t38 :: integer
55
+ yield %t53
56
+ end_loop
57
+ end_loop
58
+ )
59
+ (Declaration w
60
+ %t54 = load_input "rows" :: array
61
+ loop rows id=L7 in %t54 as el=%rows_el_55, idx=%rows_i_56
62
+ loop col id=L8 in %rows_el_55 as el=%col_el_57, idx=%col_i_58
63
+ %t59 = Length %t54 :: integer
64
+ %t60 = call core.mod(%rows_i_56, %t59) :: integer
65
+ %t61 = call core.add(%t60, %t59) :: integer
66
+ %t62 = call core.mod(%t61, %t59) :: integer
67
+ %t63 = Gather %t54, %t62 :: any
68
+ %t64 = Length %t63 :: integer
69
+ %t65 = const -1 :: integer
70
+ %t66 = call core.sub(%col_i_58, %t65) :: integer
71
+ %t67 = const 0 :: integer
72
+ %t68 = call core.gte(%t66, %t67) :: boolean
73
+ %t69 = call core.lt(%t66, %t64) :: boolean
74
+ %t70 = call core.and(%t68, %t69) :: boolean
75
+ %t71 = const 1 :: integer
76
+ %t72 = call core.sub(%t64, %t71) :: integer
77
+ %t74 = call core.clamp(%t66, %t67, %t72) :: integer
78
+ %t75 = Gather %t63, %t74 :: integer
79
+ %t77 = select %t70, %t75, %t67 :: integer
80
+ yield %t77
81
+ end_loop
82
+ end_loop
83
+ )
84
+ (Declaration e
85
+ %t78 = load_input "rows" :: array
86
+ loop rows id=L9 in %t78 as el=%rows_el_79, idx=%rows_i_80
87
+ loop col id=L10 in %rows_el_79 as el=%col_el_81, idx=%col_i_82
88
+ %t83 = Length %t78 :: integer
89
+ %t84 = call core.mod(%rows_i_80, %t83) :: integer
90
+ %t85 = call core.add(%t84, %t83) :: integer
91
+ %t86 = call core.mod(%t85, %t83) :: integer
92
+ %t87 = Gather %t78, %t86 :: any
93
+ %t88 = Length %t87 :: integer
94
+ %t89 = const 1 :: integer
95
+ %t90 = call core.sub(%col_i_82, %t89) :: integer
96
+ %t91 = const 0 :: integer
97
+ %t92 = call core.gte(%t90, %t91) :: boolean
98
+ %t93 = call core.lt(%t90, %t88) :: boolean
99
+ %t94 = call core.and(%t92, %t93) :: boolean
100
+ %t96 = call core.sub(%t88, %t89) :: integer
101
+ %t98 = call core.clamp(%t90, %t91, %t96) :: integer
102
+ %t99 = Gather %t87, %t98 :: integer
103
+ %t101 = select %t94, %t99, %t91 :: integer
104
+ yield %t101
105
+ end_loop
106
+ end_loop
107
+ )
108
+ (Declaration nw
109
+ %t102 = load_input "rows" :: array
110
+ loop rows id=L11 in %t102 as el=%rows_el_103, idx=%rows_i_104
111
+ loop col id=L12 in %rows_el_103 as el=%col_el_105, idx=%col_i_106
112
+ %t107 = Length %t102 :: integer
113
+ %t108 = const -1 :: integer
114
+ %t109 = call core.sub(%rows_i_104, %t108) :: integer
115
+ %t110 = const 0 :: integer
116
+ %t111 = call core.gte(%t109, %t110) :: boolean
117
+ %t112 = call core.lt(%t109, %t107) :: boolean
118
+ %t113 = call core.and(%t111, %t112) :: boolean
119
+ %t114 = const 1 :: integer
120
+ %t115 = call core.sub(%t107, %t114) :: integer
121
+ %t117 = call core.clamp(%t109, %t110, %t115) :: integer
122
+ %t118 = Gather %t102, %t117 :: any
123
+ %t119 = Length %t118 :: integer
124
+ %t121 = call core.sub(%col_i_106, %t108) :: integer
125
+ %t123 = call core.gte(%t121, %t110) :: boolean
126
+ %t124 = call core.lt(%t121, %t119) :: boolean
127
+ %t125 = call core.and(%t123, %t124) :: boolean
128
+ %t126 = call core.and(%t113, %t125) :: boolean
129
+ %t128 = call core.sub(%t119, %t114) :: integer
130
+ %t130 = call core.clamp(%t121, %t110, %t128) :: integer
131
+ %t131 = Gather %t118, %t130 :: integer
132
+ %t133 = select %t126, %t131, %t110 :: integer
133
+ yield %t133
134
+ end_loop
135
+ end_loop
136
+ )
137
+ (Declaration ne
138
+ %t134 = load_input "rows" :: array
139
+ loop rows id=L13 in %t134 as el=%rows_el_135, idx=%rows_i_136
140
+ loop col id=L14 in %rows_el_135 as el=%col_el_137, idx=%col_i_138
141
+ %t139 = Length %t134 :: integer
142
+ %t140 = const -1 :: integer
143
+ %t141 = call core.sub(%rows_i_136, %t140) :: integer
144
+ %t142 = const 0 :: integer
145
+ %t143 = call core.gte(%t141, %t142) :: boolean
146
+ %t144 = call core.lt(%t141, %t139) :: boolean
147
+ %t145 = call core.and(%t143, %t144) :: boolean
148
+ %t146 = const 1 :: integer
149
+ %t147 = call core.sub(%t139, %t146) :: integer
150
+ %t149 = call core.clamp(%t141, %t142, %t147) :: integer
151
+ %t150 = Gather %t134, %t149 :: any
152
+ %t151 = Length %t150 :: integer
153
+ %t153 = call core.sub(%col_i_138, %t146) :: integer
154
+ %t155 = call core.gte(%t153, %t142) :: boolean
155
+ %t156 = call core.lt(%t153, %t151) :: boolean
156
+ %t157 = call core.and(%t155, %t156) :: boolean
157
+ %t158 = call core.and(%t145, %t157) :: boolean
158
+ %t160 = call core.sub(%t151, %t146) :: integer
159
+ %t162 = call core.clamp(%t153, %t142, %t160) :: integer
160
+ %t163 = Gather %t150, %t162 :: integer
161
+ %t165 = select %t158, %t163, %t142 :: integer
162
+ yield %t165
163
+ end_loop
164
+ end_loop
165
+ )
166
+ (Declaration sw
167
+ %t166 = load_input "rows" :: array
168
+ loop rows id=L15 in %t166 as el=%rows_el_167, idx=%rows_i_168
169
+ loop col id=L16 in %rows_el_167 as el=%col_el_169, idx=%col_i_170
170
+ %t171 = Length %t166 :: integer
171
+ %t172 = const 1 :: integer
172
+ %t173 = call core.sub(%rows_i_168, %t172) :: integer
173
+ %t174 = const 0 :: integer
174
+ %t175 = call core.gte(%t173, %t174) :: boolean
175
+ %t176 = call core.lt(%t173, %t171) :: boolean
176
+ %t177 = call core.and(%t175, %t176) :: boolean
177
+ %t179 = call core.sub(%t171, %t172) :: integer
178
+ %t181 = call core.clamp(%t173, %t174, %t179) :: integer
179
+ %t182 = Gather %t166, %t181 :: any
180
+ %t183 = Length %t182 :: integer
181
+ %t184 = const -1 :: integer
182
+ %t185 = call core.sub(%col_i_170, %t184) :: integer
183
+ %t187 = call core.gte(%t185, %t174) :: boolean
184
+ %t188 = call core.lt(%t185, %t183) :: boolean
185
+ %t189 = call core.and(%t187, %t188) :: boolean
186
+ %t190 = call core.and(%t177, %t189) :: boolean
187
+ %t192 = call core.sub(%t183, %t172) :: integer
188
+ %t194 = call core.clamp(%t185, %t174, %t192) :: integer
189
+ %t195 = Gather %t182, %t194 :: integer
190
+ %t197 = select %t190, %t195, %t174 :: integer
191
+ yield %t197
192
+ end_loop
193
+ end_loop
194
+ )
195
+ (Declaration se
196
+ %t198 = load_input "rows" :: array
197
+ loop rows id=L17 in %t198 as el=%rows_el_199, idx=%rows_i_200
198
+ loop col id=L18 in %rows_el_199 as el=%col_el_201, idx=%col_i_202
199
+ %t203 = Length %t198 :: integer
200
+ %t204 = const 1 :: integer
201
+ %t205 = call core.sub(%rows_i_200, %t204) :: integer
202
+ %t206 = const 0 :: integer
203
+ %t207 = call core.gte(%t205, %t206) :: boolean
204
+ %t208 = call core.lt(%t205, %t203) :: boolean
205
+ %t209 = call core.and(%t207, %t208) :: boolean
206
+ %t211 = call core.sub(%t203, %t204) :: integer
207
+ %t213 = call core.clamp(%t205, %t206, %t211) :: integer
208
+ %t214 = Gather %t198, %t213 :: any
209
+ %t215 = Length %t214 :: integer
210
+ %t217 = call core.sub(%col_i_202, %t204) :: integer
211
+ %t219 = call core.gte(%t217, %t206) :: boolean
212
+ %t220 = call core.lt(%t217, %t215) :: boolean
213
+ %t221 = call core.and(%t219, %t220) :: boolean
214
+ %t222 = call core.and(%t209, %t221) :: boolean
215
+ %t224 = call core.sub(%t215, %t204) :: integer
216
+ %t226 = call core.clamp(%t217, %t206, %t224) :: integer
217
+ %t227 = Gather %t214, %t226 :: integer
218
+ %t229 = select %t222, %t227, %t206 :: integer
219
+ yield %t229
220
+ end_loop
221
+ end_loop
222
+ )
223
+ (Declaration neighbors
224
+ %t230 = load_input "rows" :: array
225
+ loop rows id=L19 in %t230 as el=%rows_el_231, idx=%rows_i_232
226
+ loop col id=L20 in %rows_el_231 as el=%col_el_233, idx=%col_i_234
227
+ %t295 = Length %t230 :: integer
228
+ %t296 = const -1 :: integer
229
+ %t297 = call core.sub(%rows_i_232, %t296) :: integer
230
+ %t298 = const 0 :: integer
231
+ %t299 = call core.gte(%t297, %t298) :: boolean
232
+ %t300 = call core.lt(%t297, %t295) :: boolean
233
+ %t301 = call core.and(%t299, %t300) :: boolean
234
+ %t302 = const 1 :: integer
235
+ %t303 = call core.sub(%t295, %t302) :: integer
236
+ %t305 = call core.clamp(%t297, %t298, %t303) :: integer
237
+ %t306 = Gather %t230, %t305 :: any
238
+ %t307 = Length %t306 :: integer
239
+ %t308 = call core.mod(%col_i_234, %t307) :: integer
240
+ %t309 = call core.add(%t308, %t307) :: integer
241
+ %t310 = call core.mod(%t309, %t307) :: integer
242
+ %t311 = Gather %t306, %t310 :: integer
243
+ %t313 = select %t301, %t311, %t298 :: integer
244
+ %t317 = call core.sub(%rows_i_232, %t302) :: integer
245
+ %t319 = call core.gte(%t317, %t298) :: boolean
246
+ %t320 = call core.lt(%t317, %t295) :: boolean
247
+ %t321 = call core.and(%t319, %t320) :: boolean
248
+ %t325 = call core.clamp(%t317, %t298, %t303) :: integer
249
+ %t326 = Gather %t230, %t325 :: any
250
+ %t327 = Length %t326 :: integer
251
+ %t328 = call core.mod(%col_i_234, %t327) :: integer
252
+ %t329 = call core.add(%t328, %t327) :: integer
253
+ %t330 = call core.mod(%t329, %t327) :: integer
254
+ %t331 = Gather %t326, %t330 :: integer
255
+ %t333 = select %t321, %t331, %t298 :: integer
256
+ %t336 = call core.mod(%rows_i_232, %t295) :: integer
257
+ %t337 = call core.add(%t336, %t295) :: integer
258
+ %t338 = call core.mod(%t337, %t295) :: integer
259
+ %t339 = Gather %t230, %t338 :: any
260
+ %t340 = Length %t339 :: integer
261
+ %t342 = call core.sub(%col_i_234, %t296) :: integer
262
+ %t344 = call core.gte(%t342, %t298) :: boolean
263
+ %t345 = call core.lt(%t342, %t340) :: boolean
264
+ %t346 = call core.and(%t344, %t345) :: boolean
265
+ %t348 = call core.sub(%t340, %t302) :: integer
266
+ %t350 = call core.clamp(%t342, %t298, %t348) :: integer
267
+ %t351 = Gather %t339, %t350 :: integer
268
+ %t353 = select %t346, %t351, %t298 :: integer
269
+ %t362 = call core.sub(%col_i_234, %t302) :: integer
270
+ %t364 = call core.gte(%t362, %t298) :: boolean
271
+ %t365 = call core.lt(%t362, %t340) :: boolean
272
+ %t366 = call core.and(%t364, %t365) :: boolean
273
+ %t370 = call core.clamp(%t362, %t298, %t348) :: integer
274
+ %t371 = Gather %t339, %t370 :: integer
275
+ %t373 = select %t366, %t371, %t298 :: integer
276
+ %t392 = call core.lt(%t342, %t307) :: boolean
277
+ %t393 = call core.and(%t344, %t392) :: boolean
278
+ %t394 = call core.and(%t301, %t393) :: boolean
279
+ %t396 = call core.sub(%t307, %t302) :: integer
280
+ %t398 = call core.clamp(%t342, %t298, %t396) :: integer
281
+ %t399 = Gather %t306, %t398 :: integer
282
+ %t401 = select %t394, %t399, %t298 :: integer
283
+ %t420 = call core.lt(%t362, %t307) :: boolean
284
+ %t421 = call core.and(%t364, %t420) :: boolean
285
+ %t422 = call core.and(%t301, %t421) :: boolean
286
+ %t426 = call core.clamp(%t362, %t298, %t396) :: integer
287
+ %t427 = Gather %t306, %t426 :: integer
288
+ %t429 = select %t422, %t427, %t298 :: integer
289
+ %t448 = call core.lt(%t342, %t327) :: boolean
290
+ %t449 = call core.and(%t344, %t448) :: boolean
291
+ %t450 = call core.and(%t321, %t449) :: boolean
292
+ %t452 = call core.sub(%t327, %t302) :: integer
293
+ %t454 = call core.clamp(%t342, %t298, %t452) :: integer
294
+ %t455 = Gather %t326, %t454 :: integer
295
+ %t457 = select %t450, %t455, %t298 :: integer
296
+ %t476 = call core.lt(%t362, %t327) :: boolean
297
+ %t477 = call core.and(%t364, %t476) :: boolean
298
+ %t478 = call core.and(%t321, %t477) :: boolean
299
+ %t482 = call core.clamp(%t362, %t298, %t452) :: integer
300
+ %t483 = Gather %t326, %t482 :: integer
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" ::
304
+ yield %t244
305
+ end_loop
306
+ end_loop
307
+ )
308
+ (Declaration alive
309
+ %t245 = load_input "rows" :: array
310
+ loop rows id=L21 in %t245 as el=%rows_el_246, idx=%rows_i_247
311
+ loop col id=L22 in %rows_el_246 as el=%col_el_248, idx=%col_i_249
312
+ %t251 = const 0 :: integer
313
+ %t252 = call core.gt(%col_el_248, %t251) :: boolean
314
+ yield %t252
315
+ end_loop
316
+ end_loop
317
+ )
318
+ (Declaration n3_alive
319
+ %t253 = load_input "rows" :: array
320
+ loop rows id=L23 in %t253 as el=%rows_el_254, idx=%rows_i_255
321
+ loop col id=L24 in %rows_el_254 as el=%col_el_256, idx=%col_i_257
322
+ %t530 = Length %t253 :: integer
323
+ %t531 = const -1 :: integer
324
+ %t532 = call core.sub(%rows_i_255, %t531) :: integer
325
+ %t533 = const 0 :: integer
326
+ %t534 = call core.gte(%t532, %t533) :: boolean
327
+ %t535 = call core.lt(%t532, %t530) :: boolean
328
+ %t536 = call core.and(%t534, %t535) :: boolean
329
+ %t537 = const 1 :: integer
330
+ %t538 = call core.sub(%t530, %t537) :: integer
331
+ %t540 = call core.clamp(%t532, %t533, %t538) :: integer
332
+ %t541 = Gather %t253, %t540 :: any
333
+ %t542 = Length %t541 :: integer
334
+ %t543 = call core.mod(%col_i_257, %t542) :: integer
335
+ %t544 = call core.add(%t543, %t542) :: integer
336
+ %t545 = call core.mod(%t544, %t542) :: integer
337
+ %t546 = Gather %t541, %t545 :: integer
338
+ %t548 = select %t536, %t546, %t533 :: integer
339
+ %t552 = call core.sub(%rows_i_255, %t537) :: integer
340
+ %t554 = call core.gte(%t552, %t533) :: boolean
341
+ %t555 = call core.lt(%t552, %t530) :: boolean
342
+ %t556 = call core.and(%t554, %t555) :: boolean
343
+ %t560 = call core.clamp(%t552, %t533, %t538) :: integer
344
+ %t561 = Gather %t253, %t560 :: any
345
+ %t562 = Length %t561 :: integer
346
+ %t563 = call core.mod(%col_i_257, %t562) :: integer
347
+ %t564 = call core.add(%t563, %t562) :: integer
348
+ %t565 = call core.mod(%t564, %t562) :: integer
349
+ %t566 = Gather %t561, %t565 :: integer
350
+ %t568 = select %t556, %t566, %t533 :: integer
351
+ %t571 = call core.mod(%rows_i_255, %t530) :: integer
352
+ %t572 = call core.add(%t571, %t530) :: integer
353
+ %t573 = call core.mod(%t572, %t530) :: integer
354
+ %t574 = Gather %t253, %t573 :: any
355
+ %t575 = Length %t574 :: integer
356
+ %t577 = call core.sub(%col_i_257, %t531) :: integer
357
+ %t579 = call core.gte(%t577, %t533) :: boolean
358
+ %t580 = call core.lt(%t577, %t575) :: boolean
359
+ %t581 = call core.and(%t579, %t580) :: boolean
360
+ %t583 = call core.sub(%t575, %t537) :: integer
361
+ %t585 = call core.clamp(%t577, %t533, %t583) :: integer
362
+ %t586 = Gather %t574, %t585 :: integer
363
+ %t588 = select %t581, %t586, %t533 :: integer
364
+ %t597 = call core.sub(%col_i_257, %t537) :: integer
365
+ %t599 = call core.gte(%t597, %t533) :: boolean
366
+ %t600 = call core.lt(%t597, %t575) :: boolean
367
+ %t601 = call core.and(%t599, %t600) :: boolean
368
+ %t605 = call core.clamp(%t597, %t533, %t583) :: integer
369
+ %t606 = Gather %t574, %t605 :: integer
370
+ %t608 = select %t601, %t606, %t533 :: integer
371
+ %t627 = call core.lt(%t577, %t542) :: boolean
372
+ %t628 = call core.and(%t579, %t627) :: boolean
373
+ %t629 = call core.and(%t536, %t628) :: boolean
374
+ %t631 = call core.sub(%t542, %t537) :: integer
375
+ %t633 = call core.clamp(%t577, %t533, %t631) :: integer
376
+ %t634 = Gather %t541, %t633 :: integer
377
+ %t636 = select %t629, %t634, %t533 :: integer
378
+ %t655 = call core.lt(%t597, %t542) :: boolean
379
+ %t656 = call core.and(%t599, %t655) :: boolean
380
+ %t657 = call core.and(%t536, %t656) :: boolean
381
+ %t661 = call core.clamp(%t597, %t533, %t631) :: integer
382
+ %t662 = Gather %t541, %t661 :: integer
383
+ %t664 = select %t657, %t662, %t533 :: integer
384
+ %t683 = call core.lt(%t577, %t562) :: boolean
385
+ %t684 = call core.and(%t579, %t683) :: boolean
386
+ %t685 = call core.and(%t556, %t684) :: boolean
387
+ %t687 = call core.sub(%t562, %t537) :: integer
388
+ %t689 = call core.clamp(%t577, %t533, %t687) :: integer
389
+ %t690 = Gather %t561, %t689 :: integer
390
+ %t692 = select %t685, %t690, %t533 :: integer
391
+ %t711 = call core.lt(%t597, %t562) :: boolean
392
+ %t712 = call core.and(%t599, %t711) :: boolean
393
+ %t713 = call core.and(%t556, %t712) :: boolean
394
+ %t717 = call core.clamp(%t597, %t533, %t687) :: integer
395
+ %t718 = Gather %t561, %t717 :: integer
396
+ %t720 = select %t713, %t718, %t533 :: integer
397
+ %t496 = make_tuple(%t548, %t568, %t588, %t608, %t636, %t664, %t692, %t720) :: tuple<integer>
398
+ %t497 = Fold %t496 fn="agg.sum" ::
399
+ %t259 = const 3 :: integer
400
+ %t260 = call core.eq(%t497, %t259) :: boolean
401
+ yield %t260
402
+ end_loop
403
+ end_loop
404
+ )
405
+ (Declaration n2_alive
406
+ %t261 = load_input "rows" :: array
407
+ loop rows id=L25 in %t261 as el=%rows_el_262, idx=%rows_i_263
408
+ loop col id=L26 in %rows_el_262 as el=%col_el_264, idx=%col_i_265
409
+ %t722 = Length %t261 :: integer
410
+ %t723 = const -1 :: integer
411
+ %t724 = call core.sub(%rows_i_263, %t723) :: integer
412
+ %t725 = const 0 :: integer
413
+ %t726 = call core.gte(%t724, %t725) :: boolean
414
+ %t727 = call core.lt(%t724, %t722) :: boolean
415
+ %t728 = call core.and(%t726, %t727) :: boolean
416
+ %t729 = const 1 :: integer
417
+ %t730 = call core.sub(%t722, %t729) :: integer
418
+ %t732 = call core.clamp(%t724, %t725, %t730) :: integer
419
+ %t733 = Gather %t261, %t732 :: any
420
+ %t734 = Length %t733 :: integer
421
+ %t735 = call core.mod(%col_i_265, %t734) :: integer
422
+ %t736 = call core.add(%t735, %t734) :: integer
423
+ %t737 = call core.mod(%t736, %t734) :: integer
424
+ %t738 = Gather %t733, %t737 :: integer
425
+ %t740 = select %t728, %t738, %t725 :: integer
426
+ %t744 = call core.sub(%rows_i_263, %t729) :: integer
427
+ %t746 = call core.gte(%t744, %t725) :: boolean
428
+ %t747 = call core.lt(%t744, %t722) :: boolean
429
+ %t748 = call core.and(%t746, %t747) :: boolean
430
+ %t752 = call core.clamp(%t744, %t725, %t730) :: integer
431
+ %t753 = Gather %t261, %t752 :: any
432
+ %t754 = Length %t753 :: integer
433
+ %t755 = call core.mod(%col_i_265, %t754) :: integer
434
+ %t756 = call core.add(%t755, %t754) :: integer
435
+ %t757 = call core.mod(%t756, %t754) :: integer
436
+ %t758 = Gather %t753, %t757 :: integer
437
+ %t760 = select %t748, %t758, %t725 :: integer
438
+ %t763 = call core.mod(%rows_i_263, %t722) :: integer
439
+ %t764 = call core.add(%t763, %t722) :: integer
440
+ %t765 = call core.mod(%t764, %t722) :: integer
441
+ %t766 = Gather %t261, %t765 :: any
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
446
+ %t773 = call core.and(%t771, %t772) :: boolean
447
+ %t775 = call core.sub(%t767, %t729) :: integer
448
+ %t777 = call core.clamp(%t769, %t725, %t775) :: integer
449
+ %t778 = Gather %t766, %t777 :: integer
450
+ %t780 = select %t773, %t778, %t725 :: integer
451
+ %t789 = call core.sub(%col_i_265, %t729) :: integer
452
+ %t791 = call core.gte(%t789, %t725) :: boolean
453
+ %t792 = call core.lt(%t789, %t767) :: boolean
454
+ %t793 = call core.and(%t791, %t792) :: boolean
455
+ %t797 = call core.clamp(%t789, %t725, %t775) :: integer
456
+ %t798 = Gather %t766, %t797 :: integer
457
+ %t800 = select %t793, %t798, %t725 :: integer
458
+ %t819 = call core.lt(%t769, %t734) :: boolean
459
+ %t820 = call core.and(%t771, %t819) :: boolean
460
+ %t821 = call core.and(%t728, %t820) :: boolean
461
+ %t823 = call core.sub(%t734, %t729) :: integer
462
+ %t825 = call core.clamp(%t769, %t725, %t823) :: integer
463
+ %t826 = Gather %t733, %t825 :: integer
464
+ %t828 = select %t821, %t826, %t725 :: integer
465
+ %t847 = call core.lt(%t789, %t734) :: boolean
466
+ %t848 = call core.and(%t791, %t847) :: boolean
467
+ %t849 = call core.and(%t728, %t848) :: boolean
468
+ %t853 = call core.clamp(%t789, %t725, %t823) :: integer
469
+ %t854 = Gather %t733, %t853 :: integer
470
+ %t856 = select %t849, %t854, %t725 :: integer
471
+ %t875 = call core.lt(%t769, %t754) :: boolean
472
+ %t876 = call core.and(%t771, %t875) :: boolean
473
+ %t877 = call core.and(%t748, %t876) :: boolean
474
+ %t879 = call core.sub(%t754, %t729) :: integer
475
+ %t881 = call core.clamp(%t769, %t725, %t879) :: integer
476
+ %t882 = Gather %t753, %t881 :: integer
477
+ %t884 = select %t877, %t882, %t725 :: integer
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" ::
486
+ %t267 = const 2 :: integer
487
+ %t268 = call core.eq(%t508, %t267) :: boolean
488
+ yield %t268
489
+ end_loop
490
+ end_loop
491
+ )
492
+ (Declaration keep_alive
493
+ %t269 = load_input "rows" :: array
494
+ loop rows id=L27 in %t269 as el=%rows_el_270, idx=%rows_i_271
495
+ loop col id=L28 in %rows_el_270 as el=%col_el_272, idx=%col_i_273
496
+ %t915 = Length %t269 :: integer
497
+ %t916 = const -1 :: integer
498
+ %t917 = call core.sub(%rows_i_271, %t916) :: integer
499
+ %t918 = const 0 :: integer
500
+ %t919 = call core.gte(%t917, %t918) :: boolean
501
+ %t920 = call core.lt(%t917, %t915) :: boolean
502
+ %t921 = call core.and(%t919, %t920) :: boolean
503
+ %t922 = const 1 :: integer
504
+ %t923 = call core.sub(%t915, %t922) :: integer
505
+ %t925 = call core.clamp(%t917, %t918, %t923) :: integer
506
+ %t926 = Gather %t269, %t925 :: any
507
+ %t927 = Length %t926 :: integer
508
+ %t928 = call core.mod(%col_i_273, %t927) :: integer
509
+ %t929 = call core.add(%t928, %t927) :: integer
510
+ %t930 = call core.mod(%t929, %t927) :: integer
511
+ %t931 = Gather %t926, %t930 :: integer
512
+ %t933 = select %t921, %t931, %t918 :: integer
513
+ %t937 = call core.sub(%rows_i_271, %t922) :: integer
514
+ %t939 = call core.gte(%t937, %t918) :: boolean
515
+ %t940 = call core.lt(%t937, %t915) :: boolean
516
+ %t941 = call core.and(%t939, %t940) :: boolean
517
+ %t945 = call core.clamp(%t937, %t918, %t923) :: integer
518
+ %t946 = Gather %t269, %t945 :: any
519
+ %t947 = Length %t946 :: integer
520
+ %t948 = call core.mod(%col_i_273, %t947) :: integer
521
+ %t949 = call core.add(%t948, %t947) :: integer
522
+ %t950 = call core.mod(%t949, %t947) :: integer
523
+ %t951 = Gather %t946, %t950 :: integer
524
+ %t953 = select %t941, %t951, %t918 :: integer
525
+ %t956 = call core.mod(%rows_i_271, %t915) :: integer
526
+ %t957 = call core.add(%t956, %t915) :: integer
527
+ %t958 = call core.mod(%t957, %t915) :: integer
528
+ %t959 = Gather %t269, %t958 :: any
529
+ %t960 = Length %t959 :: integer
530
+ %t962 = call core.sub(%col_i_273, %t916) :: integer
531
+ %t964 = call core.gte(%t962, %t918) :: boolean
532
+ %t965 = call core.lt(%t962, %t960) :: boolean
533
+ %t966 = call core.and(%t964, %t965) :: boolean
534
+ %t968 = call core.sub(%t960, %t922) :: integer
535
+ %t970 = call core.clamp(%t962, %t918, %t968) :: integer
536
+ %t971 = Gather %t959, %t970 :: integer
537
+ %t973 = select %t966, %t971, %t918 :: integer
538
+ %t982 = call core.sub(%col_i_273, %t922) :: integer
539
+ %t984 = call core.gte(%t982, %t918) :: boolean
540
+ %t985 = call core.lt(%t982, %t960) :: boolean
541
+ %t986 = call core.and(%t984, %t985) :: boolean
542
+ %t990 = call core.clamp(%t982, %t918, %t968) :: integer
543
+ %t991 = Gather %t959, %t990 :: integer
544
+ %t993 = select %t986, %t991, %t918 :: integer
545
+ %t1012 = call core.lt(%t962, %t927) :: boolean
546
+ %t1013 = call core.and(%t964, %t1012) :: boolean
547
+ %t1014 = call core.and(%t921, %t1013) :: boolean
548
+ %t1016 = call core.sub(%t927, %t922) :: integer
549
+ %t1018 = call core.clamp(%t962, %t918, %t1016) :: integer
550
+ %t1019 = Gather %t926, %t1018 :: integer
551
+ %t1021 = select %t1014, %t1019, %t918 :: integer
552
+ %t1040 = call core.lt(%t982, %t927) :: boolean
553
+ %t1041 = call core.and(%t984, %t1040) :: boolean
554
+ %t1042 = call core.and(%t921, %t1041) :: boolean
555
+ %t1046 = call core.clamp(%t982, %t918, %t1016) :: integer
556
+ %t1047 = Gather %t926, %t1046 :: integer
557
+ %t1049 = select %t1042, %t1047, %t918 :: integer
558
+ %t1068 = call core.lt(%t962, %t947) :: boolean
559
+ %t1069 = call core.and(%t964, %t1068) :: boolean
560
+ %t1070 = call core.and(%t941, %t1069) :: boolean
561
+ %t1072 = call core.sub(%t947, %t922) :: integer
562
+ %t1074 = call core.clamp(%t962, %t918, %t1072) :: integer
563
+ %t1075 = Gather %t946, %t1074 :: integer
564
+ %t1077 = select %t1070, %t1075, %t918 :: integer
565
+ %t1096 = call core.lt(%t982, %t947) :: boolean
566
+ %t1097 = call core.and(%t984, %t1096) :: boolean
567
+ %t1098 = call core.and(%t941, %t1097) :: boolean
568
+ %t1102 = call core.clamp(%t982, %t918, %t1072) :: integer
569
+ %t1103 = Gather %t946, %t1102 :: integer
570
+ %t1105 = select %t1098, %t1103, %t918 :: integer
571
+ %t1106 = make_tuple(%t933, %t953, %t973, %t993, %t1021, %t1049, %t1077, %t1105) :: tuple<integer>
572
+ %t1107 = Fold %t1106 fn="agg.sum" ::
573
+ %t511 = const 2 :: integer
574
+ %t512 = call core.eq(%t1107, %t511) :: boolean
575
+ %t516 = call core.gt(%col_el_272, %t918) :: boolean
576
+ %t276 = call core.and(%t512, %t516) :: boolean
577
+ yield %t276
578
+ end_loop
579
+ end_loop
580
+ )
581
+ (Declaration next_alive
582
+ %t277 = load_input "rows" :: array
583
+ loop rows id=L29 in %t277 as el=%rows_el_278, idx=%rows_i_279
584
+ loop col id=L30 in %rows_el_278 as el=%col_el_280, idx=%col_i_281
585
+ %t1111 = Length %t277 :: integer
586
+ %t1112 = const -1 :: integer
587
+ %t1113 = call core.sub(%rows_i_279, %t1112) :: integer
588
+ %t1114 = const 0 :: integer
589
+ %t1115 = call core.gte(%t1113, %t1114) :: boolean
590
+ %t1116 = call core.lt(%t1113, %t1111) :: boolean
591
+ %t1117 = call core.and(%t1115, %t1116) :: boolean
592
+ %t1118 = const 1 :: integer
593
+ %t1119 = call core.sub(%t1111, %t1118) :: integer
594
+ %t1121 = call core.clamp(%t1113, %t1114, %t1119) :: integer
595
+ %t1122 = Gather %t277, %t1121 :: any
596
+ %t1123 = Length %t1122 :: integer
597
+ %t1124 = call core.mod(%col_i_281, %t1123) :: integer
598
+ %t1125 = call core.add(%t1124, %t1123) :: integer
599
+ %t1126 = call core.mod(%t1125, %t1123) :: integer
600
+ %t1127 = Gather %t1122, %t1126 :: integer
601
+ %t1129 = select %t1117, %t1127, %t1114 :: integer
602
+ %t1133 = call core.sub(%rows_i_279, %t1118) :: integer
603
+ %t1135 = call core.gte(%t1133, %t1114) :: boolean
604
+ %t1136 = call core.lt(%t1133, %t1111) :: boolean
605
+ %t1137 = call core.and(%t1135, %t1136) :: boolean
606
+ %t1141 = call core.clamp(%t1133, %t1114, %t1119) :: integer
607
+ %t1142 = Gather %t277, %t1141 :: any
608
+ %t1143 = Length %t1142 :: integer
609
+ %t1144 = call core.mod(%col_i_281, %t1143) :: integer
610
+ %t1145 = call core.add(%t1144, %t1143) :: integer
611
+ %t1146 = call core.mod(%t1145, %t1143) :: integer
612
+ %t1147 = Gather %t1142, %t1146 :: integer
613
+ %t1149 = select %t1137, %t1147, %t1114 :: integer
614
+ %t1152 = call core.mod(%rows_i_279, %t1111) :: integer
615
+ %t1153 = call core.add(%t1152, %t1111) :: integer
616
+ %t1154 = call core.mod(%t1153, %t1111) :: integer
617
+ %t1155 = Gather %t277, %t1154 :: any
618
+ %t1156 = Length %t1155 :: integer
619
+ %t1158 = call core.sub(%col_i_281, %t1112) :: integer
620
+ %t1160 = call core.gte(%t1158, %t1114) :: boolean
621
+ %t1161 = call core.lt(%t1158, %t1156) :: boolean
622
+ %t1162 = call core.and(%t1160, %t1161) :: boolean
623
+ %t1164 = call core.sub(%t1156, %t1118) :: integer
624
+ %t1166 = call core.clamp(%t1158, %t1114, %t1164) :: integer
625
+ %t1167 = Gather %t1155, %t1166 :: integer
626
+ %t1169 = select %t1162, %t1167, %t1114 :: integer
627
+ %t1178 = call core.sub(%col_i_281, %t1118) :: integer
628
+ %t1180 = call core.gte(%t1178, %t1114) :: boolean
629
+ %t1181 = call core.lt(%t1178, %t1156) :: boolean
630
+ %t1182 = call core.and(%t1180, %t1181) :: boolean
631
+ %t1186 = call core.clamp(%t1178, %t1114, %t1164) :: integer
632
+ %t1187 = Gather %t1155, %t1186 :: integer
633
+ %t1189 = select %t1182, %t1187, %t1114 :: integer
634
+ %t1208 = call core.lt(%t1158, %t1123) :: boolean
635
+ %t1209 = call core.and(%t1160, %t1208) :: boolean
636
+ %t1210 = call core.and(%t1117, %t1209) :: boolean
637
+ %t1212 = call core.sub(%t1123, %t1118) :: integer
638
+ %t1214 = call core.clamp(%t1158, %t1114, %t1212) :: integer
639
+ %t1215 = Gather %t1122, %t1214 :: integer
640
+ %t1217 = select %t1210, %t1215, %t1114 :: integer
641
+ %t1236 = call core.lt(%t1178, %t1123) :: boolean
642
+ %t1237 = call core.and(%t1180, %t1236) :: boolean
643
+ %t1238 = call core.and(%t1117, %t1237) :: boolean
644
+ %t1242 = call core.clamp(%t1178, %t1114, %t1212) :: integer
645
+ %t1243 = Gather %t1122, %t1242 :: integer
646
+ %t1245 = select %t1238, %t1243, %t1114 :: integer
647
+ %t1264 = call core.lt(%t1158, %t1143) :: boolean
648
+ %t1265 = call core.and(%t1160, %t1264) :: boolean
649
+ %t1266 = call core.and(%t1137, %t1265) :: boolean
650
+ %t1268 = call core.sub(%t1143, %t1118) :: integer
651
+ %t1270 = call core.clamp(%t1158, %t1114, %t1268) :: integer
652
+ %t1271 = Gather %t1142, %t1270 :: integer
653
+ %t1273 = select %t1266, %t1271, %t1114 :: integer
654
+ %t1292 = call core.lt(%t1178, %t1143) :: boolean
655
+ %t1293 = call core.and(%t1180, %t1292) :: boolean
656
+ %t1294 = call core.and(%t1137, %t1293) :: boolean
657
+ %t1298 = call core.clamp(%t1178, %t1114, %t1268) :: integer
658
+ %t1299 = Gather %t1142, %t1298 :: integer
659
+ %t1301 = select %t1294, %t1299, %t1114 :: integer
660
+ %t1302 = make_tuple(%t1129, %t1149, %t1169, %t1189, %t1217, %t1245, %t1273, %t1301) :: tuple<integer>
661
+ %t1303 = Fold %t1302 fn="agg.sum" ::
662
+ %t519 = const 3 :: integer
663
+ %t520 = call core.eq(%t1303, %t519) :: boolean
664
+ %t1316 = const 2 :: integer
665
+ %t1317 = call core.eq(%t1303, %t1316) :: boolean
666
+ %t1321 = call core.gt(%col_el_280, %t1114) :: boolean
667
+ %t524 = call core.and(%t1317, %t1321) :: boolean
668
+ %t284 = call core.or(%t520, %t524) :: boolean
669
+ yield %t284
670
+ end_loop
671
+ end_loop
672
+ )
673
+ (Declaration next_state
674
+ %t285 = load_input "rows" :: array
675
+ loop rows id=L31 in %t285 as el=%rows_el_286, idx=%rows_i_287
676
+ loop col id=L32 in %rows_el_286 as el=%col_el_288, idx=%col_i_289
677
+ %t1539 = Length %t285 :: integer
678
+ %t1540 = const -1 :: integer
679
+ %t1541 = call core.sub(%rows_i_287, %t1540) :: integer
680
+ %t1542 = const 0 :: integer
681
+ %t1543 = call core.gte(%t1541, %t1542) :: boolean
682
+ %t1544 = call core.lt(%t1541, %t1539) :: boolean
683
+ %t1545 = call core.and(%t1543, %t1544) :: boolean
684
+ %t1546 = const 1 :: integer
685
+ %t1547 = call core.sub(%t1539, %t1546) :: integer
686
+ %t1549 = call core.clamp(%t1541, %t1542, %t1547) :: integer
687
+ %t1550 = Gather %t285, %t1549 :: any
688
+ %t1551 = Length %t1550 :: integer
689
+ %t1552 = call core.mod(%col_i_289, %t1551) :: integer
690
+ %t1553 = call core.add(%t1552, %t1551) :: integer
691
+ %t1554 = call core.mod(%t1553, %t1551) :: integer
692
+ %t1555 = Gather %t1550, %t1554 :: integer
693
+ %t1557 = select %t1545, %t1555, %t1542 :: integer
694
+ %t1561 = call core.sub(%rows_i_287, %t1546) :: integer
695
+ %t1563 = call core.gte(%t1561, %t1542) :: boolean
696
+ %t1564 = call core.lt(%t1561, %t1539) :: boolean
697
+ %t1565 = call core.and(%t1563, %t1564) :: boolean
698
+ %t1569 = call core.clamp(%t1561, %t1542, %t1547) :: integer
699
+ %t1570 = Gather %t285, %t1569 :: any
700
+ %t1571 = Length %t1570 :: integer
701
+ %t1572 = call core.mod(%col_i_289, %t1571) :: integer
702
+ %t1573 = call core.add(%t1572, %t1571) :: integer
703
+ %t1574 = call core.mod(%t1573, %t1571) :: integer
704
+ %t1575 = Gather %t1570, %t1574 :: integer
705
+ %t1577 = select %t1565, %t1575, %t1542 :: integer
706
+ %t1580 = call core.mod(%rows_i_287, %t1539) :: integer
707
+ %t1581 = call core.add(%t1580, %t1539) :: integer
708
+ %t1582 = call core.mod(%t1581, %t1539) :: integer
709
+ %t1583 = Gather %t285, %t1582 :: any
710
+ %t1584 = Length %t1583 :: integer
711
+ %t1586 = call core.sub(%col_i_289, %t1540) :: integer
712
+ %t1588 = call core.gte(%t1586, %t1542) :: boolean
713
+ %t1589 = call core.lt(%t1586, %t1584) :: boolean
714
+ %t1590 = call core.and(%t1588, %t1589) :: boolean
715
+ %t1592 = call core.sub(%t1584, %t1546) :: integer
716
+ %t1594 = call core.clamp(%t1586, %t1542, %t1592) :: integer
717
+ %t1595 = Gather %t1583, %t1594 :: integer
718
+ %t1597 = select %t1590, %t1595, %t1542 :: integer
719
+ %t1606 = call core.sub(%col_i_289, %t1546) :: integer
720
+ %t1608 = call core.gte(%t1606, %t1542) :: boolean
721
+ %t1609 = call core.lt(%t1606, %t1584) :: boolean
722
+ %t1610 = call core.and(%t1608, %t1609) :: boolean
723
+ %t1614 = call core.clamp(%t1606, %t1542, %t1592) :: integer
724
+ %t1615 = Gather %t1583, %t1614 :: integer
725
+ %t1617 = select %t1610, %t1615, %t1542 :: integer
726
+ %t1636 = call core.lt(%t1586, %t1551) :: boolean
727
+ %t1637 = call core.and(%t1588, %t1636) :: boolean
728
+ %t1638 = call core.and(%t1545, %t1637) :: boolean
729
+ %t1640 = call core.sub(%t1551, %t1546) :: integer
730
+ %t1642 = call core.clamp(%t1586, %t1542, %t1640) :: integer
731
+ %t1643 = Gather %t1550, %t1642 :: integer
732
+ %t1645 = select %t1638, %t1643, %t1542 :: integer
733
+ %t1664 = call core.lt(%t1606, %t1551) :: boolean
734
+ %t1665 = call core.and(%t1608, %t1664) :: boolean
735
+ %t1666 = call core.and(%t1545, %t1665) :: boolean
736
+ %t1670 = call core.clamp(%t1606, %t1542, %t1640) :: integer
737
+ %t1671 = Gather %t1550, %t1670 :: integer
738
+ %t1673 = select %t1666, %t1671, %t1542 :: integer
739
+ %t1692 = call core.lt(%t1586, %t1571) :: boolean
740
+ %t1693 = call core.and(%t1588, %t1692) :: boolean
741
+ %t1694 = call core.and(%t1565, %t1693) :: boolean
742
+ %t1696 = call core.sub(%t1571, %t1546) :: integer
743
+ %t1698 = call core.clamp(%t1586, %t1542, %t1696) :: integer
744
+ %t1699 = Gather %t1570, %t1698 :: integer
745
+ %t1701 = select %t1694, %t1699, %t1542 :: integer
746
+ %t1720 = call core.lt(%t1606, %t1571) :: boolean
747
+ %t1721 = call core.and(%t1608, %t1720) :: boolean
748
+ %t1722 = call core.and(%t1565, %t1721) :: boolean
749
+ %t1726 = call core.clamp(%t1606, %t1542, %t1696) :: integer
750
+ %t1727 = Gather %t1570, %t1726 :: integer
751
+ %t1729 = select %t1722, %t1727, %t1542 :: integer
752
+ %t1332 = make_tuple(%t1557, %t1577, %t1597, %t1617, %t1645, %t1673, %t1701, %t1729) :: tuple<integer>
753
+ %t1333 = Fold %t1332 fn="agg.sum" ::
754
+ %t1334 = const 3 :: integer
755
+ %t1335 = call core.eq(%t1333, %t1334) :: boolean
756
+ %t1339 = const 2 :: integer
757
+ %t1340 = call core.eq(%t1333, %t1339) :: boolean
758
+ %t1344 = call core.gt(%col_el_288, %t1542) :: boolean
759
+ %t1345 = call core.and(%t1340, %t1344) :: boolean
760
+ %t528 = call core.or(%t1335, %t1345) :: boolean
761
+ %t293 = select %t528, %t1546, %t1542 :: integer
762
+ yield %t293
763
+ end_loop
764
+ end_loop
765
+ )
766
+ )