@salang/sa 0.1.3 → 0.1.4

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 (282) hide show
  1. package/bin/sa.js +13 -1
  2. package/package.json +8 -7
  3. package/sa_std/alloc/layout.sal +12 -0
  4. package/sa_std/alloc/prelude.sa +1 -0
  5. package/sa_std/alloc/prelude.sal +1 -0
  6. package/sa_std/alloc/string.sa +3 -0
  7. package/sa_std/alloc/vec.sa +684 -0
  8. package/sa_std/alloc/vec.sal +4 -0
  9. package/sa_std/any.sa +130 -0
  10. package/sa_std/any.sal +23 -0
  11. package/sa_std/array.sa +1876 -0
  12. package/sa_std/ascii.sa +2 -0
  13. package/sa_std/ascii.sal +1 -0
  14. package/sa_std/async.sla +116 -0
  15. package/sa_std/binary_heap.sa +3003 -0
  16. package/sa_std/binary_heap.sal +7 -0
  17. package/sa_std/borrow.sa +171 -0
  18. package/sa_std/borrow.sal +13 -0
  19. package/sa_std/btree_map.sa +2210 -0
  20. package/sa_std/btree_map.sal +11 -0
  21. package/sa_std/btree_set.sa +1072 -0
  22. package/sa_std/btree_set.sal +6 -0
  23. package/sa_std/char.sa +1309 -0
  24. package/sa_std/char.sal +50 -0
  25. package/sa_std/cmp.sa +554 -0
  26. package/sa_std/cmp.sal +14 -0
  27. package/sa_std/collections/binary_heap.sa +1 -0
  28. package/sa_std/collections/btree_map.sa +1 -0
  29. package/sa_std/collections/btree_set.sa +1 -0
  30. package/sa_std/collections/hashmap.sa +1 -0
  31. package/sa_std/collections/hashset.sa +1 -0
  32. package/sa_std/collections/linked_list.sa +1120 -0
  33. package/sa_std/collections/linked_list.sal +10 -0
  34. package/sa_std/collections/prelude.sa +7 -0
  35. package/sa_std/collections/prelude.sal +1 -0
  36. package/sa_std/collections/vec_deque.sa +1 -0
  37. package/sa_std/collections.sal +13 -0
  38. package/sa_std/convert.sa +1115 -0
  39. package/sa_std/convert.sal +24 -0
  40. package/sa_std/core/arc.sa +233 -0
  41. package/sa_std/core/arc.sal +4 -0
  42. package/sa_std/core/ascii.sa +784 -0
  43. package/sa_std/core/ascii.sal +34 -0
  44. package/sa_std/core/bit.sa +41 -0
  45. package/sa_std/core/box.sa +1 -0
  46. package/sa_std/core/box.sal +2 -0
  47. package/sa_std/core/cell.sa +108 -0
  48. package/sa_std/core/cell.sal +5 -0
  49. package/sa_std/core/cleanup.sa +26 -0
  50. package/sa_std/core/control.sa +20 -0
  51. package/sa_std/core/derive.sa +60 -0
  52. package/sa_std/core/derive.sal +1 -0
  53. package/sa_std/core/dispatch.sa +7 -0
  54. package/sa_std/core/dispatch.sal +5 -0
  55. package/sa_std/core/future.sa +777 -0
  56. package/sa_std/core/future.sal +73 -0
  57. package/sa_std/core/hash.sa +48 -0
  58. package/sa_std/core/iter.sa +2805 -0
  59. package/sa_std/core/iter.sal +4 -0
  60. package/sa_std/core/loop.sa +60 -0
  61. package/sa_std/core/mem.sa +220 -0
  62. package/sa_std/core/option.sa +825 -0
  63. package/sa_std/core/option.sal +11 -0
  64. package/sa_std/core/panic.sa +23 -0
  65. package/sa_std/core/panic.sal +12 -0
  66. package/sa_std/core/prelude.sa +18 -0
  67. package/sa_std/core/prelude.sal +18 -0
  68. package/sa_std/core/rc.sa +225 -0
  69. package/sa_std/core/rc.sal +4 -0
  70. package/sa_std/core/refcell.sa +283 -0
  71. package/sa_std/core/refcell.sal +13 -0
  72. package/sa_std/core/result.sa +708 -0
  73. package/sa_std/core/result.sal +6 -0
  74. package/sa_std/core/rust_patterns.sal +295 -0
  75. package/sa_std/core/sa_core.sa +84 -0
  76. package/sa_std/core/slice.sa +4021 -0
  77. package/sa_std/core/slice.sal +7 -0
  78. package/sa_std/core/task.sa +112 -0
  79. package/sa_std/core/task.sal +15 -0
  80. package/sa_std/core/trait_object.sa +26 -0
  81. package/sa_std/core/trait_object.sal +4 -0
  82. package/sa_std/core/waker.sa +289 -0
  83. package/sa_std/core/waker.sal +31 -0
  84. package/sa_std/core/weak.sa +2 -0
  85. package/sa_std/core/weak.sal +4 -0
  86. package/sa_std/cow.sa +3 -0
  87. package/sa_std/cow.sal +2 -0
  88. package/sa_std/cstring.sa +3 -0
  89. package/sa_std/cstring.sal +2 -0
  90. package/sa_std/default.sa +99 -0
  91. package/sa_std/duration.sa +3 -0
  92. package/sa_std/duration.sal +2 -0
  93. package/sa_std/encoding/json.sa +259 -0
  94. package/sa_std/encoding/json.sai +54 -0
  95. package/sa_std/encoding/json.sal +35 -0
  96. package/sa_std/encoding/prelude.sa +1 -0
  97. package/sa_std/encoding/prelude.sal +0 -0
  98. package/sa_std/env.sa +390 -0
  99. package/sa_std/env.sai +25 -0
  100. package/sa_std/error.sa +253 -0
  101. package/sa_std/error.sal +44 -0
  102. package/sa_std/ffi/cstring.sa +3 -0
  103. package/sa_std/ffi/cstring.sal +1 -0
  104. package/sa_std/ffi/prelude.sa +2 -0
  105. package/sa_std/ffi/prelude.sal +2 -0
  106. package/sa_std/ffi.sa +635 -0
  107. package/sa_std/ffi.sal +51 -0
  108. package/sa_std/fmt.sa +2 -0
  109. package/sa_std/fmt.sai +18 -0
  110. package/sa_std/fmt.sal +35 -0
  111. package/sa_std/fs.sa +1023 -0
  112. package/sa_std/fs.sai +127 -0
  113. package/sa_std/fs.sal +51 -0
  114. package/sa_std/future.sa +2 -0
  115. package/sa_std/future.sal +1 -0
  116. package/sa_std/hash.sa +1486 -0
  117. package/sa_std/hash.sal +13 -0
  118. package/sa_std/hashmap.sa +1962 -0
  119. package/sa_std/hashmap.sal +20 -0
  120. package/sa_std/hashset.sa +1004 -0
  121. package/sa_std/hashset.sal +18 -0
  122. package/sa_std/http2.sa +78 -0
  123. package/sa_std/http2.sai +26 -0
  124. package/sa_std/http2.sal +36 -0
  125. package/sa_std/instant.sa +3 -0
  126. package/sa_std/instant.sal +2 -0
  127. package/sa_std/io/buf_reader.sa +43 -0
  128. package/sa_std/io/buf_writer.sa +35 -0
  129. package/sa_std/io/bufio.sa +4 -0
  130. package/sa_std/io/bufio.sal +4 -0
  131. package/sa_std/io/prelude.sa +1 -0
  132. package/sa_std/io/prelude.sal +1 -0
  133. package/sa_std/io/print.sa +2 -0
  134. package/sa_std/io/print.sai +3 -0
  135. package/sa_std/io.sa +925 -0
  136. package/sa_std/io.sai +25 -0
  137. package/sa_std/io.sal +84 -0
  138. package/sa_std/iter.sa +2 -0
  139. package/sa_std/iter.sal +1 -0
  140. package/sa_std/join_handle.sa +3 -0
  141. package/sa_std/join_handle.sal +2 -0
  142. package/sa_std/libsa_async.sa +80 -0
  143. package/sa_std/m_async.sa +137 -0
  144. package/sa_std/m_async.sal +30 -0
  145. package/sa_std/m_async.sla +2 -0
  146. package/sa_std/manually_drop.sa +3 -0
  147. package/sa_std/manually_drop.sal +2 -0
  148. package/sa_std/marker/phantom_data.sa +3 -0
  149. package/sa_std/marker/phantom_data.sal +1 -0
  150. package/sa_std/marker/prelude.sa +4 -0
  151. package/sa_std/marker/prelude.sal +4 -0
  152. package/sa_std/marker.sa +220 -0
  153. package/sa_std/marker.sal +15 -0
  154. package/sa_std/math.sa +84 -0
  155. package/sa_std/math.sai +10 -0
  156. package/sa_std/mem/manually_drop.sa +3 -0
  157. package/sa_std/mem/manually_drop.sal +1 -0
  158. package/sa_std/mem/prelude.sa +2 -0
  159. package/sa_std/mem/prelude.sal +2 -0
  160. package/sa_std/mem.sa +564 -0
  161. package/sa_std/mem.sal +40 -0
  162. package/sa_std/modstate.sai +19 -0
  163. package/sa_std/net.sa +4227 -0
  164. package/sa_std/net.sai +239 -0
  165. package/sa_std/net.sal +159 -0
  166. package/sa_std/netx.sa +85 -0
  167. package/sa_std/netx.sai +11 -0
  168. package/sa_std/netx.sal +39 -0
  169. package/sa_std/nonzero.sa +3 -0
  170. package/sa_std/nonzero.sal +2 -0
  171. package/sa_std/num/nonzero.sa +3 -0
  172. package/sa_std/num/nonzero.sal +1 -0
  173. package/sa_std/num/prelude.sa +3 -0
  174. package/sa_std/num/prelude.sal +3 -0
  175. package/sa_std/num.sa +17302 -0
  176. package/sa_std/num.sai +11 -0
  177. package/sa_std/num.sal +341 -0
  178. package/sa_std/ops.sa +1884 -0
  179. package/sa_std/ops.sal +68 -0
  180. package/sa_std/option.sa +2 -0
  181. package/sa_std/option.sal +1 -0
  182. package/sa_std/os/fd.sa +96 -0
  183. package/sa_std/os/fd.sai +7 -0
  184. package/sa_std/os/fd.sal +11 -0
  185. package/sa_std/os/prelude.sa +2 -0
  186. package/sa_std/os/prelude.sal +1 -0
  187. package/sa_std/os/unix_ffi.sa +271 -0
  188. package/sa_std/panic.sa +1 -0
  189. package/sa_std/panic.sal +1 -0
  190. package/sa_std/path.sa +3170 -0
  191. package/sa_std/path.sal +12 -0
  192. package/sa_std/phantom_data.sa +3 -0
  193. package/sa_std/phantom_data.sal +2 -0
  194. package/sa_std/pin.sa +79 -0
  195. package/sa_std/pin.sal +5 -0
  196. package/sa_std/plugin_async.sa +90 -0
  197. package/sa_std/plugin_async.sal +29 -0
  198. package/sa_std/plugin_async.sla +4 -0
  199. package/sa_std/plugin_http_async.sa +46 -0
  200. package/sa_std/plugin_http_server.sa +61 -0
  201. package/sa_std/plugin_http_server.sla +2 -0
  202. package/sa_std/plugin_sqlite.sa +106 -0
  203. package/sa_std/plugin_sqlite.sla +2 -0
  204. package/sa_std/prelude.sa +60 -0
  205. package/sa_std/prelude.sal +55 -0
  206. package/sa_std/process.sa +916 -0
  207. package/sa_std/process.sai +57 -0
  208. package/sa_std/process.sal +27 -0
  209. package/sa_std/ptr.sa +503 -0
  210. package/sa_std/ptr.sal +2 -0
  211. package/sa_std/result.sa +2 -0
  212. package/sa_std/result.sal +1 -0
  213. package/sa_std/rust_core.sa +51 -0
  214. package/sa_std/rust_core.sal +26 -0
  215. package/sa_std/sa.mod +7 -0
  216. package/sa_std/sort.sa +156 -0
  217. package/sa_std/str.sla +13 -0
  218. package/sa_std/string.sa +12240 -0
  219. package/sa_std/string.sai +25 -0
  220. package/sa_std/string.sal +17 -0
  221. package/sa_std/string_format.sa +269 -0
  222. package/sa_std/sync/atomic.sa +1500 -0
  223. package/sa_std/sync/atomic.sal +45 -0
  224. package/sa_std/sync/barrier.sa +105 -0
  225. package/sa_std/sync/barrier.sal +7 -0
  226. package/sa_std/sync/condvar.sa +240 -0
  227. package/sa_std/sync/condvar.sal +4 -0
  228. package/sa_std/sync/mpsc.sa +758 -0
  229. package/sa_std/sync/mpsc.sal +42 -0
  230. package/sa_std/sync/mpsc_list.sa +255 -0
  231. package/sa_std/sync/mpsc_list.sal +3 -0
  232. package/sa_std/sync/mutex.sa +182 -0
  233. package/sa_std/sync/mutex.sal +7 -0
  234. package/sa_std/sync/once.sa +371 -0
  235. package/sa_std/sync/once.sal +31 -0
  236. package/sa_std/sync/poison.sa +36 -0
  237. package/sa_std/sync/poison.sal +11 -0
  238. package/sa_std/sync/prelude.sa +8 -0
  239. package/sa_std/sync/prelude.sal +7 -0
  240. package/sa_std/sync/rwlock.sa +369 -0
  241. package/sa_std/sync/rwlock.sal +13 -0
  242. package/sa_std/task.sa +2 -0
  243. package/sa_std/task.sal +1 -0
  244. package/sa_std/term.sa +2 -0
  245. package/sa_std/term.sai +10 -0
  246. package/sa_std/term.sal +33 -0
  247. package/sa_std/testing/assert.sai +4 -0
  248. package/sa_std/testing/mock_io.sa +174 -0
  249. package/sa_std/testing/mock_io.sal +5 -0
  250. package/sa_std/testing/prelude.sa +2 -0
  251. package/sa_std/testing/prelude.sal +1 -0
  252. package/sa_std/text/prelude.sa +1 -0
  253. package/sa_std/text/prelude.sal +1 -0
  254. package/sa_std/text/regex.sa +2 -0
  255. package/sa_std/text/regex.sai +9 -0
  256. package/sa_std/text/regex.sal +33 -0
  257. package/sa_std/thread/join_handle.sa +3 -0
  258. package/sa_std/thread/join_handle.sal +1 -0
  259. package/sa_std/thread/prelude.sa +4 -0
  260. package/sa_std/thread/prelude.sal +3 -0
  261. package/sa_std/thread.sa +160 -0
  262. package/sa_std/thread.sai +11 -0
  263. package/sa_std/thread.sal +4 -0
  264. package/sa_std/thread_local.sa +45 -0
  265. package/sa_std/thread_local.sai +9 -0
  266. package/sa_std/time/duration.sa +3 -0
  267. package/sa_std/time/duration.sal +1 -0
  268. package/sa_std/time/instant.sa +3 -0
  269. package/sa_std/time/instant.sal +1 -0
  270. package/sa_std/time/prelude.sa +4 -0
  271. package/sa_std/time/prelude.sal +4 -0
  272. package/sa_std/time.sa +850 -0
  273. package/sa_std/time.sai +37 -0
  274. package/sa_std/time.sal +35 -0
  275. package/sa_std/time.sla +67 -0
  276. package/sa_std/tls_client.sai +39 -0
  277. package/sa_std/vec.sa +5754 -0
  278. package/sa_std/vec.sal +1 -0
  279. package/sa_std/vec_deque.sa +4925 -0
  280. package/sa_std/vec_deque.sal +8 -0
  281. package/sa_std/vec_runtime_macros.sa +11 -0
  282. package/sa_std/ws_client.sai +57 -0
@@ -0,0 +1,3003 @@
1
+ // Concrete u64 max-heap with grow-on-demand storage.
2
+ @import "core/mem.sa"
3
+ @import "core/slice.sal"
4
+ @import "core/slice.sa"
5
+ @import "core/iter.sa"
6
+ @import "alloc/vec.sal"
7
+ @import "vec.sa"
8
+ @import "num.sa"
9
+ @import "binary_heap.sal"
10
+
11
+ @binary_heap_swap(&heap: ptr, lhs: u64, rhs: u64) -> void:
12
+ L_ENTRY:
13
+ buf = take heap+BinaryHeap_buf
14
+ lhs_off = mul lhs, BinaryHeap_SLOT_SIZE
15
+ rhs_off = mul rhs, BinaryHeap_SLOT_SIZE
16
+ lhs_ptr = ptr_add buf, lhs_off
17
+ rhs_ptr = ptr_add buf, rhs_off
18
+ lhs_value = load lhs_ptr+0 as u64
19
+ rhs_value = load rhs_ptr+0 as u64
20
+ store lhs_ptr+0, rhs_value as u64
21
+ store rhs_ptr+0, lhs_value as u64
22
+ !lhs_value
23
+ !rhs_value
24
+ !lhs_ptr
25
+ !rhs_ptr
26
+ !lhs_off
27
+ !rhs_off
28
+ !buf
29
+ !rhs
30
+ !lhs
31
+ !heap
32
+ return
33
+
34
+ @export sa_binary_heap_new() -> ^ptr:
35
+ L_ENTRY:
36
+ heap = alloc BinaryHeap_SIZE
37
+ initial_bytes = mul BinaryHeap_INITIAL_CAP, BinaryHeap_SLOT_SIZE
38
+ buf = alloc initial_bytes
39
+ call @sa_mem_set(&buf, 0, initial_bytes)
40
+ store heap+BinaryHeap_buf, buf as ptr
41
+ store heap+BinaryHeap_cap, BinaryHeap_INITIAL_CAP as u64
42
+ store heap+BinaryHeap_len, 0 as u64
43
+ ^buf
44
+ !initial_bytes
45
+ return heap
46
+
47
+ @binary_heap_next_capacity(requested: u64) -> u64:
48
+ L_ENTRY:
49
+ cap = BinaryHeap_INITIAL_CAP
50
+ requested_is_zero = eq requested, 0
51
+ br requested_is_zero -> L_NEXT_CAP_ZERO, L_NEXT_CAP_LOOP
52
+
53
+ L_NEXT_CAP_LOOP:
54
+ cap_ge_requested = uge cap, requested
55
+ br cap_ge_requested -> L_NEXT_CAP_DONE, L_NEXT_CAP_GROW
56
+
57
+ L_NEXT_CAP_GROW:
58
+ EXPAND NUM_U64_CHECKED_ADD next_cap_ok, next_cap, cap, cap
59
+ br next_cap_ok -> L_NEXT_CAP_GROW_OK, L_NEXT_CAP_OVERFLOW
60
+
61
+ L_NEXT_CAP_OVERFLOW:
62
+ panic(1801)
63
+
64
+ L_NEXT_CAP_GROW_OK:
65
+ cap = next_cap
66
+ !next_cap_ok
67
+ !cap_ge_requested
68
+ jmp L_NEXT_CAP_LOOP
69
+
70
+ L_NEXT_CAP_DONE:
71
+ !cap_ge_requested
72
+ !requested_is_zero
73
+ !requested
74
+ return cap
75
+
76
+ L_NEXT_CAP_ZERO:
77
+ !requested_is_zero
78
+ !requested
79
+ return 0
80
+
81
+ @export sa_binary_heap_with_capacity(cap: u64) -> ^ptr:
82
+ L_ENTRY:
83
+ heap = alloc BinaryHeap_SIZE
84
+ target_cap = call @binary_heap_next_capacity(cap)
85
+ target_zero = eq target_cap, 0
86
+ br target_zero -> L_WITH_CAP_EMPTY, L_WITH_CAP_ALLOC
87
+
88
+ L_WITH_CAP_ALLOC:
89
+ EXPAND NUM_U64_CHECKED_MUL bytes_ok, bytes, target_cap, BinaryHeap_SLOT_SIZE
90
+ br bytes_ok -> L_WITH_CAP_ALLOC_BYTES_OK, L_WITH_CAP_ALLOC_OVERFLOW
91
+
92
+ L_WITH_CAP_ALLOC_OVERFLOW:
93
+ panic(1802)
94
+
95
+ L_WITH_CAP_ALLOC_BYTES_OK:
96
+ buf = alloc bytes
97
+ call @sa_mem_set(&buf, 0, bytes)
98
+ store heap+BinaryHeap_buf, buf as ptr
99
+ store heap+BinaryHeap_cap, target_cap as u64
100
+ store heap+BinaryHeap_len, 0 as u64
101
+ ^buf
102
+ !bytes_ok
103
+ !bytes
104
+ !target_zero
105
+ !target_cap
106
+ !cap
107
+ return heap
108
+
109
+ L_WITH_CAP_EMPTY:
110
+ store heap+BinaryHeap_buf, 0 as ptr
111
+ store heap+BinaryHeap_cap, 0 as u64
112
+ store heap+BinaryHeap_len, 0 as u64
113
+ !target_zero
114
+ !target_cap
115
+ !cap
116
+ return heap
117
+
118
+ @export sa_binary_heap_try_with_capacity(cap: u64, &out_heap_slot: ptr) -> i32:
119
+ L_ENTRY:
120
+ heap = call @sa_binary_heap_with_capacity(cap)
121
+ store out_heap_slot+0, heap as ptr
122
+ !heap
123
+ !out_heap_slot
124
+ !cap
125
+ return 1
126
+
127
+ @export sa_binary_heap_free(^heap: ptr) -> void:
128
+ L_ENTRY:
129
+ buf = take heap+BinaryHeap_buf
130
+ !buf
131
+ !heap
132
+ return
133
+
134
+ @export sa_binary_heap_len(&heap: ptr) -> u64:
135
+ L_ENTRY:
136
+ len = load heap+BinaryHeap_len as u64
137
+ !heap
138
+ return len
139
+
140
+ @export sa_binary_heap_capacity(&heap: ptr) -> u64:
141
+ L_ENTRY:
142
+ cap = load heap+BinaryHeap_cap as u64
143
+ !heap
144
+ return cap
145
+
146
+ @export sa_binary_heap_is_empty(&heap: ptr) -> i32:
147
+ L_ENTRY:
148
+ len = load heap+BinaryHeap_len as u64
149
+ empty = eq len, 0
150
+ result = empty as i32
151
+ !len
152
+ !heap
153
+ return result
154
+
155
+ @export sa_binary_heap_peek(&heap: ptr) -> u64:
156
+ L_ENTRY:
157
+ len = load heap+BinaryHeap_len as u64
158
+ empty = eq len, 0
159
+ br empty -> L_EMPTY, L_HIT
160
+
161
+ L_HIT:
162
+ buf = take heap+BinaryHeap_buf
163
+ root = load buf+0 as u64
164
+ !buf
165
+ !empty
166
+ !len
167
+ !heap
168
+ return root
169
+
170
+ L_EMPTY:
171
+ !empty
172
+ !len
173
+ !heap
174
+ return 0
175
+
176
+ @export sa_binary_heap_try_peek_mut_ptr(&heap: ptr, &out_ptr_slot: ptr) -> i32:
177
+ L_ENTRY:
178
+ len = load heap+BinaryHeap_len as u64
179
+ empty = eq len, 0
180
+ br empty -> L_PEEK_MUT_EMPTY, L_PEEK_MUT_READY
181
+
182
+ L_PEEK_MUT_READY:
183
+ buf = load heap+BinaryHeap_buf as ptr
184
+ store out_ptr_slot+0, buf as ptr
185
+ !buf
186
+ !empty
187
+ !len
188
+ !heap
189
+ !out_ptr_slot
190
+ return 1
191
+
192
+ L_PEEK_MUT_EMPTY:
193
+ store out_ptr_slot+0, 0 as ptr
194
+ !empty
195
+ !len
196
+ !heap
197
+ !out_ptr_slot
198
+ return 0
199
+
200
+ @export sa_binary_heap_try_peek_mut_set_u64(&heap: ptr, value: u64, &out_old_slot: ptr) -> i32:
201
+ L_ENTRY:
202
+ len = load heap+BinaryHeap_len as u64
203
+ empty = eq len, 0
204
+ br empty -> L_PEEK_SET_EMPTY, L_PEEK_SET_READY
205
+
206
+ L_PEEK_SET_READY:
207
+ buf = take heap+BinaryHeap_buf
208
+ old_value = load buf+0 as u64
209
+ store out_old_slot+0, old_value as u64
210
+ store buf+0, value as u64
211
+ call @binary_heap_sift_down(&heap, 0)
212
+ !old_value
213
+ !buf
214
+ !empty
215
+ !len
216
+ !value
217
+ !heap
218
+ !out_old_slot
219
+ return 1
220
+
221
+ L_PEEK_SET_EMPTY:
222
+ store out_old_slot+0, 0 as u64
223
+ !empty
224
+ !len
225
+ !value
226
+ !heap
227
+ !out_old_slot
228
+ return 0
229
+
230
+ @binary_heap_sift_up(&heap: ptr, index: u64) -> void:
231
+ L_ENTRY:
232
+ is_root = eq index, 0
233
+ br is_root -> L_DONE_ROOT, L_BODY
234
+
235
+ L_BODY:
236
+ idx_minus_one = sub index, 1
237
+ parent = udiv idx_minus_one, 2
238
+ buf = take heap+BinaryHeap_buf
239
+ child_off = mul index, BinaryHeap_SLOT_SIZE
240
+ parent_off = mul parent, BinaryHeap_SLOT_SIZE
241
+ child_ptr = ptr_add buf, child_off
242
+ parent_ptr = ptr_add buf, parent_off
243
+ child_value = load child_ptr+0 as u64
244
+ parent_value = load parent_ptr+0 as u64
245
+ should_swap = ugt child_value, parent_value
246
+ br should_swap -> L_SWAP, L_DONE_BODY
247
+
248
+ L_SWAP:
249
+ call @binary_heap_swap(&heap, parent, index)
250
+ call @binary_heap_sift_up(&heap, parent)
251
+ !should_swap
252
+ !child_value
253
+ !parent_value
254
+ !child_ptr
255
+ !parent_ptr
256
+ !child_off
257
+ !parent_off
258
+ !idx_minus_one
259
+ !buf
260
+ !parent
261
+ !index
262
+ !is_root
263
+ !heap
264
+ return
265
+
266
+ L_DONE_BODY:
267
+ !should_swap
268
+ !child_value
269
+ !parent_value
270
+ !child_ptr
271
+ !parent_ptr
272
+ !child_off
273
+ !parent_off
274
+ !idx_minus_one
275
+ !buf
276
+ !parent
277
+ !index
278
+ !is_root
279
+ !heap
280
+ return
281
+
282
+ L_DONE_ROOT:
283
+ !is_root
284
+ !index
285
+ !heap
286
+ return
287
+
288
+ @binary_heap_sift_down(&heap: ptr, index: u64) -> void:
289
+ L_ENTRY:
290
+ len = load heap+BinaryHeap_len as u64
291
+ left_base = mul index, 2
292
+ left = add left_base, 1
293
+ has_left = ult left, len
294
+ br has_left -> L_BODY, L_DONE_SHORT
295
+
296
+ L_BODY:
297
+ buf = take heap+BinaryHeap_buf
298
+ parent_off = mul index, BinaryHeap_SLOT_SIZE
299
+ parent_ptr = ptr_add buf, parent_off
300
+ parent_value = load parent_ptr+0 as u64
301
+ left_off = mul left, BinaryHeap_SLOT_SIZE
302
+ left_ptr = ptr_add buf, left_off
303
+ left_value = load left_ptr+0 as u64
304
+ right = add left, 1
305
+ has_right = ult right, len
306
+ br has_right -> L_RIGHT_BRANCH, L_LEFT_ONLY
307
+
308
+ L_LEFT_ONLY:
309
+ should_swap = ugt left_value, parent_value
310
+ br should_swap -> L_SWAP_LEFT_ONLY, L_DONE_LEFT_ONLY
311
+
312
+ L_RIGHT_BRANCH:
313
+ right_off = mul right, BinaryHeap_SLOT_SIZE
314
+ right_ptr = ptr_add buf, right_off
315
+ right_value = load right_ptr+0 as u64
316
+ right_bigger = ugt right_value, left_value
317
+ br right_bigger -> L_RIGHT_BIGGER, L_LEFT_BIGGER
318
+
319
+ L_RIGHT_BIGGER:
320
+ should_swap = ugt right_value, parent_value
321
+ br should_swap -> L_SWAP_RIGHT, L_DONE_RIGHT_BRANCH
322
+
323
+ L_LEFT_BIGGER:
324
+ should_swap = ugt left_value, parent_value
325
+ br should_swap -> L_SWAP_LEFT_RIGHT, L_DONE_RIGHT_BRANCH
326
+
327
+ L_SWAP_RIGHT:
328
+ call @binary_heap_swap(&heap, index, right)
329
+ call @binary_heap_sift_down(&heap, right)
330
+ !should_swap
331
+ !right_bigger
332
+ !right_value
333
+ !right_ptr
334
+ !right_off
335
+ !has_right
336
+ !right
337
+ !left_value
338
+ !left_ptr
339
+ !left_off
340
+ !parent_value
341
+ !parent_ptr
342
+ !parent_off
343
+ !buf
344
+ !len
345
+ !left_base
346
+ !left
347
+ !index
348
+ !heap
349
+ return
350
+
351
+ L_SWAP_LEFT_RIGHT:
352
+ call @binary_heap_swap(&heap, index, left)
353
+ call @binary_heap_sift_down(&heap, left)
354
+ !should_swap
355
+ !right_bigger
356
+ !right_value
357
+ !right_ptr
358
+ !right_off
359
+ !has_right
360
+ !right
361
+ !left_value
362
+ !left_ptr
363
+ !left_off
364
+ !parent_value
365
+ !parent_ptr
366
+ !parent_off
367
+ !buf
368
+ !len
369
+ !left_base
370
+ !left
371
+ !index
372
+ !heap
373
+ return
374
+
375
+ L_SWAP_LEFT_ONLY:
376
+ call @binary_heap_swap(&heap, index, left)
377
+ call @binary_heap_sift_down(&heap, left)
378
+ !should_swap
379
+ !left_value
380
+ !left_ptr
381
+ !left_off
382
+ !parent_value
383
+ !parent_ptr
384
+ !parent_off
385
+ !buf
386
+ !len
387
+ !left_base
388
+ !left
389
+ !has_left
390
+ !index
391
+ !heap
392
+ return
393
+
394
+ L_DONE_RIGHT_BRANCH:
395
+ !should_swap
396
+ !right_bigger
397
+ !right_value
398
+ !right_ptr
399
+ !right_off
400
+ !has_right
401
+ !right
402
+ !left_value
403
+ !left_ptr
404
+ !left_off
405
+ !parent_value
406
+ !parent_ptr
407
+ !parent_off
408
+ !buf
409
+ !len
410
+ !left_base
411
+ !left
412
+ !index
413
+ !heap
414
+ return
415
+
416
+ L_DONE_LEFT_ONLY:
417
+ !should_swap
418
+ !left_value
419
+ !left_ptr
420
+ !left_off
421
+ !parent_value
422
+ !parent_ptr
423
+ !parent_off
424
+ !buf
425
+ !len
426
+ !left_base
427
+ !left
428
+ !has_left
429
+ !index
430
+ !heap
431
+ return
432
+
433
+ L_DONE_SHORT:
434
+ !has_left
435
+ !left_base
436
+ !left
437
+ !len
438
+ !index
439
+ !heap
440
+ return
441
+
442
+ @binary_heap_grow(&heap: ptr) -> void:
443
+ L_ENTRY:
444
+ old_buf = take heap+BinaryHeap_buf
445
+ old_cap = load heap+BinaryHeap_cap as u64
446
+ old_len = load heap+BinaryHeap_len as u64
447
+ cap_is_zero = eq old_cap, 0
448
+ br cap_is_zero -> L_GROW_INIT, L_GROW_DOUBLE
449
+
450
+ L_GROW_INIT:
451
+ next_cap_raw = BinaryHeap_INITIAL_CAP
452
+ next_cap = next_cap_raw
453
+ next_cap_ok = add 0, 1
454
+ jmp L_GROW_ALLOC
455
+
456
+ L_GROW_DOUBLE:
457
+ EXPAND NUM_U64_CHECKED_ADD next_cap_ok, next_cap_raw, old_cap, old_cap
458
+ br next_cap_ok -> L_GROW_DOUBLE_OK, L_GROW_CAP_OVERFLOW
459
+
460
+ L_GROW_CAP_OVERFLOW:
461
+ panic(1803)
462
+
463
+ L_GROW_DOUBLE_OK:
464
+ next_cap = next_cap_raw
465
+ jmp L_GROW_ALLOC
466
+
467
+ L_GROW_ALLOC:
468
+ EXPAND NUM_U64_CHECKED_MUL copy_bytes_ok, copy_bytes, old_len, BinaryHeap_SLOT_SIZE
469
+ br copy_bytes_ok -> L_GROW_COPY_BYTES_OK, L_GROW_COPY_BYTES_OVERFLOW
470
+
471
+ L_GROW_COPY_BYTES_OVERFLOW:
472
+ panic(1804)
473
+
474
+ L_GROW_COPY_BYTES_OK:
475
+ EXPAND NUM_U64_CHECKED_MUL new_bytes_ok, new_bytes, next_cap, BinaryHeap_SLOT_SIZE
476
+ br new_bytes_ok -> L_GROW_ALLOC_BYTES_OK, L_GROW_ALLOC_BYTES_OVERFLOW
477
+
478
+ L_GROW_ALLOC_BYTES_OVERFLOW:
479
+ panic(1805)
480
+
481
+ L_GROW_ALLOC_BYTES_OK:
482
+ new_buf = alloc new_bytes
483
+ call @sa_mem_copy(&new_buf, &old_buf, copy_bytes)
484
+ !new_bytes_ok
485
+ !copy_bytes_ok
486
+ !copy_bytes
487
+ !new_bytes
488
+ !old_len
489
+ !old_cap
490
+ !cap_is_zero
491
+ !old_buf
492
+ store heap+BinaryHeap_buf, new_buf as ptr
493
+ store heap+BinaryHeap_cap, next_cap as u64
494
+ ^new_buf
495
+ !next_cap_ok
496
+ !next_cap
497
+ !heap
498
+ return
499
+
500
+ @binary_heap_realloc(&heap: ptr, target_cap: u64) -> void:
501
+ L_ENTRY:
502
+ old_buf = take heap+BinaryHeap_buf
503
+ len = load heap+BinaryHeap_len as u64
504
+ target_zero = eq target_cap, 0
505
+ br target_zero -> L_REALLOC_EMPTY, L_REALLOC_ALLOC
506
+
507
+ L_REALLOC_ALLOC:
508
+ EXPAND NUM_U64_CHECKED_MUL realloc_new_bytes_ok, new_bytes, target_cap, BinaryHeap_SLOT_SIZE
509
+ br realloc_new_bytes_ok -> L_REALLOC_NEW_BYTES_OK, L_REALLOC_NEW_BYTES_OVERFLOW
510
+
511
+ L_REALLOC_NEW_BYTES_OVERFLOW:
512
+ panic(1806)
513
+
514
+ L_REALLOC_NEW_BYTES_OK:
515
+ EXPAND NUM_U64_CHECKED_MUL realloc_copy_bytes_ok, copy_bytes, len, BinaryHeap_SLOT_SIZE
516
+ br realloc_copy_bytes_ok -> L_REALLOC_COPY_BYTES_OK, L_REALLOC_COPY_BYTES_OVERFLOW
517
+
518
+ L_REALLOC_COPY_BYTES_OVERFLOW:
519
+ panic(1807)
520
+
521
+ L_REALLOC_COPY_BYTES_OK:
522
+ new_buf = alloc new_bytes
523
+ call @sa_mem_set(&new_buf, 0, new_bytes)
524
+ call @sa_mem_copy(&new_buf, &old_buf, copy_bytes)
525
+ !realloc_copy_bytes_ok
526
+ !realloc_new_bytes_ok
527
+ !copy_bytes
528
+ !new_bytes
529
+ !old_buf
530
+ store heap+BinaryHeap_buf, new_buf as ptr
531
+ store heap+BinaryHeap_cap, target_cap as u64
532
+ ^new_buf
533
+ !target_zero
534
+ !len
535
+ !target_cap
536
+ !heap
537
+ return
538
+
539
+ L_REALLOC_EMPTY:
540
+ !old_buf
541
+ store heap+BinaryHeap_buf, 0 as ptr
542
+ store heap+BinaryHeap_cap, 0 as u64
543
+ store heap+BinaryHeap_len, 0 as u64
544
+ !target_zero
545
+ !len
546
+ !target_cap
547
+ !heap
548
+ return
549
+
550
+ @export sa_binary_heap_reserve(&heap: ptr, additional: u64) -> void:
551
+ L_ENTRY:
552
+ len = load heap+BinaryHeap_len as u64
553
+ cap = load heap+BinaryHeap_cap as u64
554
+ EXPAND NUM_U64_CHECKED_ADD reserve_needed_ok, needed, len, additional
555
+ br reserve_needed_ok -> L_RESERVE_NEEDED_OK, L_RESERVE_OVERFLOW
556
+
557
+ L_RESERVE_OVERFLOW:
558
+ panic(1810)
559
+
560
+ L_RESERVE_NEEDED_OK:
561
+ has_room = uge cap, needed
562
+ br has_room -> L_RESERVE_DONE, L_RESERVE_GROW
563
+
564
+ L_RESERVE_GROW:
565
+ target_cap = call @binary_heap_next_capacity(needed)
566
+ call @binary_heap_realloc(&heap, target_cap)
567
+ !target_cap
568
+ !has_room
569
+ !needed
570
+ !reserve_needed_ok
571
+ !cap
572
+ !len
573
+ !additional
574
+ !heap
575
+ return
576
+
577
+ L_RESERVE_DONE:
578
+ !has_room
579
+ !needed
580
+ !reserve_needed_ok
581
+ !cap
582
+ !len
583
+ !additional
584
+ !heap
585
+ return
586
+
587
+ @export sa_binary_heap_reserve_exact(&heap: ptr, additional: u64) -> void:
588
+ L_ENTRY:
589
+ len = load heap+BinaryHeap_len as u64
590
+ cap = load heap+BinaryHeap_cap as u64
591
+ EXPAND NUM_U64_CHECKED_ADD reserve_exact_needed_ok, needed, len, additional
592
+ br reserve_exact_needed_ok -> L_RESERVE_EXACT_NEEDED_OK, L_RESERVE_EXACT_OVERFLOW
593
+
594
+ L_RESERVE_EXACT_OVERFLOW:
595
+ panic(1811)
596
+
597
+ L_RESERVE_EXACT_NEEDED_OK:
598
+ has_room = uge cap, needed
599
+ br has_room -> L_RESERVE_EXACT_DONE, L_RESERVE_EXACT_GROW
600
+
601
+ L_RESERVE_EXACT_GROW:
602
+ call @binary_heap_realloc(&heap, needed)
603
+ !has_room
604
+ !needed
605
+ !reserve_exact_needed_ok
606
+ !cap
607
+ !len
608
+ !additional
609
+ !heap
610
+ return
611
+
612
+ L_RESERVE_EXACT_DONE:
613
+ !has_room
614
+ !needed
615
+ !reserve_exact_needed_ok
616
+ !cap
617
+ !len
618
+ !additional
619
+ !heap
620
+ return
621
+
622
+ @export sa_binary_heap_try_reserve(&heap: ptr, additional: u64) -> i32:
623
+ L_ENTRY:
624
+ call @sa_binary_heap_reserve(&heap, additional)
625
+ !additional
626
+ !heap
627
+ return 1
628
+
629
+ @export sa_binary_heap_try_reserve_exact(&heap: ptr, additional: u64) -> i32:
630
+ L_ENTRY:
631
+ call @sa_binary_heap_reserve_exact(&heap, additional)
632
+ !additional
633
+ !heap
634
+ return 1
635
+
636
+ @export sa_binary_heap_shrink_to(&heap: ptr, min_capacity: u64) -> void:
637
+ L_ENTRY:
638
+ len = load heap+BinaryHeap_len as u64
639
+ cap = load heap+BinaryHeap_cap as u64
640
+ keep_len = uge len, min_capacity
641
+ br keep_len -> L_SHRINK_TO_LEN, L_SHRINK_TO_MIN
642
+
643
+ L_SHRINK_TO_LEN:
644
+ target_cap = add len, 0
645
+ jmp L_SHRINK_TO_CHECK
646
+
647
+ L_SHRINK_TO_MIN:
648
+ target_cap = add min_capacity, 0
649
+
650
+ L_SHRINK_TO_CHECK:
651
+ needs_shrink = ult target_cap, cap
652
+ br needs_shrink -> L_SHRINK_TO_APPLY, L_SHRINK_TO_DONE
653
+
654
+ L_SHRINK_TO_APPLY:
655
+ call @binary_heap_realloc(&heap, target_cap)
656
+ !needs_shrink
657
+ !target_cap
658
+ !keep_len
659
+ !cap
660
+ !len
661
+ !min_capacity
662
+ !heap
663
+ return
664
+
665
+ L_SHRINK_TO_DONE:
666
+ !needs_shrink
667
+ !target_cap
668
+ !keep_len
669
+ !cap
670
+ !len
671
+ !min_capacity
672
+ !heap
673
+ return
674
+
675
+ @export sa_binary_heap_shrink_to_fit(&heap: ptr) -> void:
676
+ L_ENTRY:
677
+ len = load heap+BinaryHeap_len as u64
678
+ cap = load heap+BinaryHeap_cap as u64
679
+ needs_shrink = ne cap, len
680
+ br needs_shrink -> L_SHRINK, L_SHRINK_DONE
681
+
682
+ L_SHRINK:
683
+ call @binary_heap_realloc(&heap, len)
684
+ !needs_shrink
685
+ !cap
686
+ !len
687
+ !heap
688
+ return
689
+
690
+ L_SHRINK_DONE:
691
+ !needs_shrink
692
+ !cap
693
+ !len
694
+ !heap
695
+ return
696
+
697
+ @export sa_binary_heap_as_slice(&heap: ptr, &out_slice: ptr) -> void:
698
+ L_ENTRY:
699
+ buf = load heap+BinaryHeap_buf as ptr
700
+ len = load heap+BinaryHeap_len as u64
701
+ store out_slice+Slice_ptr, buf as ptr
702
+ store out_slice+Slice_len, len as u64
703
+ !len
704
+ !buf
705
+ !out_slice
706
+ !heap
707
+ return
708
+
709
+ @export sa_binary_heap_as_mut_slice(&heap: ptr, &out_slice: ptr) -> void:
710
+ L_ENTRY:
711
+ call @sa_binary_heap_as_slice(&heap, &out_slice)
712
+ !out_slice
713
+ !heap
714
+ return
715
+
716
+ @export sa_binary_heap_into_vec(^heap: ptr) -> ^ptr:
717
+ L_ENTRY:
718
+ return heap
719
+
720
+ @export sa_binary_heap_into_sorted_vec(^heap: ptr) -> ^ptr:
721
+ L_ENTRY:
722
+ len = load heap+BinaryHeap_len as u64
723
+ out_vec = alloc Vec_SIZE
724
+ EXPAND NUM_U64_CHECKED_MUL sort_bytes_ok, bytes, len, BinaryHeap_SLOT_SIZE
725
+ br sort_bytes_ok -> L_SORT_BYTES_OK, L_SORT_BYTES_OVERFLOW
726
+
727
+ L_SORT_BYTES_OVERFLOW:
728
+ panic(1808)
729
+
730
+ L_SORT_BYTES_OK:
731
+ has_bytes = ne bytes, 0
732
+ br has_bytes -> L_SORT_ALLOC, L_SORT_EMPTY
733
+
734
+ L_SORT_ALLOC:
735
+ out_buf = alloc bytes
736
+ call @sa_mem_set(&out_buf, 0, bytes)
737
+ store out_vec+Vec_ptr, out_buf as ptr
738
+ ^out_buf
739
+ jmp L_SORT_INIT
740
+
741
+ L_SORT_EMPTY:
742
+ store out_vec+Vec_ptr, 0 as ptr
743
+ jmp L_SORT_INIT
744
+
745
+ L_SORT_INIT:
746
+ store out_vec+Vec_cap, len as u64
747
+ store out_vec+Vec_len, len as u64
748
+ idx_slot = stack_alloc 8
749
+ value_slot = stack_alloc 8
750
+ store idx_slot+0, len as u64
751
+ jmp L_SORT_HEAD
752
+
753
+ L_SORT_HEAD:
754
+ idx = load idx_slot+0 as u64
755
+ done = eq idx, 0
756
+ br done -> L_SORT_DONE, L_SORT_BODY
757
+
758
+ L_SORT_BODY:
759
+ next_idx = sub idx, 1
760
+ ok = call @sa_binary_heap_try_pop(&heap, &value_slot)
761
+ value = load value_slot+0 as u64
762
+ out_buf2 = load out_vec+Vec_ptr as ptr
763
+ off = mul next_idx, BinaryHeap_SLOT_SIZE
764
+ slot = ptr_add out_buf2, off
765
+ store slot+0, value as u64
766
+ store idx_slot+0, next_idx as u64
767
+ !slot
768
+ !off
769
+ !out_buf2
770
+ !value
771
+ !ok
772
+ !next_idx
773
+ !done
774
+ !idx
775
+ jmp L_SORT_HEAD
776
+
777
+ L_SORT_DONE:
778
+ call @sa_binary_heap_free(^heap)
779
+ !done
780
+ !idx
781
+ !has_bytes
782
+ !sort_bytes_ok
783
+ !bytes
784
+ !len
785
+ return out_vec
786
+
787
+ @export sa_binary_heap_push(&heap: ptr, value: u64) -> void:
788
+ L_ENTRY:
789
+ len = load heap+BinaryHeap_len as u64
790
+ cap = load heap+BinaryHeap_cap as u64
791
+ room = ult len, cap
792
+ br room -> L_INSERT_RELEASE, L_GROW
793
+
794
+ L_GROW:
795
+ call @binary_heap_grow(&heap)
796
+ !room
797
+ !cap
798
+ !len
799
+ jmp L_INSERT_WRITE
800
+
801
+ L_INSERT_RELEASE:
802
+ !room
803
+ !cap
804
+ !len
805
+ jmp L_INSERT_WRITE
806
+
807
+ L_INSERT_WRITE:
808
+ len2 = load heap+BinaryHeap_len as u64
809
+ buf = take heap+BinaryHeap_buf
810
+ slot_off = mul len2, BinaryHeap_SLOT_SIZE
811
+ slot = ptr_add buf, slot_off
812
+ store slot+0, value as u64
813
+ next_len = add len2, 1
814
+ store heap+BinaryHeap_len, next_len as u64
815
+ call @binary_heap_sift_up(&heap, len2)
816
+ !slot
817
+ !slot_off
818
+ !next_len
819
+ !buf
820
+ !len2
821
+ !value
822
+ !heap
823
+ return
824
+
825
+ @export sa_binary_heap_try_pop(&heap: ptr, &out_value_slot: ptr) -> i32:
826
+ L_ENTRY:
827
+ len = load heap+BinaryHeap_len as u64
828
+ empty = eq len, 0
829
+ br empty -> L_EMPTY, L_READY
830
+
831
+ L_READY:
832
+ buf = take heap+BinaryHeap_buf
833
+ root_ptr = take heap+BinaryHeap_buf
834
+ value = load root_ptr+0 as u64
835
+ last_index = sub len, 1
836
+ last_off = mul last_index, BinaryHeap_SLOT_SIZE
837
+ last_ptr = ptr_add buf, last_off
838
+ last_value = load last_ptr+0 as u64
839
+ next_len = sub len, 1
840
+ store out_value_slot+0, value as u64
841
+ store heap+BinaryHeap_len, next_len as u64
842
+ store root_ptr+0, last_value as u64
843
+ call @binary_heap_sift_down(&heap, 0)
844
+ !last_value
845
+ !last_ptr
846
+ !last_off
847
+ !last_index
848
+ !value
849
+ !root_ptr
850
+ !next_len
851
+ !buf
852
+ !len
853
+ !empty
854
+ !out_value_slot
855
+ !heap
856
+ return 1
857
+
858
+ L_EMPTY:
859
+ store out_value_slot+0, 0 as u64
860
+ !empty
861
+ !len
862
+ !out_value_slot
863
+ !heap
864
+ return 0
865
+
866
+ @export sa_binary_heap_clear(&heap: ptr) -> void:
867
+ L_ENTRY:
868
+ buf = take heap+BinaryHeap_buf
869
+ cap = load heap+BinaryHeap_cap as u64
870
+ EXPAND NUM_U64_CHECKED_MUL clear_bytes_ok, bytes, cap, BinaryHeap_SLOT_SIZE
871
+ br clear_bytes_ok -> L_CLEAR_BYTES_OK, L_CLEAR_BYTES_OVERFLOW
872
+
873
+ L_CLEAR_BYTES_OVERFLOW:
874
+ panic(1809)
875
+
876
+ L_CLEAR_BYTES_OK:
877
+ has_buf = ne buf, 0
878
+ br has_buf -> L_CLEAR_BUF, L_CLEAR_SKIP
879
+ L_CLEAR_BUF:
880
+ call @sa_mem_set(&buf, 0, bytes)
881
+ !bytes
882
+ store heap+BinaryHeap_len, 0 as u64
883
+ !has_buf
884
+ !clear_bytes_ok
885
+ !buf
886
+ !cap
887
+ !heap
888
+ return
889
+ L_CLEAR_SKIP:
890
+ !bytes
891
+ store heap+BinaryHeap_len, 0 as u64
892
+ !has_buf
893
+ !clear_bytes_ok
894
+ !buf
895
+ !cap
896
+ !heap
897
+ return
898
+
899
+ @export sa_binary_heap_append(&heap: ptr, &other: ptr) -> void:
900
+ L_ENTRY:
901
+ value_slot = stack_alloc 8
902
+ jmp L_APPEND_LOOP
903
+
904
+ L_APPEND_LOOP:
905
+ ok = call @sa_binary_heap_try_pop(&other, &value_slot)
906
+ br ok -> L_APPEND_PUSH, L_APPEND_DONE
907
+
908
+ L_APPEND_PUSH:
909
+ value = load value_slot+0 as u64
910
+ call @sa_binary_heap_push(&heap, value)
911
+ !value
912
+ !ok
913
+ jmp L_APPEND_LOOP
914
+
915
+ L_APPEND_DONE:
916
+ !ok
917
+ !other
918
+ !heap
919
+ return
920
+
921
+ [MACRO] BINARY_HEAP_NEW %out_heap
922
+ %out_heap = call @sa_binary_heap_new()
923
+ [END_MACRO]
924
+
925
+ [MACRO] BINARY_HEAP_WITH_CAPACITY %out_heap, %cap
926
+ %out_heap = call @sa_binary_heap_with_capacity(%cap)
927
+ [END_MACRO]
928
+
929
+ [MACRO] BINARY_HEAP_TRY_WITH_CAPACITY %out_ok, %out_heap, %cap
930
+ __binary_heap_try_new_slot_%out_ok = stack_alloc 8
931
+ %out_ok = call @sa_binary_heap_try_with_capacity(%cap, &__binary_heap_try_new_slot_%out_ok)
932
+ %out_heap = load __binary_heap_try_new_slot_%out_ok+0 as ptr
933
+ [END_MACRO]
934
+
935
+ [MACRO] BINARY_HEAP_FREE %heap_reg
936
+ call @sa_binary_heap_free(^%heap_reg)
937
+ [END_MACRO]
938
+
939
+ [MACRO] BINARY_HEAP_LEN %out_len, %heap_reg
940
+ %out_len = call @sa_binary_heap_len(&%heap_reg)
941
+ [END_MACRO]
942
+
943
+ [MACRO] BINARY_HEAP_CAPACITY %out_cap, %heap_reg
944
+ %out_cap = call @sa_binary_heap_capacity(&%heap_reg)
945
+ [END_MACRO]
946
+
947
+ [MACRO] BINARY_HEAP_RESERVE %heap_reg, %additional
948
+ call @sa_binary_heap_reserve(&%heap_reg, %additional)
949
+ [END_MACRO]
950
+
951
+ [MACRO] BINARY_HEAP_RESERVE_EXACT %heap_reg, %additional
952
+ call @sa_binary_heap_reserve_exact(&%heap_reg, %additional)
953
+ [END_MACRO]
954
+
955
+ [MACRO] BINARY_HEAP_TRY_RESERVE %out_ok, %heap_reg, %additional
956
+ %out_ok = call @sa_binary_heap_try_reserve(&%heap_reg, %additional)
957
+ [END_MACRO]
958
+
959
+ [MACRO] BINARY_HEAP_TRY_RESERVE_EXACT %out_ok, %heap_reg, %additional
960
+ %out_ok = call @sa_binary_heap_try_reserve_exact(&%heap_reg, %additional)
961
+ [END_MACRO]
962
+
963
+ [MACRO] BINARY_HEAP_SHRINK_TO %heap_reg, %min_capacity
964
+ call @sa_binary_heap_shrink_to(&%heap_reg, %min_capacity)
965
+ [END_MACRO]
966
+
967
+ [MACRO] BINARY_HEAP_SHRINK_TO_FIT %heap_reg
968
+ call @sa_binary_heap_shrink_to_fit(&%heap_reg)
969
+ [END_MACRO]
970
+
971
+ [MACRO] BINARY_HEAP_AS_SLICE %out_slice, %heap_reg
972
+ %out_slice = alloc Slice_SIZE
973
+ call @sa_binary_heap_as_slice(&%heap_reg, &%out_slice)
974
+ [END_MACRO]
975
+
976
+ [MACRO] BINARY_HEAP_AS_MUT_SLICE %out_slice, %heap_reg
977
+ %out_slice = alloc Slice_SIZE
978
+ call @sa_binary_heap_as_mut_slice(&%heap_reg, &%out_slice)
979
+ [END_MACRO]
980
+
981
+ [MACRO] BINARY_HEAP_ITER_U64 %out_iter, %heap_reg
982
+ __binary_heap_iter_slice_%out_iter = stack_alloc Slice_SIZE
983
+ call @sa_binary_heap_as_slice(&%heap_reg, &__binary_heap_iter_slice_%out_iter)
984
+ EXPAND ITER_FROM_SLICE %out_iter, __binary_heap_iter_slice_%out_iter
985
+ [END_MACRO]
986
+
987
+ // Rust method-name alias over BINARY_HEAP_ITER_U64.
988
+ [MACRO] BINARY_HEAP_ITER %out_iter, %heap_reg
989
+ EXPAND BINARY_HEAP_ITER_U64 %out_iter, %heap_reg
990
+ [END_MACRO]
991
+
992
+ [MACRO] BINARY_HEAP_REF_INTO_ITER_U64 %out_iter, %heap_reg
993
+ EXPAND BINARY_HEAP_ITER_U64 %out_iter, %heap_reg
994
+ [END_MACRO]
995
+
996
+ // Rust method-name alias over BINARY_HEAP_REF_INTO_ITER_U64.
997
+ [MACRO] BINARY_HEAP_REF_INTO_ITER %out_iter, %heap_reg
998
+ EXPAND BINARY_HEAP_REF_INTO_ITER_U64 %out_iter, %heap_reg
999
+ [END_MACRO]
1000
+
1001
+ [MACRO] BINARY_HEAP_ITER_DEFAULT_U64 %out_iter
1002
+ __binary_heap_iter_default_slice_%out_iter = stack_alloc Slice_SIZE
1003
+ EXPAND SLICE_NEW __binary_heap_iter_default_slice_%out_iter, 0, 0
1004
+ EXPAND ITER_FROM_SLICE %out_iter, __binary_heap_iter_default_slice_%out_iter
1005
+ [END_MACRO]
1006
+
1007
+ // Rust method-name alias over BINARY_HEAP_ITER_DEFAULT_U64.
1008
+ [MACRO] BINARY_HEAP_ITER_DEFAULT %out_iter
1009
+ EXPAND BINARY_HEAP_ITER_DEFAULT_U64 %out_iter
1010
+ [END_MACRO]
1011
+
1012
+ [MACRO] BINARY_HEAP_ITER_CLONE_U64 %out_iter, %iter_reg
1013
+ EXPAND ITER_CLONE %out_iter, %iter_reg
1014
+ [END_MACRO]
1015
+
1016
+ // Rust method-name alias over BINARY_HEAP_ITER_CLONE_U64.
1017
+ [MACRO] BINARY_HEAP_ITER_CLONE %out_iter, %iter_reg
1018
+ EXPAND BINARY_HEAP_ITER_CLONE_U64 %out_iter, %iter_reg
1019
+ [END_MACRO]
1020
+
1021
+ [MACRO] BINARY_HEAP_ITER_NEXT_U64 %out_has, %out_value, %iter_reg
1022
+ EXPAND ITER_NEXT_U64 %out_has, %out_value, %iter_reg
1023
+ [END_MACRO]
1024
+
1025
+ // Rust method-name alias over BINARY_HEAP_ITER_NEXT_U64.
1026
+ [MACRO] BINARY_HEAP_ITER_NEXT %out_has, %out_value, %iter_reg
1027
+ EXPAND BINARY_HEAP_ITER_NEXT_U64 %out_has, %out_value, %iter_reg
1028
+ [END_MACRO]
1029
+
1030
+ [MACRO] BINARY_HEAP_ITER_NEXT_BACK_U64 %out_has, %out_value, %iter_reg
1031
+ EXPAND ITER_NEXT_BACK_U64 %out_has, %out_value, %iter_reg
1032
+ [END_MACRO]
1033
+
1034
+ // Rust method-name alias over BINARY_HEAP_ITER_NEXT_BACK_U64.
1035
+ [MACRO] BINARY_HEAP_ITER_NEXT_BACK %out_has, %out_value, %iter_reg
1036
+ EXPAND BINARY_HEAP_ITER_NEXT_BACK_U64 %out_has, %out_value, %iter_reg
1037
+ [END_MACRO]
1038
+
1039
+ [MACRO] BINARY_HEAP_ITER_NTH_U64 %out_has, %out_value, %iter_reg, %nth
1040
+ EXPAND ITER_NTH_U64 %out_has, %out_value, %iter_reg, %nth
1041
+ [END_MACRO]
1042
+
1043
+ // Rust method-name alias over BINARY_HEAP_ITER_NTH_U64.
1044
+ [MACRO] BINARY_HEAP_ITER_NTH %out_has, %out_value, %iter_reg, %nth
1045
+ EXPAND BINARY_HEAP_ITER_NTH_U64 %out_has, %out_value, %iter_reg, %nth
1046
+ [END_MACRO]
1047
+
1048
+ [MACRO] BINARY_HEAP_ITER_NTH_BACK_U64 %out_has, %out_value, %iter_reg, %nth
1049
+ EXPAND ITER_NTH_BACK_U64 %out_has, %out_value, %iter_reg, %nth
1050
+ [END_MACRO]
1051
+
1052
+ // Rust method-name alias over BINARY_HEAP_ITER_NTH_BACK_U64.
1053
+ [MACRO] BINARY_HEAP_ITER_NTH_BACK %out_has, %out_value, %iter_reg, %nth
1054
+ EXPAND BINARY_HEAP_ITER_NTH_BACK_U64 %out_has, %out_value, %iter_reg, %nth
1055
+ [END_MACRO]
1056
+
1057
+ [MACRO] BINARY_HEAP_ITER_TRY_NEXT_CHUNK_U64 %out_ok, %out_filled, %iter_reg, %dst_ptr, %count
1058
+ EXPAND ITER_TRY_NEXT_CHUNK_U64 %out_ok, %out_filled, %iter_reg, %dst_ptr, %count
1059
+ [END_MACRO]
1060
+
1061
+ // Rust method-name alias over BINARY_HEAP_ITER_TRY_NEXT_CHUNK_U64.
1062
+ [MACRO] BINARY_HEAP_ITER_TRY_NEXT_CHUNK %out_ok, %out_filled, %iter_reg, %dst_ptr, %count
1063
+ EXPAND BINARY_HEAP_ITER_TRY_NEXT_CHUNK_U64 %out_ok, %out_filled, %iter_reg, %dst_ptr, %count
1064
+ [END_MACRO]
1065
+
1066
+ [MACRO] BINARY_HEAP_ITER_ADVANCE_BY %out_ok, %out_remaining, %iter_reg, %count
1067
+ EXPAND ITER_ADVANCE_BY %out_ok, %out_remaining, %iter_reg, %count
1068
+ [END_MACRO]
1069
+
1070
+ [MACRO] BINARY_HEAP_ITER_ADVANCE_BACK_BY %out_ok, %out_remaining, %iter_reg, %count
1071
+ EXPAND ITER_ADVANCE_BACK_BY %out_ok, %out_remaining, %iter_reg, %count
1072
+ [END_MACRO]
1073
+
1074
+ [MACRO] BINARY_HEAP_ITER_COUNT_U64 %out_count, %iter_reg
1075
+ EXPAND ITER_COUNT %out_count, %iter_reg
1076
+ [END_MACRO]
1077
+
1078
+ // Rust method-name alias over BINARY_HEAP_ITER_COUNT_U64.
1079
+ [MACRO] BINARY_HEAP_ITER_COUNT %out_count, %iter_reg
1080
+ EXPAND BINARY_HEAP_ITER_COUNT_U64 %out_count, %iter_reg
1081
+ [END_MACRO]
1082
+
1083
+ [MACRO] BINARY_HEAP_ITER_LAST_U64 %out_has, %out_value, %iter_reg
1084
+ EXPAND ITER_LAST_U64 %out_has, %out_value, %iter_reg
1085
+ [END_MACRO]
1086
+
1087
+ // Rust method-name alias over BINARY_HEAP_ITER_LAST_U64.
1088
+ [MACRO] BINARY_HEAP_ITER_LAST %out_has, %out_value, %iter_reg
1089
+ EXPAND BINARY_HEAP_ITER_LAST_U64 %out_has, %out_value, %iter_reg
1090
+ [END_MACRO]
1091
+
1092
+ [MACRO] BINARY_HEAP_ITER_FIND_U64 %out_has, %out_value, %iter_reg, %pred_fn
1093
+ EXPAND ITER_FIND_U64 %out_has, %out_value, %iter_reg, %pred_fn
1094
+ [END_MACRO]
1095
+
1096
+ // Rust method-name alias over BINARY_HEAP_ITER_FIND_U64.
1097
+ [MACRO] BINARY_HEAP_ITER_FIND %out_has, %out_value, %iter_reg, %pred_fn
1098
+ EXPAND BINARY_HEAP_ITER_FIND_U64 %out_has, %out_value, %iter_reg, %pred_fn
1099
+ [END_MACRO]
1100
+
1101
+ [MACRO] BINARY_HEAP_ITER_TRY_FIND_U64 %out_ok, %out_has, %out_value, %iter_reg, %pred_fn
1102
+ EXPAND ITER_TRY_FIND_U64 %out_ok, %out_has, %out_value, %iter_reg, %pred_fn
1103
+ [END_MACRO]
1104
+
1105
+ // Rust method-name alias over BINARY_HEAP_ITER_TRY_FIND_U64.
1106
+ [MACRO] BINARY_HEAP_ITER_TRY_FIND %out_ok, %out_has, %out_value, %iter_reg, %pred_fn
1107
+ EXPAND BINARY_HEAP_ITER_TRY_FIND_U64 %out_ok, %out_has, %out_value, %iter_reg, %pred_fn
1108
+ [END_MACRO]
1109
+
1110
+ [MACRO] BINARY_HEAP_ITER_FIND_MAP_U64 %out_has, %out_value, %iter_reg, %map_fn
1111
+ EXPAND ITER_FIND_MAP_U64 %out_has, %out_value, %iter_reg, %map_fn
1112
+ [END_MACRO]
1113
+
1114
+ // Rust method-name alias over BINARY_HEAP_ITER_FIND_MAP_U64.
1115
+ [MACRO] BINARY_HEAP_ITER_FIND_MAP %out_has, %out_value, %iter_reg, %map_fn
1116
+ EXPAND BINARY_HEAP_ITER_FIND_MAP_U64 %out_has, %out_value, %iter_reg, %map_fn
1117
+ [END_MACRO]
1118
+
1119
+ [MACRO] BINARY_HEAP_ITER_POSITION_U64 %out_has, %out_index, %iter_reg, %pred_fn
1120
+ EXPAND ITER_POSITION_U64 %out_has, %out_index, %iter_reg, %pred_fn
1121
+ [END_MACRO]
1122
+
1123
+ // Rust method-name alias over BINARY_HEAP_ITER_POSITION_U64.
1124
+ [MACRO] BINARY_HEAP_ITER_POSITION %out_has, %out_index, %iter_reg, %pred_fn
1125
+ EXPAND BINARY_HEAP_ITER_POSITION_U64 %out_has, %out_index, %iter_reg, %pred_fn
1126
+ [END_MACRO]
1127
+
1128
+ [MACRO] BINARY_HEAP_ITER_RPOSITION_U64 %out_has, %out_index, %iter_reg, %pred_fn
1129
+ EXPAND ITER_RPOSITION_U64 %out_has, %out_index, %iter_reg, %pred_fn
1130
+ [END_MACRO]
1131
+
1132
+ // Rust method-name alias over BINARY_HEAP_ITER_RPOSITION_U64.
1133
+ [MACRO] BINARY_HEAP_ITER_RPOSITION %out_has, %out_index, %iter_reg, %pred_fn
1134
+ EXPAND BINARY_HEAP_ITER_RPOSITION_U64 %out_has, %out_index, %iter_reg, %pred_fn
1135
+ [END_MACRO]
1136
+
1137
+ [MACRO] BINARY_HEAP_ITER_RFIND_U64 %out_has, %out_value, %iter_reg, %pred_fn
1138
+ EXPAND ITER_RFIND_U64 %out_has, %out_value, %iter_reg, %pred_fn
1139
+ [END_MACRO]
1140
+
1141
+ // Rust method-name alias over BINARY_HEAP_ITER_RFIND_U64.
1142
+ [MACRO] BINARY_HEAP_ITER_RFIND %out_has, %out_value, %iter_reg, %pred_fn
1143
+ EXPAND BINARY_HEAP_ITER_RFIND_U64 %out_has, %out_value, %iter_reg, %pred_fn
1144
+ [END_MACRO]
1145
+
1146
+ [MACRO] BINARY_HEAP_ITER_ANY_U64 %out_bool, %iter_reg, %pred_fn
1147
+ EXPAND ITER_ANY_U64 %out_bool, %iter_reg, %pred_fn
1148
+ [END_MACRO]
1149
+
1150
+ // Rust method-name alias over BINARY_HEAP_ITER_ANY_U64.
1151
+ [MACRO] BINARY_HEAP_ITER_ANY %out_bool, %iter_reg, %pred_fn
1152
+ EXPAND BINARY_HEAP_ITER_ANY_U64 %out_bool, %iter_reg, %pred_fn
1153
+ [END_MACRO]
1154
+
1155
+ [MACRO] BINARY_HEAP_ITER_ALL_U64 %out_bool, %iter_reg, %pred_fn
1156
+ EXPAND ITER_ALL_U64 %out_bool, %iter_reg, %pred_fn
1157
+ [END_MACRO]
1158
+
1159
+ // Rust method-name alias over BINARY_HEAP_ITER_ALL_U64.
1160
+ [MACRO] BINARY_HEAP_ITER_ALL %out_bool, %iter_reg, %pred_fn
1161
+ EXPAND BINARY_HEAP_ITER_ALL_U64 %out_bool, %iter_reg, %pred_fn
1162
+ [END_MACRO]
1163
+
1164
+ [MACRO] BINARY_HEAP_ITER_FOR_EACH_U64 %iter_reg, %each_fn
1165
+ EXPAND ITER_FOR_EACH_U64 %iter_reg, %each_fn
1166
+ [END_MACRO]
1167
+
1168
+ // Rust method-name alias over BINARY_HEAP_ITER_FOR_EACH_U64.
1169
+ [MACRO] BINARY_HEAP_ITER_FOR_EACH %iter_reg, %each_fn
1170
+ EXPAND BINARY_HEAP_ITER_FOR_EACH_U64 %iter_reg, %each_fn
1171
+ [END_MACRO]
1172
+
1173
+ [MACRO] BINARY_HEAP_ITER_TRY_FOR_EACH_U64 %out_ok, %iter_reg, %each_fn
1174
+ EXPAND ITER_TRY_FOR_EACH_U64 %out_ok, %iter_reg, %each_fn
1175
+ [END_MACRO]
1176
+
1177
+ // Rust method-name alias over BINARY_HEAP_ITER_TRY_FOR_EACH_U64.
1178
+ [MACRO] BINARY_HEAP_ITER_TRY_FOR_EACH %out_ok, %iter_reg, %each_fn
1179
+ EXPAND BINARY_HEAP_ITER_TRY_FOR_EACH_U64 %out_ok, %iter_reg, %each_fn
1180
+ [END_MACRO]
1181
+
1182
+ [MACRO] BINARY_HEAP_ITER_FOLD_U64 %out_value, %iter_reg, %init_value, %fold_fn
1183
+ EXPAND ITER_FOLD_U64 %out_value, %iter_reg, %init_value, %fold_fn
1184
+ [END_MACRO]
1185
+
1186
+ // Rust method-name alias over BINARY_HEAP_ITER_FOLD_U64.
1187
+ [MACRO] BINARY_HEAP_ITER_FOLD %out_value, %iter_reg, %init_value, %fold_fn
1188
+ EXPAND BINARY_HEAP_ITER_FOLD_U64 %out_value, %iter_reg, %init_value, %fold_fn
1189
+ [END_MACRO]
1190
+
1191
+ [MACRO] BINARY_HEAP_ITER_TRY_FOLD_U64 %out_ok, %out_value, %iter_reg, %init_value, %fold_fn
1192
+ EXPAND ITER_TRY_FOLD_U64 %out_ok, %out_value, %iter_reg, %init_value, %fold_fn
1193
+ [END_MACRO]
1194
+
1195
+ // Rust method-name alias over BINARY_HEAP_ITER_TRY_FOLD_U64.
1196
+ [MACRO] BINARY_HEAP_ITER_TRY_FOLD %out_ok, %out_value, %iter_reg, %init_value, %fold_fn
1197
+ EXPAND BINARY_HEAP_ITER_TRY_FOLD_U64 %out_ok, %out_value, %iter_reg, %init_value, %fold_fn
1198
+ [END_MACRO]
1199
+
1200
+ [MACRO] BINARY_HEAP_ITER_RFOLD_U64 %out_value, %iter_reg, %init_value, %fold_fn
1201
+ EXPAND ITER_RFOLD_U64 %out_value, %iter_reg, %init_value, %fold_fn
1202
+ [END_MACRO]
1203
+
1204
+ // Rust method-name alias over BINARY_HEAP_ITER_RFOLD_U64.
1205
+ [MACRO] BINARY_HEAP_ITER_RFOLD %out_value, %iter_reg, %init_value, %fold_fn
1206
+ EXPAND BINARY_HEAP_ITER_RFOLD_U64 %out_value, %iter_reg, %init_value, %fold_fn
1207
+ [END_MACRO]
1208
+
1209
+ [MACRO] BINARY_HEAP_ITER_TRY_RFOLD_U64 %out_ok, %out_value, %iter_reg, %init_value, %fold_fn
1210
+ EXPAND ITER_TRY_RFOLD_U64 %out_ok, %out_value, %iter_reg, %init_value, %fold_fn
1211
+ [END_MACRO]
1212
+
1213
+ // Rust method-name alias over BINARY_HEAP_ITER_TRY_RFOLD_U64.
1214
+ [MACRO] BINARY_HEAP_ITER_TRY_RFOLD %out_ok, %out_value, %iter_reg, %init_value, %fold_fn
1215
+ EXPAND BINARY_HEAP_ITER_TRY_RFOLD_U64 %out_ok, %out_value, %iter_reg, %init_value, %fold_fn
1216
+ [END_MACRO]
1217
+
1218
+ [MACRO] BINARY_HEAP_ITER_SUM_U64 %out_value, %iter_reg
1219
+ EXPAND ITER_SUM_U64 %out_value, %iter_reg
1220
+ [END_MACRO]
1221
+
1222
+ // Rust method-name alias over BINARY_HEAP_ITER_SUM_U64.
1223
+ [MACRO] BINARY_HEAP_ITER_SUM %out_value, %iter_reg
1224
+ EXPAND BINARY_HEAP_ITER_SUM_U64 %out_value, %iter_reg
1225
+ [END_MACRO]
1226
+
1227
+ [MACRO] BINARY_HEAP_ITER_PRODUCT_U64 %out_value, %iter_reg
1228
+ EXPAND ITER_PRODUCT_U64 %out_value, %iter_reg
1229
+ [END_MACRO]
1230
+
1231
+ // Rust method-name alias over BINARY_HEAP_ITER_PRODUCT_U64.
1232
+ [MACRO] BINARY_HEAP_ITER_PRODUCT %out_value, %iter_reg
1233
+ EXPAND BINARY_HEAP_ITER_PRODUCT_U64 %out_value, %iter_reg
1234
+ [END_MACRO]
1235
+
1236
+ [MACRO] BINARY_HEAP_ITER_MIN_U64 %out_has, %out_value, %iter_reg
1237
+ EXPAND ITER_MIN_U64 %out_has, %out_value, %iter_reg
1238
+ [END_MACRO]
1239
+
1240
+ // Rust method-name alias over BINARY_HEAP_ITER_MIN_U64.
1241
+ [MACRO] BINARY_HEAP_ITER_MIN %out_has, %out_value, %iter_reg
1242
+ EXPAND BINARY_HEAP_ITER_MIN_U64 %out_has, %out_value, %iter_reg
1243
+ [END_MACRO]
1244
+
1245
+ [MACRO] BINARY_HEAP_ITER_MAX_U64 %out_has, %out_value, %iter_reg
1246
+ EXPAND ITER_MAX_U64 %out_has, %out_value, %iter_reg
1247
+ [END_MACRO]
1248
+
1249
+ // Rust method-name alias over BINARY_HEAP_ITER_MAX_U64.
1250
+ [MACRO] BINARY_HEAP_ITER_MAX %out_has, %out_value, %iter_reg
1251
+ EXPAND BINARY_HEAP_ITER_MAX_U64 %out_has, %out_value, %iter_reg
1252
+ [END_MACRO]
1253
+
1254
+ [MACRO] BINARY_HEAP_ITER_REDUCE_U64 %out_has, %out_value, %iter_reg, %reduce_fn
1255
+ EXPAND ITER_REDUCE_U64 %out_has, %out_value, %iter_reg, %reduce_fn
1256
+ [END_MACRO]
1257
+
1258
+ // Rust method-name alias over BINARY_HEAP_ITER_REDUCE_U64.
1259
+ [MACRO] BINARY_HEAP_ITER_REDUCE %out_has, %out_value, %iter_reg, %reduce_fn
1260
+ EXPAND BINARY_HEAP_ITER_REDUCE_U64 %out_has, %out_value, %iter_reg, %reduce_fn
1261
+ [END_MACRO]
1262
+
1263
+ [MACRO] BINARY_HEAP_ITER_TRY_REDUCE_U64 %out_ok, %out_has, %out_value, %iter_reg, %reduce_fn
1264
+ EXPAND ITER_TRY_REDUCE_U64 %out_ok, %out_has, %out_value, %iter_reg, %reduce_fn
1265
+ [END_MACRO]
1266
+
1267
+ // Rust method-name alias over BINARY_HEAP_ITER_TRY_REDUCE_U64.
1268
+ [MACRO] BINARY_HEAP_ITER_TRY_REDUCE %out_ok, %out_has, %out_value, %iter_reg, %reduce_fn
1269
+ EXPAND BINARY_HEAP_ITER_TRY_REDUCE_U64 %out_ok, %out_has, %out_value, %iter_reg, %reduce_fn
1270
+ [END_MACRO]
1271
+
1272
+ [MACRO] BINARY_HEAP_ITER_SIZE_HINT_U64 %out_lower, %out_upper, %iter_reg
1273
+ EXPAND ITER_SIZE_HINT %out_lower, %out_upper, %iter_reg
1274
+ [END_MACRO]
1275
+
1276
+ // Rust method-name alias over BINARY_HEAP_ITER_SIZE_HINT_U64.
1277
+ [MACRO] BINARY_HEAP_ITER_SIZE_HINT %out_lower, %out_upper, %iter_reg
1278
+ EXPAND BINARY_HEAP_ITER_SIZE_HINT_U64 %out_lower, %out_upper, %iter_reg
1279
+ [END_MACRO]
1280
+
1281
+ [MACRO] BINARY_HEAP_ITER_EXACT_SIZE_LEN_U64 %out_len, %iter_reg
1282
+ EXPAND ITER_EXACT_SIZE_LEN %out_len, %iter_reg
1283
+ [END_MACRO]
1284
+
1285
+ // Rust method-name alias over BINARY_HEAP_ITER_EXACT_SIZE_LEN_U64.
1286
+ [MACRO] BINARY_HEAP_ITER_EXACT_SIZE_LEN %out_len, %iter_reg
1287
+ EXPAND BINARY_HEAP_ITER_EXACT_SIZE_LEN_U64 %out_len, %iter_reg
1288
+ [END_MACRO]
1289
+
1290
+ [MACRO] BINARY_HEAP_ITER_EXACT_SIZE_IS_EMPTY_U64 %out_bool, %iter_reg
1291
+ EXPAND ITER_EXACT_SIZE_IS_EMPTY %out_bool, %iter_reg
1292
+ [END_MACRO]
1293
+
1294
+ // Rust method-name alias over BINARY_HEAP_ITER_EXACT_SIZE_IS_EMPTY_U64.
1295
+ [MACRO] BINARY_HEAP_ITER_EXACT_SIZE_IS_EMPTY %out_bool, %iter_reg
1296
+ EXPAND BINARY_HEAP_ITER_EXACT_SIZE_IS_EMPTY_U64 %out_bool, %iter_reg
1297
+ [END_MACRO]
1298
+
1299
+ [MACRO] BINARY_HEAP_ITER_COLLECT_U64 %out_vec, %iter_reg
1300
+ EXPAND ITER_COLLECT_U64 %out_vec, %iter_reg
1301
+ [END_MACRO]
1302
+
1303
+ // Rust method-name alias over BINARY_HEAP_ITER_COLLECT_U64.
1304
+ [MACRO] BINARY_HEAP_ITER_COLLECT %out_vec, %iter_reg
1305
+ EXPAND BINARY_HEAP_ITER_COLLECT_U64 %out_vec, %iter_reg
1306
+ [END_MACRO]
1307
+
1308
+ [MACRO] BINARY_HEAP_ITER_TRY_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %try_fn
1309
+ EXPAND ITER_TRY_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %try_fn
1310
+ [END_MACRO]
1311
+
1312
+ // Rust method-name alias over BINARY_HEAP_ITER_TRY_COLLECT_U64.
1313
+ [MACRO] BINARY_HEAP_ITER_TRY_COLLECT %out_ok, %out_vec, %iter_reg, %try_fn
1314
+ EXPAND BINARY_HEAP_ITER_TRY_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %try_fn
1315
+ [END_MACRO]
1316
+
1317
+ [MACRO] BINARY_HEAP_ITER_COLLECT_INTO_U64 %vec_reg, %iter_reg
1318
+ EXPAND ITER_COLLECT_INTO_U64 %vec_reg, %iter_reg
1319
+ [END_MACRO]
1320
+
1321
+ // Rust method-name alias over BINARY_HEAP_ITER_COLLECT_INTO_U64.
1322
+ [MACRO] BINARY_HEAP_ITER_COLLECT_INTO %vec_reg, %iter_reg
1323
+ EXPAND BINARY_HEAP_ITER_COLLECT_INTO_U64 %vec_reg, %iter_reg
1324
+ [END_MACRO]
1325
+
1326
+ [MACRO] BINARY_HEAP_INTO_VEC %out_vec, %heap_reg
1327
+ %out_vec = call @sa_binary_heap_into_vec(^%heap_reg)
1328
+ [END_MACRO]
1329
+
1330
+ [MACRO] BINARY_HEAP_INTO_ITER_U64 %out_iter, %out_vec, %heap_reg
1331
+ EXPAND BINARY_HEAP_INTO_VEC %out_vec, %heap_reg
1332
+ EXPAND VEC_AS_SLICE __binary_heap_into_iter_slice_%out_iter, %out_vec
1333
+ EXPAND ITER_FROM_SLICE %out_iter, __binary_heap_into_iter_slice_%out_iter
1334
+ !__binary_heap_into_iter_slice_%out_iter
1335
+ [END_MACRO]
1336
+
1337
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_U64.
1338
+ [MACRO] BINARY_HEAP_INTO_ITER %out_iter, %out_vec, %heap_reg
1339
+ EXPAND BINARY_HEAP_INTO_ITER_U64 %out_iter, %out_vec, %heap_reg
1340
+ [END_MACRO]
1341
+
1342
+ [MACRO] BINARY_HEAP_INTO_ITER_DEFAULT_U64 %out_iter, %out_vec
1343
+ EXPAND VEC_INTO_ITER_DEFAULT_U64 %out_iter, %out_vec
1344
+ [END_MACRO]
1345
+
1346
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_DEFAULT_U64.
1347
+ [MACRO] BINARY_HEAP_INTO_ITER_DEFAULT %out_iter, %out_vec
1348
+ EXPAND BINARY_HEAP_INTO_ITER_DEFAULT_U64 %out_iter, %out_vec
1349
+ [END_MACRO]
1350
+
1351
+ [MACRO] BINARY_HEAP_INTO_ITER_NEXT_U64 %out_has, %out_value, %iter_reg
1352
+ EXPAND ITER_NEXT_U64 %out_has, %out_value, %iter_reg
1353
+ [END_MACRO]
1354
+
1355
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_NEXT_U64.
1356
+ [MACRO] BINARY_HEAP_INTO_ITER_NEXT %out_has, %out_value, %iter_reg
1357
+ EXPAND BINARY_HEAP_INTO_ITER_NEXT_U64 %out_has, %out_value, %iter_reg
1358
+ [END_MACRO]
1359
+
1360
+ [MACRO] BINARY_HEAP_INTO_ITER_NEXT_BACK_U64 %out_has, %out_value, %iter_reg
1361
+ EXPAND ITER_NEXT_BACK_U64 %out_has, %out_value, %iter_reg
1362
+ [END_MACRO]
1363
+
1364
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_NEXT_BACK_U64.
1365
+ [MACRO] BINARY_HEAP_INTO_ITER_NEXT_BACK %out_has, %out_value, %iter_reg
1366
+ EXPAND BINARY_HEAP_INTO_ITER_NEXT_BACK_U64 %out_has, %out_value, %iter_reg
1367
+ [END_MACRO]
1368
+
1369
+ [MACRO] BINARY_HEAP_INTO_ITER_NTH_U64 %out_has, %out_value, %iter_reg, %nth
1370
+ EXPAND VEC_INTO_ITER_NTH_U64 %out_has, %out_value, %iter_reg, %nth
1371
+ [END_MACRO]
1372
+
1373
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_NTH_U64.
1374
+ [MACRO] BINARY_HEAP_INTO_ITER_NTH %out_has, %out_value, %iter_reg, %nth
1375
+ EXPAND BINARY_HEAP_INTO_ITER_NTH_U64 %out_has, %out_value, %iter_reg, %nth
1376
+ [END_MACRO]
1377
+
1378
+ [MACRO] BINARY_HEAP_INTO_ITER_NTH_BACK_U64 %out_has, %out_value, %iter_reg, %nth
1379
+ EXPAND VEC_INTO_ITER_NTH_BACK_U64 %out_has, %out_value, %iter_reg, %nth
1380
+ [END_MACRO]
1381
+
1382
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_NTH_BACK_U64.
1383
+ [MACRO] BINARY_HEAP_INTO_ITER_NTH_BACK %out_has, %out_value, %iter_reg, %nth
1384
+ EXPAND BINARY_HEAP_INTO_ITER_NTH_BACK_U64 %out_has, %out_value, %iter_reg, %nth
1385
+ [END_MACRO]
1386
+
1387
+ [MACRO] BINARY_HEAP_INTO_ITER_TRY_NEXT_CHUNK_U64 %out_ok, %out_filled, %iter_reg, %dst_ptr, %count
1388
+ EXPAND VEC_INTO_ITER_TRY_NEXT_CHUNK_U64 %out_ok, %out_filled, %iter_reg, %dst_ptr, %count
1389
+ [END_MACRO]
1390
+
1391
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_TRY_NEXT_CHUNK_U64.
1392
+ [MACRO] BINARY_HEAP_INTO_ITER_TRY_NEXT_CHUNK %out_ok, %out_filled, %iter_reg, %dst_ptr, %count
1393
+ EXPAND BINARY_HEAP_INTO_ITER_TRY_NEXT_CHUNK_U64 %out_ok, %out_filled, %iter_reg, %dst_ptr, %count
1394
+ [END_MACRO]
1395
+
1396
+ [MACRO] BINARY_HEAP_INTO_ITER_ADVANCE_BY %out_ok, %out_remaining, %iter_reg, %count
1397
+ EXPAND VEC_INTO_ITER_ADVANCE_BY %out_ok, %out_remaining, %iter_reg, %count
1398
+ [END_MACRO]
1399
+
1400
+ [MACRO] BINARY_HEAP_INTO_ITER_ADVANCE_BACK_BY %out_ok, %out_remaining, %iter_reg, %count
1401
+ EXPAND VEC_INTO_ITER_ADVANCE_BACK_BY %out_ok, %out_remaining, %iter_reg, %count
1402
+ [END_MACRO]
1403
+
1404
+ [MACRO] BINARY_HEAP_INTO_ITER_SIZE_HINT_U64 %out_lower, %out_upper, %iter_reg
1405
+ EXPAND ITER_SIZE_HINT %out_lower, %out_upper, %iter_reg
1406
+ [END_MACRO]
1407
+
1408
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SIZE_HINT_U64.
1409
+ [MACRO] BINARY_HEAP_INTO_ITER_SIZE_HINT %out_lower, %out_upper, %iter_reg
1410
+ EXPAND BINARY_HEAP_INTO_ITER_SIZE_HINT_U64 %out_lower, %out_upper, %iter_reg
1411
+ [END_MACRO]
1412
+
1413
+ [MACRO] BINARY_HEAP_INTO_ITER_EXACT_SIZE_LEN_U64 %out_len, %iter_reg
1414
+ EXPAND ITER_EXACT_SIZE_LEN %out_len, %iter_reg
1415
+ [END_MACRO]
1416
+
1417
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_EXACT_SIZE_LEN_U64.
1418
+ [MACRO] BINARY_HEAP_INTO_ITER_EXACT_SIZE_LEN %out_len, %iter_reg
1419
+ EXPAND BINARY_HEAP_INTO_ITER_EXACT_SIZE_LEN_U64 %out_len, %iter_reg
1420
+ [END_MACRO]
1421
+
1422
+ [MACRO] BINARY_HEAP_INTO_ITER_EXACT_SIZE_IS_EMPTY_U64 %out_bool, %iter_reg
1423
+ EXPAND ITER_EXACT_SIZE_IS_EMPTY %out_bool, %iter_reg
1424
+ [END_MACRO]
1425
+
1426
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_EXACT_SIZE_IS_EMPTY_U64.
1427
+ [MACRO] BINARY_HEAP_INTO_ITER_EXACT_SIZE_IS_EMPTY %out_bool, %iter_reg
1428
+ EXPAND BINARY_HEAP_INTO_ITER_EXACT_SIZE_IS_EMPTY_U64 %out_bool, %iter_reg
1429
+ [END_MACRO]
1430
+
1431
+ [MACRO] BINARY_HEAP_INTO_ITER_COUNT_U64 %out_count, %iter_reg
1432
+ EXPAND VEC_INTO_ITER_COUNT_U64 %out_count, %iter_reg
1433
+ [END_MACRO]
1434
+
1435
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_COUNT_U64.
1436
+ [MACRO] BINARY_HEAP_INTO_ITER_COUNT %out_count, %iter_reg
1437
+ EXPAND BINARY_HEAP_INTO_ITER_COUNT_U64 %out_count, %iter_reg
1438
+ [END_MACRO]
1439
+
1440
+ [MACRO] BINARY_HEAP_INTO_ITER_LAST_U64 %out_has, %out_value, %iter_reg
1441
+ EXPAND VEC_INTO_ITER_LAST_U64 %out_has, %out_value, %iter_reg
1442
+ [END_MACRO]
1443
+
1444
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_LAST_U64.
1445
+ [MACRO] BINARY_HEAP_INTO_ITER_LAST %out_has, %out_value, %iter_reg
1446
+ EXPAND BINARY_HEAP_INTO_ITER_LAST_U64 %out_has, %out_value, %iter_reg
1447
+ [END_MACRO]
1448
+
1449
+ [MACRO] BINARY_HEAP_INTO_ITER_CLONE_U64 %out_iter, %out_vec, %iter_reg
1450
+ EXPAND VEC_INTO_ITER_CLONE_U64 %out_iter, %out_vec, %iter_reg
1451
+ [END_MACRO]
1452
+
1453
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_CLONE_U64.
1454
+ [MACRO] BINARY_HEAP_INTO_ITER_CLONE %out_iter, %out_vec, %iter_reg
1455
+ EXPAND BINARY_HEAP_INTO_ITER_CLONE_U64 %out_iter, %out_vec, %iter_reg
1456
+ [END_MACRO]
1457
+
1458
+ [MACRO] BINARY_HEAP_INTO_ITER_COLLECT_U64 %out_vec, %iter_reg
1459
+ EXPAND ITER_COLLECT_U64 %out_vec, %iter_reg
1460
+ [END_MACRO]
1461
+
1462
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_COLLECT_U64.
1463
+ [MACRO] BINARY_HEAP_INTO_ITER_COLLECT %out_vec, %iter_reg
1464
+ EXPAND BINARY_HEAP_INTO_ITER_COLLECT_U64 %out_vec, %iter_reg
1465
+ [END_MACRO]
1466
+
1467
+ [MACRO] BINARY_HEAP_INTO_ITER_TRY_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %try_fn
1468
+ EXPAND ITER_TRY_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %try_fn
1469
+ [END_MACRO]
1470
+
1471
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_TRY_COLLECT_U64.
1472
+ [MACRO] BINARY_HEAP_INTO_ITER_TRY_COLLECT %out_ok, %out_vec, %iter_reg, %try_fn
1473
+ EXPAND BINARY_HEAP_INTO_ITER_TRY_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %try_fn
1474
+ [END_MACRO]
1475
+
1476
+ [MACRO] BINARY_HEAP_INTO_ITER_COLLECT_INTO_U64 %vec_reg, %iter_reg
1477
+ EXPAND ITER_COLLECT_INTO_U64 %vec_reg, %iter_reg
1478
+ [END_MACRO]
1479
+
1480
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_COLLECT_INTO_U64.
1481
+ [MACRO] BINARY_HEAP_INTO_ITER_COLLECT_INTO %vec_reg, %iter_reg
1482
+ EXPAND BINARY_HEAP_INTO_ITER_COLLECT_INTO_U64 %vec_reg, %iter_reg
1483
+ [END_MACRO]
1484
+
1485
+ [MACRO] BINARY_HEAP_INTO_ITER_FIND_U64 %out_has, %out_value, %iter_reg, %pred_fn
1486
+ EXPAND VEC_INTO_ITER_FIND_U64 %out_has, %out_value, %iter_reg, %pred_fn
1487
+ [END_MACRO]
1488
+
1489
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_FIND_U64.
1490
+ [MACRO] BINARY_HEAP_INTO_ITER_FIND %out_has, %out_value, %iter_reg, %pred_fn
1491
+ EXPAND BINARY_HEAP_INTO_ITER_FIND_U64 %out_has, %out_value, %iter_reg, %pred_fn
1492
+ [END_MACRO]
1493
+
1494
+ [MACRO] BINARY_HEAP_INTO_ITER_TRY_FIND_U64 %out_ok, %out_has, %out_value, %iter_reg, %pred_fn
1495
+ EXPAND VEC_INTO_ITER_TRY_FIND_U64 %out_ok, %out_has, %out_value, %iter_reg, %pred_fn
1496
+ [END_MACRO]
1497
+
1498
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_TRY_FIND_U64.
1499
+ [MACRO] BINARY_HEAP_INTO_ITER_TRY_FIND %out_ok, %out_has, %out_value, %iter_reg, %pred_fn
1500
+ EXPAND BINARY_HEAP_INTO_ITER_TRY_FIND_U64 %out_ok, %out_has, %out_value, %iter_reg, %pred_fn
1501
+ [END_MACRO]
1502
+
1503
+ [MACRO] BINARY_HEAP_INTO_ITER_FIND_MAP_U64 %out_has, %out_value, %iter_reg, %map_fn
1504
+ EXPAND VEC_INTO_ITER_FIND_MAP_U64 %out_has, %out_value, %iter_reg, %map_fn
1505
+ [END_MACRO]
1506
+
1507
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_FIND_MAP_U64.
1508
+ [MACRO] BINARY_HEAP_INTO_ITER_FIND_MAP %out_has, %out_value, %iter_reg, %map_fn
1509
+ EXPAND BINARY_HEAP_INTO_ITER_FIND_MAP_U64 %out_has, %out_value, %iter_reg, %map_fn
1510
+ [END_MACRO]
1511
+
1512
+ [MACRO] BINARY_HEAP_INTO_ITER_POSITION_U64 %out_has, %out_index, %iter_reg, %pred_fn
1513
+ EXPAND VEC_INTO_ITER_POSITION_U64 %out_has, %out_index, %iter_reg, %pred_fn
1514
+ [END_MACRO]
1515
+
1516
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_POSITION_U64.
1517
+ [MACRO] BINARY_HEAP_INTO_ITER_POSITION %out_has, %out_index, %iter_reg, %pred_fn
1518
+ EXPAND BINARY_HEAP_INTO_ITER_POSITION_U64 %out_has, %out_index, %iter_reg, %pred_fn
1519
+ [END_MACRO]
1520
+
1521
+ [MACRO] BINARY_HEAP_INTO_ITER_RPOSITION_U64 %out_has, %out_index, %iter_reg, %pred_fn
1522
+ EXPAND VEC_INTO_ITER_RPOSITION_U64 %out_has, %out_index, %iter_reg, %pred_fn
1523
+ [END_MACRO]
1524
+
1525
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_RPOSITION_U64.
1526
+ [MACRO] BINARY_HEAP_INTO_ITER_RPOSITION %out_has, %out_index, %iter_reg, %pred_fn
1527
+ EXPAND BINARY_HEAP_INTO_ITER_RPOSITION_U64 %out_has, %out_index, %iter_reg, %pred_fn
1528
+ [END_MACRO]
1529
+
1530
+ [MACRO] BINARY_HEAP_INTO_ITER_RFIND_U64 %out_has, %out_value, %iter_reg, %pred_fn
1531
+ EXPAND VEC_INTO_ITER_RFIND_U64 %out_has, %out_value, %iter_reg, %pred_fn
1532
+ [END_MACRO]
1533
+
1534
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_RFIND_U64.
1535
+ [MACRO] BINARY_HEAP_INTO_ITER_RFIND %out_has, %out_value, %iter_reg, %pred_fn
1536
+ EXPAND BINARY_HEAP_INTO_ITER_RFIND_U64 %out_has, %out_value, %iter_reg, %pred_fn
1537
+ [END_MACRO]
1538
+
1539
+ [MACRO] BINARY_HEAP_INTO_ITER_ANY_U64 %out_bool, %iter_reg, %pred_fn
1540
+ EXPAND VEC_INTO_ITER_ANY_U64 %out_bool, %iter_reg, %pred_fn
1541
+ [END_MACRO]
1542
+
1543
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_ANY_U64.
1544
+ [MACRO] BINARY_HEAP_INTO_ITER_ANY %out_bool, %iter_reg, %pred_fn
1545
+ EXPAND BINARY_HEAP_INTO_ITER_ANY_U64 %out_bool, %iter_reg, %pred_fn
1546
+ [END_MACRO]
1547
+
1548
+ [MACRO] BINARY_HEAP_INTO_ITER_ALL_U64 %out_bool, %iter_reg, %pred_fn
1549
+ EXPAND VEC_INTO_ITER_ALL_U64 %out_bool, %iter_reg, %pred_fn
1550
+ [END_MACRO]
1551
+
1552
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_ALL_U64.
1553
+ [MACRO] BINARY_HEAP_INTO_ITER_ALL %out_bool, %iter_reg, %pred_fn
1554
+ EXPAND BINARY_HEAP_INTO_ITER_ALL_U64 %out_bool, %iter_reg, %pred_fn
1555
+ [END_MACRO]
1556
+
1557
+ [MACRO] BINARY_HEAP_INTO_ITER_FOR_EACH_U64 %iter_reg, %each_fn
1558
+ EXPAND VEC_INTO_ITER_FOR_EACH_U64 %iter_reg, %each_fn
1559
+ [END_MACRO]
1560
+
1561
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_FOR_EACH_U64.
1562
+ [MACRO] BINARY_HEAP_INTO_ITER_FOR_EACH %iter_reg, %each_fn
1563
+ EXPAND BINARY_HEAP_INTO_ITER_FOR_EACH_U64 %iter_reg, %each_fn
1564
+ [END_MACRO]
1565
+
1566
+ [MACRO] BINARY_HEAP_INTO_ITER_TRY_FOR_EACH_U64 %out_ok, %iter_reg, %each_fn
1567
+ EXPAND VEC_INTO_ITER_TRY_FOR_EACH_U64 %out_ok, %iter_reg, %each_fn
1568
+ [END_MACRO]
1569
+
1570
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_TRY_FOR_EACH_U64.
1571
+ [MACRO] BINARY_HEAP_INTO_ITER_TRY_FOR_EACH %out_ok, %iter_reg, %each_fn
1572
+ EXPAND BINARY_HEAP_INTO_ITER_TRY_FOR_EACH_U64 %out_ok, %iter_reg, %each_fn
1573
+ [END_MACRO]
1574
+
1575
+ [MACRO] BINARY_HEAP_INTO_ITER_FOLD_U64 %out_value, %iter_reg, %init_value, %fold_fn
1576
+ EXPAND VEC_INTO_ITER_FOLD_U64 %out_value, %iter_reg, %init_value, %fold_fn
1577
+ [END_MACRO]
1578
+
1579
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_FOLD_U64.
1580
+ [MACRO] BINARY_HEAP_INTO_ITER_FOLD %out_value, %iter_reg, %init_value, %fold_fn
1581
+ EXPAND BINARY_HEAP_INTO_ITER_FOLD_U64 %out_value, %iter_reg, %init_value, %fold_fn
1582
+ [END_MACRO]
1583
+
1584
+ [MACRO] BINARY_HEAP_INTO_ITER_TRY_FOLD_U64 %out_ok, %out_value, %iter_reg, %init_value, %fold_fn
1585
+ EXPAND VEC_INTO_ITER_TRY_FOLD_U64 %out_ok, %out_value, %iter_reg, %init_value, %fold_fn
1586
+ [END_MACRO]
1587
+
1588
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_TRY_FOLD_U64.
1589
+ [MACRO] BINARY_HEAP_INTO_ITER_TRY_FOLD %out_ok, %out_value, %iter_reg, %init_value, %fold_fn
1590
+ EXPAND BINARY_HEAP_INTO_ITER_TRY_FOLD_U64 %out_ok, %out_value, %iter_reg, %init_value, %fold_fn
1591
+ [END_MACRO]
1592
+
1593
+ [MACRO] BINARY_HEAP_INTO_ITER_RFOLD_U64 %out_value, %iter_reg, %init_value, %fold_fn
1594
+ EXPAND VEC_INTO_ITER_RFOLD_U64 %out_value, %iter_reg, %init_value, %fold_fn
1595
+ [END_MACRO]
1596
+
1597
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_RFOLD_U64.
1598
+ [MACRO] BINARY_HEAP_INTO_ITER_RFOLD %out_value, %iter_reg, %init_value, %fold_fn
1599
+ EXPAND BINARY_HEAP_INTO_ITER_RFOLD_U64 %out_value, %iter_reg, %init_value, %fold_fn
1600
+ [END_MACRO]
1601
+
1602
+ [MACRO] BINARY_HEAP_INTO_ITER_TRY_RFOLD_U64 %out_ok, %out_value, %iter_reg, %init_value, %fold_fn
1603
+ EXPAND VEC_INTO_ITER_TRY_RFOLD_U64 %out_ok, %out_value, %iter_reg, %init_value, %fold_fn
1604
+ [END_MACRO]
1605
+
1606
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_TRY_RFOLD_U64.
1607
+ [MACRO] BINARY_HEAP_INTO_ITER_TRY_RFOLD %out_ok, %out_value, %iter_reg, %init_value, %fold_fn
1608
+ EXPAND BINARY_HEAP_INTO_ITER_TRY_RFOLD_U64 %out_ok, %out_value, %iter_reg, %init_value, %fold_fn
1609
+ [END_MACRO]
1610
+
1611
+ [MACRO] BINARY_HEAP_INTO_ITER_SUM_U64 %out_value, %iter_reg
1612
+ EXPAND VEC_INTO_ITER_SUM_U64 %out_value, %iter_reg
1613
+ [END_MACRO]
1614
+
1615
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SUM_U64.
1616
+ [MACRO] BINARY_HEAP_INTO_ITER_SUM %out_value, %iter_reg
1617
+ EXPAND BINARY_HEAP_INTO_ITER_SUM_U64 %out_value, %iter_reg
1618
+ [END_MACRO]
1619
+
1620
+ [MACRO] BINARY_HEAP_INTO_ITER_PRODUCT_U64 %out_value, %iter_reg
1621
+ EXPAND VEC_INTO_ITER_PRODUCT_U64 %out_value, %iter_reg
1622
+ [END_MACRO]
1623
+
1624
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_PRODUCT_U64.
1625
+ [MACRO] BINARY_HEAP_INTO_ITER_PRODUCT %out_value, %iter_reg
1626
+ EXPAND BINARY_HEAP_INTO_ITER_PRODUCT_U64 %out_value, %iter_reg
1627
+ [END_MACRO]
1628
+
1629
+ [MACRO] BINARY_HEAP_INTO_ITER_MIN_U64 %out_has, %out_value, %iter_reg
1630
+ EXPAND VEC_INTO_ITER_MIN_U64 %out_has, %out_value, %iter_reg
1631
+ [END_MACRO]
1632
+
1633
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_MIN_U64.
1634
+ [MACRO] BINARY_HEAP_INTO_ITER_MIN %out_has, %out_value, %iter_reg
1635
+ EXPAND BINARY_HEAP_INTO_ITER_MIN_U64 %out_has, %out_value, %iter_reg
1636
+ [END_MACRO]
1637
+
1638
+ [MACRO] BINARY_HEAP_INTO_ITER_MAX_U64 %out_has, %out_value, %iter_reg
1639
+ EXPAND VEC_INTO_ITER_MAX_U64 %out_has, %out_value, %iter_reg
1640
+ [END_MACRO]
1641
+
1642
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_MAX_U64.
1643
+ [MACRO] BINARY_HEAP_INTO_ITER_MAX %out_has, %out_value, %iter_reg
1644
+ EXPAND BINARY_HEAP_INTO_ITER_MAX_U64 %out_has, %out_value, %iter_reg
1645
+ [END_MACRO]
1646
+
1647
+ [MACRO] BINARY_HEAP_INTO_ITER_REDUCE_U64 %out_has, %out_value, %iter_reg, %reduce_fn
1648
+ EXPAND VEC_INTO_ITER_REDUCE_U64 %out_has, %out_value, %iter_reg, %reduce_fn
1649
+ [END_MACRO]
1650
+
1651
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_REDUCE_U64.
1652
+ [MACRO] BINARY_HEAP_INTO_ITER_REDUCE %out_has, %out_value, %iter_reg, %reduce_fn
1653
+ EXPAND BINARY_HEAP_INTO_ITER_REDUCE_U64 %out_has, %out_value, %iter_reg, %reduce_fn
1654
+ [END_MACRO]
1655
+
1656
+ [MACRO] BINARY_HEAP_INTO_ITER_TRY_REDUCE_U64 %out_ok, %out_has, %out_value, %iter_reg, %reduce_fn
1657
+ EXPAND VEC_INTO_ITER_TRY_REDUCE_U64 %out_ok, %out_has, %out_value, %iter_reg, %reduce_fn
1658
+ [END_MACRO]
1659
+
1660
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_TRY_REDUCE_U64.
1661
+ [MACRO] BINARY_HEAP_INTO_ITER_TRY_REDUCE %out_ok, %out_has, %out_value, %iter_reg, %reduce_fn
1662
+ EXPAND BINARY_HEAP_INTO_ITER_TRY_REDUCE_U64 %out_ok, %out_has, %out_value, %iter_reg, %reduce_fn
1663
+ [END_MACRO]
1664
+
1665
+ [MACRO] BINARY_HEAP_INTO_ITER_MIN_BY_U64 %out_has, %out_value, %iter_reg, %compare_fn
1666
+ EXPAND VEC_INTO_ITER_MIN_BY_U64 %out_has, %out_value, %iter_reg, %compare_fn
1667
+ [END_MACRO]
1668
+
1669
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_MIN_BY_U64.
1670
+ [MACRO] BINARY_HEAP_INTO_ITER_MIN_BY %out_has, %out_value, %iter_reg, %compare_fn
1671
+ EXPAND BINARY_HEAP_INTO_ITER_MIN_BY_U64 %out_has, %out_value, %iter_reg, %compare_fn
1672
+ [END_MACRO]
1673
+
1674
+ [MACRO] BINARY_HEAP_INTO_ITER_MAX_BY_U64 %out_has, %out_value, %iter_reg, %compare_fn
1675
+ EXPAND VEC_INTO_ITER_MAX_BY_U64 %out_has, %out_value, %iter_reg, %compare_fn
1676
+ [END_MACRO]
1677
+
1678
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_MAX_BY_U64.
1679
+ [MACRO] BINARY_HEAP_INTO_ITER_MAX_BY %out_has, %out_value, %iter_reg, %compare_fn
1680
+ EXPAND BINARY_HEAP_INTO_ITER_MAX_BY_U64 %out_has, %out_value, %iter_reg, %compare_fn
1681
+ [END_MACRO]
1682
+
1683
+ [MACRO] BINARY_HEAP_INTO_ITER_MIN_BY_KEY_U64 %out_has, %out_value, %iter_reg, %key_fn
1684
+ EXPAND VEC_INTO_ITER_MIN_BY_KEY_U64 %out_has, %out_value, %iter_reg, %key_fn
1685
+ [END_MACRO]
1686
+
1687
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_MIN_BY_KEY_U64.
1688
+ [MACRO] BINARY_HEAP_INTO_ITER_MIN_BY_KEY %out_has, %out_value, %iter_reg, %key_fn
1689
+ EXPAND BINARY_HEAP_INTO_ITER_MIN_BY_KEY_U64 %out_has, %out_value, %iter_reg, %key_fn
1690
+ [END_MACRO]
1691
+
1692
+ [MACRO] BINARY_HEAP_INTO_ITER_MAX_BY_KEY_U64 %out_has, %out_value, %iter_reg, %key_fn
1693
+ EXPAND VEC_INTO_ITER_MAX_BY_KEY_U64 %out_has, %out_value, %iter_reg, %key_fn
1694
+ [END_MACRO]
1695
+
1696
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_MAX_BY_KEY_U64.
1697
+ [MACRO] BINARY_HEAP_INTO_ITER_MAX_BY_KEY %out_has, %out_value, %iter_reg, %key_fn
1698
+ EXPAND BINARY_HEAP_INTO_ITER_MAX_BY_KEY_U64 %out_has, %out_value, %iter_reg, %key_fn
1699
+ [END_MACRO]
1700
+
1701
+ [MACRO] BINARY_HEAP_INTO_ITER_CMP_U64 %out_ordering, %left_iter, %right_iter
1702
+ EXPAND VEC_INTO_ITER_CMP_U64 %out_ordering, %left_iter, %right_iter
1703
+ [END_MACRO]
1704
+
1705
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_CMP_U64.
1706
+ [MACRO] BINARY_HEAP_INTO_ITER_CMP %out_ordering, %left_iter, %right_iter
1707
+ EXPAND BINARY_HEAP_INTO_ITER_CMP_U64 %out_ordering, %left_iter, %right_iter
1708
+ [END_MACRO]
1709
+
1710
+ [MACRO] BINARY_HEAP_INTO_ITER_CMP_BY_U64 %out_ordering, %left_iter, %right_iter, %compare_fn
1711
+ EXPAND VEC_INTO_ITER_CMP_BY_U64 %out_ordering, %left_iter, %right_iter, %compare_fn
1712
+ [END_MACRO]
1713
+
1714
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_CMP_BY_U64.
1715
+ [MACRO] BINARY_HEAP_INTO_ITER_CMP_BY %out_ordering, %left_iter, %right_iter, %compare_fn
1716
+ EXPAND BINARY_HEAP_INTO_ITER_CMP_BY_U64 %out_ordering, %left_iter, %right_iter, %compare_fn
1717
+ [END_MACRO]
1718
+
1719
+ [MACRO] BINARY_HEAP_INTO_ITER_PARTIAL_CMP_U64 %out_ordering, %left_iter, %right_iter
1720
+ EXPAND VEC_INTO_ITER_PARTIAL_CMP_U64 %out_ordering, %left_iter, %right_iter
1721
+ [END_MACRO]
1722
+
1723
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_PARTIAL_CMP_U64.
1724
+ [MACRO] BINARY_HEAP_INTO_ITER_PARTIAL_CMP %out_ordering, %left_iter, %right_iter
1725
+ EXPAND BINARY_HEAP_INTO_ITER_PARTIAL_CMP_U64 %out_ordering, %left_iter, %right_iter
1726
+ [END_MACRO]
1727
+
1728
+ [MACRO] BINARY_HEAP_INTO_ITER_PARTIAL_CMP_BY_U64 %out_ok, %out_ordering, %left_iter, %right_iter, %compare_fn
1729
+ EXPAND VEC_INTO_ITER_PARTIAL_CMP_BY_U64 %out_ok, %out_ordering, %left_iter, %right_iter, %compare_fn
1730
+ [END_MACRO]
1731
+
1732
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_PARTIAL_CMP_BY_U64.
1733
+ [MACRO] BINARY_HEAP_INTO_ITER_PARTIAL_CMP_BY %out_ok, %out_ordering, %left_iter, %right_iter, %compare_fn
1734
+ EXPAND BINARY_HEAP_INTO_ITER_PARTIAL_CMP_BY_U64 %out_ok, %out_ordering, %left_iter, %right_iter, %compare_fn
1735
+ [END_MACRO]
1736
+
1737
+ [MACRO] BINARY_HEAP_INTO_ITER_EQ_BY_U64 %out_bool, %left_iter, %right_iter, %eq_fn
1738
+ EXPAND VEC_INTO_ITER_EQ_BY_U64 %out_bool, %left_iter, %right_iter, %eq_fn
1739
+ [END_MACRO]
1740
+
1741
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_EQ_BY_U64.
1742
+ [MACRO] BINARY_HEAP_INTO_ITER_EQ_BY %out_bool, %left_iter, %right_iter, %eq_fn
1743
+ EXPAND BINARY_HEAP_INTO_ITER_EQ_BY_U64 %out_bool, %left_iter, %right_iter, %eq_fn
1744
+ [END_MACRO]
1745
+
1746
+ [MACRO] BINARY_HEAP_INTO_ITER_EQ_U64 %out_bool, %left_iter, %right_iter
1747
+ EXPAND VEC_INTO_ITER_EQ_U64 %out_bool, %left_iter, %right_iter
1748
+ [END_MACRO]
1749
+
1750
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_EQ_U64.
1751
+ [MACRO] BINARY_HEAP_INTO_ITER_EQ %out_bool, %left_iter, %right_iter
1752
+ EXPAND BINARY_HEAP_INTO_ITER_EQ_U64 %out_bool, %left_iter, %right_iter
1753
+ [END_MACRO]
1754
+
1755
+ [MACRO] BINARY_HEAP_INTO_ITER_PARTIAL_EQ_U64 %out_bool, %left_iter, %right_iter
1756
+ EXPAND VEC_INTO_ITER_PARTIAL_EQ_U64 %out_bool, %left_iter, %right_iter
1757
+ [END_MACRO]
1758
+
1759
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_PARTIAL_EQ_U64.
1760
+ [MACRO] BINARY_HEAP_INTO_ITER_PARTIAL_EQ %out_bool, %left_iter, %right_iter
1761
+ EXPAND BINARY_HEAP_INTO_ITER_PARTIAL_EQ_U64 %out_bool, %left_iter, %right_iter
1762
+ [END_MACRO]
1763
+
1764
+ [MACRO] BINARY_HEAP_INTO_ITER_NE_U64 %out_bool, %left_iter, %right_iter
1765
+ EXPAND VEC_INTO_ITER_NE_U64 %out_bool, %left_iter, %right_iter
1766
+ [END_MACRO]
1767
+
1768
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_NE_U64.
1769
+ [MACRO] BINARY_HEAP_INTO_ITER_NE %out_bool, %left_iter, %right_iter
1770
+ EXPAND BINARY_HEAP_INTO_ITER_NE_U64 %out_bool, %left_iter, %right_iter
1771
+ [END_MACRO]
1772
+
1773
+ [MACRO] BINARY_HEAP_INTO_ITER_LT_U64 %out_bool, %left_iter, %right_iter
1774
+ EXPAND VEC_INTO_ITER_LT_U64 %out_bool, %left_iter, %right_iter
1775
+ [END_MACRO]
1776
+
1777
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_LT_U64.
1778
+ [MACRO] BINARY_HEAP_INTO_ITER_LT %out_bool, %left_iter, %right_iter
1779
+ EXPAND BINARY_HEAP_INTO_ITER_LT_U64 %out_bool, %left_iter, %right_iter
1780
+ [END_MACRO]
1781
+
1782
+ [MACRO] BINARY_HEAP_INTO_ITER_LE_U64 %out_bool, %left_iter, %right_iter
1783
+ EXPAND VEC_INTO_ITER_LE_U64 %out_bool, %left_iter, %right_iter
1784
+ [END_MACRO]
1785
+
1786
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_LE_U64.
1787
+ [MACRO] BINARY_HEAP_INTO_ITER_LE %out_bool, %left_iter, %right_iter
1788
+ EXPAND BINARY_HEAP_INTO_ITER_LE_U64 %out_bool, %left_iter, %right_iter
1789
+ [END_MACRO]
1790
+
1791
+ [MACRO] BINARY_HEAP_INTO_ITER_GT_U64 %out_bool, %left_iter, %right_iter
1792
+ EXPAND VEC_INTO_ITER_GT_U64 %out_bool, %left_iter, %right_iter
1793
+ [END_MACRO]
1794
+
1795
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_GT_U64.
1796
+ [MACRO] BINARY_HEAP_INTO_ITER_GT %out_bool, %left_iter, %right_iter
1797
+ EXPAND BINARY_HEAP_INTO_ITER_GT_U64 %out_bool, %left_iter, %right_iter
1798
+ [END_MACRO]
1799
+
1800
+ [MACRO] BINARY_HEAP_INTO_ITER_GE_U64 %out_bool, %left_iter, %right_iter
1801
+ EXPAND VEC_INTO_ITER_GE_U64 %out_bool, %left_iter, %right_iter
1802
+ [END_MACRO]
1803
+
1804
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_GE_U64.
1805
+ [MACRO] BINARY_HEAP_INTO_ITER_GE %out_bool, %left_iter, %right_iter
1806
+ EXPAND BINARY_HEAP_INTO_ITER_GE_U64 %out_bool, %left_iter, %right_iter
1807
+ [END_MACRO]
1808
+
1809
+ [MACRO] BINARY_HEAP_INTO_SORTED_VEC %out_vec, %heap_reg
1810
+ %out_vec = call @sa_binary_heap_into_sorted_vec(^%heap_reg)
1811
+ [END_MACRO]
1812
+
1813
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_U64 %out_iter, %out_vec, %heap_reg
1814
+ EXPAND BINARY_HEAP_INTO_SORTED_VEC __binary_heap_sorted_vec_%out_iter, %heap_reg
1815
+ EXPAND VEC_LEN __binary_heap_sorted_len_%out_iter, __binary_heap_sorted_vec_%out_iter
1816
+ EXPAND VEC_WITH_CAPACITY_U64 %out_vec, __binary_heap_sorted_len_%out_iter
1817
+ __binary_heap_sorted_idx_slot_%out_iter = stack_alloc 8
1818
+ store __binary_heap_sorted_idx_slot_%out_iter+0, __binary_heap_sorted_len_%out_iter as u64
1819
+ jmp L_BINARY_HEAP_INTO_ITER_SORTED_HEAD_%out_iter
1820
+
1821
+ L_BINARY_HEAP_INTO_ITER_SORTED_HEAD_%out_iter:
1822
+ __binary_heap_sorted_idx_%out_iter = load __binary_heap_sorted_idx_slot_%out_iter+0 as u64
1823
+ __binary_heap_sorted_done_%out_iter = eq __binary_heap_sorted_idx_%out_iter, 0
1824
+ br __binary_heap_sorted_done_%out_iter -> L_BINARY_HEAP_INTO_ITER_SORTED_BUILD_ITER_%out_iter, L_BINARY_HEAP_INTO_ITER_SORTED_BODY_%out_iter
1825
+
1826
+ L_BINARY_HEAP_INTO_ITER_SORTED_BODY_%out_iter:
1827
+ __binary_heap_sorted_prev_%out_iter = sub __binary_heap_sorted_idx_%out_iter, 1
1828
+ EXPAND VEC_GET_U64 __binary_heap_sorted_value_%out_iter, __binary_heap_sorted_vec_%out_iter, __binary_heap_sorted_prev_%out_iter
1829
+ EXPAND VEC_PUSH_U64 %out_vec, __binary_heap_sorted_value_%out_iter
1830
+ store __binary_heap_sorted_idx_slot_%out_iter+0, __binary_heap_sorted_prev_%out_iter as u64
1831
+ !__binary_heap_sorted_value_%out_iter
1832
+ !__binary_heap_sorted_prev_%out_iter
1833
+ !__binary_heap_sorted_done_%out_iter
1834
+ !__binary_heap_sorted_idx_%out_iter
1835
+ jmp L_BINARY_HEAP_INTO_ITER_SORTED_HEAD_%out_iter
1836
+
1837
+ L_BINARY_HEAP_INTO_ITER_SORTED_BUILD_ITER_%out_iter:
1838
+ EXPAND VEC_FREE __binary_heap_sorted_vec_%out_iter
1839
+ EXPAND VEC_AS_SLICE __binary_heap_into_iter_sorted_slice_%out_iter, %out_vec
1840
+ EXPAND ITER_FROM_SLICE %out_iter, __binary_heap_into_iter_sorted_slice_%out_iter
1841
+ !__binary_heap_into_iter_sorted_slice_%out_iter
1842
+ !__binary_heap_sorted_done_%out_iter
1843
+ !__binary_heap_sorted_idx_%out_iter
1844
+ !__binary_heap_sorted_len_%out_iter
1845
+ [END_MACRO]
1846
+
1847
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_U64.
1848
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED %out_iter, %out_vec, %heap_reg
1849
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_U64 %out_iter, %out_vec, %heap_reg
1850
+ [END_MACRO]
1851
+
1852
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_NEXT_U64 %out_has, %out_value, %iter_reg
1853
+ EXPAND ITER_NEXT_U64 %out_has, %out_value, %iter_reg
1854
+ [END_MACRO]
1855
+
1856
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_NEXT_U64.
1857
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_NEXT %out_has, %out_value, %iter_reg
1858
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_NEXT_U64 %out_has, %out_value, %iter_reg
1859
+ [END_MACRO]
1860
+
1861
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_NTH_U64 %out_has, %out_value, %iter_reg, %nth
1862
+ EXPAND VEC_INTO_ITER_NTH_U64 %out_has, %out_value, %iter_reg, %nth
1863
+ [END_MACRO]
1864
+
1865
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_NTH_U64.
1866
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_NTH %out_has, %out_value, %iter_reg, %nth
1867
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_NTH_U64 %out_has, %out_value, %iter_reg, %nth
1868
+ [END_MACRO]
1869
+
1870
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_TRY_NEXT_CHUNK_U64 %out_ok, %out_filled, %iter_reg, %dst_ptr, %count
1871
+ EXPAND VEC_INTO_ITER_TRY_NEXT_CHUNK_U64 %out_ok, %out_filled, %iter_reg, %dst_ptr, %count
1872
+ [END_MACRO]
1873
+
1874
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_TRY_NEXT_CHUNK_U64.
1875
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_TRY_NEXT_CHUNK %out_ok, %out_filled, %iter_reg, %dst_ptr, %count
1876
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_TRY_NEXT_CHUNK_U64 %out_ok, %out_filled, %iter_reg, %dst_ptr, %count
1877
+ [END_MACRO]
1878
+
1879
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_ADVANCE_BY %out_ok, %out_remaining, %iter_reg, %count
1880
+ EXPAND VEC_INTO_ITER_ADVANCE_BY %out_ok, %out_remaining, %iter_reg, %count
1881
+ [END_MACRO]
1882
+
1883
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_SIZE_HINT_U64 %out_lower, %out_upper, %iter_reg
1884
+ EXPAND ITER_SIZE_HINT %out_lower, %out_upper, %iter_reg
1885
+ [END_MACRO]
1886
+
1887
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_SIZE_HINT_U64.
1888
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_SIZE_HINT %out_lower, %out_upper, %iter_reg
1889
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_SIZE_HINT_U64 %out_lower, %out_upper, %iter_reg
1890
+ [END_MACRO]
1891
+
1892
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_EXACT_SIZE_LEN_U64 %out_len, %iter_reg
1893
+ EXPAND ITER_EXACT_SIZE_LEN %out_len, %iter_reg
1894
+ [END_MACRO]
1895
+
1896
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_EXACT_SIZE_LEN_U64.
1897
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_EXACT_SIZE_LEN %out_len, %iter_reg
1898
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_EXACT_SIZE_LEN_U64 %out_len, %iter_reg
1899
+ [END_MACRO]
1900
+
1901
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_EXACT_SIZE_IS_EMPTY_U64 %out_bool, %iter_reg
1902
+ EXPAND ITER_EXACT_SIZE_IS_EMPTY %out_bool, %iter_reg
1903
+ [END_MACRO]
1904
+
1905
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_EXACT_SIZE_IS_EMPTY_U64.
1906
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_EXACT_SIZE_IS_EMPTY %out_bool, %iter_reg
1907
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_EXACT_SIZE_IS_EMPTY_U64 %out_bool, %iter_reg
1908
+ [END_MACRO]
1909
+
1910
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_COUNT_U64 %out_count, %iter_reg
1911
+ EXPAND VEC_INTO_ITER_COUNT_U64 %out_count, %iter_reg
1912
+ [END_MACRO]
1913
+
1914
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_COUNT_U64.
1915
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_COUNT %out_count, %iter_reg
1916
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_COUNT_U64 %out_count, %iter_reg
1917
+ [END_MACRO]
1918
+
1919
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_LAST_U64 %out_has, %out_value, %iter_reg
1920
+ EXPAND VEC_INTO_ITER_LAST_U64 %out_has, %out_value, %iter_reg
1921
+ [END_MACRO]
1922
+
1923
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_LAST_U64.
1924
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_LAST %out_has, %out_value, %iter_reg
1925
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_LAST_U64 %out_has, %out_value, %iter_reg
1926
+ [END_MACRO]
1927
+
1928
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_FIND_U64 %out_has, %out_value, %iter_reg, %pred_fn
1929
+ EXPAND VEC_INTO_ITER_FIND_U64 %out_has, %out_value, %iter_reg, %pred_fn
1930
+ [END_MACRO]
1931
+
1932
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_FIND_U64.
1933
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_FIND %out_has, %out_value, %iter_reg, %pred_fn
1934
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_FIND_U64 %out_has, %out_value, %iter_reg, %pred_fn
1935
+ [END_MACRO]
1936
+
1937
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_TRY_FIND_U64 %out_ok, %out_has, %out_value, %iter_reg, %pred_fn
1938
+ EXPAND VEC_INTO_ITER_TRY_FIND_U64 %out_ok, %out_has, %out_value, %iter_reg, %pred_fn
1939
+ [END_MACRO]
1940
+
1941
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_TRY_FIND_U64.
1942
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_TRY_FIND %out_ok, %out_has, %out_value, %iter_reg, %pred_fn
1943
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_TRY_FIND_U64 %out_ok, %out_has, %out_value, %iter_reg, %pred_fn
1944
+ [END_MACRO]
1945
+
1946
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_FIND_MAP_U64 %out_has, %out_value, %iter_reg, %map_fn
1947
+ EXPAND VEC_INTO_ITER_FIND_MAP_U64 %out_has, %out_value, %iter_reg, %map_fn
1948
+ [END_MACRO]
1949
+
1950
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_FIND_MAP_U64.
1951
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_FIND_MAP %out_has, %out_value, %iter_reg, %map_fn
1952
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_FIND_MAP_U64 %out_has, %out_value, %iter_reg, %map_fn
1953
+ [END_MACRO]
1954
+
1955
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_POSITION_U64 %out_has, %out_index, %iter_reg, %pred_fn
1956
+ EXPAND VEC_INTO_ITER_POSITION_U64 %out_has, %out_index, %iter_reg, %pred_fn
1957
+ [END_MACRO]
1958
+
1959
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_POSITION_U64.
1960
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_POSITION %out_has, %out_index, %iter_reg, %pred_fn
1961
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_POSITION_U64 %out_has, %out_index, %iter_reg, %pred_fn
1962
+ [END_MACRO]
1963
+
1964
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_ANY_U64 %out_bool, %iter_reg, %pred_fn
1965
+ EXPAND VEC_INTO_ITER_ANY_U64 %out_bool, %iter_reg, %pred_fn
1966
+ [END_MACRO]
1967
+
1968
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_ANY_U64.
1969
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_ANY %out_bool, %iter_reg, %pred_fn
1970
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_ANY_U64 %out_bool, %iter_reg, %pred_fn
1971
+ [END_MACRO]
1972
+
1973
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_ALL_U64 %out_bool, %iter_reg, %pred_fn
1974
+ EXPAND VEC_INTO_ITER_ALL_U64 %out_bool, %iter_reg, %pred_fn
1975
+ [END_MACRO]
1976
+
1977
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_ALL_U64.
1978
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_ALL %out_bool, %iter_reg, %pred_fn
1979
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_ALL_U64 %out_bool, %iter_reg, %pred_fn
1980
+ [END_MACRO]
1981
+
1982
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_FOR_EACH_U64 %iter_reg, %each_fn
1983
+ EXPAND VEC_INTO_ITER_FOR_EACH_U64 %iter_reg, %each_fn
1984
+ [END_MACRO]
1985
+
1986
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_FOR_EACH_U64.
1987
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_FOR_EACH %iter_reg, %each_fn
1988
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_FOR_EACH_U64 %iter_reg, %each_fn
1989
+ [END_MACRO]
1990
+
1991
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_TRY_FOR_EACH_U64 %out_ok, %iter_reg, %each_fn
1992
+ EXPAND VEC_INTO_ITER_TRY_FOR_EACH_U64 %out_ok, %iter_reg, %each_fn
1993
+ [END_MACRO]
1994
+
1995
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_TRY_FOR_EACH_U64.
1996
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_TRY_FOR_EACH %out_ok, %iter_reg, %each_fn
1997
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_TRY_FOR_EACH_U64 %out_ok, %iter_reg, %each_fn
1998
+ [END_MACRO]
1999
+
2000
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_FOLD_U64 %out_value, %iter_reg, %init_value, %fold_fn
2001
+ EXPAND VEC_INTO_ITER_FOLD_U64 %out_value, %iter_reg, %init_value, %fold_fn
2002
+ [END_MACRO]
2003
+
2004
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_FOLD_U64.
2005
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_FOLD %out_value, %iter_reg, %init_value, %fold_fn
2006
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_FOLD_U64 %out_value, %iter_reg, %init_value, %fold_fn
2007
+ [END_MACRO]
2008
+
2009
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_TRY_FOLD_U64 %out_ok, %out_value, %iter_reg, %init_value, %fold_fn
2010
+ EXPAND VEC_INTO_ITER_TRY_FOLD_U64 %out_ok, %out_value, %iter_reg, %init_value, %fold_fn
2011
+ [END_MACRO]
2012
+
2013
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_TRY_FOLD_U64.
2014
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_TRY_FOLD %out_ok, %out_value, %iter_reg, %init_value, %fold_fn
2015
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_TRY_FOLD_U64 %out_ok, %out_value, %iter_reg, %init_value, %fold_fn
2016
+ [END_MACRO]
2017
+
2018
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_SUM_U64 %out_value, %iter_reg
2019
+ EXPAND VEC_INTO_ITER_SUM_U64 %out_value, %iter_reg
2020
+ [END_MACRO]
2021
+
2022
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_SUM_U64.
2023
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_SUM %out_value, %iter_reg
2024
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_SUM_U64 %out_value, %iter_reg
2025
+ [END_MACRO]
2026
+
2027
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_PRODUCT_U64 %out_value, %iter_reg
2028
+ EXPAND VEC_INTO_ITER_PRODUCT_U64 %out_value, %iter_reg
2029
+ [END_MACRO]
2030
+
2031
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_PRODUCT_U64.
2032
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_PRODUCT %out_value, %iter_reg
2033
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_PRODUCT_U64 %out_value, %iter_reg
2034
+ [END_MACRO]
2035
+
2036
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_MIN_U64 %out_has, %out_value, %iter_reg
2037
+ EXPAND VEC_INTO_ITER_MIN_U64 %out_has, %out_value, %iter_reg
2038
+ [END_MACRO]
2039
+
2040
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_MIN_U64.
2041
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_MIN %out_has, %out_value, %iter_reg
2042
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_MIN_U64 %out_has, %out_value, %iter_reg
2043
+ [END_MACRO]
2044
+
2045
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_MAX_U64 %out_has, %out_value, %iter_reg
2046
+ EXPAND VEC_INTO_ITER_MAX_U64 %out_has, %out_value, %iter_reg
2047
+ [END_MACRO]
2048
+
2049
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_MAX_U64.
2050
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_MAX %out_has, %out_value, %iter_reg
2051
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_MAX_U64 %out_has, %out_value, %iter_reg
2052
+ [END_MACRO]
2053
+
2054
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_REDUCE_U64 %out_has, %out_value, %iter_reg, %reduce_fn
2055
+ EXPAND VEC_INTO_ITER_REDUCE_U64 %out_has, %out_value, %iter_reg, %reduce_fn
2056
+ [END_MACRO]
2057
+
2058
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_REDUCE_U64.
2059
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_REDUCE %out_has, %out_value, %iter_reg, %reduce_fn
2060
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_REDUCE_U64 %out_has, %out_value, %iter_reg, %reduce_fn
2061
+ [END_MACRO]
2062
+
2063
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_TRY_REDUCE_U64 %out_ok, %out_has, %out_value, %iter_reg, %reduce_fn
2064
+ EXPAND VEC_INTO_ITER_TRY_REDUCE_U64 %out_ok, %out_has, %out_value, %iter_reg, %reduce_fn
2065
+ [END_MACRO]
2066
+
2067
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_TRY_REDUCE_U64.
2068
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_TRY_REDUCE %out_ok, %out_has, %out_value, %iter_reg, %reduce_fn
2069
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_TRY_REDUCE_U64 %out_ok, %out_has, %out_value, %iter_reg, %reduce_fn
2070
+ [END_MACRO]
2071
+
2072
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_MIN_BY_U64 %out_has, %out_value, %iter_reg, %compare_fn
2073
+ EXPAND VEC_INTO_ITER_MIN_BY_U64 %out_has, %out_value, %iter_reg, %compare_fn
2074
+ [END_MACRO]
2075
+
2076
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_MIN_BY_U64.
2077
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_MIN_BY %out_has, %out_value, %iter_reg, %compare_fn
2078
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_MIN_BY_U64 %out_has, %out_value, %iter_reg, %compare_fn
2079
+ [END_MACRO]
2080
+
2081
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_MAX_BY_U64 %out_has, %out_value, %iter_reg, %compare_fn
2082
+ EXPAND VEC_INTO_ITER_MAX_BY_U64 %out_has, %out_value, %iter_reg, %compare_fn
2083
+ [END_MACRO]
2084
+
2085
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_MAX_BY_U64.
2086
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_MAX_BY %out_has, %out_value, %iter_reg, %compare_fn
2087
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_MAX_BY_U64 %out_has, %out_value, %iter_reg, %compare_fn
2088
+ [END_MACRO]
2089
+
2090
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_MIN_BY_KEY_U64 %out_has, %out_value, %iter_reg, %key_fn
2091
+ EXPAND VEC_INTO_ITER_MIN_BY_KEY_U64 %out_has, %out_value, %iter_reg, %key_fn
2092
+ [END_MACRO]
2093
+
2094
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_MIN_BY_KEY_U64.
2095
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_MIN_BY_KEY %out_has, %out_value, %iter_reg, %key_fn
2096
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_MIN_BY_KEY_U64 %out_has, %out_value, %iter_reg, %key_fn
2097
+ [END_MACRO]
2098
+
2099
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_MAX_BY_KEY_U64 %out_has, %out_value, %iter_reg, %key_fn
2100
+ EXPAND VEC_INTO_ITER_MAX_BY_KEY_U64 %out_has, %out_value, %iter_reg, %key_fn
2101
+ [END_MACRO]
2102
+
2103
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_MAX_BY_KEY_U64.
2104
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_MAX_BY_KEY %out_has, %out_value, %iter_reg, %key_fn
2105
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_MAX_BY_KEY_U64 %out_has, %out_value, %iter_reg, %key_fn
2106
+ [END_MACRO]
2107
+
2108
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_IS_SORTED_U64 %out_bool, %iter_reg
2109
+ EXPAND VEC_INTO_ITER_IS_SORTED_U64 %out_bool, %iter_reg
2110
+ [END_MACRO]
2111
+
2112
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_IS_SORTED_U64.
2113
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_IS_SORTED %out_bool, %iter_reg
2114
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_IS_SORTED_U64 %out_bool, %iter_reg
2115
+ [END_MACRO]
2116
+
2117
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_IS_SORTED_BY_U64 %out_bool, %iter_reg, %compare_fn
2118
+ EXPAND VEC_INTO_ITER_IS_SORTED_BY_U64 %out_bool, %iter_reg, %compare_fn
2119
+ [END_MACRO]
2120
+
2121
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_IS_SORTED_BY_U64.
2122
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_IS_SORTED_BY %out_bool, %iter_reg, %compare_fn
2123
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_IS_SORTED_BY_U64 %out_bool, %iter_reg, %compare_fn
2124
+ [END_MACRO]
2125
+
2126
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_IS_SORTED_BY_KEY_U64 %out_bool, %iter_reg, %key_fn
2127
+ EXPAND VEC_INTO_ITER_IS_SORTED_BY_KEY_U64 %out_bool, %iter_reg, %key_fn
2128
+ [END_MACRO]
2129
+
2130
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_IS_SORTED_BY_KEY_U64.
2131
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_IS_SORTED_BY_KEY %out_bool, %iter_reg, %key_fn
2132
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_IS_SORTED_BY_KEY_U64 %out_bool, %iter_reg, %key_fn
2133
+ [END_MACRO]
2134
+
2135
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_PARTITION_U64 %out_true_vec, %out_false_vec, %iter_reg, %pred_fn
2136
+ EXPAND VEC_INTO_ITER_PARTITION_U64 %out_true_vec, %out_false_vec, %iter_reg, %pred_fn
2137
+ [END_MACRO]
2138
+
2139
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_PARTITION_U64.
2140
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_PARTITION %out_true_vec, %out_false_vec, %iter_reg, %pred_fn
2141
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_PARTITION_U64 %out_true_vec, %out_false_vec, %iter_reg, %pred_fn
2142
+ [END_MACRO]
2143
+
2144
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_IS_PARTITIONED_U64 %out_bool, %iter_reg, %pred_fn
2145
+ EXPAND VEC_INTO_ITER_IS_PARTITIONED_U64 %out_bool, %iter_reg, %pred_fn
2146
+ [END_MACRO]
2147
+
2148
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_IS_PARTITIONED_U64.
2149
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_IS_PARTITIONED %out_bool, %iter_reg, %pred_fn
2150
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_IS_PARTITIONED_U64 %out_bool, %iter_reg, %pred_fn
2151
+ [END_MACRO]
2152
+
2153
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_CMP_U64 %out_ordering, %left_iter, %right_iter
2154
+ EXPAND VEC_INTO_ITER_CMP_U64 %out_ordering, %left_iter, %right_iter
2155
+ [END_MACRO]
2156
+
2157
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_CMP_U64.
2158
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_CMP %out_ordering, %left_iter, %right_iter
2159
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_CMP_U64 %out_ordering, %left_iter, %right_iter
2160
+ [END_MACRO]
2161
+
2162
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_CMP_BY_U64 %out_ordering, %left_iter, %right_iter, %compare_fn
2163
+ EXPAND VEC_INTO_ITER_CMP_BY_U64 %out_ordering, %left_iter, %right_iter, %compare_fn
2164
+ [END_MACRO]
2165
+
2166
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_CMP_BY_U64.
2167
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_CMP_BY %out_ordering, %left_iter, %right_iter, %compare_fn
2168
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_CMP_BY_U64 %out_ordering, %left_iter, %right_iter, %compare_fn
2169
+ [END_MACRO]
2170
+
2171
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_PARTIAL_CMP_U64 %out_ordering, %left_iter, %right_iter
2172
+ EXPAND VEC_INTO_ITER_PARTIAL_CMP_U64 %out_ordering, %left_iter, %right_iter
2173
+ [END_MACRO]
2174
+
2175
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_PARTIAL_CMP_U64.
2176
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_PARTIAL_CMP %out_ordering, %left_iter, %right_iter
2177
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_PARTIAL_CMP_U64 %out_ordering, %left_iter, %right_iter
2178
+ [END_MACRO]
2179
+
2180
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_PARTIAL_CMP_BY_U64 %out_ok, %out_ordering, %left_iter, %right_iter, %compare_fn
2181
+ EXPAND VEC_INTO_ITER_PARTIAL_CMP_BY_U64 %out_ok, %out_ordering, %left_iter, %right_iter, %compare_fn
2182
+ [END_MACRO]
2183
+
2184
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_PARTIAL_CMP_BY_U64.
2185
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_PARTIAL_CMP_BY %out_ok, %out_ordering, %left_iter, %right_iter, %compare_fn
2186
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_PARTIAL_CMP_BY_U64 %out_ok, %out_ordering, %left_iter, %right_iter, %compare_fn
2187
+ [END_MACRO]
2188
+
2189
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_EQ_BY_U64 %out_bool, %left_iter, %right_iter, %eq_fn
2190
+ EXPAND VEC_INTO_ITER_EQ_BY_U64 %out_bool, %left_iter, %right_iter, %eq_fn
2191
+ [END_MACRO]
2192
+
2193
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_EQ_BY_U64.
2194
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_EQ_BY %out_bool, %left_iter, %right_iter, %eq_fn
2195
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_EQ_BY_U64 %out_bool, %left_iter, %right_iter, %eq_fn
2196
+ [END_MACRO]
2197
+
2198
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_EQ_U64 %out_bool, %left_iter, %right_iter
2199
+ EXPAND VEC_INTO_ITER_EQ_U64 %out_bool, %left_iter, %right_iter
2200
+ [END_MACRO]
2201
+
2202
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_EQ_U64.
2203
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_EQ %out_bool, %left_iter, %right_iter
2204
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_EQ_U64 %out_bool, %left_iter, %right_iter
2205
+ [END_MACRO]
2206
+
2207
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_PARTIAL_EQ_U64 %out_bool, %left_iter, %right_iter
2208
+ EXPAND VEC_INTO_ITER_PARTIAL_EQ_U64 %out_bool, %left_iter, %right_iter
2209
+ [END_MACRO]
2210
+
2211
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_PARTIAL_EQ_U64.
2212
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_PARTIAL_EQ %out_bool, %left_iter, %right_iter
2213
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_PARTIAL_EQ_U64 %out_bool, %left_iter, %right_iter
2214
+ [END_MACRO]
2215
+
2216
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_NE_U64 %out_bool, %left_iter, %right_iter
2217
+ EXPAND VEC_INTO_ITER_NE_U64 %out_bool, %left_iter, %right_iter
2218
+ [END_MACRO]
2219
+
2220
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_NE_U64.
2221
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_NE %out_bool, %left_iter, %right_iter
2222
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_NE_U64 %out_bool, %left_iter, %right_iter
2223
+ [END_MACRO]
2224
+
2225
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_LT_U64 %out_bool, %left_iter, %right_iter
2226
+ EXPAND VEC_INTO_ITER_LT_U64 %out_bool, %left_iter, %right_iter
2227
+ [END_MACRO]
2228
+
2229
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_LT_U64.
2230
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_LT %out_bool, %left_iter, %right_iter
2231
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_LT_U64 %out_bool, %left_iter, %right_iter
2232
+ [END_MACRO]
2233
+
2234
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_LE_U64 %out_bool, %left_iter, %right_iter
2235
+ EXPAND VEC_INTO_ITER_LE_U64 %out_bool, %left_iter, %right_iter
2236
+ [END_MACRO]
2237
+
2238
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_LE_U64.
2239
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_LE %out_bool, %left_iter, %right_iter
2240
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_LE_U64 %out_bool, %left_iter, %right_iter
2241
+ [END_MACRO]
2242
+
2243
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_GT_U64 %out_bool, %left_iter, %right_iter
2244
+ EXPAND VEC_INTO_ITER_GT_U64 %out_bool, %left_iter, %right_iter
2245
+ [END_MACRO]
2246
+
2247
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_GT_U64.
2248
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_GT %out_bool, %left_iter, %right_iter
2249
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_GT_U64 %out_bool, %left_iter, %right_iter
2250
+ [END_MACRO]
2251
+
2252
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_GE_U64 %out_bool, %left_iter, %right_iter
2253
+ EXPAND VEC_INTO_ITER_GE_U64 %out_bool, %left_iter, %right_iter
2254
+ [END_MACRO]
2255
+
2256
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_GE_U64.
2257
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_GE %out_bool, %left_iter, %right_iter
2258
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_GE_U64 %out_bool, %left_iter, %right_iter
2259
+ [END_MACRO]
2260
+
2261
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_CLONE_U64 %out_iter, %out_vec, %iter_reg
2262
+ EXPAND VEC_INTO_ITER_CLONE_U64 %out_iter, %out_vec, %iter_reg
2263
+ [END_MACRO]
2264
+
2265
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_CLONE_U64.
2266
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_CLONE %out_iter, %out_vec, %iter_reg
2267
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_CLONE_U64 %out_iter, %out_vec, %iter_reg
2268
+ [END_MACRO]
2269
+
2270
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_COLLECT_U64 %out_vec, %iter_reg
2271
+ EXPAND ITER_COLLECT_U64 %out_vec, %iter_reg
2272
+ [END_MACRO]
2273
+
2274
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_COLLECT_U64.
2275
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_COLLECT %out_vec, %iter_reg
2276
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_COLLECT_U64 %out_vec, %iter_reg
2277
+ [END_MACRO]
2278
+
2279
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_TRY_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %try_fn
2280
+ EXPAND ITER_TRY_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %try_fn
2281
+ [END_MACRO]
2282
+
2283
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_TRY_COLLECT_U64.
2284
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_TRY_COLLECT %out_ok, %out_vec, %iter_reg, %try_fn
2285
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_TRY_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %try_fn
2286
+ [END_MACRO]
2287
+
2288
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_COLLECT_INTO_U64 %vec_reg, %iter_reg
2289
+ EXPAND ITER_COLLECT_INTO_U64 %vec_reg, %iter_reg
2290
+ [END_MACRO]
2291
+
2292
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_COLLECT_INTO_U64.
2293
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_COLLECT_INTO %vec_reg, %iter_reg
2294
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_COLLECT_INTO_U64 %vec_reg, %iter_reg
2295
+ [END_MACRO]
2296
+
2297
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_TAKE_COLLECT_U64 %out_vec, %iter_reg, %count
2298
+ EXPAND VEC_INTO_ITER_TAKE_COLLECT_U64 %out_vec, %iter_reg, %count
2299
+ [END_MACRO]
2300
+
2301
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_TAKE_COLLECT_U64.
2302
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_TAKE_COLLECT %out_vec, %iter_reg, %count
2303
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_TAKE_COLLECT_U64 %out_vec, %iter_reg, %count
2304
+ [END_MACRO]
2305
+
2306
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_SKIP_COLLECT_U64 %out_vec, %iter_reg, %count
2307
+ EXPAND VEC_INTO_ITER_SKIP_COLLECT_U64 %out_vec, %iter_reg, %count
2308
+ [END_MACRO]
2309
+
2310
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_SKIP_COLLECT_U64.
2311
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_SKIP_COLLECT %out_vec, %iter_reg, %count
2312
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_SKIP_COLLECT_U64 %out_vec, %iter_reg, %count
2313
+ [END_MACRO]
2314
+
2315
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_MAP_COLLECT_U64 %out_vec, %iter_reg, %map_fn
2316
+ EXPAND VEC_INTO_ITER_MAP_COLLECT_U64 %out_vec, %iter_reg, %map_fn
2317
+ [END_MACRO]
2318
+
2319
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_MAP_COLLECT_U64.
2320
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_MAP_COLLECT %out_vec, %iter_reg, %map_fn
2321
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_MAP_COLLECT_U64 %out_vec, %iter_reg, %map_fn
2322
+ [END_MACRO]
2323
+
2324
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_FILTER_COLLECT_U64 %out_vec, %iter_reg, %pred_fn
2325
+ EXPAND VEC_INTO_ITER_FILTER_COLLECT_U64 %out_vec, %iter_reg, %pred_fn
2326
+ [END_MACRO]
2327
+
2328
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_FILTER_COLLECT_U64.
2329
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_FILTER_COLLECT %out_vec, %iter_reg, %pred_fn
2330
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_FILTER_COLLECT_U64 %out_vec, %iter_reg, %pred_fn
2331
+ [END_MACRO]
2332
+
2333
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_FILTER_MAP_COLLECT_U64 %out_vec, %iter_reg, %map_fn
2334
+ EXPAND VEC_INTO_ITER_FILTER_MAP_COLLECT_U64 %out_vec, %iter_reg, %map_fn
2335
+ [END_MACRO]
2336
+
2337
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_FILTER_MAP_COLLECT_U64.
2338
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_FILTER_MAP_COLLECT %out_vec, %iter_reg, %map_fn
2339
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_FILTER_MAP_COLLECT_U64 %out_vec, %iter_reg, %map_fn
2340
+ [END_MACRO]
2341
+
2342
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_MAP_WHILE_COLLECT_U64 %out_vec, %iter_reg, %map_fn
2343
+ EXPAND VEC_INTO_ITER_MAP_WHILE_COLLECT_U64 %out_vec, %iter_reg, %map_fn
2344
+ [END_MACRO]
2345
+
2346
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_MAP_WHILE_COLLECT_U64.
2347
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_MAP_WHILE_COLLECT %out_vec, %iter_reg, %map_fn
2348
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_MAP_WHILE_COLLECT_U64 %out_vec, %iter_reg, %map_fn
2349
+ [END_MACRO]
2350
+
2351
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_INSPECT_COLLECT_U64 %out_vec, %iter_reg, %inspect_fn
2352
+ EXPAND VEC_INTO_ITER_INSPECT_COLLECT_U64 %out_vec, %iter_reg, %inspect_fn
2353
+ [END_MACRO]
2354
+
2355
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_INSPECT_COLLECT_U64.
2356
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_INSPECT_COLLECT %out_vec, %iter_reg, %inspect_fn
2357
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_INSPECT_COLLECT_U64 %out_vec, %iter_reg, %inspect_fn
2358
+ [END_MACRO]
2359
+
2360
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_SCAN_COLLECT_U64 %out_vec, %iter_reg, %initial_state, %scan_fn
2361
+ EXPAND VEC_INTO_ITER_SCAN_COLLECT_U64 %out_vec, %iter_reg, %initial_state, %scan_fn
2362
+ [END_MACRO]
2363
+
2364
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_SCAN_COLLECT_U64.
2365
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_SCAN_COLLECT %out_vec, %iter_reg, %initial_state, %scan_fn
2366
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_SCAN_COLLECT_U64 %out_vec, %iter_reg, %initial_state, %scan_fn
2367
+ [END_MACRO]
2368
+
2369
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_TRY_STEP_BY_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %step
2370
+ EXPAND VEC_INTO_ITER_TRY_STEP_BY_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %step
2371
+ [END_MACRO]
2372
+
2373
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_TRY_STEP_BY_COLLECT_U64.
2374
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_TRY_STEP_BY_COLLECT %out_ok, %out_vec, %iter_reg, %step
2375
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_TRY_STEP_BY_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %step
2376
+ [END_MACRO]
2377
+
2378
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_STEP_BY_COLLECT_U64 %out_vec, %iter_reg, %step
2379
+ EXPAND VEC_INTO_ITER_STEP_BY_COLLECT_U64 %out_vec, %iter_reg, %step
2380
+ [END_MACRO]
2381
+
2382
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_STEP_BY_COLLECT_U64.
2383
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_STEP_BY_COLLECT %out_vec, %iter_reg, %step
2384
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_STEP_BY_COLLECT_U64 %out_vec, %iter_reg, %step
2385
+ [END_MACRO]
2386
+
2387
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_ENUMERATE_COLLECT_U64 %out_vec, %iter_reg
2388
+ EXPAND VEC_INTO_ITER_ENUMERATE_COLLECT_U64 %out_vec, %iter_reg
2389
+ [END_MACRO]
2390
+
2391
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_ENUMERATE_COLLECT_U64.
2392
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_ENUMERATE_COLLECT %out_vec, %iter_reg
2393
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_ENUMERATE_COLLECT_U64 %out_vec, %iter_reg
2394
+ [END_MACRO]
2395
+
2396
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_BY_REF_COLLECT_U64 %out_vec, %iter_reg
2397
+ EXPAND VEC_INTO_ITER_BY_REF_COLLECT_U64 %out_vec, %iter_reg
2398
+ [END_MACRO]
2399
+
2400
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_BY_REF_COLLECT_U64.
2401
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_BY_REF_COLLECT %out_vec, %iter_reg
2402
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_BY_REF_COLLECT_U64 %out_vec, %iter_reg
2403
+ [END_MACRO]
2404
+
2405
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_FUSE_COLLECT_U64 %out_vec, %iter_reg
2406
+ EXPAND VEC_INTO_ITER_FUSE_COLLECT_U64 %out_vec, %iter_reg
2407
+ [END_MACRO]
2408
+
2409
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_FUSE_COLLECT_U64.
2410
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_FUSE_COLLECT %out_vec, %iter_reg
2411
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_FUSE_COLLECT_U64 %out_vec, %iter_reg
2412
+ [END_MACRO]
2413
+
2414
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_PEEKABLE_COLLECT_U64 %out_vec, %iter_reg
2415
+ EXPAND VEC_INTO_ITER_PEEKABLE_COLLECT_U64 %out_vec, %iter_reg
2416
+ [END_MACRO]
2417
+
2418
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_PEEKABLE_COLLECT_U64.
2419
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_PEEKABLE_COLLECT %out_vec, %iter_reg
2420
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_PEEKABLE_COLLECT_U64 %out_vec, %iter_reg
2421
+ [END_MACRO]
2422
+
2423
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_ARRAY_CHUNKS_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %chunk_size
2424
+ EXPAND VEC_INTO_ITER_ARRAY_CHUNKS_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %chunk_size
2425
+ [END_MACRO]
2426
+
2427
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_ARRAY_CHUNKS_COLLECT_U64.
2428
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_ARRAY_CHUNKS_COLLECT %out_ok, %out_vec, %iter_reg, %chunk_size
2429
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_ARRAY_CHUNKS_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %chunk_size
2430
+ [END_MACRO]
2431
+
2432
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_MAP_WINDOWS_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %window_size, %map_fn
2433
+ EXPAND VEC_INTO_ITER_MAP_WINDOWS_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %window_size, %map_fn
2434
+ [END_MACRO]
2435
+
2436
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_MAP_WINDOWS_COLLECT_U64.
2437
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_MAP_WINDOWS_COLLECT %out_ok, %out_vec, %iter_reg, %window_size, %map_fn
2438
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_MAP_WINDOWS_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %window_size, %map_fn
2439
+ [END_MACRO]
2440
+
2441
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_INTERSPERSE_COLLECT_U64 %out_vec, %iter_reg, %separator
2442
+ EXPAND VEC_INTO_ITER_INTERSPERSE_COLLECT_U64 %out_vec, %iter_reg, %separator
2443
+ [END_MACRO]
2444
+
2445
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_INTERSPERSE_COLLECT_U64.
2446
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_INTERSPERSE_COLLECT %out_vec, %iter_reg, %separator
2447
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_INTERSPERSE_COLLECT_U64 %out_vec, %iter_reg, %separator
2448
+ [END_MACRO]
2449
+
2450
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_INTERSPERSE_WITH_COLLECT_U64 %out_vec, %iter_reg, %sep_fn
2451
+ EXPAND VEC_INTO_ITER_INTERSPERSE_WITH_COLLECT_U64 %out_vec, %iter_reg, %sep_fn
2452
+ [END_MACRO]
2453
+
2454
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_INTERSPERSE_WITH_COLLECT_U64.
2455
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_INTERSPERSE_WITH_COLLECT %out_vec, %iter_reg, %sep_fn
2456
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_INTERSPERSE_WITH_COLLECT_U64 %out_vec, %iter_reg, %sep_fn
2457
+ [END_MACRO]
2458
+
2459
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_CYCLE_TAKE_COLLECT_U64 %out_vec, %iter_reg, %count
2460
+ EXPAND VEC_INTO_ITER_CYCLE_TAKE_COLLECT_U64 %out_vec, %iter_reg, %count
2461
+ [END_MACRO]
2462
+
2463
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_CYCLE_TAKE_COLLECT_U64.
2464
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_CYCLE_TAKE_COLLECT %out_vec, %iter_reg, %count
2465
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_CYCLE_TAKE_COLLECT_U64 %out_vec, %iter_reg, %count
2466
+ [END_MACRO]
2467
+
2468
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_TAKE_WHILE_COLLECT_U64 %out_vec, %iter_reg, %pred_fn
2469
+ EXPAND VEC_INTO_ITER_TAKE_WHILE_COLLECT_U64 %out_vec, %iter_reg, %pred_fn
2470
+ [END_MACRO]
2471
+
2472
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_TAKE_WHILE_COLLECT_U64.
2473
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_TAKE_WHILE_COLLECT %out_vec, %iter_reg, %pred_fn
2474
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_TAKE_WHILE_COLLECT_U64 %out_vec, %iter_reg, %pred_fn
2475
+ [END_MACRO]
2476
+
2477
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_SKIP_WHILE_COLLECT_U64 %out_vec, %iter_reg, %pred_fn
2478
+ EXPAND VEC_INTO_ITER_SKIP_WHILE_COLLECT_U64 %out_vec, %iter_reg, %pred_fn
2479
+ [END_MACRO]
2480
+
2481
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_SKIP_WHILE_COLLECT_U64.
2482
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_SKIP_WHILE_COLLECT %out_vec, %iter_reg, %pred_fn
2483
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_SKIP_WHILE_COLLECT_U64 %out_vec, %iter_reg, %pred_fn
2484
+ [END_MACRO]
2485
+
2486
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_ZIP_COLLECT_U64 %out_vec, %left_iter, %right_iter
2487
+ EXPAND VEC_INTO_ITER_ZIP_COLLECT_U64 %out_vec, %left_iter, %right_iter
2488
+ [END_MACRO]
2489
+
2490
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_ZIP_COLLECT_U64.
2491
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_ZIP_COLLECT %out_vec, %left_iter, %right_iter
2492
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_ZIP_COLLECT_U64 %out_vec, %left_iter, %right_iter
2493
+ [END_MACRO]
2494
+
2495
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_CHAIN_COLLECT_U64 %out_vec, %left_iter, %right_iter
2496
+ EXPAND VEC_INTO_ITER_CHAIN_COLLECT_U64 %out_vec, %left_iter, %right_iter
2497
+ [END_MACRO]
2498
+
2499
+ // Rust method-name alias over BINARY_HEAP_INTO_ITER_SORTED_CHAIN_COLLECT_U64.
2500
+ [MACRO] BINARY_HEAP_INTO_ITER_SORTED_CHAIN_COLLECT %out_vec, %left_iter, %right_iter
2501
+ EXPAND BINARY_HEAP_INTO_ITER_SORTED_CHAIN_COLLECT_U64 %out_vec, %left_iter, %right_iter
2502
+ [END_MACRO]
2503
+
2504
+ [MACRO] BINARY_HEAP_IS_EMPTY %out_flag, %heap_reg
2505
+ %out_flag = call @sa_binary_heap_is_empty(&%heap_reg)
2506
+ [END_MACRO]
2507
+
2508
+ [MACRO] BINARY_HEAP_PEEK %out_value, %heap_reg
2509
+ %out_value = call @sa_binary_heap_peek(&%heap_reg)
2510
+ [END_MACRO]
2511
+
2512
+ [MACRO] BINARY_HEAP_TRY_PEEK_MUT_PTR %out_ok, %out_ptr, %heap_reg
2513
+ __binary_heap_peek_mut_slot_%out_ok = stack_alloc 8
2514
+ __binary_heap_peek_mut_ok_%out_ok = call @sa_binary_heap_try_peek_mut_ptr(&%heap_reg, &__binary_heap_peek_mut_slot_%out_ok)
2515
+ %out_ptr = load __binary_heap_peek_mut_slot_%out_ok+0 as ptr
2516
+ %out_ok = __binary_heap_peek_mut_ok_%out_ok
2517
+ [END_MACRO]
2518
+
2519
+ [MACRO] BINARY_HEAP_PEEK_MUT_PTR %out_ptr, %heap_reg
2520
+ EXPAND BINARY_HEAP_TRY_PEEK_MUT_PTR __binary_heap_peek_mut_ok_%out_ptr, %out_ptr, %heap_reg
2521
+ [END_MACRO]
2522
+
2523
+ // Rust method-name alias over checked peek-mut raw slot pointer.
2524
+ [MACRO] BINARY_HEAP_PEEK_MUT %out_ok, %out_ptr, %heap_reg
2525
+ EXPAND BINARY_HEAP_TRY_PEEK_MUT_PTR %out_ok, %out_ptr, %heap_reg
2526
+ [END_MACRO]
2527
+
2528
+ [MACRO] BINARY_HEAP_TRY_PEEK_MUT_SET_U64 %out_ok, %out_old_value, %heap_reg, %value
2529
+ __binary_heap_peek_set_slot_%out_ok = stack_alloc 8
2530
+ __binary_heap_peek_set_ok_%out_ok = call @sa_binary_heap_try_peek_mut_set_u64(&%heap_reg, %value, &__binary_heap_peek_set_slot_%out_ok)
2531
+ %out_old_value = load __binary_heap_peek_set_slot_%out_ok+0 as u64
2532
+ %out_ok = __binary_heap_peek_set_ok_%out_ok
2533
+ [END_MACRO]
2534
+
2535
+ // Rust method-name alias over BINARY_HEAP_TRY_PEEK_MUT_SET_U64.
2536
+ [MACRO] BINARY_HEAP_TRY_PEEK_MUT_SET %out_ok, %out_old_value, %heap_reg, %value
2537
+ EXPAND BINARY_HEAP_TRY_PEEK_MUT_SET_U64 %out_ok, %out_old_value, %heap_reg, %value
2538
+ [END_MACRO]
2539
+
2540
+ [MACRO] BINARY_HEAP_PEEK_MUT_SET_U64 %out_old_value, %heap_reg, %value
2541
+ EXPAND BINARY_HEAP_TRY_PEEK_MUT_SET_U64 __binary_heap_peek_set_ok_%out_old_value, %out_old_value, %heap_reg, %value
2542
+ [END_MACRO]
2543
+
2544
+ // Rust method-name alias over BINARY_HEAP_PEEK_MUT_SET_U64.
2545
+ [MACRO] BINARY_HEAP_PEEK_MUT_SET %out_old_value, %heap_reg, %value
2546
+ EXPAND BINARY_HEAP_PEEK_MUT_SET_U64 %out_old_value, %heap_reg, %value
2547
+ [END_MACRO]
2548
+
2549
+ [MACRO] BINARY_HEAP_PUSH %heap_reg, %value
2550
+ call @sa_binary_heap_push(&%heap_reg, %value)
2551
+ [END_MACRO]
2552
+
2553
+ [MACRO] BINARY_HEAP_TRY_POP %out_ok, %out_value, %heap_reg
2554
+ __binary_heap_value_slot_%out_ok = stack_alloc 8
2555
+ __binary_heap_ok_%out_ok = call @sa_binary_heap_try_pop(&%heap_reg, &__binary_heap_value_slot_%out_ok)
2556
+ %out_value = load __binary_heap_value_slot_%out_ok+0 as u64
2557
+ %out_ok = __binary_heap_ok_%out_ok
2558
+ [END_MACRO]
2559
+
2560
+ [MACRO] BINARY_HEAP_TRY_POP_IF_U64 %out_ok, %out_value, %heap_reg, %pred_fn
2561
+ EXPAND BINARY_HEAP_TRY_PEEK __binary_heap_pop_if_has_%out_ok, __binary_heap_pop_if_value_%out_ok, %heap_reg
2562
+ br __binary_heap_pop_if_has_%out_ok -> L_BINARY_HEAP_POP_IF_CHECK_%out_ok, L_BINARY_HEAP_POP_IF_EMPTY_%out_ok
2563
+
2564
+ L_BINARY_HEAP_POP_IF_CHECK_%out_ok:
2565
+ __binary_heap_pop_if_pred_%out_ok = call %pred_fn(__binary_heap_pop_if_value_%out_ok)
2566
+ __binary_heap_pop_if_take_%out_ok = ne __binary_heap_pop_if_pred_%out_ok, 0
2567
+ br __binary_heap_pop_if_take_%out_ok -> L_BINARY_HEAP_POP_IF_TAKE_%out_ok, L_BINARY_HEAP_POP_IF_KEEP_%out_ok
2568
+
2569
+ L_BINARY_HEAP_POP_IF_TAKE_%out_ok:
2570
+ EXPAND BINARY_HEAP_TRY_POP __binary_heap_pop_if_pop_ok_%out_ok, __binary_heap_pop_if_pop_value_%out_ok, %heap_reg
2571
+ %out_ok = __binary_heap_pop_if_pop_ok_%out_ok
2572
+ %out_value = __binary_heap_pop_if_pop_value_%out_ok
2573
+ !__binary_heap_pop_if_take_%out_ok
2574
+ !__binary_heap_pop_if_pred_%out_ok
2575
+ !__binary_heap_pop_if_value_%out_ok
2576
+ !__binary_heap_pop_if_has_%out_ok
2577
+ jmp L_BINARY_HEAP_POP_IF_END_%out_ok
2578
+
2579
+ L_BINARY_HEAP_POP_IF_KEEP_%out_ok:
2580
+ %out_ok = add 0, 0
2581
+ %out_value = add 0, 0
2582
+ !__binary_heap_pop_if_take_%out_ok
2583
+ !__binary_heap_pop_if_pred_%out_ok
2584
+ !__binary_heap_pop_if_value_%out_ok
2585
+ !__binary_heap_pop_if_has_%out_ok
2586
+ jmp L_BINARY_HEAP_POP_IF_END_%out_ok
2587
+
2588
+ L_BINARY_HEAP_POP_IF_EMPTY_%out_ok:
2589
+ %out_ok = add 0, 0
2590
+ %out_value = add 0, 0
2591
+ !__binary_heap_pop_if_value_%out_ok
2592
+ !__binary_heap_pop_if_has_%out_ok
2593
+
2594
+ L_BINARY_HEAP_POP_IF_END_%out_ok:
2595
+ [END_MACRO]
2596
+
2597
+ // Rust method-name alias over BINARY_HEAP_TRY_POP_IF_U64.
2598
+ [MACRO] BINARY_HEAP_TRY_POP_IF %out_ok, %out_value, %heap_reg, %pred_fn
2599
+ EXPAND BINARY_HEAP_TRY_POP_IF_U64 %out_ok, %out_value, %heap_reg, %pred_fn
2600
+ [END_MACRO]
2601
+
2602
+ [MACRO] BINARY_HEAP_POP_IF_U64 %out_ok, %out_value, %heap_reg, %pred_fn
2603
+ EXPAND BINARY_HEAP_TRY_POP_IF_U64 %out_ok, %out_value, %heap_reg, %pred_fn
2604
+ [END_MACRO]
2605
+
2606
+ // Rust method-name alias over BINARY_HEAP_POP_IF_U64.
2607
+ [MACRO] BINARY_HEAP_POP_IF %out_ok, %out_value, %heap_reg, %pred_fn
2608
+ EXPAND BINARY_HEAP_POP_IF_U64 %out_ok, %out_value, %heap_reg, %pred_fn
2609
+ [END_MACRO]
2610
+
2611
+ [MACRO] BINARY_HEAP_CLEAR %heap_reg
2612
+ call @sa_binary_heap_clear(&%heap_reg)
2613
+ [END_MACRO]
2614
+
2615
+ [MACRO] BINARY_HEAP_DRAIN %out_vec, %heap_reg
2616
+ __binary_heap_drain_buf_%out_vec = load %heap_reg+BinaryHeap_buf as ptr
2617
+ __binary_heap_drain_len_%out_vec = load %heap_reg+BinaryHeap_len as u64
2618
+ EXPAND VEC_WITH_CAPACITY_U64 %out_vec, __binary_heap_drain_len_%out_vec
2619
+ __binary_heap_drain_idx_slot_%out_vec = stack_alloc 8
2620
+ store __binary_heap_drain_idx_slot_%out_vec+0, 0 as u64
2621
+ jmp L_BINARY_HEAP_DRAIN_HEAD_%out_vec
2622
+
2623
+ L_BINARY_HEAP_DRAIN_HEAD_%out_vec:
2624
+ __binary_heap_drain_idx_%out_vec = load __binary_heap_drain_idx_slot_%out_vec+0 as u64
2625
+ __binary_heap_drain_done_%out_vec = eq __binary_heap_drain_idx_%out_vec, __binary_heap_drain_len_%out_vec
2626
+ br __binary_heap_drain_done_%out_vec -> L_BINARY_HEAP_DRAIN_DONE_%out_vec, L_BINARY_HEAP_DRAIN_BODY_%out_vec
2627
+
2628
+ L_BINARY_HEAP_DRAIN_BODY_%out_vec:
2629
+ __binary_heap_drain_off_%out_vec = mul __binary_heap_drain_idx_%out_vec, BinaryHeap_SLOT_SIZE
2630
+ __binary_heap_drain_ptr_%out_vec = ptr_add __binary_heap_drain_buf_%out_vec, __binary_heap_drain_off_%out_vec
2631
+ __binary_heap_drain_value_%out_vec = load __binary_heap_drain_ptr_%out_vec+0 as u64
2632
+ EXPAND VEC_PUSH_U64 %out_vec, __binary_heap_drain_value_%out_vec
2633
+ __binary_heap_drain_next_%out_vec = add __binary_heap_drain_idx_%out_vec, 1
2634
+ store __binary_heap_drain_idx_slot_%out_vec+0, __binary_heap_drain_next_%out_vec as u64
2635
+ !__binary_heap_drain_next_%out_vec
2636
+ !__binary_heap_drain_value_%out_vec
2637
+ !__binary_heap_drain_ptr_%out_vec
2638
+ !__binary_heap_drain_off_%out_vec
2639
+ !__binary_heap_drain_done_%out_vec
2640
+ !__binary_heap_drain_idx_%out_vec
2641
+ jmp L_BINARY_HEAP_DRAIN_HEAD_%out_vec
2642
+
2643
+ L_BINARY_HEAP_DRAIN_DONE_%out_vec:
2644
+ call @sa_binary_heap_clear(&%heap_reg)
2645
+ !__binary_heap_drain_done_%out_vec
2646
+ !__binary_heap_drain_idx_%out_vec
2647
+ !__binary_heap_drain_len_%out_vec
2648
+ !__binary_heap_drain_buf_%out_vec
2649
+ [END_MACRO]
2650
+
2651
+ [MACRO] BINARY_HEAP_RETAIN_U64 %out_len, %heap_reg, %pred_fn
2652
+ __binary_heap_retain_buf_%out_len = load %heap_reg+BinaryHeap_buf as ptr
2653
+ __binary_heap_retain_len_%out_len = load %heap_reg+BinaryHeap_len as u64
2654
+ __binary_heap_retain_read_slot_%out_len = stack_alloc 8
2655
+ __binary_heap_retain_write_slot_%out_len = stack_alloc 8
2656
+ store __binary_heap_retain_read_slot_%out_len+0, 0 as u64
2657
+ store __binary_heap_retain_write_slot_%out_len+0, 0 as u64
2658
+ jmp L_BINARY_HEAP_RETAIN_HEAD_%out_len
2659
+
2660
+ L_BINARY_HEAP_RETAIN_HEAD_%out_len:
2661
+ __binary_heap_retain_read_%out_len = load __binary_heap_retain_read_slot_%out_len+0 as u64
2662
+ __binary_heap_retain_done_%out_len = eq __binary_heap_retain_read_%out_len, __binary_heap_retain_len_%out_len
2663
+ br __binary_heap_retain_done_%out_len -> L_BINARY_HEAP_RETAIN_CLEAR_HEAD_%out_len, L_BINARY_HEAP_RETAIN_BODY_%out_len
2664
+
2665
+ L_BINARY_HEAP_RETAIN_BODY_%out_len:
2666
+ __binary_heap_retain_read_off_%out_len = mul __binary_heap_retain_read_%out_len, BinaryHeap_SLOT_SIZE
2667
+ __binary_heap_retain_read_ptr_%out_len = ptr_add __binary_heap_retain_buf_%out_len, __binary_heap_retain_read_off_%out_len
2668
+ __binary_heap_retain_value_%out_len = load __binary_heap_retain_read_ptr_%out_len+0 as u64
2669
+ __binary_heap_retain_pred_%out_len = call %pred_fn(__binary_heap_retain_value_%out_len)
2670
+ __binary_heap_retain_keep_%out_len = ne __binary_heap_retain_pred_%out_len, 0
2671
+ br __binary_heap_retain_keep_%out_len -> L_BINARY_HEAP_RETAIN_KEEP_%out_len, L_BINARY_HEAP_RETAIN_SKIP_%out_len
2672
+
2673
+ L_BINARY_HEAP_RETAIN_KEEP_%out_len:
2674
+ __binary_heap_retain_write_%out_len = load __binary_heap_retain_write_slot_%out_len+0 as u64
2675
+ __binary_heap_retain_same_slot_%out_len = eq __binary_heap_retain_write_%out_len, __binary_heap_retain_read_%out_len
2676
+ br __binary_heap_retain_same_slot_%out_len -> L_BINARY_HEAP_RETAIN_KEEP_ADVANCE_%out_len, L_BINARY_HEAP_RETAIN_COPY_%out_len
2677
+
2678
+ L_BINARY_HEAP_RETAIN_COPY_%out_len:
2679
+ __binary_heap_retain_write_off_%out_len = mul __binary_heap_retain_write_%out_len, BinaryHeap_SLOT_SIZE
2680
+ __binary_heap_retain_write_ptr_%out_len = ptr_add __binary_heap_retain_buf_%out_len, __binary_heap_retain_write_off_%out_len
2681
+ store __binary_heap_retain_write_ptr_%out_len+0, __binary_heap_retain_value_%out_len as u64
2682
+ !__binary_heap_retain_write_ptr_%out_len
2683
+ !__binary_heap_retain_write_off_%out_len
2684
+ jmp L_BINARY_HEAP_RETAIN_KEEP_ADVANCE_%out_len
2685
+
2686
+ L_BINARY_HEAP_RETAIN_KEEP_ADVANCE_%out_len:
2687
+ __binary_heap_retain_next_write_%out_len = add __binary_heap_retain_write_%out_len, 1
2688
+ store __binary_heap_retain_write_slot_%out_len+0, __binary_heap_retain_next_write_%out_len as u64
2689
+ !__binary_heap_retain_next_write_%out_len
2690
+ !__binary_heap_retain_same_slot_%out_len
2691
+ !__binary_heap_retain_write_%out_len
2692
+ jmp L_BINARY_HEAP_RETAIN_NEXT_%out_len
2693
+
2694
+ L_BINARY_HEAP_RETAIN_SKIP_%out_len:
2695
+ jmp L_BINARY_HEAP_RETAIN_NEXT_%out_len
2696
+
2697
+ L_BINARY_HEAP_RETAIN_NEXT_%out_len:
2698
+ __binary_heap_retain_next_read_%out_len = add __binary_heap_retain_read_%out_len, 1
2699
+ store __binary_heap_retain_read_slot_%out_len+0, __binary_heap_retain_next_read_%out_len as u64
2700
+ !__binary_heap_retain_next_read_%out_len
2701
+ !__binary_heap_retain_keep_%out_len
2702
+ !__binary_heap_retain_pred_%out_len
2703
+ !__binary_heap_retain_value_%out_len
2704
+ !__binary_heap_retain_read_ptr_%out_len
2705
+ !__binary_heap_retain_read_off_%out_len
2706
+ !__binary_heap_retain_done_%out_len
2707
+ !__binary_heap_retain_read_%out_len
2708
+ jmp L_BINARY_HEAP_RETAIN_HEAD_%out_len
2709
+
2710
+ L_BINARY_HEAP_RETAIN_CLEAR_HEAD_%out_len:
2711
+ __binary_heap_retain_clear_slot_%out_len = stack_alloc 8
2712
+ __binary_heap_retain_kept_len_%out_len = load __binary_heap_retain_write_slot_%out_len+0 as u64
2713
+ store __binary_heap_retain_clear_slot_%out_len+0, __binary_heap_retain_kept_len_%out_len as u64
2714
+ jmp L_BINARY_HEAP_RETAIN_CLEAR_LOOP_%out_len
2715
+
2716
+ L_BINARY_HEAP_RETAIN_CLEAR_LOOP_%out_len:
2717
+ __binary_heap_retain_clear_idx_%out_len = load __binary_heap_retain_clear_slot_%out_len+0 as u64
2718
+ __binary_heap_retain_clear_done_%out_len = eq __binary_heap_retain_clear_idx_%out_len, __binary_heap_retain_len_%out_len
2719
+ br __binary_heap_retain_clear_done_%out_len -> L_BINARY_HEAP_RETAIN_HEAPIFY_INIT_%out_len, L_BINARY_HEAP_RETAIN_CLEAR_BODY_%out_len
2720
+
2721
+ L_BINARY_HEAP_RETAIN_CLEAR_BODY_%out_len:
2722
+ __binary_heap_retain_clear_off_%out_len = mul __binary_heap_retain_clear_idx_%out_len, BinaryHeap_SLOT_SIZE
2723
+ __binary_heap_retain_clear_ptr_%out_len = ptr_add __binary_heap_retain_buf_%out_len, __binary_heap_retain_clear_off_%out_len
2724
+ store __binary_heap_retain_clear_ptr_%out_len+0, 0 as u64
2725
+ __binary_heap_retain_next_clear_%out_len = add __binary_heap_retain_clear_idx_%out_len, 1
2726
+ store __binary_heap_retain_clear_slot_%out_len+0, __binary_heap_retain_next_clear_%out_len as u64
2727
+ !__binary_heap_retain_next_clear_%out_len
2728
+ !__binary_heap_retain_clear_ptr_%out_len
2729
+ !__binary_heap_retain_clear_off_%out_len
2730
+ !__binary_heap_retain_clear_done_%out_len
2731
+ !__binary_heap_retain_clear_idx_%out_len
2732
+ jmp L_BINARY_HEAP_RETAIN_CLEAR_LOOP_%out_len
2733
+
2734
+ L_BINARY_HEAP_RETAIN_HEAPIFY_INIT_%out_len:
2735
+ store %heap_reg+BinaryHeap_len, __binary_heap_retain_kept_len_%out_len as u64
2736
+ __binary_heap_retain_too_small_%out_len = ule __binary_heap_retain_kept_len_%out_len, 1
2737
+ br __binary_heap_retain_too_small_%out_len -> L_BINARY_HEAP_RETAIN_DONE_%out_len, L_BINARY_HEAP_RETAIN_HEAPIFY_START_%out_len
2738
+
2739
+ L_BINARY_HEAP_RETAIN_HEAPIFY_START_%out_len:
2740
+ __binary_heap_retain_last_%out_len = sub __binary_heap_retain_kept_len_%out_len, 2
2741
+ __binary_heap_retain_parent_%out_len = udiv __binary_heap_retain_last_%out_len, 2
2742
+ __binary_heap_retain_heapify_slot_%out_len = stack_alloc 8
2743
+ store __binary_heap_retain_heapify_slot_%out_len+0, __binary_heap_retain_parent_%out_len as u64
2744
+ jmp L_BINARY_HEAP_RETAIN_HEAPIFY_LOOP_%out_len
2745
+
2746
+ L_BINARY_HEAP_RETAIN_HEAPIFY_LOOP_%out_len:
2747
+ __binary_heap_retain_heapify_idx_%out_len = load __binary_heap_retain_heapify_slot_%out_len+0 as u64
2748
+ call @binary_heap_sift_down(&%heap_reg, __binary_heap_retain_heapify_idx_%out_len)
2749
+ __binary_heap_retain_heapify_zero_%out_len = eq __binary_heap_retain_heapify_idx_%out_len, 0
2750
+ br __binary_heap_retain_heapify_zero_%out_len -> L_BINARY_HEAP_RETAIN_DONE_FROM_HEAPIFY_%out_len, L_BINARY_HEAP_RETAIN_HEAPIFY_NEXT_%out_len
2751
+
2752
+ L_BINARY_HEAP_RETAIN_HEAPIFY_NEXT_%out_len:
2753
+ __binary_heap_retain_prev_heapify_%out_len = sub __binary_heap_retain_heapify_idx_%out_len, 1
2754
+ store __binary_heap_retain_heapify_slot_%out_len+0, __binary_heap_retain_prev_heapify_%out_len as u64
2755
+ !__binary_heap_retain_prev_heapify_%out_len
2756
+ !__binary_heap_retain_heapify_zero_%out_len
2757
+ !__binary_heap_retain_heapify_idx_%out_len
2758
+ jmp L_BINARY_HEAP_RETAIN_HEAPIFY_LOOP_%out_len
2759
+
2760
+ L_BINARY_HEAP_RETAIN_DONE_FROM_HEAPIFY_%out_len:
2761
+ !__binary_heap_retain_heapify_zero_%out_len
2762
+ !__binary_heap_retain_heapify_idx_%out_len
2763
+ !__binary_heap_retain_parent_%out_len
2764
+ !__binary_heap_retain_last_%out_len
2765
+ jmp L_BINARY_HEAP_RETAIN_DONE_%out_len
2766
+
2767
+ L_BINARY_HEAP_RETAIN_DONE_%out_len:
2768
+ %out_len = load %heap_reg+BinaryHeap_len as u64
2769
+ !__binary_heap_retain_too_small_%out_len
2770
+ !__binary_heap_retain_clear_done_%out_len
2771
+ !__binary_heap_retain_clear_idx_%out_len
2772
+ !__binary_heap_retain_kept_len_%out_len
2773
+ !__binary_heap_retain_done_%out_len
2774
+ !__binary_heap_retain_read_%out_len
2775
+ !__binary_heap_retain_len_%out_len
2776
+ !__binary_heap_retain_buf_%out_len
2777
+ [END_MACRO]
2778
+
2779
+ // Rust method-name alias: BinaryHeap::retain over concrete u64 predicate helper.
2780
+ [MACRO] BINARY_HEAP_RETAIN %out_len, %heap_reg, %pred_fn
2781
+ EXPAND BINARY_HEAP_RETAIN_U64 %out_len, %heap_reg, %pred_fn
2782
+ [END_MACRO]
2783
+
2784
+ [MACRO] BINARY_HEAP_APPEND %heap_reg, %other_heap_reg
2785
+ call @sa_binary_heap_append(&%heap_reg, &%other_heap_reg)
2786
+ [END_MACRO]
2787
+
2788
+ // Concrete u64-named and try/non-try value-form aliases over the existing
2789
+ // BINARY_HEAP_PUSH / PEEK / TRY_POP / capacity+len primitives. These add no
2790
+ // new syscall/FFI surface; they only expose Rust-style naming parity and a
2791
+ // fallible value view (ok,value) for PEEK.
2792
+
2793
+ [MACRO] BINARY_HEAP_PUSH_U64 %heap_reg, %value
2794
+ EXPAND BINARY_HEAP_PUSH %heap_reg, %value
2795
+ [END_MACRO]
2796
+
2797
+ [MACRO] BINARY_HEAP_PEEK_U64 %out_value, %heap_reg
2798
+ EXPAND BINARY_HEAP_PEEK %out_value, %heap_reg
2799
+ [END_MACRO]
2800
+
2801
+ [MACRO] BINARY_HEAP_TRY_PEEK %out_ok, %out_value, %heap_reg
2802
+ __binary_heap_try_peek_empty_%out_ok = call @sa_binary_heap_is_empty(&%heap_reg)
2803
+ __binary_heap_try_peek_is_empty_%out_ok = eq __binary_heap_try_peek_empty_%out_ok, 1
2804
+ br __binary_heap_try_peek_is_empty_%out_ok -> L_BINARY_HEAP_TRY_PEEK_EMPTY_%out_ok, L_BINARY_HEAP_TRY_PEEK_NONEMPTY_%out_ok
2805
+ L_BINARY_HEAP_TRY_PEEK_EMPTY_%out_ok:
2806
+ %out_ok = add 0, 0
2807
+ %out_value = add 0, 0
2808
+ !__binary_heap_try_peek_empty_%out_ok
2809
+ !__binary_heap_try_peek_is_empty_%out_ok
2810
+ jmp L_BINARY_HEAP_TRY_PEEK_END_%out_ok
2811
+ L_BINARY_HEAP_TRY_PEEK_NONEMPTY_%out_ok:
2812
+ %out_value = call @sa_binary_heap_peek(&%heap_reg)
2813
+ %out_ok = add 0, 1
2814
+ !__binary_heap_try_peek_empty_%out_ok
2815
+ !__binary_heap_try_peek_is_empty_%out_ok
2816
+ jmp L_BINARY_HEAP_TRY_PEEK_END_%out_ok
2817
+ L_BINARY_HEAP_TRY_PEEK_END_%out_ok:
2818
+ [END_MACRO]
2819
+
2820
+ [MACRO] BINARY_HEAP_TRY_PEEK_U64 %out_ok, %out_value, %heap_reg
2821
+ EXPAND BINARY_HEAP_TRY_PEEK %out_ok, %out_value, %heap_reg
2822
+ [END_MACRO]
2823
+
2824
+ [MACRO] BINARY_HEAP_POP %out_value, %heap_reg
2825
+ __binary_heap_pop_slot_%out_value = stack_alloc 8
2826
+ __binary_heap_pop_ok_%out_value = call @sa_binary_heap_try_pop(&%heap_reg, &__binary_heap_pop_slot_%out_value)
2827
+ %out_value = load __binary_heap_pop_slot_%out_value+0 as u64
2828
+ !__binary_heap_pop_ok_%out_value
2829
+ [END_MACRO]
2830
+
2831
+ [MACRO] BINARY_HEAP_POP_U64 %out_value, %heap_reg
2832
+ EXPAND BINARY_HEAP_POP %out_value, %heap_reg
2833
+ [END_MACRO]
2834
+
2835
+ [MACRO] BINARY_HEAP_EXTRA_CAPACITY %out_extra, %heap_reg
2836
+ __binary_heap_ec_cap_%out_extra = call @sa_binary_heap_capacity(&%heap_reg)
2837
+ __binary_heap_ec_len_%out_extra = call @sa_binary_heap_len(&%heap_reg)
2838
+ %out_extra = sub __binary_heap_ec_cap_%out_extra, __binary_heap_ec_len_%out_extra
2839
+ !__binary_heap_ec_len_%out_extra
2840
+ !__binary_heap_ec_cap_%out_extra
2841
+ [END_MACRO]
2842
+
2843
+ // Fixed-arity / from-collection constructors over the concrete u64 max-heap.
2844
+ // FROM_* helpers push each source element through the existing heapify path.
2845
+
2846
+ [MACRO] BINARY_HEAP_LIT1 %out_heap, %value1
2847
+ EXPAND BINARY_HEAP_NEW %out_heap
2848
+ EXPAND BINARY_HEAP_PUSH_U64 %out_heap, %value1
2849
+ [END_MACRO]
2850
+
2851
+ [MACRO] BINARY_HEAP_LIT2 %out_heap, %value1, %value2
2852
+ EXPAND BINARY_HEAP_NEW %out_heap
2853
+ EXPAND BINARY_HEAP_PUSH_U64 %out_heap, %value1
2854
+ EXPAND BINARY_HEAP_PUSH_U64 %out_heap, %value2
2855
+ [END_MACRO]
2856
+
2857
+ [MACRO] BINARY_HEAP_LIT3 %out_heap, %value1, %value2, %value3
2858
+ EXPAND BINARY_HEAP_NEW %out_heap
2859
+ EXPAND BINARY_HEAP_PUSH_U64 %out_heap, %value1
2860
+ EXPAND BINARY_HEAP_PUSH_U64 %out_heap, %value2
2861
+ EXPAND BINARY_HEAP_PUSH_U64 %out_heap, %value3
2862
+ [END_MACRO]
2863
+
2864
+ [MACRO] BINARY_HEAP_EXTEND_FROM_SLICE_U64 %heap_reg, %slice_reg
2865
+ __bh_ext_len_%heap_reg = load %slice_reg+Slice_len as u64
2866
+ __bh_ext_idx_slot_%heap_reg = stack_alloc 8
2867
+ store __bh_ext_idx_slot_%heap_reg+0, 0 as u64
2868
+ jmp L_BINARY_HEAP_EXTEND_HEAD_%heap_reg
2869
+ L_BINARY_HEAP_EXTEND_HEAD_%heap_reg:
2870
+ __bh_ext_idx_%heap_reg = load __bh_ext_idx_slot_%heap_reg+0 as u64
2871
+ __bh_ext_done_%heap_reg = eq __bh_ext_idx_%heap_reg, __bh_ext_len_%heap_reg
2872
+ br __bh_ext_done_%heap_reg -> L_BINARY_HEAP_EXTEND_DONE_%heap_reg, L_BINARY_HEAP_EXTEND_BODY_%heap_reg
2873
+ L_BINARY_HEAP_EXTEND_BODY_%heap_reg:
2874
+ EXPAND SLICE_GET_U64 __bh_ext_val_%heap_reg, %slice_reg, __bh_ext_idx_%heap_reg
2875
+ EXPAND BINARY_HEAP_PUSH_U64 %heap_reg, __bh_ext_val_%heap_reg
2876
+ __bh_ext_next_%heap_reg = add __bh_ext_idx_%heap_reg, 1
2877
+ store __bh_ext_idx_slot_%heap_reg+0, __bh_ext_next_%heap_reg as u64
2878
+ !__bh_ext_next_%heap_reg
2879
+ !__bh_ext_val_%heap_reg
2880
+ !__bh_ext_done_%heap_reg
2881
+ !__bh_ext_idx_%heap_reg
2882
+ jmp L_BINARY_HEAP_EXTEND_HEAD_%heap_reg
2883
+ L_BINARY_HEAP_EXTEND_DONE_%heap_reg:
2884
+ !__bh_ext_done_%heap_reg
2885
+ !__bh_ext_idx_%heap_reg
2886
+ !__bh_ext_len_%heap_reg
2887
+ [END_MACRO]
2888
+
2889
+ // Rust method-name alias over BINARY_HEAP_EXTEND_FROM_SLICE_U64.
2890
+ [MACRO] BINARY_HEAP_EXTEND_FROM_SLICE %heap_reg, %slice_reg
2891
+ EXPAND BINARY_HEAP_EXTEND_FROM_SLICE_U64 %heap_reg, %slice_reg
2892
+ [END_MACRO]
2893
+
2894
+ [MACRO] BINARY_HEAP_FROM_SLICE_U64 %out_heap, %slice_reg
2895
+ EXPAND BINARY_HEAP_NEW %out_heap
2896
+ EXPAND BINARY_HEAP_EXTEND_FROM_SLICE_U64 %out_heap, %slice_reg
2897
+ [END_MACRO]
2898
+
2899
+ // Rust method-name alias over BINARY_HEAP_FROM_SLICE_U64.
2900
+ [MACRO] BINARY_HEAP_FROM_SLICE %out_heap, %slice_reg
2901
+ EXPAND BINARY_HEAP_FROM_SLICE_U64 %out_heap, %slice_reg
2902
+ [END_MACRO]
2903
+
2904
+ [MACRO] BINARY_HEAP_FROM_VEC_U64 %out_heap, %vec_reg
2905
+ EXPAND VEC_AS_SLICE __bh_from_vec_slice_%out_heap, %vec_reg
2906
+ EXPAND BINARY_HEAP_FROM_SLICE_U64 %out_heap, __bh_from_vec_slice_%out_heap
2907
+ !__bh_from_vec_slice_%out_heap
2908
+ [END_MACRO]
2909
+
2910
+ // Rust method-name alias over BINARY_HEAP_FROM_VEC_U64.
2911
+ [MACRO] BINARY_HEAP_FROM_VEC %out_heap, %vec_reg
2912
+ EXPAND BINARY_HEAP_FROM_VEC_U64 %out_heap, %vec_reg
2913
+ [END_MACRO]
2914
+
2915
+ [MACRO] BINARY_HEAP_EXTEND_FROM_VEC_U64 %heap_reg, %vec_reg
2916
+ EXPAND VEC_AS_SLICE __bh_ext_vec_slice_%heap_reg, %vec_reg
2917
+ EXPAND BINARY_HEAP_EXTEND_FROM_SLICE_U64 %heap_reg, __bh_ext_vec_slice_%heap_reg
2918
+ !__bh_ext_vec_slice_%heap_reg
2919
+ [END_MACRO]
2920
+
2921
+ // Rust method-name alias over BINARY_HEAP_EXTEND_FROM_VEC_U64.
2922
+ [MACRO] BINARY_HEAP_EXTEND_FROM_VEC %heap_reg, %vec_reg
2923
+ EXPAND BINARY_HEAP_EXTEND_FROM_VEC_U64 %heap_reg, %vec_reg
2924
+ [END_MACRO]
2925
+
2926
+ // Linear membership query over the heap backing slice.
2927
+ [MACRO] BINARY_HEAP_CONTAINS %out_bool, %heap_reg, %needle
2928
+ EXPAND BINARY_HEAP_AS_SLICE __bh_contains_slice_%out_bool, %heap_reg
2929
+ EXPAND SLICE_CONTAINS_U64 %out_bool, __bh_contains_slice_%out_bool, %needle
2930
+ !__bh_contains_slice_%out_bool
2931
+ [END_MACRO]
2932
+ // Rust Default-style empty BinaryHeap constructor alias.
2933
+
2934
+ [MACRO] BINARY_HEAP_DEFAULT %out_heap
2935
+ EXPAND BINARY_HEAP_NEW %out_heap
2936
+ [END_MACRO]
2937
+
2938
+ // Eager extract_if: materialize matching values into Vec, rebuild heap with non-matching.
2939
+
2940
+ // Eager extract_if without consuming heap storage: snapshot via as_slice, then rebuild.
2941
+ [MACRO] BINARY_HEAP_EXTRACT_IF %out_len, %out_vec, %heap_reg, %pred_fn
2942
+ EXPAND VEC_NEW %out_vec
2943
+ EXPAND BINARY_HEAP_AS_SLICE __bh_ei_slice_%out_len, %heap_reg
2944
+ EXPAND SLICE_GET_LEN __bh_ei_n_%out_len, __bh_ei_slice_%out_len
2945
+ EXPAND VEC_NEW __bh_ei_keep_%out_len
2946
+ __bh_ei_i_slot_%out_len = stack_alloc 8
2947
+ store __bh_ei_i_slot_%out_len+0, 0 as u64
2948
+ jmp L_BH_EI_HEAD_%out_len
2949
+ L_BH_EI_HEAD_%out_len:
2950
+ __bh_ei_i_%out_len = load __bh_ei_i_slot_%out_len+0 as u64
2951
+ __bh_ei_done_%out_len = eq __bh_ei_i_%out_len, __bh_ei_n_%out_len
2952
+ br __bh_ei_done_%out_len -> L_BH_EI_REBUILD_%out_len, L_BH_EI_BODY_%out_len
2953
+ L_BH_EI_BODY_%out_len:
2954
+ EXPAND SLICE_GET_U64 __bh_ei_val_%out_len, __bh_ei_slice_%out_len, __bh_ei_i_%out_len
2955
+ __bh_ei_pred_%out_len = call %pred_fn(__bh_ei_val_%out_len)
2956
+ __bh_ei_take_%out_len = ne __bh_ei_pred_%out_len, 0
2957
+ br __bh_ei_take_%out_len -> L_BH_EI_TAKE_%out_len, L_BH_EI_KEEP_%out_len
2958
+ L_BH_EI_TAKE_%out_len:
2959
+ EXPAND VEC_PUSH_U64 %out_vec, __bh_ei_val_%out_len
2960
+ jmp L_BH_EI_NEXT_%out_len
2961
+ L_BH_EI_KEEP_%out_len:
2962
+ EXPAND VEC_PUSH_U64 __bh_ei_keep_%out_len, __bh_ei_val_%out_len
2963
+ jmp L_BH_EI_NEXT_%out_len
2964
+ L_BH_EI_NEXT_%out_len:
2965
+ __bh_ei_ni_%out_len = add __bh_ei_i_%out_len, 1
2966
+ store __bh_ei_i_slot_%out_len+0, __bh_ei_ni_%out_len as u64
2967
+ !__bh_ei_ni_%out_len
2968
+ !__bh_ei_take_%out_len
2969
+ !__bh_ei_pred_%out_len
2970
+ !__bh_ei_val_%out_len
2971
+ !__bh_ei_done_%out_len
2972
+ !__bh_ei_i_%out_len
2973
+ jmp L_BH_EI_HEAD_%out_len
2974
+ L_BH_EI_REBUILD_%out_len:
2975
+ EXPAND BINARY_HEAP_CLEAR %heap_reg
2976
+ EXPAND VEC_LEN __bh_ei_kn_%out_len, __bh_ei_keep_%out_len
2977
+ store __bh_ei_i_slot_%out_len+0, 0 as u64
2978
+ jmp L_BH_EI_PUSH_HEAD_%out_len
2979
+ L_BH_EI_PUSH_HEAD_%out_len:
2980
+ __bh_ei_pi_%out_len = load __bh_ei_i_slot_%out_len+0 as u64
2981
+ __bh_ei_pdone_%out_len = eq __bh_ei_pi_%out_len, __bh_ei_kn_%out_len
2982
+ br __bh_ei_pdone_%out_len -> L_BH_EI_DONE_%out_len, L_BH_EI_PUSH_BODY_%out_len
2983
+ L_BH_EI_PUSH_BODY_%out_len:
2984
+ EXPAND VEC_GET_U64 __bh_ei_kv_%out_len, __bh_ei_keep_%out_len, __bh_ei_pi_%out_len
2985
+ EXPAND BINARY_HEAP_PUSH %heap_reg, __bh_ei_kv_%out_len
2986
+ __bh_ei_pni_%out_len = add __bh_ei_pi_%out_len, 1
2987
+ store __bh_ei_i_slot_%out_len+0, __bh_ei_pni_%out_len as u64
2988
+ !__bh_ei_pni_%out_len
2989
+ !__bh_ei_kv_%out_len
2990
+ !__bh_ei_pdone_%out_len
2991
+ !__bh_ei_pi_%out_len
2992
+ jmp L_BH_EI_PUSH_HEAD_%out_len
2993
+ L_BH_EI_DONE_%out_len:
2994
+ EXPAND VEC_LEN %out_len, %out_vec
2995
+ EXPAND VEC_FREE __bh_ei_keep_%out_len
2996
+ !__bh_ei_pdone_%out_len
2997
+ !__bh_ei_pi_%out_len
2998
+ !__bh_ei_kn_%out_len
2999
+ !__bh_ei_done_%out_len
3000
+ !__bh_ei_i_%out_len
3001
+ !__bh_ei_n_%out_len
3002
+ !__bh_ei_slice_%out_len
3003
+ [END_MACRO]