@salang/sa 0.1.2 → 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 +19 -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,4925 @@
1
+ // Fixed-capacity VecDeque backed by a circular buffer of raw u64 values.
2
+ // This keeps the implementation verifier-friendly and concrete.
3
+ @import "core/mem.sa"
4
+ @import "core/slice.sal"
5
+ @import "core/slice.sa"
6
+ @import "alloc/vec.sal"
7
+ @import "vec.sa"
8
+ @import "num.sa"
9
+ @import "vec_deque.sal"
10
+ @import "hash.sa"
11
+
12
+ @export sa_vec_deque_new() -> ^ptr:
13
+ L_ENTRY:
14
+ deque = alloc VecDeque_SIZE
15
+ initial_bytes = mul VecDeque_INITIAL_CAP, VecDeque_SLOT_SIZE
16
+ buf = alloc initial_bytes
17
+ call @sa_mem_set(&buf, 0, initial_bytes)
18
+ store deque+VecDeque_buf, buf as ptr
19
+ store deque+VecDeque_cap, VecDeque_INITIAL_CAP as u64
20
+ store deque+VecDeque_head, 0 as u64
21
+ store deque+VecDeque_len, 0 as u64
22
+ ^buf
23
+ !initial_bytes
24
+ return deque
25
+
26
+ @export sa_vec_deque_with_capacity(capacity: u64) -> ^ptr:
27
+ L_ENTRY:
28
+ deque = alloc VecDeque_SIZE
29
+ EXPAND NUM_U64_CHECKED_MUL with_cap_bytes_ok, bytes, capacity, VecDeque_SLOT_SIZE
30
+ br with_cap_bytes_ok -> L_WITH_CAP_BYTES_OK, L_WITH_CAP_OVERFLOW
31
+
32
+ L_WITH_CAP_OVERFLOW:
33
+ panic(1901)
34
+
35
+ L_WITH_CAP_BYTES_OK:
36
+ has_bytes = ne bytes, 0
37
+ br has_bytes -> L_WITH_CAP_ALLOC, L_WITH_CAP_EMPTY
38
+
39
+ L_WITH_CAP_ALLOC:
40
+ buf = alloc bytes
41
+ call @sa_mem_set(&buf, 0, bytes)
42
+ store deque+VecDeque_buf, buf as ptr
43
+ store deque+VecDeque_cap, capacity as u64
44
+ store deque+VecDeque_head, 0 as u64
45
+ store deque+VecDeque_len, 0 as u64
46
+ ^buf
47
+ !with_cap_bytes_ok
48
+ !has_bytes
49
+ !bytes
50
+ !capacity
51
+ return deque
52
+
53
+ L_WITH_CAP_EMPTY:
54
+ store deque+VecDeque_buf, 0 as ptr
55
+ store deque+VecDeque_cap, 0 as u64
56
+ store deque+VecDeque_head, 0 as u64
57
+ store deque+VecDeque_len, 0 as u64
58
+ !with_cap_bytes_ok
59
+ !has_bytes
60
+ !bytes
61
+ !capacity
62
+ return deque
63
+
64
+ @export sa_vec_deque_free(^deque: ptr) -> void:
65
+ L_ENTRY:
66
+ buf = load deque+VecDeque_buf as ptr
67
+ !buf
68
+ !deque
69
+ return
70
+
71
+ @export sa_vec_deque_len(&deque: ptr) -> u64:
72
+ L_ENTRY:
73
+ len = load deque+VecDeque_len as u64
74
+ !deque
75
+ return len
76
+
77
+ @export sa_vec_deque_capacity(&deque: ptr) -> u64:
78
+ L_ENTRY:
79
+ cap = load deque+VecDeque_cap as u64
80
+ !deque
81
+ return cap
82
+
83
+ @export sa_vec_deque_is_empty(&deque: ptr) -> i32:
84
+ L_ENTRY:
85
+ len = load deque+VecDeque_len as u64
86
+ empty = eq len, 0
87
+ result = empty as i32
88
+ !len
89
+ !deque
90
+ return result
91
+
92
+ @vec_deque_next_capacity(needed: u64) -> u64:
93
+ L_ENTRY:
94
+ cap_slot = stack_alloc 8
95
+ store cap_slot+0, VecDeque_INITIAL_CAP as u64
96
+ jmp L_NEXT_CAP_HEAD
97
+
98
+ L_NEXT_CAP_HEAD:
99
+ cap = load cap_slot+0 as u64
100
+ enough = uge cap, needed
101
+ br enough -> L_NEXT_CAP_DONE, L_NEXT_CAP_GROW
102
+
103
+ L_NEXT_CAP_GROW:
104
+ EXPAND NUM_U64_CHECKED_ADD next_cap_ok, next_cap, cap, cap
105
+ br next_cap_ok -> L_NEXT_CAP_GROW_OK, L_NEXT_CAP_OVERFLOW
106
+
107
+ L_NEXT_CAP_OVERFLOW:
108
+ panic(1902)
109
+
110
+ L_NEXT_CAP_GROW_OK:
111
+ store cap_slot+0, next_cap as u64
112
+ !next_cap_ok
113
+ !next_cap
114
+ !enough
115
+ !cap
116
+ jmp L_NEXT_CAP_HEAD
117
+
118
+ L_NEXT_CAP_DONE:
119
+ !enough
120
+ !needed
121
+ return cap
122
+
123
+ @vec_deque_realloc(&deque: ptr, target_cap: u64) -> void:
124
+ L_ENTRY:
125
+ len = load deque+VecDeque_len as u64
126
+ target_zero = eq target_cap, 0
127
+ br target_zero -> L_DEQUE_REALLOC_ZERO, L_DEQUE_REALLOC_ALLOC
128
+
129
+ L_DEQUE_REALLOC_ZERO:
130
+ old_buf_zero = take deque+VecDeque_buf
131
+ !old_buf_zero
132
+ store deque+VecDeque_buf, 0 as ptr
133
+ store deque+VecDeque_cap, 0 as u64
134
+ store deque+VecDeque_head, 0 as u64
135
+ store deque+VecDeque_len, 0 as u64
136
+ !target_zero
137
+ !len
138
+ !target_cap
139
+ !deque
140
+ return
141
+
142
+ L_DEQUE_REALLOC_ALLOC:
143
+ old_buf = take deque+VecDeque_buf
144
+ old_cap = load deque+VecDeque_cap as u64
145
+ head = load deque+VecDeque_head as u64
146
+ EXPAND NUM_U64_CHECKED_MUL realloc_bytes_ok, new_bytes, target_cap, VecDeque_SLOT_SIZE
147
+ br realloc_bytes_ok -> L_DEQUE_REALLOC_BYTES_OK, L_DEQUE_REALLOC_OVERFLOW
148
+
149
+ L_DEQUE_REALLOC_OVERFLOW:
150
+ panic(1903)
151
+
152
+ L_DEQUE_REALLOC_BYTES_OK:
153
+ new_buf = alloc new_bytes
154
+ call @sa_mem_set(&new_buf, 0, new_bytes)
155
+ idx_slot = stack_alloc 8
156
+ store idx_slot+0, 0 as u64
157
+ jmp L_DEQUE_REALLOC_COPY_HEAD
158
+
159
+ L_DEQUE_REALLOC_COPY_HEAD:
160
+ idx = load idx_slot+0 as u64
161
+ done = eq idx, len
162
+ br done -> L_DEQUE_REALLOC_COPY_DONE, L_DEQUE_REALLOC_COPY_BODY
163
+
164
+ L_DEQUE_REALLOC_COPY_BODY:
165
+ old_sum = add head, idx
166
+ old_phys = urem old_sum, old_cap
167
+ old_off = mul old_phys, VecDeque_SLOT_SIZE
168
+ old_ptr = ptr_add old_buf, old_off
169
+ new_off = mul idx, VecDeque_SLOT_SIZE
170
+ new_ptr = ptr_add new_buf, new_off
171
+ value = load old_ptr+0 as u64
172
+ store new_ptr+0, value as u64
173
+ next_idx = add idx, 1
174
+ store idx_slot+0, next_idx as u64
175
+ !next_idx
176
+ !value
177
+ !new_ptr
178
+ !new_off
179
+ !old_ptr
180
+ !old_off
181
+ !old_phys
182
+ !old_sum
183
+ !done
184
+ !idx
185
+ jmp L_DEQUE_REALLOC_COPY_HEAD
186
+
187
+ L_DEQUE_REALLOC_COPY_DONE:
188
+ store deque+VecDeque_buf, new_buf as ptr
189
+ store deque+VecDeque_cap, target_cap as u64
190
+ store deque+VecDeque_head, 0 as u64
191
+ store deque+VecDeque_len, len as u64
192
+ !done
193
+ !idx
194
+ !realloc_bytes_ok
195
+ !new_bytes
196
+ !head
197
+ !old_cap
198
+ !old_buf
199
+ ^new_buf
200
+ !target_zero
201
+ !len
202
+ !target_cap
203
+ !deque
204
+ return
205
+
206
+ @export sa_vec_deque_reserve(&deque: ptr, additional: u64) -> void:
207
+ L_ENTRY:
208
+ len = load deque+VecDeque_len as u64
209
+ cap = load deque+VecDeque_cap as u64
210
+ EXPAND NUM_U64_CHECKED_ADD reserve_needed_ok, needed, len, additional
211
+ br reserve_needed_ok -> L_DEQUE_RESERVE_NEEDED_OK, L_DEQUE_RESERVE_OVERFLOW
212
+
213
+ L_DEQUE_RESERVE_OVERFLOW:
214
+ panic(1904)
215
+
216
+ L_DEQUE_RESERVE_NEEDED_OK:
217
+ has_room = uge cap, needed
218
+ br has_room -> L_DEQUE_RESERVE_DONE, L_DEQUE_RESERVE_GROW
219
+
220
+ L_DEQUE_RESERVE_GROW:
221
+ target_cap = call @vec_deque_next_capacity(needed)
222
+ call @vec_deque_realloc(&deque, target_cap)
223
+ !target_cap
224
+ !has_room
225
+ !needed
226
+ !reserve_needed_ok
227
+ !cap
228
+ !len
229
+ !additional
230
+ !deque
231
+ return
232
+
233
+ L_DEQUE_RESERVE_DONE:
234
+ !has_room
235
+ !needed
236
+ !reserve_needed_ok
237
+ !cap
238
+ !len
239
+ !additional
240
+ !deque
241
+ return
242
+
243
+ @export sa_vec_deque_reserve_exact(&deque: ptr, additional: u64) -> void:
244
+ L_ENTRY:
245
+ len = load deque+VecDeque_len as u64
246
+ cap = load deque+VecDeque_cap as u64
247
+ EXPAND NUM_U64_CHECKED_ADD reserve_exact_needed_ok, needed, len, additional
248
+ br reserve_exact_needed_ok -> L_DEQUE_RESERVE_EXACT_NEEDED_OK, L_DEQUE_RESERVE_EXACT_OVERFLOW
249
+
250
+ L_DEQUE_RESERVE_EXACT_OVERFLOW:
251
+ panic(1905)
252
+
253
+ L_DEQUE_RESERVE_EXACT_NEEDED_OK:
254
+ has_room = uge cap, needed
255
+ br has_room -> L_DEQUE_RESERVE_EXACT_DONE, L_DEQUE_RESERVE_EXACT_GROW
256
+
257
+ L_DEQUE_RESERVE_EXACT_GROW:
258
+ call @vec_deque_realloc(&deque, needed)
259
+ !has_room
260
+ !needed
261
+ !reserve_exact_needed_ok
262
+ !cap
263
+ !len
264
+ !additional
265
+ !deque
266
+ return
267
+
268
+ L_DEQUE_RESERVE_EXACT_DONE:
269
+ !has_room
270
+ !needed
271
+ !reserve_exact_needed_ok
272
+ !cap
273
+ !len
274
+ !additional
275
+ !deque
276
+ return
277
+
278
+ @export sa_vec_deque_try_reserve(&deque: ptr, additional: u64) -> i32:
279
+ L_ENTRY:
280
+ call @sa_vec_deque_reserve(&deque, additional)
281
+ !additional
282
+ !deque
283
+ return 1
284
+
285
+ @export sa_vec_deque_try_reserve_exact(&deque: ptr, additional: u64) -> i32:
286
+ L_ENTRY:
287
+ call @sa_vec_deque_reserve_exact(&deque, additional)
288
+ !additional
289
+ !deque
290
+ return 1
291
+
292
+ @export sa_vec_deque_shrink_to(&deque: ptr, min_capacity: u64) -> void:
293
+ L_ENTRY:
294
+ len = load deque+VecDeque_len as u64
295
+ cap = load deque+VecDeque_cap as u64
296
+ keep_len = uge len, min_capacity
297
+ br keep_len -> L_DEQUE_SHRINK_TARGET_LEN, L_DEQUE_SHRINK_TARGET_MIN
298
+
299
+ L_DEQUE_SHRINK_TARGET_LEN:
300
+ target_cap = add len, 0
301
+ jmp L_DEQUE_SHRINK_CHECK
302
+
303
+ L_DEQUE_SHRINK_TARGET_MIN:
304
+ target_cap = add min_capacity, 0
305
+ jmp L_DEQUE_SHRINK_CHECK
306
+
307
+ L_DEQUE_SHRINK_CHECK:
308
+ needs_shrink = ult target_cap, cap
309
+ br needs_shrink -> L_DEQUE_SHRINK_RUN, L_DEQUE_SHRINK_DONE
310
+
311
+ L_DEQUE_SHRINK_RUN:
312
+ call @vec_deque_realloc(&deque, target_cap)
313
+ !needs_shrink
314
+ !target_cap
315
+ !keep_len
316
+ !cap
317
+ !len
318
+ !min_capacity
319
+ !deque
320
+ return
321
+
322
+ L_DEQUE_SHRINK_DONE:
323
+ !needs_shrink
324
+ !target_cap
325
+ !keep_len
326
+ !cap
327
+ !len
328
+ !min_capacity
329
+ !deque
330
+ return
331
+
332
+ @export sa_vec_deque_shrink_to_fit(&deque: ptr) -> void:
333
+ L_ENTRY:
334
+ len = load deque+VecDeque_len as u64
335
+ call @sa_vec_deque_shrink_to(&deque, len)
336
+ !len
337
+ !deque
338
+ return
339
+
340
+ @export sa_vec_deque_try_shrink_to(&deque: ptr, min_capacity: u64) -> i32:
341
+ L_ENTRY:
342
+ call @sa_vec_deque_shrink_to(&deque, min_capacity)
343
+ !min_capacity
344
+ !deque
345
+ return 1
346
+
347
+ @export sa_vec_deque_try_shrink_to_fit(&deque: ptr) -> i32:
348
+ L_ENTRY:
349
+ call @sa_vec_deque_shrink_to_fit(&deque)
350
+ !deque
351
+ return 1
352
+
353
+ @vec_deque_force_contiguous(&deque: ptr) -> void:
354
+ L_ENTRY:
355
+ head = load deque+VecDeque_head as u64
356
+ already_front = eq head, 0
357
+ br already_front -> L_FORCE_DONE, L_FORCE_RUN
358
+
359
+ L_FORCE_RUN:
360
+ cap = load deque+VecDeque_cap as u64
361
+ call @vec_deque_realloc(&deque, cap)
362
+ !cap
363
+ !already_front
364
+ !head
365
+ !deque
366
+ return
367
+
368
+ L_FORCE_DONE:
369
+ !already_front
370
+ !head
371
+ !deque
372
+ return
373
+
374
+ @export sa_vec_deque_as_slices(&deque: ptr, &out_front_slice: ptr, &out_back_slice: ptr) -> void:
375
+ L_ENTRY:
376
+ len = load deque+VecDeque_len as u64
377
+ empty = eq len, 0
378
+ br empty -> L_AS_SLICES_EMPTY, L_AS_SLICES_NONEMPTY
379
+
380
+ L_AS_SLICES_EMPTY:
381
+ store out_front_slice+Slice_ptr, 0 as ptr
382
+ store out_front_slice+Slice_len, 0 as u64
383
+ store out_back_slice+Slice_ptr, 0 as ptr
384
+ store out_back_slice+Slice_len, 0 as u64
385
+ !empty
386
+ !len
387
+ !out_back_slice
388
+ !out_front_slice
389
+ !deque
390
+ return
391
+
392
+ L_AS_SLICES_NONEMPTY:
393
+ buf = load deque+VecDeque_buf as ptr
394
+ head = load deque+VecDeque_head as u64
395
+ cap = load deque+VecDeque_cap as u64
396
+ head_off = mul head, VecDeque_SLOT_SIZE
397
+ front_ptr = ptr_add buf, head_off
398
+ front_room = sub cap, head
399
+ one_slice = ule len, front_room
400
+ br one_slice -> L_AS_SLICES_ONE, L_AS_SLICES_TWO
401
+
402
+ L_AS_SLICES_ONE:
403
+ store out_front_slice+Slice_ptr, front_ptr as ptr
404
+ store out_front_slice+Slice_len, len as u64
405
+ store out_back_slice+Slice_ptr, 0 as ptr
406
+ store out_back_slice+Slice_len, 0 as u64
407
+ !one_slice
408
+ !front_room
409
+ !front_ptr
410
+ !head_off
411
+ !cap
412
+ !head
413
+ !buf
414
+ !empty
415
+ !len
416
+ !out_back_slice
417
+ !out_front_slice
418
+ !deque
419
+ return
420
+
421
+ L_AS_SLICES_TWO:
422
+ back_len = sub len, front_room
423
+ store out_front_slice+Slice_ptr, front_ptr as ptr
424
+ store out_front_slice+Slice_len, front_room as u64
425
+ store out_back_slice+Slice_ptr, buf as ptr
426
+ store out_back_slice+Slice_len, back_len as u64
427
+ !back_len
428
+ !one_slice
429
+ !front_room
430
+ !front_ptr
431
+ !head_off
432
+ !cap
433
+ !head
434
+ !buf
435
+ !empty
436
+ !len
437
+ !out_back_slice
438
+ !out_front_slice
439
+ !deque
440
+ return
441
+
442
+ @export sa_vec_deque_as_mut_slices(&deque: ptr, &out_front_slice: ptr, &out_back_slice: ptr) -> void:
443
+ L_ENTRY:
444
+ call @sa_vec_deque_as_slices(&deque, &out_front_slice, &out_back_slice)
445
+ !out_back_slice
446
+ !out_front_slice
447
+ !deque
448
+ return
449
+
450
+ @export sa_vec_deque_make_contiguous(&deque: ptr, &out_slice: ptr) -> void:
451
+ L_ENTRY:
452
+ len = load deque+VecDeque_len as u64
453
+ empty = eq len, 0
454
+ br empty -> L_MAKE_CONTIG_EMPTY, L_MAKE_CONTIG_CHECK
455
+
456
+ L_MAKE_CONTIG_EMPTY:
457
+ store out_slice+Slice_ptr, 0 as ptr
458
+ store out_slice+Slice_len, 0 as u64
459
+ !empty
460
+ !len
461
+ !out_slice
462
+ !deque
463
+ return
464
+
465
+ L_MAKE_CONTIG_CHECK:
466
+ head = load deque+VecDeque_head as u64
467
+ cap = load deque+VecDeque_cap as u64
468
+ front_room = sub cap, head
469
+ wrapped = ugt len, front_room
470
+ br wrapped -> L_MAKE_CONTIG_REALLOC, L_MAKE_CONTIG_VIEW
471
+
472
+ L_MAKE_CONTIG_REALLOC:
473
+ call @vec_deque_realloc(&deque, cap)
474
+ new_buf = load deque+VecDeque_buf as ptr
475
+ store out_slice+Slice_ptr, new_buf as ptr
476
+ store out_slice+Slice_len, len as u64
477
+ !new_buf
478
+ !wrapped
479
+ !front_room
480
+ !cap
481
+ !head
482
+ !empty
483
+ !len
484
+ !out_slice
485
+ !deque
486
+ return
487
+
488
+ L_MAKE_CONTIG_VIEW:
489
+ buf = load deque+VecDeque_buf as ptr
490
+ head_off = mul head, VecDeque_SLOT_SIZE
491
+ data_ptr = ptr_add buf, head_off
492
+ store out_slice+Slice_ptr, data_ptr as ptr
493
+ store out_slice+Slice_len, len as u64
494
+ !data_ptr
495
+ !head_off
496
+ !buf
497
+ !wrapped
498
+ !front_room
499
+ !cap
500
+ !head
501
+ !empty
502
+ !len
503
+ !out_slice
504
+ !deque
505
+ return
506
+
507
+ @export sa_vec_deque_get(&deque: ptr, index: u64) -> u64:
508
+ L_ENTRY:
509
+ len = load deque+VecDeque_len as u64
510
+ in_range = ult index, len
511
+ br in_range -> L_GET_HIT, L_GET_MISS
512
+ L_GET_HIT:
513
+ buf = load deque+VecDeque_buf as ptr
514
+ head = load deque+VecDeque_head as u64
515
+ cap = load deque+VecDeque_cap as u64
516
+ head_plus = add head, index
517
+ phys_index = urem head_plus, cap
518
+ off = mul phys_index, VecDeque_SLOT_SIZE
519
+ slot = ptr_add buf, off
520
+ value = load slot+0 as u64
521
+ !slot
522
+ !off
523
+ !head_plus
524
+ !phys_index
525
+ !buf
526
+ !head
527
+ !cap
528
+ !index
529
+ !len
530
+ !in_range
531
+ !deque
532
+ return value
533
+ L_GET_MISS:
534
+ !index
535
+ !len
536
+ !in_range
537
+ !deque
538
+ return 0
539
+
540
+ @export sa_vec_deque_try_get(&deque: ptr, index: u64, &out_value_slot: ptr) -> i32:
541
+ L_ENTRY:
542
+ len = load deque+VecDeque_len as u64
543
+ in_range = ult index, len
544
+ br in_range -> L_TRY_GET_HIT, L_TRY_GET_MISS
545
+
546
+ L_TRY_GET_HIT:
547
+ buf = load deque+VecDeque_buf as ptr
548
+ head = load deque+VecDeque_head as u64
549
+ cap = load deque+VecDeque_cap as u64
550
+ head_plus = add head, index
551
+ phys_index = urem head_plus, cap
552
+ off = mul phys_index, VecDeque_SLOT_SIZE
553
+ slot = ptr_add buf, off
554
+ value = load slot+0 as u64
555
+ store out_value_slot+0, value as u64
556
+ !value
557
+ !slot
558
+ !off
559
+ !phys_index
560
+ !head_plus
561
+ !cap
562
+ !head
563
+ !buf
564
+ !in_range
565
+ !len
566
+ !index
567
+ !out_value_slot
568
+ !deque
569
+ return 1
570
+
571
+ L_TRY_GET_MISS:
572
+ store out_value_slot+0, 0 as u64
573
+ !in_range
574
+ !len
575
+ !index
576
+ !out_value_slot
577
+ !deque
578
+ return 0
579
+
580
+ @export sa_vec_deque_try_get_mut_ptr(&deque: ptr, index: u64, &out_ptr_slot: ptr) -> i32:
581
+ L_ENTRY:
582
+ len = load deque+VecDeque_len as u64
583
+ in_range = ult index, len
584
+ br in_range -> L_GET_MUT_HIT, L_GET_MUT_MISS
585
+
586
+ L_GET_MUT_HIT:
587
+ buf = load deque+VecDeque_buf as ptr
588
+ head = load deque+VecDeque_head as u64
589
+ cap = load deque+VecDeque_cap as u64
590
+ head_plus = add head, index
591
+ phys_index = urem head_plus, cap
592
+ off = mul phys_index, VecDeque_SLOT_SIZE
593
+ slot = ptr_add buf, off
594
+ store out_ptr_slot+0, slot as ptr
595
+ !slot
596
+ !off
597
+ !phys_index
598
+ !head_plus
599
+ !cap
600
+ !head
601
+ !buf
602
+ !in_range
603
+ !len
604
+ !index
605
+ !out_ptr_slot
606
+ !deque
607
+ return 1
608
+
609
+ L_GET_MUT_MISS:
610
+ store out_ptr_slot+0, 0 as ptr
611
+ !in_range
612
+ !len
613
+ !index
614
+ !out_ptr_slot
615
+ !deque
616
+ return 0
617
+
618
+ @export sa_vec_deque_try_front_mut_ptr(&deque: ptr, &out_ptr_slot: ptr) -> i32:
619
+ L_ENTRY:
620
+ ok = call @sa_vec_deque_try_get_mut_ptr(&deque, 0, &out_ptr_slot)
621
+ !out_ptr_slot
622
+ !deque
623
+ return ok
624
+
625
+ @export sa_vec_deque_try_back_mut_ptr(&deque: ptr, &out_ptr_slot: ptr) -> i32:
626
+ L_ENTRY:
627
+ len = load deque+VecDeque_len as u64
628
+ empty = eq len, 0
629
+ br empty -> L_BACK_MUT_EMPTY, L_BACK_MUT_READY
630
+
631
+ L_BACK_MUT_READY:
632
+ last = sub len, 1
633
+ ok = call @sa_vec_deque_try_get_mut_ptr(&deque, last, &out_ptr_slot)
634
+ !last
635
+ !empty
636
+ !len
637
+ !out_ptr_slot
638
+ !deque
639
+ return ok
640
+
641
+ L_BACK_MUT_EMPTY:
642
+ store out_ptr_slot+0, 0 as ptr
643
+ !empty
644
+ !len
645
+ !out_ptr_slot
646
+ !deque
647
+ return 0
648
+
649
+ @export sa_vec_deque_set(&deque: ptr, index: u64, value: u64) -> i32:
650
+ L_ENTRY:
651
+ len = load deque+VecDeque_len as u64
652
+ in_range = ult index, len
653
+ br in_range -> L_SET_HIT, L_SET_MISS
654
+
655
+ L_SET_HIT:
656
+ buf = load deque+VecDeque_buf as ptr
657
+ head = load deque+VecDeque_head as u64
658
+ cap = load deque+VecDeque_cap as u64
659
+ head_plus = add head, index
660
+ phys_index = urem head_plus, cap
661
+ off = mul phys_index, VecDeque_SLOT_SIZE
662
+ slot = ptr_add buf, off
663
+ store slot+0, value as u64
664
+ !slot
665
+ !off
666
+ !phys_index
667
+ !head_plus
668
+ !cap
669
+ !head
670
+ !buf
671
+ !in_range
672
+ !len
673
+ !value
674
+ !index
675
+ !deque
676
+ return 1
677
+
678
+ L_SET_MISS:
679
+ !in_range
680
+ !len
681
+ !value
682
+ !index
683
+ !deque
684
+ return 0
685
+
686
+ @export sa_vec_deque_contains(&deque: ptr, needle: u64) -> i32:
687
+ L_ENTRY:
688
+ len = load deque+VecDeque_len as u64
689
+ buf = load deque+VecDeque_buf as ptr
690
+ head = load deque+VecDeque_head as u64
691
+ cap = load deque+VecDeque_cap as u64
692
+ idx_slot = stack_alloc 8
693
+ store idx_slot+0, 0 as u64
694
+ jmp L_CONTAINS_HEAD
695
+
696
+ L_CONTAINS_HEAD:
697
+ idx = load idx_slot+0 as u64
698
+ done = eq idx, len
699
+ br done -> L_CONTAINS_MISS, L_CONTAINS_BODY
700
+
701
+ L_CONTAINS_BODY:
702
+ head_plus = add head, idx
703
+ phys_index = urem head_plus, cap
704
+ off = mul phys_index, VecDeque_SLOT_SIZE
705
+ slot = ptr_add buf, off
706
+ value = load slot+0 as u64
707
+ matched = eq value, needle
708
+ br matched -> L_CONTAINS_HIT, L_CONTAINS_NEXT
709
+
710
+ L_CONTAINS_NEXT:
711
+ next_idx = add idx, 1
712
+ store idx_slot+0, next_idx as u64
713
+ !next_idx
714
+ !matched
715
+ !value
716
+ !slot
717
+ !off
718
+ !phys_index
719
+ !head_plus
720
+ !done
721
+ !idx
722
+ jmp L_CONTAINS_HEAD
723
+
724
+ L_CONTAINS_HIT:
725
+ !matched
726
+ !value
727
+ !slot
728
+ !off
729
+ !phys_index
730
+ !head_plus
731
+ !done
732
+ !idx
733
+ !cap
734
+ !head
735
+ !buf
736
+ !len
737
+ !needle
738
+ !deque
739
+ return 1
740
+
741
+ L_CONTAINS_MISS:
742
+ !done
743
+ !idx
744
+ !cap
745
+ !head
746
+ !buf
747
+ !len
748
+ !needle
749
+ !deque
750
+ return 0
751
+
752
+ @export sa_vec_deque_swap(&deque: ptr, left: u64, right: u64) -> i32:
753
+ L_ENTRY:
754
+ len = load deque+VecDeque_len as u64
755
+ left_ok = ult left, len
756
+ right_ok = ult right, len
757
+ both_ok = and left_ok, right_ok
758
+ br both_ok -> L_SWAP_READY, L_SWAP_MISS
759
+
760
+ L_SWAP_READY:
761
+ buf = load deque+VecDeque_buf as ptr
762
+ head = load deque+VecDeque_head as u64
763
+ cap = load deque+VecDeque_cap as u64
764
+ left_sum = add head, left
765
+ left_phys = urem left_sum, cap
766
+ left_off = mul left_phys, VecDeque_SLOT_SIZE
767
+ left_ptr = ptr_add buf, left_off
768
+ right_sum = add head, right
769
+ right_phys = urem right_sum, cap
770
+ right_off = mul right_phys, VecDeque_SLOT_SIZE
771
+ right_ptr = ptr_add buf, right_off
772
+ left_value = load left_ptr+0 as u64
773
+ right_value = load right_ptr+0 as u64
774
+ store left_ptr+0, right_value as u64
775
+ store right_ptr+0, left_value as u64
776
+ !right_value
777
+ !left_value
778
+ !right_ptr
779
+ !right_off
780
+ !right_phys
781
+ !right_sum
782
+ !left_ptr
783
+ !left_off
784
+ !left_phys
785
+ !left_sum
786
+ !cap
787
+ !head
788
+ !buf
789
+ !both_ok
790
+ !right_ok
791
+ !left_ok
792
+ !len
793
+ !right
794
+ !left
795
+ !deque
796
+ return 1
797
+
798
+ L_SWAP_MISS:
799
+ !both_ok
800
+ !right_ok
801
+ !left_ok
802
+ !len
803
+ !right
804
+ !left
805
+ !deque
806
+ return 0
807
+
808
+ @export sa_vec_deque_try_insert(&deque: ptr, index: u64, value: u64) -> i32:
809
+ L_ENTRY:
810
+ len = load deque+VecDeque_len as u64
811
+ in_bounds = ule index, len
812
+ br in_bounds -> L_INSERT_READY, L_INSERT_MISS
813
+
814
+ L_INSERT_READY:
815
+ call @sa_vec_deque_reserve(&deque, 1)
816
+ call @vec_deque_force_contiguous(&deque)
817
+ buf = load deque+VecDeque_buf as ptr
818
+ idx_slot = stack_alloc 8
819
+ store idx_slot+0, len as u64
820
+ jmp L_INSERT_SHIFT_HEAD
821
+
822
+ L_INSERT_SHIFT_HEAD:
823
+ idx = load idx_slot+0 as u64
824
+ done = ule idx, index
825
+ br done -> L_INSERT_STORE, L_INSERT_SHIFT_BODY
826
+
827
+ L_INSERT_SHIFT_BODY:
828
+ src_idx = sub idx, 1
829
+ src_off = mul src_idx, VecDeque_SLOT_SIZE
830
+ src_ptr = ptr_add buf, src_off
831
+ dst_off = mul idx, VecDeque_SLOT_SIZE
832
+ dst_ptr = ptr_add buf, dst_off
833
+ shifted = load src_ptr+0 as u64
834
+ store dst_ptr+0, shifted as u64
835
+ store idx_slot+0, src_idx as u64
836
+ !shifted
837
+ !dst_ptr
838
+ !dst_off
839
+ !src_ptr
840
+ !src_off
841
+ !src_idx
842
+ !done
843
+ !idx
844
+ jmp L_INSERT_SHIFT_HEAD
845
+
846
+ L_INSERT_STORE:
847
+ insert_off = mul index, VecDeque_SLOT_SIZE
848
+ insert_ptr = ptr_add buf, insert_off
849
+ store insert_ptr+0, value as u64
850
+ next_len = add len, 1
851
+ store deque+VecDeque_len, next_len as u64
852
+ store deque+VecDeque_head, 0 as u64
853
+ !next_len
854
+ !insert_ptr
855
+ !insert_off
856
+ !done
857
+ !idx
858
+ !buf
859
+ !in_bounds
860
+ !len
861
+ !value
862
+ !index
863
+ !deque
864
+ return 1
865
+
866
+ L_INSERT_MISS:
867
+ !in_bounds
868
+ !len
869
+ !value
870
+ !index
871
+ !deque
872
+ return 0
873
+
874
+ @export sa_vec_deque_try_remove(&deque: ptr, index: u64, &out_value_slot: ptr) -> i32:
875
+ L_ENTRY:
876
+ len = load deque+VecDeque_len as u64
877
+ in_bounds = ult index, len
878
+ br in_bounds -> L_REMOVE_READY, L_REMOVE_MISS
879
+
880
+ L_REMOVE_READY:
881
+ call @vec_deque_force_contiguous(&deque)
882
+ buf = load deque+VecDeque_buf as ptr
883
+ remove_off = mul index, VecDeque_SLOT_SIZE
884
+ remove_ptr = ptr_add buf, remove_off
885
+ removed = load remove_ptr+0 as u64
886
+ last_index = sub len, 1
887
+ idx_slot = stack_alloc 8
888
+ store idx_slot+0, index as u64
889
+ jmp L_REMOVE_SHIFT_HEAD
890
+
891
+ L_REMOVE_SHIFT_HEAD:
892
+ idx = load idx_slot+0 as u64
893
+ done = uge idx, last_index
894
+ br done -> L_REMOVE_STORE, L_REMOVE_SHIFT_BODY
895
+
896
+ L_REMOVE_SHIFT_BODY:
897
+ src_idx = add idx, 1
898
+ src_off = mul src_idx, VecDeque_SLOT_SIZE
899
+ src_ptr = ptr_add buf, src_off
900
+ dst_off = mul idx, VecDeque_SLOT_SIZE
901
+ dst_ptr = ptr_add buf, dst_off
902
+ shifted = load src_ptr+0 as u64
903
+ store dst_ptr+0, shifted as u64
904
+ store idx_slot+0, src_idx as u64
905
+ !shifted
906
+ !dst_ptr
907
+ !dst_off
908
+ !src_ptr
909
+ !src_off
910
+ !src_idx
911
+ !done
912
+ !idx
913
+ jmp L_REMOVE_SHIFT_HEAD
914
+
915
+ L_REMOVE_STORE:
916
+ next_len = sub len, 1
917
+ store deque+VecDeque_len, next_len as u64
918
+ store deque+VecDeque_head, 0 as u64
919
+ store out_value_slot+0, removed as u64
920
+ !next_len
921
+ !done
922
+ !idx
923
+ !last_index
924
+ !removed
925
+ !remove_ptr
926
+ !remove_off
927
+ !buf
928
+ !in_bounds
929
+ !len
930
+ !index
931
+ !out_value_slot
932
+ !deque
933
+ return 1
934
+
935
+ L_REMOVE_MISS:
936
+ store out_value_slot+0, 0 as u64
937
+ !in_bounds
938
+ !len
939
+ !index
940
+ !out_value_slot
941
+ !deque
942
+ return 0
943
+
944
+ @export sa_vec_deque_try_swap_remove_front(&deque: ptr, index: u64, &out_value_slot: ptr) -> i32:
945
+ L_ENTRY:
946
+ len = load deque+VecDeque_len as u64
947
+ in_bounds = ult index, len
948
+ br in_bounds -> L_SWAP_REMOVE_FRONT_READY, L_SWAP_REMOVE_FRONT_MISS
949
+
950
+ L_SWAP_REMOVE_FRONT_READY:
951
+ removed = call @sa_vec_deque_get(&deque, index)
952
+ front_value = call @sa_vec_deque_front(&deque)
953
+ ptr_slot = stack_alloc 8
954
+ ptr_ok = call @sa_vec_deque_try_get_mut_ptr(&deque, index, &ptr_slot)
955
+ slot = load ptr_slot+0 as ptr
956
+ store slot+0, front_value as u64
957
+ pop_slot = stack_alloc 8
958
+ pop_ok = call @sa_vec_deque_try_pop_front(&deque, &pop_slot)
959
+ store out_value_slot+0, removed as u64
960
+ !pop_ok
961
+ !slot
962
+ !ptr_ok
963
+ !front_value
964
+ !removed
965
+ !in_bounds
966
+ !len
967
+ !index
968
+ !out_value_slot
969
+ !deque
970
+ return 1
971
+
972
+ L_SWAP_REMOVE_FRONT_MISS:
973
+ store out_value_slot+0, 0 as u64
974
+ !in_bounds
975
+ !len
976
+ !index
977
+ !out_value_slot
978
+ !deque
979
+ return 0
980
+
981
+ @export sa_vec_deque_try_swap_remove_back(&deque: ptr, index: u64, &out_value_slot: ptr) -> i32:
982
+ L_ENTRY:
983
+ len = load deque+VecDeque_len as u64
984
+ in_bounds = ult index, len
985
+ br in_bounds -> L_SWAP_REMOVE_BACK_READY, L_SWAP_REMOVE_BACK_MISS
986
+
987
+ L_SWAP_REMOVE_BACK_READY:
988
+ removed = call @sa_vec_deque_get(&deque, index)
989
+ back_value = call @sa_vec_deque_back(&deque)
990
+ ptr_slot = stack_alloc 8
991
+ ptr_ok = call @sa_vec_deque_try_get_mut_ptr(&deque, index, &ptr_slot)
992
+ slot = load ptr_slot+0 as ptr
993
+ store slot+0, back_value as u64
994
+ pop_slot = stack_alloc 8
995
+ pop_ok = call @sa_vec_deque_try_pop_back(&deque, &pop_slot)
996
+ store out_value_slot+0, removed as u64
997
+ !pop_ok
998
+ !slot
999
+ !ptr_ok
1000
+ !back_value
1001
+ !removed
1002
+ !in_bounds
1003
+ !len
1004
+ !index
1005
+ !out_value_slot
1006
+ !deque
1007
+ return 1
1008
+
1009
+ L_SWAP_REMOVE_BACK_MISS:
1010
+ store out_value_slot+0, 0 as u64
1011
+ !in_bounds
1012
+ !len
1013
+ !index
1014
+ !out_value_slot
1015
+ !deque
1016
+ return 0
1017
+
1018
+ @export sa_vec_deque_push_back(&deque: ptr, value: u64) -> void:
1019
+ L_ENTRY:
1020
+ len = load deque+VecDeque_len as u64
1021
+ cap = load deque+VecDeque_cap as u64
1022
+ room = ult len, cap
1023
+ br room -> L_PUSH_BACK_OK, L_PUSH_BACK_FULL
1024
+ L_PUSH_BACK_OK:
1025
+ buf = load deque+VecDeque_buf as ptr
1026
+ head = load deque+VecDeque_head as u64
1027
+ tail_sum = add head, len
1028
+ tail_index = urem tail_sum, cap
1029
+ tail_off = mul tail_index, VecDeque_SLOT_SIZE
1030
+ tail_ptr = ptr_add buf, tail_off
1031
+ store tail_ptr+0, value as u64
1032
+ next_len = add len, 1
1033
+ store deque+VecDeque_len, next_len as u64
1034
+ !tail_ptr
1035
+ !tail_off
1036
+ !tail_index
1037
+ !tail_sum
1038
+ !next_len
1039
+ !room
1040
+ !buf
1041
+ !head
1042
+ !cap
1043
+ !len
1044
+ !value
1045
+ !deque
1046
+ return
1047
+ L_PUSH_BACK_FULL:
1048
+ call @sa_vec_deque_reserve(&deque, 1)
1049
+ !room
1050
+ !cap
1051
+ !len
1052
+ jmp L_ENTRY
1053
+
1054
+ @export sa_vec_deque_push_front(&deque: ptr, value: u64) -> void:
1055
+ L_ENTRY:
1056
+ len = load deque+VecDeque_len as u64
1057
+ cap = load deque+VecDeque_cap as u64
1058
+ room = ult len, cap
1059
+ br room -> L_PUSH_FRONT_OK, L_PUSH_FRONT_FULL
1060
+ L_PUSH_FRONT_OK:
1061
+ buf = load deque+VecDeque_buf as ptr
1062
+ head = load deque+VecDeque_head as u64
1063
+ cap_minus_one = sub cap, 1
1064
+ head_plus = add head, cap_minus_one
1065
+ new_head = urem head_plus, cap
1066
+ head_off = mul new_head, VecDeque_SLOT_SIZE
1067
+ head_ptr = ptr_add buf, head_off
1068
+ store head_ptr+0, value as u64
1069
+ next_len = add len, 1
1070
+ store deque+VecDeque_head, new_head as u64
1071
+ store deque+VecDeque_len, next_len as u64
1072
+ !head_ptr
1073
+ !head_off
1074
+ !new_head
1075
+ !cap_minus_one
1076
+ !head_plus
1077
+ !room
1078
+ !buf
1079
+ !head
1080
+ !cap
1081
+ !next_len
1082
+ !len
1083
+ !value
1084
+ !deque
1085
+ return
1086
+ L_PUSH_FRONT_FULL:
1087
+ call @sa_vec_deque_reserve(&deque, 1)
1088
+ !room
1089
+ !cap
1090
+ !len
1091
+ jmp L_ENTRY
1092
+
1093
+ @export sa_vec_deque_try_pop_front(&deque: ptr, &out_value_slot: ptr) -> i32:
1094
+ L_ENTRY:
1095
+ len = load deque+VecDeque_len as u64
1096
+ empty = eq len, 0
1097
+ br empty -> L_POP_FRONT_EMPTY, L_POP_FRONT_READY
1098
+ L_POP_FRONT_READY:
1099
+ buf = load deque+VecDeque_buf as ptr
1100
+ head = load deque+VecDeque_head as u64
1101
+ cap = load deque+VecDeque_cap as u64
1102
+ head_off = mul head, VecDeque_SLOT_SIZE
1103
+ head_ptr = ptr_add buf, head_off
1104
+ value = load head_ptr+0 as u64
1105
+ next_head = add head, 1
1106
+ next_head2 = urem next_head, cap
1107
+ L_POP_FRONT_STORE:
1108
+ next_len = sub len, 1
1109
+ store out_value_slot+0, value as u64
1110
+ store deque+VecDeque_len, next_len as u64
1111
+ store deque+VecDeque_head, next_head2 as u64
1112
+ !next_head2
1113
+ !next_head
1114
+ !next_len
1115
+ !value
1116
+ !head_ptr
1117
+ !head_off
1118
+ !head
1119
+ !cap
1120
+ !buf
1121
+ !len
1122
+ !out_value_slot
1123
+ !deque
1124
+ return 1
1125
+ L_POP_FRONT_EMPTY:
1126
+ store out_value_slot+0, 0 as u64
1127
+ !empty
1128
+ !len
1129
+ !out_value_slot
1130
+ !deque
1131
+ return 0
1132
+
1133
+ @export sa_vec_deque_try_pop_back(&deque: ptr, &out_value_slot: ptr) -> i32:
1134
+ L_ENTRY:
1135
+ len = load deque+VecDeque_len as u64
1136
+ empty = eq len, 0
1137
+ br empty -> L_POP_BACK_EMPTY, L_POP_BACK_READY
1138
+ L_POP_BACK_READY:
1139
+ buf = load deque+VecDeque_buf as ptr
1140
+ head = load deque+VecDeque_head as u64
1141
+ cap = load deque+VecDeque_cap as u64
1142
+ last_index = sub len, 1
1143
+ tail_sum = add head, last_index
1144
+ tail_index = urem tail_sum, cap
1145
+ tail_off = mul tail_index, VecDeque_SLOT_SIZE
1146
+ tail_ptr = ptr_add buf, tail_off
1147
+ value = load tail_ptr+0 as u64
1148
+ next_len = sub len, 1
1149
+ L_POP_BACK_STORE:
1150
+ store out_value_slot+0, value as u64
1151
+ store deque+VecDeque_len, next_len as u64
1152
+ store deque+VecDeque_head, head as u64
1153
+ !tail_sum
1154
+ !tail_index
1155
+ !tail_ptr
1156
+ !tail_off
1157
+ !last_index
1158
+ !next_len
1159
+ !value
1160
+ !head
1161
+ !cap
1162
+ !buf
1163
+ !len
1164
+ !out_value_slot
1165
+ !deque
1166
+ return 1
1167
+ L_POP_BACK_EMPTY:
1168
+ store out_value_slot+0, 0 as u64
1169
+ !empty
1170
+ !len
1171
+ !out_value_slot
1172
+ !deque
1173
+ return 0
1174
+
1175
+ @export sa_vec_deque_front(&deque: ptr) -> u64:
1176
+ L_ENTRY:
1177
+ len = load deque+VecDeque_len as u64
1178
+ empty = eq len, 0
1179
+ br empty -> L_FRONT_EMPTY, L_FRONT_READY
1180
+ L_FRONT_READY:
1181
+ buf = load deque+VecDeque_buf as ptr
1182
+ head = load deque+VecDeque_head as u64
1183
+ head_off = mul head, VecDeque_SLOT_SIZE
1184
+ head_ptr = ptr_add buf, head_off
1185
+ value = load head_ptr+0 as u64
1186
+ !head_ptr
1187
+ !head_off
1188
+ !head
1189
+ !buf
1190
+ !empty
1191
+ !len
1192
+ !deque
1193
+ return value
1194
+ L_FRONT_EMPTY:
1195
+ !empty
1196
+ !len
1197
+ !deque
1198
+ return 0
1199
+
1200
+ @export sa_vec_deque_back(&deque: ptr) -> u64:
1201
+ L_ENTRY:
1202
+ len = load deque+VecDeque_len as u64
1203
+ empty = eq len, 0
1204
+ br empty -> L_BACK_EMPTY, L_BACK_READY
1205
+ L_BACK_READY:
1206
+ buf = load deque+VecDeque_buf as ptr
1207
+ head = load deque+VecDeque_head as u64
1208
+ cap = load deque+VecDeque_cap as u64
1209
+ last_index = sub len, 1
1210
+ tail_sum = add head, last_index
1211
+ tail_index = urem tail_sum, cap
1212
+ tail_off = mul tail_index, VecDeque_SLOT_SIZE
1213
+ tail_ptr = ptr_add buf, tail_off
1214
+ value = load tail_ptr+0 as u64
1215
+ !tail_ptr
1216
+ !tail_off
1217
+ !tail_index
1218
+ !tail_sum
1219
+ !last_index
1220
+ !cap
1221
+ !head
1222
+ !buf
1223
+ !empty
1224
+ !len
1225
+ !deque
1226
+ return value
1227
+ L_BACK_EMPTY:
1228
+ !empty
1229
+ !len
1230
+ !deque
1231
+ return 0
1232
+
1233
+ @export sa_vec_deque_try_front(&deque: ptr, &out_value_slot: ptr) -> i32:
1234
+ L_ENTRY:
1235
+ ok = call @sa_vec_deque_try_get(&deque, 0, &out_value_slot)
1236
+ !out_value_slot
1237
+ !deque
1238
+ return ok
1239
+
1240
+ @export sa_vec_deque_try_back(&deque: ptr, &out_value_slot: ptr) -> i32:
1241
+ L_ENTRY:
1242
+ len = load deque+VecDeque_len as u64
1243
+ empty = eq len, 0
1244
+ br empty -> L_TRY_BACK_EMPTY, L_TRY_BACK_READY
1245
+
1246
+ L_TRY_BACK_READY:
1247
+ last = sub len, 1
1248
+ ok = call @sa_vec_deque_try_get(&deque, last, &out_value_slot)
1249
+ !last
1250
+ !empty
1251
+ !len
1252
+ !out_value_slot
1253
+ !deque
1254
+ return ok
1255
+
1256
+ L_TRY_BACK_EMPTY:
1257
+ store out_value_slot+0, 0 as u64
1258
+ !empty
1259
+ !len
1260
+ !out_value_slot
1261
+ !deque
1262
+ return 0
1263
+
1264
+ @export sa_vec_deque_clear(&deque: ptr) -> void:
1265
+ L_ENTRY:
1266
+ buf = load deque+VecDeque_buf as ptr
1267
+ cap = load deque+VecDeque_cap as u64
1268
+ EXPAND NUM_U64_CHECKED_MUL clear_bytes_ok, bytes, cap, VecDeque_SLOT_SIZE
1269
+ br clear_bytes_ok -> L_CLEAR_BYTES_OK, L_CLEAR_BYTES_OVERFLOW
1270
+
1271
+ L_CLEAR_BYTES_OVERFLOW:
1272
+ panic(1906)
1273
+
1274
+ L_CLEAR_BYTES_OK:
1275
+ has_buf = ne buf, 0
1276
+ br has_buf -> L_CLEAR_BUF, L_CLEAR_SKIP
1277
+ L_CLEAR_BUF:
1278
+ call @sa_mem_set(&buf, 0, bytes)
1279
+ !bytes
1280
+ !clear_bytes_ok
1281
+ store deque+VecDeque_head, 0 as u64
1282
+ store deque+VecDeque_len, 0 as u64
1283
+ !has_buf
1284
+ !buf
1285
+ !cap
1286
+ !deque
1287
+ return
1288
+ L_CLEAR_SKIP:
1289
+ !bytes
1290
+ !clear_bytes_ok
1291
+ store deque+VecDeque_head, 0 as u64
1292
+ store deque+VecDeque_len, 0 as u64
1293
+ !has_buf
1294
+ !buf
1295
+ !cap
1296
+ !deque
1297
+ return
1298
+
1299
+ @export sa_vec_deque_rotate_left(&deque: ptr, count: u64) -> void:
1300
+ L_ENTRY:
1301
+ len = load deque+VecDeque_len as u64
1302
+ short = ule len, 1
1303
+ br short -> L_ROTATE_LEFT_DONE_SHORT, L_ROTATE_LEFT_RUN
1304
+ L_ROTATE_LEFT_RUN:
1305
+ shift = urem count, len
1306
+ no_move = eq shift, 0
1307
+ br no_move -> L_ROTATE_LEFT_DONE_RUN, L_ROTATE_LEFT_BODY
1308
+ L_ROTATE_LEFT_BODY:
1309
+ head = load deque+VecDeque_head as u64
1310
+ cap = load deque+VecDeque_cap as u64
1311
+ next_sum = add head, shift
1312
+ next_head = urem next_sum, cap
1313
+ store deque+VecDeque_head, next_head as u64
1314
+ !next_sum
1315
+ !next_head
1316
+ !shift
1317
+ !cap
1318
+ !head
1319
+ !no_move
1320
+ !short
1321
+ !len
1322
+ !count
1323
+ !deque
1324
+ return
1325
+ L_ROTATE_LEFT_DONE_SHORT:
1326
+ !short
1327
+ !len
1328
+ !count
1329
+ !deque
1330
+ return
1331
+ L_ROTATE_LEFT_DONE_RUN:
1332
+ !no_move
1333
+ !shift
1334
+ !short
1335
+ !len
1336
+ !count
1337
+ !deque
1338
+ return
1339
+
1340
+ @export sa_vec_deque_rotate_right(&deque: ptr, count: u64) -> void:
1341
+ L_ENTRY:
1342
+ len = load deque+VecDeque_len as u64
1343
+ short = ule len, 1
1344
+ br short -> L_ROTATE_RIGHT_DONE_SHORT, L_ROTATE_RIGHT_RUN
1345
+ L_ROTATE_RIGHT_RUN:
1346
+ shift = urem count, len
1347
+ back_shift = sub len, shift
1348
+ no_move = eq shift, 0
1349
+ br no_move -> L_ROTATE_RIGHT_DONE_RUN, L_ROTATE_RIGHT_BODY
1350
+ L_ROTATE_RIGHT_BODY:
1351
+ head = load deque+VecDeque_head as u64
1352
+ cap = load deque+VecDeque_cap as u64
1353
+ next_sum = add head, back_shift
1354
+ next_head = urem next_sum, cap
1355
+ store deque+VecDeque_head, next_head as u64
1356
+ !next_sum
1357
+ !next_head
1358
+ !back_shift
1359
+ !shift
1360
+ !cap
1361
+ !head
1362
+ !no_move
1363
+ !short
1364
+ !len
1365
+ !count
1366
+ !deque
1367
+ return
1368
+ L_ROTATE_RIGHT_DONE_SHORT:
1369
+ !short
1370
+ !len
1371
+ !count
1372
+ !deque
1373
+ return
1374
+ L_ROTATE_RIGHT_DONE_RUN:
1375
+ !no_move
1376
+ !back_shift
1377
+ !shift
1378
+ !short
1379
+ !len
1380
+ !count
1381
+ !deque
1382
+ return
1383
+
1384
+ @export sa_vec_deque_truncate(&deque: ptr, new_len: u64) -> void:
1385
+ L_ENTRY:
1386
+ len = load deque+VecDeque_len as u64
1387
+ should_shrink = ult new_len, len
1388
+ br should_shrink -> L_TRUNCATE_RUN, L_TRUNCATE_DONE
1389
+
1390
+ L_TRUNCATE_RUN:
1391
+ store deque+VecDeque_len, new_len as u64
1392
+ !should_shrink
1393
+ !len
1394
+ !new_len
1395
+ !deque
1396
+ return
1397
+
1398
+ L_TRUNCATE_DONE:
1399
+ !should_shrink
1400
+ !len
1401
+ !new_len
1402
+ !deque
1403
+ return
1404
+
1405
+ // Rust VecDeque::truncate_front: keep only the last `new_len` elements.
1406
+ @export sa_vec_deque_truncate_front(&deque: ptr, new_len: u64) -> void:
1407
+ L_ENTRY:
1408
+ target_slot = stack_alloc 8
1409
+ pop_slot = stack_alloc 8
1410
+ store target_slot+0, new_len as u64
1411
+ jmp L_TRUNCATE_FRONT_HEAD
1412
+
1413
+ L_TRUNCATE_FRONT_HEAD:
1414
+ len = load deque+VecDeque_len as u64
1415
+ target = load target_slot+0 as u64
1416
+ done = ule len, target
1417
+ br done -> L_TRUNCATE_FRONT_DONE, L_TRUNCATE_FRONT_BODY
1418
+
1419
+ L_TRUNCATE_FRONT_BODY:
1420
+ pop_ok = call @sa_vec_deque_try_pop_front(&deque, &pop_slot)
1421
+ !pop_ok
1422
+ !done
1423
+ !target
1424
+ !len
1425
+ jmp L_TRUNCATE_FRONT_HEAD
1426
+
1427
+ L_TRUNCATE_FRONT_DONE:
1428
+ !done
1429
+ !target
1430
+ !len
1431
+ !new_len
1432
+ !deque
1433
+ return
1434
+
1435
+ @export sa_vec_deque_try_split_off(&deque: ptr, index: u64, &out_deque_slot: ptr) -> i32:
1436
+ L_ENTRY:
1437
+ len = load deque+VecDeque_len as u64
1438
+ in_bounds = ule index, len
1439
+ br in_bounds -> L_SPLIT_READY, L_SPLIT_MISS
1440
+
1441
+ L_SPLIT_READY:
1442
+ tail_len = sub len, index
1443
+ out_deque = call @sa_vec_deque_with_capacity(tail_len)
1444
+ idx_slot = stack_alloc 8
1445
+ store idx_slot+0, 0 as u64
1446
+ jmp L_SPLIT_COPY_HEAD
1447
+
1448
+ L_SPLIT_COPY_HEAD:
1449
+ idx = load idx_slot+0 as u64
1450
+ done = eq idx, tail_len
1451
+ br done -> L_SPLIT_STORE, L_SPLIT_COPY_BODY
1452
+
1453
+ L_SPLIT_COPY_BODY:
1454
+ src_index = add index, idx
1455
+ value = call @sa_vec_deque_get(&deque, src_index)
1456
+ call @sa_vec_deque_push_back(&out_deque, value)
1457
+ next_idx = add idx, 1
1458
+ store idx_slot+0, next_idx as u64
1459
+ !next_idx
1460
+ !value
1461
+ !src_index
1462
+ !done
1463
+ !idx
1464
+ jmp L_SPLIT_COPY_HEAD
1465
+
1466
+ L_SPLIT_STORE:
1467
+ store deque+VecDeque_len, index as u64
1468
+ store out_deque_slot+0, out_deque as ptr
1469
+ !out_deque
1470
+ !done
1471
+ !idx
1472
+ !tail_len
1473
+ !in_bounds
1474
+ !len
1475
+ !index
1476
+ !out_deque_slot
1477
+ !deque
1478
+ return 1
1479
+
1480
+ L_SPLIT_MISS:
1481
+ store out_deque_slot+0, 0 as ptr
1482
+ !in_bounds
1483
+ !len
1484
+ !index
1485
+ !out_deque_slot
1486
+ !deque
1487
+ return 0
1488
+
1489
+ @export sa_vec_deque_append(&deque: ptr, &other: ptr) -> void:
1490
+ L_ENTRY:
1491
+ other_len = load other+VecDeque_len as u64
1492
+ call @sa_vec_deque_reserve(&deque, other_len)
1493
+ value_slot = stack_alloc 8
1494
+ !other_len
1495
+ jmp L_APPEND_LOOP
1496
+
1497
+ L_APPEND_LOOP:
1498
+ ok = call @sa_vec_deque_try_pop_front(&other, &value_slot)
1499
+ br ok -> L_APPEND_PUSH, L_APPEND_DONE
1500
+
1501
+ L_APPEND_PUSH:
1502
+ value = load value_slot+0 as u64
1503
+ call @sa_vec_deque_push_back(&deque, value)
1504
+ !value
1505
+ !ok
1506
+ jmp L_APPEND_LOOP
1507
+
1508
+ L_APPEND_DONE:
1509
+ !ok
1510
+ !other
1511
+ !deque
1512
+ return
1513
+
1514
+ [MACRO] VEC_DEQUE_NEW %out_deque
1515
+ %out_deque = call @sa_vec_deque_new()
1516
+ [END_MACRO]
1517
+
1518
+ [MACRO] VEC_DEQUE_WITH_CAPACITY %out_deque, %capacity
1519
+ %out_deque = call @sa_vec_deque_with_capacity(%capacity)
1520
+ [END_MACRO]
1521
+
1522
+ [MACRO] VEC_DEQUE_TRY_WITH_CAPACITY %out_ok, %out_deque, %capacity
1523
+ EXPAND VEC_DEQUE_WITH_CAPACITY %out_deque, %capacity
1524
+ %out_ok = ne %out_deque, 0
1525
+ [END_MACRO]
1526
+
1527
+ [MACRO] VEC_DEQUE_FREE %deque_reg
1528
+ call @sa_vec_deque_free(^%deque_reg)
1529
+ [END_MACRO]
1530
+
1531
+ [MACRO] VEC_DEQUE_LEN %out_len, %deque_reg
1532
+ %out_len = call @sa_vec_deque_len(&%deque_reg)
1533
+ [END_MACRO]
1534
+
1535
+ [MACRO] VEC_DEQUE_CAPACITY %out_cap, %deque_reg
1536
+ %out_cap = call @sa_vec_deque_capacity(&%deque_reg)
1537
+ [END_MACRO]
1538
+
1539
+ [MACRO] VEC_DEQUE_IS_EMPTY %out_flag, %deque_reg
1540
+ %out_flag = call @sa_vec_deque_is_empty(&%deque_reg)
1541
+ [END_MACRO]
1542
+ [MACRO] VEC_DEQUE_EXTRA_CAPACITY %out_extra, %deque_reg
1543
+ __vec_deque_ec_cap_%out_extra = call @sa_vec_deque_capacity(&%deque_reg)
1544
+ __vec_deque_ec_len_%out_extra = call @sa_vec_deque_len(&%deque_reg)
1545
+ %out_extra = sub __vec_deque_ec_cap_%out_extra, __vec_deque_ec_len_%out_extra
1546
+ !__vec_deque_ec_len_%out_extra
1547
+ !__vec_deque_ec_cap_%out_extra
1548
+ [END_MACRO]
1549
+
1550
+
1551
+ [MACRO] VEC_DEQUE_GET %out_value, %deque_reg, %index
1552
+ %out_value = call @sa_vec_deque_get(&%deque_reg, %index)
1553
+ [END_MACRO]
1554
+
1555
+ [MACRO] VEC_DEQUE_TRY_GET %out_ok, %out_value, %deque_reg, %index
1556
+ __vec_deque_get_slot_%out_ok = stack_alloc 8
1557
+ __vec_deque_get_ok_%out_ok = call @sa_vec_deque_try_get(&%deque_reg, %index, &__vec_deque_get_slot_%out_ok)
1558
+ %out_value = load __vec_deque_get_slot_%out_ok+0 as u64
1559
+ %out_ok = __vec_deque_get_ok_%out_ok
1560
+ [END_MACRO]
1561
+
1562
+ [MACRO] VEC_DEQUE_TRY_GET_U64 %out_ok, %out_value, %deque_reg, %index
1563
+ EXPAND VEC_DEQUE_TRY_GET %out_ok, %out_value, %deque_reg, %index
1564
+ [END_MACRO]
1565
+
1566
+ [MACRO] VEC_DEQUE_GET_U64 %out_value, %deque_reg, %index
1567
+ EXPAND VEC_DEQUE_GET %out_value, %deque_reg, %index
1568
+ [END_MACRO]
1569
+
1570
+ [MACRO] VEC_DEQUE_TRY_GET_MUT_PTR %out_ok, %out_ptr, %deque_reg, %index
1571
+ __vec_deque_get_mut_slot_%out_ok = stack_alloc 8
1572
+ __vec_deque_get_mut_ok_%out_ok = call @sa_vec_deque_try_get_mut_ptr(&%deque_reg, %index, &__vec_deque_get_mut_slot_%out_ok)
1573
+ %out_ptr = load __vec_deque_get_mut_slot_%out_ok+0 as ptr
1574
+ %out_ok = __vec_deque_get_mut_ok_%out_ok
1575
+ [END_MACRO]
1576
+
1577
+ [MACRO] VEC_DEQUE_GET_MUT_PTR %out_ok, %out_ptr, %deque_reg, %index
1578
+ EXPAND VEC_DEQUE_TRY_GET_MUT_PTR %out_ok, %out_ptr, %deque_reg, %index
1579
+ [END_MACRO]
1580
+
1581
+ [MACRO] VEC_DEQUE_GET_MUT %out_ok, %out_ptr, %deque_reg, %index
1582
+ EXPAND VEC_DEQUE_TRY_GET_MUT_PTR %out_ok, %out_ptr, %deque_reg, %index
1583
+ [END_MACRO]
1584
+
1585
+ [MACRO] VEC_DEQUE_SET %out_ok, %deque_reg, %index, %value
1586
+ %out_ok = call @sa_vec_deque_set(&%deque_reg, %index, %value)
1587
+ [END_MACRO]
1588
+
1589
+ [MACRO] VEC_DEQUE_CONTAINS %out_bool, %deque_reg, %needle
1590
+ EXPAND VEC_DEQUE_CONTAINS_U64 %out_bool, %deque_reg, %needle
1591
+ [END_MACRO]
1592
+
1593
+ [MACRO] VEC_DEQUE_CONTAINS_U64 %out_bool, %deque_reg, %needle
1594
+ %out_bool = call @sa_vec_deque_contains(&%deque_reg, %needle)
1595
+ [END_MACRO]
1596
+
1597
+ [MACRO] VEC_DEQUE_SWAP %out_ok, %deque_reg, %left, %right
1598
+ %out_ok = call @sa_vec_deque_swap(&%deque_reg, %left, %right)
1599
+ [END_MACRO]
1600
+
1601
+ [MACRO] VEC_DEQUE_PUSH_BACK %deque_reg, %value
1602
+ call @sa_vec_deque_push_back(&%deque_reg, %value)
1603
+ [END_MACRO]
1604
+
1605
+ [MACRO] VEC_DEQUE_PUSH_BACK_MUT_PTR %out_ptr, %deque_reg, %value
1606
+ __vec_deque_push_back_mut_len_%out_ptr = call @sa_vec_deque_len(&%deque_reg)
1607
+ call @sa_vec_deque_push_back(&%deque_reg, %value)
1608
+ __vec_deque_push_back_mut_slot_%out_ptr = stack_alloc 8
1609
+ __vec_deque_push_back_mut_ok_%out_ptr = call @sa_vec_deque_try_get_mut_ptr(&%deque_reg, __vec_deque_push_back_mut_len_%out_ptr, &__vec_deque_push_back_mut_slot_%out_ptr)
1610
+ %out_ptr = load __vec_deque_push_back_mut_slot_%out_ptr+0 as ptr
1611
+ !__vec_deque_push_back_mut_ok_%out_ptr
1612
+ !__vec_deque_push_back_mut_len_%out_ptr
1613
+ [END_MACRO]
1614
+
1615
+ [MACRO] VEC_DEQUE_PUSH_BACK_MUT %out_ptr, %deque_reg, %value
1616
+ EXPAND VEC_DEQUE_PUSH_BACK_MUT_PTR %out_ptr, %deque_reg, %value
1617
+ [END_MACRO]
1618
+
1619
+ [MACRO] VEC_DEQUE_PUSH_FRONT %deque_reg, %value
1620
+ call @sa_vec_deque_push_front(&%deque_reg, %value)
1621
+ [END_MACRO]
1622
+
1623
+ [MACRO] VEC_DEQUE_PUSH_FRONT_MUT_PTR %out_ptr, %deque_reg, %value
1624
+ call @sa_vec_deque_push_front(&%deque_reg, %value)
1625
+ __vec_deque_push_front_mut_slot_%out_ptr = stack_alloc 8
1626
+ __vec_deque_push_front_mut_ok_%out_ptr = call @sa_vec_deque_try_front_mut_ptr(&%deque_reg, &__vec_deque_push_front_mut_slot_%out_ptr)
1627
+ %out_ptr = load __vec_deque_push_front_mut_slot_%out_ptr+0 as ptr
1628
+ !__vec_deque_push_front_mut_ok_%out_ptr
1629
+ [END_MACRO]
1630
+
1631
+ [MACRO] VEC_DEQUE_PUSH_FRONT_MUT %out_ptr, %deque_reg, %value
1632
+ EXPAND VEC_DEQUE_PUSH_FRONT_MUT_PTR %out_ptr, %deque_reg, %value
1633
+ [END_MACRO]
1634
+
1635
+ [MACRO] VEC_DEQUE_TRY_POP_FRONT %out_ok, %out_value, %deque_reg
1636
+ __vec_deque_value_slot_%out_ok = stack_alloc 8
1637
+ __vec_deque_ok_%out_ok = call @sa_vec_deque_try_pop_front(&%deque_reg, &__vec_deque_value_slot_%out_ok)
1638
+ %out_value = load __vec_deque_value_slot_%out_ok+0 as u64
1639
+ %out_ok = __vec_deque_ok_%out_ok
1640
+ [END_MACRO]
1641
+
1642
+ [MACRO] VEC_DEQUE_TRY_POP_BACK %out_ok, %out_value, %deque_reg
1643
+ __vec_deque_value_slot_%out_ok = stack_alloc 8
1644
+ __vec_deque_ok_%out_ok = call @sa_vec_deque_try_pop_back(&%deque_reg, &__vec_deque_value_slot_%out_ok)
1645
+ %out_value = load __vec_deque_value_slot_%out_ok+0 as u64
1646
+ %out_ok = __vec_deque_ok_%out_ok
1647
+ [END_MACRO]
1648
+
1649
+ [MACRO] VEC_DEQUE_TRY_POP_FRONT_IF_U64 %out_ok, %out_value, %deque_reg, %pred_fn
1650
+ __vec_deque_pop_front_if_pop_slot_%out_ok = stack_alloc 8
1651
+ __vec_deque_pop_front_if_ok_slot_%out_ok = stack_alloc 8
1652
+ store __vec_deque_pop_front_if_pop_slot_%out_ok+0, 0 as u64
1653
+ store __vec_deque_pop_front_if_ok_slot_%out_ok+0, 0 as u64
1654
+ EXPAND VEC_DEQUE_TRY_FRONT __vec_deque_pop_front_if_has_%out_ok, __vec_deque_pop_front_if_value_%out_ok, %deque_reg
1655
+ br __vec_deque_pop_front_if_has_%out_ok -> L_VEC_DEQUE_POP_FRONT_IF_CHECK_%out_ok, L_VEC_DEQUE_POP_FRONT_IF_EMPTY_%out_ok
1656
+
1657
+ L_VEC_DEQUE_POP_FRONT_IF_CHECK_%out_ok:
1658
+ __vec_deque_pop_front_if_pred_%out_ok = call %pred_fn(__vec_deque_pop_front_if_value_%out_ok)
1659
+ __vec_deque_pop_front_if_take_%out_ok = ne __vec_deque_pop_front_if_pred_%out_ok, 0
1660
+ br __vec_deque_pop_front_if_take_%out_ok -> L_VEC_DEQUE_POP_FRONT_IF_TAKE_%out_ok, L_VEC_DEQUE_POP_FRONT_IF_KEEP_%out_ok
1661
+
1662
+ L_VEC_DEQUE_POP_FRONT_IF_TAKE_%out_ok:
1663
+ __vec_deque_pop_front_if_pop_ok_%out_ok = call @sa_vec_deque_try_pop_front(&%deque_reg, &__vec_deque_pop_front_if_pop_slot_%out_ok)
1664
+ store __vec_deque_pop_front_if_ok_slot_%out_ok+0, __vec_deque_pop_front_if_pop_ok_%out_ok as u64
1665
+ !__vec_deque_pop_front_if_pop_ok_%out_ok
1666
+ !__vec_deque_pop_front_if_take_%out_ok
1667
+ !__vec_deque_pop_front_if_pred_%out_ok
1668
+ !__vec_deque_pop_front_if_value_%out_ok
1669
+ !__vec_deque_pop_front_if_has_%out_ok
1670
+ jmp L_VEC_DEQUE_POP_FRONT_IF_END_%out_ok
1671
+
1672
+ L_VEC_DEQUE_POP_FRONT_IF_KEEP_%out_ok:
1673
+ store __vec_deque_pop_front_if_ok_slot_%out_ok+0, 0 as u64
1674
+ store __vec_deque_pop_front_if_pop_slot_%out_ok+0, 0 as u64
1675
+ !__vec_deque_pop_front_if_take_%out_ok
1676
+ !__vec_deque_pop_front_if_pred_%out_ok
1677
+ !__vec_deque_pop_front_if_value_%out_ok
1678
+ !__vec_deque_pop_front_if_has_%out_ok
1679
+ jmp L_VEC_DEQUE_POP_FRONT_IF_END_%out_ok
1680
+
1681
+ L_VEC_DEQUE_POP_FRONT_IF_EMPTY_%out_ok:
1682
+ store __vec_deque_pop_front_if_ok_slot_%out_ok+0, 0 as u64
1683
+ store __vec_deque_pop_front_if_pop_slot_%out_ok+0, 0 as u64
1684
+ !__vec_deque_pop_front_if_value_%out_ok
1685
+ !__vec_deque_pop_front_if_has_%out_ok
1686
+
1687
+ L_VEC_DEQUE_POP_FRONT_IF_END_%out_ok:
1688
+ %out_value = load __vec_deque_pop_front_if_pop_slot_%out_ok+0 as u64
1689
+ %out_ok = load __vec_deque_pop_front_if_ok_slot_%out_ok+0 as u64
1690
+ [END_MACRO]
1691
+
1692
+ // Rust method-name alias over VEC_DEQUE_TRY_POP_FRONT_IF_U64.
1693
+ [MACRO] VEC_DEQUE_TRY_POP_FRONT_IF %out_ok, %out_value, %deque_reg, %pred_fn
1694
+ EXPAND VEC_DEQUE_TRY_POP_FRONT_IF_U64 %out_ok, %out_value, %deque_reg, %pred_fn
1695
+ [END_MACRO]
1696
+
1697
+ [MACRO] VEC_DEQUE_POP_FRONT_IF_U64 %out_ok, %out_value, %deque_reg, %pred_fn
1698
+ EXPAND VEC_DEQUE_TRY_POP_FRONT_IF_U64 %out_ok, %out_value, %deque_reg, %pred_fn
1699
+ [END_MACRO]
1700
+
1701
+ // Rust method-name alias: VecDeque::pop_front_if.
1702
+ [MACRO] VEC_DEQUE_POP_FRONT_IF %out_ok, %out_value, %deque_reg, %pred_fn
1703
+ EXPAND VEC_DEQUE_TRY_POP_FRONT_IF_U64 %out_ok, %out_value, %deque_reg, %pred_fn
1704
+ [END_MACRO]
1705
+
1706
+ [MACRO] VEC_DEQUE_TRY_POP_BACK_IF_U64 %out_ok, %out_value, %deque_reg, %pred_fn
1707
+ __vec_deque_pop_back_if_pop_slot_%out_ok = stack_alloc 8
1708
+ __vec_deque_pop_back_if_ok_slot_%out_ok = stack_alloc 8
1709
+ store __vec_deque_pop_back_if_pop_slot_%out_ok+0, 0 as u64
1710
+ store __vec_deque_pop_back_if_ok_slot_%out_ok+0, 0 as u64
1711
+ EXPAND VEC_DEQUE_TRY_BACK __vec_deque_pop_back_if_has_%out_ok, __vec_deque_pop_back_if_value_%out_ok, %deque_reg
1712
+ br __vec_deque_pop_back_if_has_%out_ok -> L_VEC_DEQUE_POP_BACK_IF_CHECK_%out_ok, L_VEC_DEQUE_POP_BACK_IF_EMPTY_%out_ok
1713
+
1714
+ L_VEC_DEQUE_POP_BACK_IF_CHECK_%out_ok:
1715
+ __vec_deque_pop_back_if_pred_%out_ok = call %pred_fn(__vec_deque_pop_back_if_value_%out_ok)
1716
+ __vec_deque_pop_back_if_take_%out_ok = ne __vec_deque_pop_back_if_pred_%out_ok, 0
1717
+ br __vec_deque_pop_back_if_take_%out_ok -> L_VEC_DEQUE_POP_BACK_IF_TAKE_%out_ok, L_VEC_DEQUE_POP_BACK_IF_KEEP_%out_ok
1718
+
1719
+ L_VEC_DEQUE_POP_BACK_IF_TAKE_%out_ok:
1720
+ __vec_deque_pop_back_if_pop_ok_%out_ok = call @sa_vec_deque_try_pop_back(&%deque_reg, &__vec_deque_pop_back_if_pop_slot_%out_ok)
1721
+ store __vec_deque_pop_back_if_ok_slot_%out_ok+0, __vec_deque_pop_back_if_pop_ok_%out_ok as u64
1722
+ !__vec_deque_pop_back_if_pop_ok_%out_ok
1723
+ !__vec_deque_pop_back_if_take_%out_ok
1724
+ !__vec_deque_pop_back_if_pred_%out_ok
1725
+ !__vec_deque_pop_back_if_value_%out_ok
1726
+ !__vec_deque_pop_back_if_has_%out_ok
1727
+ jmp L_VEC_DEQUE_POP_BACK_IF_END_%out_ok
1728
+
1729
+ L_VEC_DEQUE_POP_BACK_IF_KEEP_%out_ok:
1730
+ store __vec_deque_pop_back_if_ok_slot_%out_ok+0, 0 as u64
1731
+ store __vec_deque_pop_back_if_pop_slot_%out_ok+0, 0 as u64
1732
+ !__vec_deque_pop_back_if_take_%out_ok
1733
+ !__vec_deque_pop_back_if_pred_%out_ok
1734
+ !__vec_deque_pop_back_if_value_%out_ok
1735
+ !__vec_deque_pop_back_if_has_%out_ok
1736
+ jmp L_VEC_DEQUE_POP_BACK_IF_END_%out_ok
1737
+
1738
+ L_VEC_DEQUE_POP_BACK_IF_EMPTY_%out_ok:
1739
+ store __vec_deque_pop_back_if_ok_slot_%out_ok+0, 0 as u64
1740
+ store __vec_deque_pop_back_if_pop_slot_%out_ok+0, 0 as u64
1741
+ !__vec_deque_pop_back_if_value_%out_ok
1742
+ !__vec_deque_pop_back_if_has_%out_ok
1743
+
1744
+ L_VEC_DEQUE_POP_BACK_IF_END_%out_ok:
1745
+ %out_value = load __vec_deque_pop_back_if_pop_slot_%out_ok+0 as u64
1746
+ %out_ok = load __vec_deque_pop_back_if_ok_slot_%out_ok+0 as u64
1747
+ [END_MACRO]
1748
+
1749
+ // Rust method-name alias over VEC_DEQUE_TRY_POP_BACK_IF_U64.
1750
+ [MACRO] VEC_DEQUE_TRY_POP_BACK_IF %out_ok, %out_value, %deque_reg, %pred_fn
1751
+ EXPAND VEC_DEQUE_TRY_POP_BACK_IF_U64 %out_ok, %out_value, %deque_reg, %pred_fn
1752
+ [END_MACRO]
1753
+
1754
+ [MACRO] VEC_DEQUE_POP_BACK_IF_U64 %out_ok, %out_value, %deque_reg, %pred_fn
1755
+ EXPAND VEC_DEQUE_TRY_POP_BACK_IF_U64 %out_ok, %out_value, %deque_reg, %pred_fn
1756
+ [END_MACRO]
1757
+
1758
+ // Rust method-name alias: VecDeque::pop_back_if.
1759
+ [MACRO] VEC_DEQUE_POP_BACK_IF %out_ok, %out_value, %deque_reg, %pred_fn
1760
+ EXPAND VEC_DEQUE_TRY_POP_BACK_IF_U64 %out_ok, %out_value, %deque_reg, %pred_fn
1761
+ [END_MACRO]
1762
+
1763
+ [MACRO] VEC_DEQUE_ROTATE_LEFT %deque_reg, %count
1764
+ call @sa_vec_deque_rotate_left(&%deque_reg, %count)
1765
+ [END_MACRO]
1766
+
1767
+ [MACRO] VEC_DEQUE_ROTATE_RIGHT %deque_reg, %count
1768
+ call @sa_vec_deque_rotate_right(&%deque_reg, %count)
1769
+ [END_MACRO]
1770
+
1771
+ [MACRO] VEC_DEQUE_FRONT %out_value, %deque_reg
1772
+ %out_value = call @sa_vec_deque_front(&%deque_reg)
1773
+ [END_MACRO]
1774
+
1775
+ [MACRO] VEC_DEQUE_TRY_FRONT %out_ok, %out_value, %deque_reg
1776
+ __vec_deque_front_slot_%out_ok = stack_alloc 8
1777
+ __vec_deque_front_ok_%out_ok = call @sa_vec_deque_try_front(&%deque_reg, &__vec_deque_front_slot_%out_ok)
1778
+ %out_value = load __vec_deque_front_slot_%out_ok+0 as u64
1779
+ %out_ok = __vec_deque_front_ok_%out_ok
1780
+ [END_MACRO]
1781
+
1782
+ [MACRO] VEC_DEQUE_BACK %out_value, %deque_reg
1783
+ %out_value = call @sa_vec_deque_back(&%deque_reg)
1784
+ [END_MACRO]
1785
+
1786
+ [MACRO] VEC_DEQUE_TRY_BACK %out_ok, %out_value, %deque_reg
1787
+ __vec_deque_back_slot_%out_ok = stack_alloc 8
1788
+ __vec_deque_back_ok_%out_ok = call @sa_vec_deque_try_back(&%deque_reg, &__vec_deque_back_slot_%out_ok)
1789
+ %out_value = load __vec_deque_back_slot_%out_ok+0 as u64
1790
+ %out_ok = __vec_deque_back_ok_%out_ok
1791
+ [END_MACRO]
1792
+
1793
+ [MACRO] VEC_DEQUE_FRONT_U64 %out_value, %deque_reg
1794
+ EXPAND VEC_DEQUE_FRONT %out_value, %deque_reg
1795
+ [END_MACRO]
1796
+
1797
+ [MACRO] VEC_DEQUE_TRY_FRONT_U64 %out_ok, %out_value, %deque_reg
1798
+ EXPAND VEC_DEQUE_TRY_FRONT %out_ok, %out_value, %deque_reg
1799
+ [END_MACRO]
1800
+
1801
+ [MACRO] VEC_DEQUE_BACK_U64 %out_value, %deque_reg
1802
+ EXPAND VEC_DEQUE_BACK %out_value, %deque_reg
1803
+ [END_MACRO]
1804
+
1805
+ [MACRO] VEC_DEQUE_TRY_BACK_U64 %out_ok, %out_value, %deque_reg
1806
+ EXPAND VEC_DEQUE_TRY_BACK %out_ok, %out_value, %deque_reg
1807
+ [END_MACRO]
1808
+
1809
+ [MACRO] VEC_DEQUE_CLEAR %deque_reg
1810
+ call @sa_vec_deque_clear(&%deque_reg)
1811
+ [END_MACRO]
1812
+
1813
+ [MACRO] VEC_DEQUE_DRAIN_U64 %out_vec, %deque_reg
1814
+ __vec_deque_drain_len_%out_vec = load %deque_reg+VecDeque_len as u64
1815
+ EXPAND VEC_WITH_CAPACITY_U64 %out_vec, __vec_deque_drain_len_%out_vec
1816
+ __vec_deque_drain_idx_slot_%out_vec = stack_alloc 8
1817
+ store __vec_deque_drain_idx_slot_%out_vec+0, 0 as u64
1818
+ jmp L_VEC_DEQUE_DRAIN_HEAD_%out_vec
1819
+
1820
+ L_VEC_DEQUE_DRAIN_HEAD_%out_vec:
1821
+ __vec_deque_drain_idx_%out_vec = load __vec_deque_drain_idx_slot_%out_vec+0 as u64
1822
+ __vec_deque_drain_done_%out_vec = eq __vec_deque_drain_idx_%out_vec, __vec_deque_drain_len_%out_vec
1823
+ br __vec_deque_drain_done_%out_vec -> L_VEC_DEQUE_DRAIN_DONE_%out_vec, L_VEC_DEQUE_DRAIN_BODY_%out_vec
1824
+
1825
+ L_VEC_DEQUE_DRAIN_BODY_%out_vec:
1826
+ __vec_deque_drain_value_%out_vec = call @sa_vec_deque_get(&%deque_reg, __vec_deque_drain_idx_%out_vec)
1827
+ EXPAND VEC_PUSH_U64 %out_vec, __vec_deque_drain_value_%out_vec
1828
+ __vec_deque_drain_next_%out_vec = add __vec_deque_drain_idx_%out_vec, 1
1829
+ store __vec_deque_drain_idx_slot_%out_vec+0, __vec_deque_drain_next_%out_vec as u64
1830
+ !__vec_deque_drain_next_%out_vec
1831
+ !__vec_deque_drain_value_%out_vec
1832
+ !__vec_deque_drain_done_%out_vec
1833
+ !__vec_deque_drain_idx_%out_vec
1834
+ jmp L_VEC_DEQUE_DRAIN_HEAD_%out_vec
1835
+
1836
+ L_VEC_DEQUE_DRAIN_DONE_%out_vec:
1837
+ call @sa_vec_deque_clear(&%deque_reg)
1838
+ !__vec_deque_drain_done_%out_vec
1839
+ !__vec_deque_drain_idx_%out_vec
1840
+ !__vec_deque_drain_len_%out_vec
1841
+ [END_MACRO]
1842
+
1843
+ // Rust method-name alias over VEC_DEQUE_DRAIN_U64.
1844
+ [MACRO] VEC_DEQUE_DRAIN %out_vec, %deque_reg
1845
+ EXPAND VEC_DEQUE_DRAIN_U64 %out_vec, %deque_reg
1846
+ [END_MACRO]
1847
+
1848
+ [MACRO] VEC_DEQUE_TRY_DRAIN_RANGE_U64 %out_ok, %out_vec, %deque_reg, %start, %length
1849
+ EXPAND VEC_DEQUE_MAKE_CONTIGUOUS __vec_deque_drain_range_slice_%out_ok, %deque_reg
1850
+ EXPAND VEC_FROM_SLICE_U64 __vec_deque_drain_range_vec_%out_ok, __vec_deque_drain_range_slice_%out_ok
1851
+ EXPAND VEC_DRAIN_U64 %out_ok, %out_vec, __vec_deque_drain_range_vec_%out_ok, %start, %length
1852
+ __vec_deque_drain_range_hit_%out_ok = ne %out_ok, 0
1853
+ br __vec_deque_drain_range_hit_%out_ok -> L_VEC_DEQUE_DRAIN_RANGE_REBUILD_%out_ok, L_VEC_DEQUE_DRAIN_RANGE_MISS_%out_ok
1854
+
1855
+ L_VEC_DEQUE_DRAIN_RANGE_REBUILD_%out_ok:
1856
+ EXPAND VEC_DEQUE_CLEAR %deque_reg
1857
+ EXPAND VEC_LEN __vec_deque_drain_range_new_len_%out_ok, __vec_deque_drain_range_vec_%out_ok
1858
+ __vec_deque_drain_range_idx_slot_%out_ok = stack_alloc 8
1859
+ store __vec_deque_drain_range_idx_slot_%out_ok+0, 0 as u64
1860
+ jmp L_VEC_DEQUE_DRAIN_RANGE_COPY_HEAD_%out_ok
1861
+
1862
+ L_VEC_DEQUE_DRAIN_RANGE_COPY_HEAD_%out_ok:
1863
+ __vec_deque_drain_range_idx_%out_ok = load __vec_deque_drain_range_idx_slot_%out_ok+0 as u64
1864
+ __vec_deque_drain_range_copy_done_%out_ok = eq __vec_deque_drain_range_idx_%out_ok, __vec_deque_drain_range_new_len_%out_ok
1865
+ br __vec_deque_drain_range_copy_done_%out_ok -> L_VEC_DEQUE_DRAIN_RANGE_COPY_END_%out_ok, L_VEC_DEQUE_DRAIN_RANGE_COPY_BODY_%out_ok
1866
+
1867
+ L_VEC_DEQUE_DRAIN_RANGE_COPY_BODY_%out_ok:
1868
+ EXPAND VEC_GET_U64 __vec_deque_drain_range_value_%out_ok, __vec_deque_drain_range_vec_%out_ok, __vec_deque_drain_range_idx_%out_ok
1869
+ EXPAND VEC_DEQUE_PUSH_BACK %deque_reg, __vec_deque_drain_range_value_%out_ok
1870
+ __vec_deque_drain_range_next_%out_ok = add __vec_deque_drain_range_idx_%out_ok, 1
1871
+ store __vec_deque_drain_range_idx_slot_%out_ok+0, __vec_deque_drain_range_next_%out_ok as u64
1872
+ !__vec_deque_drain_range_next_%out_ok
1873
+ !__vec_deque_drain_range_value_%out_ok
1874
+ !__vec_deque_drain_range_copy_done_%out_ok
1875
+ !__vec_deque_drain_range_idx_%out_ok
1876
+ jmp L_VEC_DEQUE_DRAIN_RANGE_COPY_HEAD_%out_ok
1877
+
1878
+ L_VEC_DEQUE_DRAIN_RANGE_COPY_END_%out_ok:
1879
+ !__vec_deque_drain_range_copy_done_%out_ok
1880
+ !__vec_deque_drain_range_idx_%out_ok
1881
+ !__vec_deque_drain_range_new_len_%out_ok
1882
+ !__vec_deque_drain_range_hit_%out_ok
1883
+ jmp L_VEC_DEQUE_DRAIN_RANGE_DONE_%out_ok
1884
+
1885
+ L_VEC_DEQUE_DRAIN_RANGE_MISS_%out_ok:
1886
+ !__vec_deque_drain_range_hit_%out_ok
1887
+ jmp L_VEC_DEQUE_DRAIN_RANGE_DONE_%out_ok
1888
+
1889
+ L_VEC_DEQUE_DRAIN_RANGE_DONE_%out_ok:
1890
+ EXPAND VEC_FREE __vec_deque_drain_range_vec_%out_ok
1891
+ !__vec_deque_drain_range_slice_%out_ok
1892
+ [END_MACRO]
1893
+
1894
+ // Rust method-name alias over VEC_DEQUE_TRY_DRAIN_RANGE_U64.
1895
+ [MACRO] VEC_DEQUE_TRY_DRAIN_RANGE %out_ok, %out_vec, %deque_reg, %start, %length
1896
+ EXPAND VEC_DEQUE_TRY_DRAIN_RANGE_U64 %out_ok, %out_vec, %deque_reg, %start, %length
1897
+ [END_MACRO]
1898
+
1899
+ [MACRO] VEC_DEQUE_DRAIN_RANGE_U64 %out_ok, %out_vec, %deque_reg, %start, %length
1900
+ EXPAND VEC_DEQUE_TRY_DRAIN_RANGE_U64 %out_ok, %out_vec, %deque_reg, %start, %length
1901
+ [END_MACRO]
1902
+
1903
+ // Rust method-name alias over VEC_DEQUE_DRAIN_RANGE_U64.
1904
+ [MACRO] VEC_DEQUE_DRAIN_RANGE %out_ok, %out_vec, %deque_reg, %start, %length
1905
+ EXPAND VEC_DEQUE_DRAIN_RANGE_U64 %out_ok, %out_vec, %deque_reg, %start, %length
1906
+ [END_MACRO]
1907
+
1908
+ // Concrete iterator facades use an explicit front-to-back backing Vec. The
1909
+ // borrowed form snapshots values; the consuming form drains the deque.
1910
+ [MACRO] VEC_DEQUE_ITER_U64 %out_iter, %out_vec, %deque_reg
1911
+ __vec_deque_iter_len_%out_iter = load %deque_reg+VecDeque_len as u64
1912
+ EXPAND VEC_WITH_CAPACITY_U64 %out_vec, __vec_deque_iter_len_%out_iter
1913
+ __vec_deque_iter_idx_slot_%out_iter = stack_alloc 8
1914
+ store __vec_deque_iter_idx_slot_%out_iter+0, 0 as u64
1915
+ jmp L_VEC_DEQUE_ITER_HEAD_%out_iter
1916
+ L_VEC_DEQUE_ITER_HEAD_%out_iter:
1917
+ __vec_deque_iter_idx_%out_iter = load __vec_deque_iter_idx_slot_%out_iter+0 as u64
1918
+ __vec_deque_iter_done_%out_iter = eq __vec_deque_iter_idx_%out_iter, __vec_deque_iter_len_%out_iter
1919
+ br __vec_deque_iter_done_%out_iter -> L_VEC_DEQUE_ITER_BUILD_%out_iter, L_VEC_DEQUE_ITER_BODY_%out_iter
1920
+ L_VEC_DEQUE_ITER_BODY_%out_iter:
1921
+ __vec_deque_iter_value_%out_iter = call @sa_vec_deque_get(&%deque_reg, __vec_deque_iter_idx_%out_iter)
1922
+ EXPAND VEC_PUSH_U64 %out_vec, __vec_deque_iter_value_%out_iter
1923
+ __vec_deque_iter_next_%out_iter = add __vec_deque_iter_idx_%out_iter, 1
1924
+ store __vec_deque_iter_idx_slot_%out_iter+0, __vec_deque_iter_next_%out_iter as u64
1925
+ !__vec_deque_iter_next_%out_iter
1926
+ !__vec_deque_iter_value_%out_iter
1927
+ !__vec_deque_iter_done_%out_iter
1928
+ !__vec_deque_iter_idx_%out_iter
1929
+ jmp L_VEC_DEQUE_ITER_HEAD_%out_iter
1930
+ L_VEC_DEQUE_ITER_BUILD_%out_iter:
1931
+ EXPAND VEC_AS_SLICE __vec_deque_iter_slice_%out_iter, %out_vec
1932
+ EXPAND ITER_FROM_SLICE %out_iter, __vec_deque_iter_slice_%out_iter
1933
+ !__vec_deque_iter_slice_%out_iter
1934
+ !__vec_deque_iter_done_%out_iter
1935
+ !__vec_deque_iter_idx_%out_iter
1936
+ !__vec_deque_iter_len_%out_iter
1937
+ [END_MACRO]
1938
+
1939
+ // Rust method-name alias over VEC_DEQUE_ITER_U64.
1940
+ [MACRO] VEC_DEQUE_ITER %out_iter, %out_vec, %deque_reg
1941
+ EXPAND VEC_DEQUE_ITER_U64 %out_iter, %out_vec, %deque_reg
1942
+ [END_MACRO]
1943
+
1944
+ [MACRO] VEC_DEQUE_ITER_MUT_U64 %out_iter, %out_slice, %deque_reg
1945
+ EXPAND VEC_DEQUE_MAKE_CONTIGUOUS %out_slice, %deque_reg
1946
+ EXPAND ITER_FROM_SLICE %out_iter, %out_slice
1947
+ [END_MACRO]
1948
+
1949
+ // Rust method-name alias over VEC_DEQUE_ITER_MUT_U64.
1950
+ [MACRO] VEC_DEQUE_ITER_MUT %out_iter, %out_slice, %deque_reg
1951
+ EXPAND VEC_DEQUE_ITER_MUT_U64 %out_iter, %out_slice, %deque_reg
1952
+ [END_MACRO]
1953
+
1954
+ [MACRO] VEC_DEQUE_REF_INTO_ITER_U64 %out_iter, %out_vec, %deque_reg
1955
+ EXPAND VEC_DEQUE_ITER_U64 %out_iter, %out_vec, %deque_reg
1956
+ [END_MACRO]
1957
+
1958
+ // Rust method-name alias over VEC_DEQUE_REF_INTO_ITER_U64.
1959
+ [MACRO] VEC_DEQUE_REF_INTO_ITER %out_iter, %out_vec, %deque_reg
1960
+ EXPAND VEC_DEQUE_REF_INTO_ITER_U64 %out_iter, %out_vec, %deque_reg
1961
+ [END_MACRO]
1962
+
1963
+ [MACRO] VEC_DEQUE_MUT_REF_INTO_ITER_U64 %out_iter, %out_slice, %deque_reg
1964
+ EXPAND VEC_DEQUE_ITER_MUT_U64 %out_iter, %out_slice, %deque_reg
1965
+ [END_MACRO]
1966
+
1967
+ // Rust method-name alias over VEC_DEQUE_MUT_REF_INTO_ITER_U64.
1968
+ [MACRO] VEC_DEQUE_MUT_REF_INTO_ITER %out_iter, %out_slice, %deque_reg
1969
+ EXPAND VEC_DEQUE_MUT_REF_INTO_ITER_U64 %out_iter, %out_slice, %deque_reg
1970
+ [END_MACRO]
1971
+
1972
+ [MACRO] VEC_DEQUE_INTO_ITER_U64 %out_iter, %out_vec, %deque_reg
1973
+ EXPAND VEC_DEQUE_DRAIN_U64 %out_vec, %deque_reg
1974
+ EXPAND VEC_AS_SLICE __vec_deque_into_iter_slice_%out_iter, %out_vec
1975
+ EXPAND ITER_FROM_SLICE %out_iter, __vec_deque_into_iter_slice_%out_iter
1976
+ !__vec_deque_into_iter_slice_%out_iter
1977
+ [END_MACRO]
1978
+
1979
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_U64.
1980
+ [MACRO] VEC_DEQUE_INTO_ITER %out_iter, %out_vec, %deque_reg
1981
+ EXPAND VEC_DEQUE_INTO_ITER_U64 %out_iter, %out_vec, %deque_reg
1982
+ [END_MACRO]
1983
+
1984
+ [MACRO] VEC_DEQUE_ITER_DEFAULT_U64 %out_iter
1985
+ __vec_deque_iter_default_slice_%out_iter = stack_alloc Slice_SIZE
1986
+ EXPAND SLICE_NEW __vec_deque_iter_default_slice_%out_iter, 0, 0
1987
+ EXPAND ITER_FROM_SLICE %out_iter, __vec_deque_iter_default_slice_%out_iter
1988
+ [END_MACRO]
1989
+
1990
+ // Rust method-name alias over VEC_DEQUE_ITER_DEFAULT_U64.
1991
+ [MACRO] VEC_DEQUE_ITER_DEFAULT %out_iter
1992
+ EXPAND VEC_DEQUE_ITER_DEFAULT_U64 %out_iter
1993
+ [END_MACRO]
1994
+
1995
+ [MACRO] VEC_DEQUE_ITER_AS_REF_SLICE_U64 %out_slice, %iter_reg
1996
+ EXPAND ITER_AS_SLICE_U64 %out_slice, %iter_reg
1997
+ [END_MACRO]
1998
+
1999
+ // Rust method-name alias over VEC_DEQUE_ITER_AS_REF_SLICE_U64.
2000
+ [MACRO] VEC_DEQUE_ITER_AS_REF_SLICE %out_slice, %iter_reg
2001
+ EXPAND VEC_DEQUE_ITER_AS_REF_SLICE_U64 %out_slice, %iter_reg
2002
+ [END_MACRO]
2003
+
2004
+ [MACRO] VEC_DEQUE_ITER_MUT_AS_REF_SLICE_U64 %out_slice, %iter_reg
2005
+ EXPAND ITER_AS_SLICE_U64 %out_slice, %iter_reg
2006
+ [END_MACRO]
2007
+
2008
+ // Rust method-name alias over VEC_DEQUE_ITER_MUT_AS_REF_SLICE_U64.
2009
+ [MACRO] VEC_DEQUE_ITER_MUT_AS_REF_SLICE %out_slice, %iter_reg
2010
+ EXPAND VEC_DEQUE_ITER_MUT_AS_REF_SLICE_U64 %out_slice, %iter_reg
2011
+ [END_MACRO]
2012
+
2013
+ [MACRO] VEC_DEQUE_ITER_MUT_AS_MUT_SLICE_U64 %out_slice, %iter_reg
2014
+ EXPAND ITER_AS_SLICE_U64 %out_slice, %iter_reg
2015
+ [END_MACRO]
2016
+
2017
+ // Rust method-name alias over VEC_DEQUE_ITER_MUT_AS_MUT_SLICE_U64.
2018
+ [MACRO] VEC_DEQUE_ITER_MUT_AS_MUT_SLICE %out_slice, %iter_reg
2019
+ EXPAND VEC_DEQUE_ITER_MUT_AS_MUT_SLICE_U64 %out_slice, %iter_reg
2020
+ [END_MACRO]
2021
+
2022
+ [MACRO] VEC_DEQUE_ITER_CLONE_U64 %out_iter, %iter_reg
2023
+ EXPAND ITER_CLONE %out_iter, %iter_reg
2024
+ [END_MACRO]
2025
+
2026
+ // Rust method-name alias over VEC_DEQUE_ITER_CLONE_U64.
2027
+ [MACRO] VEC_DEQUE_ITER_CLONE %out_iter, %iter_reg
2028
+ EXPAND VEC_DEQUE_ITER_CLONE_U64 %out_iter, %iter_reg
2029
+ [END_MACRO]
2030
+
2031
+ [MACRO] VEC_DEQUE_INTO_ITER_DEFAULT_U64 %out_iter, %out_vec
2032
+ EXPAND VEC_INTO_ITER_DEFAULT_U64 %out_iter, %out_vec
2033
+ [END_MACRO]
2034
+
2035
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_DEFAULT_U64.
2036
+ [MACRO] VEC_DEQUE_INTO_ITER_DEFAULT %out_iter, %out_vec
2037
+ EXPAND VEC_DEQUE_INTO_ITER_DEFAULT_U64 %out_iter, %out_vec
2038
+ [END_MACRO]
2039
+
2040
+ [MACRO] VEC_DEQUE_INTO_ITER_AS_SLICE_U64 %out_slice, %iter_reg
2041
+ EXPAND ITER_AS_SLICE_U64 %out_slice, %iter_reg
2042
+ [END_MACRO]
2043
+
2044
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_AS_SLICE_U64.
2045
+ [MACRO] VEC_DEQUE_INTO_ITER_AS_SLICE %out_slice, %iter_reg
2046
+ EXPAND VEC_DEQUE_INTO_ITER_AS_SLICE_U64 %out_slice, %iter_reg
2047
+ [END_MACRO]
2048
+
2049
+ [MACRO] VEC_DEQUE_INTO_ITER_AS_MUT_SLICE_U64 %out_slice, %iter_reg
2050
+ EXPAND ITER_AS_SLICE_U64 %out_slice, %iter_reg
2051
+ [END_MACRO]
2052
+
2053
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_AS_MUT_SLICE_U64.
2054
+ [MACRO] VEC_DEQUE_INTO_ITER_AS_MUT_SLICE %out_slice, %iter_reg
2055
+ EXPAND VEC_DEQUE_INTO_ITER_AS_MUT_SLICE_U64 %out_slice, %iter_reg
2056
+ [END_MACRO]
2057
+
2058
+ [MACRO] VEC_DEQUE_INTO_ITER_AS_REF_SLICE_U64 %out_slice, %iter_reg
2059
+ EXPAND VEC_DEQUE_INTO_ITER_AS_SLICE_U64 %out_slice, %iter_reg
2060
+ [END_MACRO]
2061
+
2062
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_AS_REF_SLICE_U64.
2063
+ [MACRO] VEC_DEQUE_INTO_ITER_AS_REF_SLICE %out_slice, %iter_reg
2064
+ EXPAND VEC_DEQUE_INTO_ITER_AS_REF_SLICE_U64 %out_slice, %iter_reg
2065
+ [END_MACRO]
2066
+
2067
+ [MACRO] VEC_DEQUE_INTO_ITER_CLONE_U64 %out_iter, %out_vec, %iter_reg
2068
+ EXPAND VEC_INTO_ITER_CLONE_U64 %out_iter, %out_vec, %iter_reg
2069
+ [END_MACRO]
2070
+
2071
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_CLONE_U64.
2072
+ [MACRO] VEC_DEQUE_INTO_ITER_CLONE %out_iter, %out_vec, %iter_reg
2073
+ EXPAND VEC_DEQUE_INTO_ITER_CLONE_U64 %out_iter, %out_vec, %iter_reg
2074
+ [END_MACRO]
2075
+
2076
+ [MACRO] VEC_DEQUE_ITER_NEXT_U64 %out_has, %out_value, %iter_reg
2077
+ EXPAND ITER_NEXT_U64 %out_has, %out_value, %iter_reg
2078
+ [END_MACRO]
2079
+
2080
+ // Rust method-name alias over VEC_DEQUE_ITER_NEXT_U64.
2081
+ [MACRO] VEC_DEQUE_ITER_NEXT %out_has, %out_value, %iter_reg
2082
+ EXPAND VEC_DEQUE_ITER_NEXT_U64 %out_has, %out_value, %iter_reg
2083
+ [END_MACRO]
2084
+
2085
+ [MACRO] VEC_DEQUE_ITER_MUT_NEXT_U64 %out_has, %out_value, %iter_reg
2086
+ EXPAND ITER_NEXT_U64 %out_has, %out_value, %iter_reg
2087
+ [END_MACRO]
2088
+
2089
+ // Rust method-name alias over VEC_DEQUE_ITER_MUT_NEXT_U64.
2090
+ [MACRO] VEC_DEQUE_ITER_MUT_NEXT %out_has, %out_value, %iter_reg
2091
+ EXPAND VEC_DEQUE_ITER_MUT_NEXT_U64 %out_has, %out_value, %iter_reg
2092
+ [END_MACRO]
2093
+
2094
+ [MACRO] VEC_DEQUE_ITER_NEXT_BACK_U64 %out_has, %out_value, %iter_reg
2095
+ EXPAND ITER_NEXT_BACK_U64 %out_has, %out_value, %iter_reg
2096
+ [END_MACRO]
2097
+
2098
+ // Rust method-name alias over VEC_DEQUE_ITER_NEXT_BACK_U64.
2099
+ [MACRO] VEC_DEQUE_ITER_NEXT_BACK %out_has, %out_value, %iter_reg
2100
+ EXPAND VEC_DEQUE_ITER_NEXT_BACK_U64 %out_has, %out_value, %iter_reg
2101
+ [END_MACRO]
2102
+
2103
+ [MACRO] VEC_DEQUE_ITER_MUT_NEXT_BACK_U64 %out_has, %out_value, %iter_reg
2104
+ EXPAND ITER_NEXT_BACK_U64 %out_has, %out_value, %iter_reg
2105
+ [END_MACRO]
2106
+
2107
+ // Rust method-name alias over VEC_DEQUE_ITER_MUT_NEXT_BACK_U64.
2108
+ [MACRO] VEC_DEQUE_ITER_MUT_NEXT_BACK %out_has, %out_value, %iter_reg
2109
+ EXPAND VEC_DEQUE_ITER_MUT_NEXT_BACK_U64 %out_has, %out_value, %iter_reg
2110
+ [END_MACRO]
2111
+
2112
+ [MACRO] VEC_DEQUE_ITER_NTH_U64 %out_has, %out_value, %iter_reg, %nth
2113
+ EXPAND ITER_NTH_U64 %out_has, %out_value, %iter_reg, %nth
2114
+ [END_MACRO]
2115
+
2116
+ // Rust method-name alias over VEC_DEQUE_ITER_NTH_U64.
2117
+ [MACRO] VEC_DEQUE_ITER_NTH %out_has, %out_value, %iter_reg, %nth
2118
+ EXPAND VEC_DEQUE_ITER_NTH_U64 %out_has, %out_value, %iter_reg, %nth
2119
+ [END_MACRO]
2120
+
2121
+ [MACRO] VEC_DEQUE_ITER_NTH_BACK_U64 %out_has, %out_value, %iter_reg, %nth
2122
+ EXPAND ITER_NTH_BACK_U64 %out_has, %out_value, %iter_reg, %nth
2123
+ [END_MACRO]
2124
+
2125
+ // Rust method-name alias over VEC_DEQUE_ITER_NTH_BACK_U64.
2126
+ [MACRO] VEC_DEQUE_ITER_NTH_BACK %out_has, %out_value, %iter_reg, %nth
2127
+ EXPAND VEC_DEQUE_ITER_NTH_BACK_U64 %out_has, %out_value, %iter_reg, %nth
2128
+ [END_MACRO]
2129
+
2130
+ [MACRO] VEC_DEQUE_ITER_TRY_NEXT_CHUNK_U64 %out_ok, %out_filled, %iter_reg, %dst_ptr, %count
2131
+ EXPAND ITER_TRY_NEXT_CHUNK_U64 %out_ok, %out_filled, %iter_reg, %dst_ptr, %count
2132
+ [END_MACRO]
2133
+
2134
+ // Rust method-name alias over VEC_DEQUE_ITER_TRY_NEXT_CHUNK_U64.
2135
+ [MACRO] VEC_DEQUE_ITER_TRY_NEXT_CHUNK %out_ok, %out_filled, %iter_reg, %dst_ptr, %count
2136
+ EXPAND VEC_DEQUE_ITER_TRY_NEXT_CHUNK_U64 %out_ok, %out_filled, %iter_reg, %dst_ptr, %count
2137
+ [END_MACRO]
2138
+
2139
+ [MACRO] VEC_DEQUE_ITER_ADVANCE_BY %out_ok, %out_remaining, %iter_reg, %count
2140
+ EXPAND ITER_ADVANCE_BY %out_ok, %out_remaining, %iter_reg, %count
2141
+ [END_MACRO]
2142
+
2143
+ [MACRO] VEC_DEQUE_ITER_ADVANCE_BACK_BY %out_ok, %out_remaining, %iter_reg, %count
2144
+ EXPAND ITER_ADVANCE_BACK_BY %out_ok, %out_remaining, %iter_reg, %count
2145
+ [END_MACRO]
2146
+
2147
+ [MACRO] VEC_DEQUE_ITER_COUNT_U64 %out_count, %iter_reg
2148
+ EXPAND ITER_COUNT %out_count, %iter_reg
2149
+ [END_MACRO]
2150
+
2151
+ // Rust method-name alias over VEC_DEQUE_ITER_COUNT_U64.
2152
+ [MACRO] VEC_DEQUE_ITER_COUNT %out_count, %iter_reg
2153
+ EXPAND VEC_DEQUE_ITER_COUNT_U64 %out_count, %iter_reg
2154
+ [END_MACRO]
2155
+
2156
+ [MACRO] VEC_DEQUE_ITER_LAST_U64 %out_has, %out_value, %iter_reg
2157
+ EXPAND ITER_LAST_U64 %out_has, %out_value, %iter_reg
2158
+ [END_MACRO]
2159
+
2160
+ // Rust method-name alias over VEC_DEQUE_ITER_LAST_U64.
2161
+ [MACRO] VEC_DEQUE_ITER_LAST %out_has, %out_value, %iter_reg
2162
+ EXPAND VEC_DEQUE_ITER_LAST_U64 %out_has, %out_value, %iter_reg
2163
+ [END_MACRO]
2164
+
2165
+ [MACRO] VEC_DEQUE_ITER_FIND_U64 %out_has, %out_value, %iter_reg, %pred_fn
2166
+ EXPAND ITER_FIND_U64 %out_has, %out_value, %iter_reg, %pred_fn
2167
+ [END_MACRO]
2168
+
2169
+ // Rust method-name alias over VEC_DEQUE_ITER_FIND_U64.
2170
+ [MACRO] VEC_DEQUE_ITER_FIND %out_has, %out_value, %iter_reg, %pred_fn
2171
+ EXPAND VEC_DEQUE_ITER_FIND_U64 %out_has, %out_value, %iter_reg, %pred_fn
2172
+ [END_MACRO]
2173
+
2174
+ [MACRO] VEC_DEQUE_ITER_TRY_FIND_U64 %out_ok, %out_has, %out_value, %iter_reg, %pred_fn
2175
+ EXPAND ITER_TRY_FIND_U64 %out_ok, %out_has, %out_value, %iter_reg, %pred_fn
2176
+ [END_MACRO]
2177
+
2178
+ // Rust method-name alias over VEC_DEQUE_ITER_TRY_FIND_U64.
2179
+ [MACRO] VEC_DEQUE_ITER_TRY_FIND %out_ok, %out_has, %out_value, %iter_reg, %pred_fn
2180
+ EXPAND VEC_DEQUE_ITER_TRY_FIND_U64 %out_ok, %out_has, %out_value, %iter_reg, %pred_fn
2181
+ [END_MACRO]
2182
+
2183
+ [MACRO] VEC_DEQUE_ITER_FIND_MAP_U64 %out_has, %out_value, %iter_reg, %map_fn
2184
+ EXPAND ITER_FIND_MAP_U64 %out_has, %out_value, %iter_reg, %map_fn
2185
+ [END_MACRO]
2186
+
2187
+ // Rust method-name alias over VEC_DEQUE_ITER_FIND_MAP_U64.
2188
+ [MACRO] VEC_DEQUE_ITER_FIND_MAP %out_has, %out_value, %iter_reg, %map_fn
2189
+ EXPAND VEC_DEQUE_ITER_FIND_MAP_U64 %out_has, %out_value, %iter_reg, %map_fn
2190
+ [END_MACRO]
2191
+
2192
+ [MACRO] VEC_DEQUE_ITER_POSITION_U64 %out_has, %out_index, %iter_reg, %pred_fn
2193
+ EXPAND ITER_POSITION_U64 %out_has, %out_index, %iter_reg, %pred_fn
2194
+ [END_MACRO]
2195
+
2196
+ // Rust method-name alias over VEC_DEQUE_ITER_POSITION_U64.
2197
+ [MACRO] VEC_DEQUE_ITER_POSITION %out_has, %out_index, %iter_reg, %pred_fn
2198
+ EXPAND VEC_DEQUE_ITER_POSITION_U64 %out_has, %out_index, %iter_reg, %pred_fn
2199
+ [END_MACRO]
2200
+
2201
+ [MACRO] VEC_DEQUE_ITER_RPOSITION_U64 %out_has, %out_index, %iter_reg, %pred_fn
2202
+ EXPAND ITER_RPOSITION_U64 %out_has, %out_index, %iter_reg, %pred_fn
2203
+ [END_MACRO]
2204
+
2205
+ // Rust method-name alias over VEC_DEQUE_ITER_RPOSITION_U64.
2206
+ [MACRO] VEC_DEQUE_ITER_RPOSITION %out_has, %out_index, %iter_reg, %pred_fn
2207
+ EXPAND VEC_DEQUE_ITER_RPOSITION_U64 %out_has, %out_index, %iter_reg, %pred_fn
2208
+ [END_MACRO]
2209
+
2210
+ [MACRO] VEC_DEQUE_ITER_RFIND_U64 %out_has, %out_value, %iter_reg, %pred_fn
2211
+ EXPAND ITER_RFIND_U64 %out_has, %out_value, %iter_reg, %pred_fn
2212
+ [END_MACRO]
2213
+
2214
+ // Rust method-name alias over VEC_DEQUE_ITER_RFIND_U64.
2215
+ [MACRO] VEC_DEQUE_ITER_RFIND %out_has, %out_value, %iter_reg, %pred_fn
2216
+ EXPAND VEC_DEQUE_ITER_RFIND_U64 %out_has, %out_value, %iter_reg, %pred_fn
2217
+ [END_MACRO]
2218
+
2219
+ [MACRO] VEC_DEQUE_ITER_ANY_U64 %out_bool, %iter_reg, %pred_fn
2220
+ EXPAND ITER_ANY_U64 %out_bool, %iter_reg, %pred_fn
2221
+ [END_MACRO]
2222
+
2223
+ // Rust method-name alias over VEC_DEQUE_ITER_ANY_U64.
2224
+ [MACRO] VEC_DEQUE_ITER_ANY %out_bool, %iter_reg, %pred_fn
2225
+ EXPAND VEC_DEQUE_ITER_ANY_U64 %out_bool, %iter_reg, %pred_fn
2226
+ [END_MACRO]
2227
+
2228
+ [MACRO] VEC_DEQUE_ITER_ALL_U64 %out_bool, %iter_reg, %pred_fn
2229
+ EXPAND ITER_ALL_U64 %out_bool, %iter_reg, %pred_fn
2230
+ [END_MACRO]
2231
+
2232
+ // Rust method-name alias over VEC_DEQUE_ITER_ALL_U64.
2233
+ [MACRO] VEC_DEQUE_ITER_ALL %out_bool, %iter_reg, %pred_fn
2234
+ EXPAND VEC_DEQUE_ITER_ALL_U64 %out_bool, %iter_reg, %pred_fn
2235
+ [END_MACRO]
2236
+
2237
+ [MACRO] VEC_DEQUE_ITER_FOR_EACH_U64 %iter_reg, %each_fn
2238
+ EXPAND ITER_FOR_EACH_U64 %iter_reg, %each_fn
2239
+ [END_MACRO]
2240
+
2241
+ // Rust method-name alias over VEC_DEQUE_ITER_FOR_EACH_U64.
2242
+ [MACRO] VEC_DEQUE_ITER_FOR_EACH %iter_reg, %each_fn
2243
+ EXPAND VEC_DEQUE_ITER_FOR_EACH_U64 %iter_reg, %each_fn
2244
+ [END_MACRO]
2245
+
2246
+ [MACRO] VEC_DEQUE_ITER_TRY_FOR_EACH_U64 %out_ok, %iter_reg, %each_fn
2247
+ EXPAND ITER_TRY_FOR_EACH_U64 %out_ok, %iter_reg, %each_fn
2248
+ [END_MACRO]
2249
+
2250
+ // Rust method-name alias over VEC_DEQUE_ITER_TRY_FOR_EACH_U64.
2251
+ [MACRO] VEC_DEQUE_ITER_TRY_FOR_EACH %out_ok, %iter_reg, %each_fn
2252
+ EXPAND VEC_DEQUE_ITER_TRY_FOR_EACH_U64 %out_ok, %iter_reg, %each_fn
2253
+ [END_MACRO]
2254
+
2255
+ [MACRO] VEC_DEQUE_ITER_FOLD_U64 %out_value, %iter_reg, %init_value, %fold_fn
2256
+ EXPAND ITER_FOLD_U64 %out_value, %iter_reg, %init_value, %fold_fn
2257
+ [END_MACRO]
2258
+
2259
+ // Rust method-name alias over VEC_DEQUE_ITER_FOLD_U64.
2260
+ [MACRO] VEC_DEQUE_ITER_FOLD %out_value, %iter_reg, %init_value, %fold_fn
2261
+ EXPAND VEC_DEQUE_ITER_FOLD_U64 %out_value, %iter_reg, %init_value, %fold_fn
2262
+ [END_MACRO]
2263
+
2264
+ [MACRO] VEC_DEQUE_ITER_TRY_FOLD_U64 %out_ok, %out_value, %iter_reg, %init_value, %fold_fn
2265
+ EXPAND ITER_TRY_FOLD_U64 %out_ok, %out_value, %iter_reg, %init_value, %fold_fn
2266
+ [END_MACRO]
2267
+
2268
+ // Rust method-name alias over VEC_DEQUE_ITER_TRY_FOLD_U64.
2269
+ [MACRO] VEC_DEQUE_ITER_TRY_FOLD %out_ok, %out_value, %iter_reg, %init_value, %fold_fn
2270
+ EXPAND VEC_DEQUE_ITER_TRY_FOLD_U64 %out_ok, %out_value, %iter_reg, %init_value, %fold_fn
2271
+ [END_MACRO]
2272
+
2273
+ [MACRO] VEC_DEQUE_ITER_RFOLD_U64 %out_value, %iter_reg, %init_value, %fold_fn
2274
+ EXPAND ITER_RFOLD_U64 %out_value, %iter_reg, %init_value, %fold_fn
2275
+ [END_MACRO]
2276
+
2277
+ // Rust method-name alias over VEC_DEQUE_ITER_RFOLD_U64.
2278
+ [MACRO] VEC_DEQUE_ITER_RFOLD %out_value, %iter_reg, %init_value, %fold_fn
2279
+ EXPAND VEC_DEQUE_ITER_RFOLD_U64 %out_value, %iter_reg, %init_value, %fold_fn
2280
+ [END_MACRO]
2281
+
2282
+ [MACRO] VEC_DEQUE_ITER_TRY_RFOLD_U64 %out_ok, %out_value, %iter_reg, %init_value, %fold_fn
2283
+ EXPAND ITER_TRY_RFOLD_U64 %out_ok, %out_value, %iter_reg, %init_value, %fold_fn
2284
+ [END_MACRO]
2285
+
2286
+ // Rust method-name alias over VEC_DEQUE_ITER_TRY_RFOLD_U64.
2287
+ [MACRO] VEC_DEQUE_ITER_TRY_RFOLD %out_ok, %out_value, %iter_reg, %init_value, %fold_fn
2288
+ EXPAND VEC_DEQUE_ITER_TRY_RFOLD_U64 %out_ok, %out_value, %iter_reg, %init_value, %fold_fn
2289
+ [END_MACRO]
2290
+
2291
+ [MACRO] VEC_DEQUE_ITER_SUM_U64 %out_value, %iter_reg
2292
+ EXPAND ITER_SUM_U64 %out_value, %iter_reg
2293
+ [END_MACRO]
2294
+
2295
+ // Rust method-name alias over VEC_DEQUE_ITER_SUM_U64.
2296
+ [MACRO] VEC_DEQUE_ITER_SUM %out_value, %iter_reg
2297
+ EXPAND VEC_DEQUE_ITER_SUM_U64 %out_value, %iter_reg
2298
+ [END_MACRO]
2299
+
2300
+ [MACRO] VEC_DEQUE_ITER_PRODUCT_U64 %out_value, %iter_reg
2301
+ EXPAND ITER_PRODUCT_U64 %out_value, %iter_reg
2302
+ [END_MACRO]
2303
+
2304
+ // Rust method-name alias over VEC_DEQUE_ITER_PRODUCT_U64.
2305
+ [MACRO] VEC_DEQUE_ITER_PRODUCT %out_value, %iter_reg
2306
+ EXPAND VEC_DEQUE_ITER_PRODUCT_U64 %out_value, %iter_reg
2307
+ [END_MACRO]
2308
+
2309
+ [MACRO] VEC_DEQUE_ITER_MIN_U64 %out_has, %out_value, %iter_reg
2310
+ EXPAND ITER_MIN_U64 %out_has, %out_value, %iter_reg
2311
+ [END_MACRO]
2312
+
2313
+ // Rust method-name alias over VEC_DEQUE_ITER_MIN_U64.
2314
+ [MACRO] VEC_DEQUE_ITER_MIN %out_has, %out_value, %iter_reg
2315
+ EXPAND VEC_DEQUE_ITER_MIN_U64 %out_has, %out_value, %iter_reg
2316
+ [END_MACRO]
2317
+
2318
+ [MACRO] VEC_DEQUE_ITER_MAX_U64 %out_has, %out_value, %iter_reg
2319
+ EXPAND ITER_MAX_U64 %out_has, %out_value, %iter_reg
2320
+ [END_MACRO]
2321
+
2322
+ // Rust method-name alias over VEC_DEQUE_ITER_MAX_U64.
2323
+ [MACRO] VEC_DEQUE_ITER_MAX %out_has, %out_value, %iter_reg
2324
+ EXPAND VEC_DEQUE_ITER_MAX_U64 %out_has, %out_value, %iter_reg
2325
+ [END_MACRO]
2326
+
2327
+ [MACRO] VEC_DEQUE_ITER_REDUCE_U64 %out_has, %out_value, %iter_reg, %reduce_fn
2328
+ EXPAND ITER_REDUCE_U64 %out_has, %out_value, %iter_reg, %reduce_fn
2329
+ [END_MACRO]
2330
+
2331
+ // Rust method-name alias over VEC_DEQUE_ITER_REDUCE_U64.
2332
+ [MACRO] VEC_DEQUE_ITER_REDUCE %out_has, %out_value, %iter_reg, %reduce_fn
2333
+ EXPAND VEC_DEQUE_ITER_REDUCE_U64 %out_has, %out_value, %iter_reg, %reduce_fn
2334
+ [END_MACRO]
2335
+
2336
+ [MACRO] VEC_DEQUE_ITER_TRY_REDUCE_U64 %out_ok, %out_has, %out_value, %iter_reg, %reduce_fn
2337
+ EXPAND ITER_TRY_REDUCE_U64 %out_ok, %out_has, %out_value, %iter_reg, %reduce_fn
2338
+ [END_MACRO]
2339
+
2340
+ // Rust method-name alias over VEC_DEQUE_ITER_TRY_REDUCE_U64.
2341
+ [MACRO] VEC_DEQUE_ITER_TRY_REDUCE %out_ok, %out_has, %out_value, %iter_reg, %reduce_fn
2342
+ EXPAND VEC_DEQUE_ITER_TRY_REDUCE_U64 %out_ok, %out_has, %out_value, %iter_reg, %reduce_fn
2343
+ [END_MACRO]
2344
+
2345
+ [MACRO] VEC_DEQUE_ITER_MIN_BY_U64 %out_has, %out_value, %iter_reg, %compare_fn
2346
+ EXPAND ITER_MIN_BY_U64 %out_has, %out_value, %iter_reg, %compare_fn
2347
+ [END_MACRO]
2348
+
2349
+ // Rust method-name alias over VEC_DEQUE_ITER_MIN_BY_U64.
2350
+ [MACRO] VEC_DEQUE_ITER_MIN_BY %out_has, %out_value, %iter_reg, %compare_fn
2351
+ EXPAND VEC_DEQUE_ITER_MIN_BY_U64 %out_has, %out_value, %iter_reg, %compare_fn
2352
+ [END_MACRO]
2353
+
2354
+ [MACRO] VEC_DEQUE_ITER_MAX_BY_U64 %out_has, %out_value, %iter_reg, %compare_fn
2355
+ EXPAND ITER_MAX_BY_U64 %out_has, %out_value, %iter_reg, %compare_fn
2356
+ [END_MACRO]
2357
+
2358
+ // Rust method-name alias over VEC_DEQUE_ITER_MAX_BY_U64.
2359
+ [MACRO] VEC_DEQUE_ITER_MAX_BY %out_has, %out_value, %iter_reg, %compare_fn
2360
+ EXPAND VEC_DEQUE_ITER_MAX_BY_U64 %out_has, %out_value, %iter_reg, %compare_fn
2361
+ [END_MACRO]
2362
+
2363
+ [MACRO] VEC_DEQUE_ITER_MIN_BY_KEY_U64 %out_has, %out_value, %iter_reg, %key_fn
2364
+ EXPAND ITER_MIN_BY_KEY_U64 %out_has, %out_value, %iter_reg, %key_fn
2365
+ [END_MACRO]
2366
+
2367
+ // Rust method-name alias over VEC_DEQUE_ITER_MIN_BY_KEY_U64.
2368
+ [MACRO] VEC_DEQUE_ITER_MIN_BY_KEY %out_has, %out_value, %iter_reg, %key_fn
2369
+ EXPAND VEC_DEQUE_ITER_MIN_BY_KEY_U64 %out_has, %out_value, %iter_reg, %key_fn
2370
+ [END_MACRO]
2371
+
2372
+ [MACRO] VEC_DEQUE_ITER_MAX_BY_KEY_U64 %out_has, %out_value, %iter_reg, %key_fn
2373
+ EXPAND ITER_MAX_BY_KEY_U64 %out_has, %out_value, %iter_reg, %key_fn
2374
+ [END_MACRO]
2375
+
2376
+ // Rust method-name alias over VEC_DEQUE_ITER_MAX_BY_KEY_U64.
2377
+ [MACRO] VEC_DEQUE_ITER_MAX_BY_KEY %out_has, %out_value, %iter_reg, %key_fn
2378
+ EXPAND VEC_DEQUE_ITER_MAX_BY_KEY_U64 %out_has, %out_value, %iter_reg, %key_fn
2379
+ [END_MACRO]
2380
+
2381
+ [MACRO] VEC_DEQUE_ITER_CMP_U64 %out_ordering, %left_iter, %right_iter
2382
+ EXPAND ITER_CMP_U64 %out_ordering, %left_iter, %right_iter
2383
+ [END_MACRO]
2384
+
2385
+ // Rust method-name alias over VEC_DEQUE_ITER_CMP_U64.
2386
+ [MACRO] VEC_DEQUE_ITER_CMP %out_ordering, %left_iter, %right_iter
2387
+ EXPAND VEC_DEQUE_ITER_CMP_U64 %out_ordering, %left_iter, %right_iter
2388
+ [END_MACRO]
2389
+
2390
+ [MACRO] VEC_DEQUE_ITER_CMP_BY_U64 %out_ordering, %left_iter, %right_iter, %compare_fn
2391
+ EXPAND ITER_CMP_BY_U64 %out_ordering, %left_iter, %right_iter, %compare_fn
2392
+ [END_MACRO]
2393
+
2394
+ // Rust method-name alias over VEC_DEQUE_ITER_CMP_BY_U64.
2395
+ [MACRO] VEC_DEQUE_ITER_CMP_BY %out_ordering, %left_iter, %right_iter, %compare_fn
2396
+ EXPAND VEC_DEQUE_ITER_CMP_BY_U64 %out_ordering, %left_iter, %right_iter, %compare_fn
2397
+ [END_MACRO]
2398
+
2399
+ [MACRO] VEC_DEQUE_ITER_PARTIAL_CMP_U64 %out_ordering, %left_iter, %right_iter
2400
+ EXPAND ITER_PARTIAL_CMP_U64 %out_ordering, %left_iter, %right_iter
2401
+ [END_MACRO]
2402
+
2403
+ // Rust method-name alias over VEC_DEQUE_ITER_PARTIAL_CMP_U64.
2404
+ [MACRO] VEC_DEQUE_ITER_PARTIAL_CMP %out_ordering, %left_iter, %right_iter
2405
+ EXPAND VEC_DEQUE_ITER_PARTIAL_CMP_U64 %out_ordering, %left_iter, %right_iter
2406
+ [END_MACRO]
2407
+
2408
+ [MACRO] VEC_DEQUE_ITER_PARTIAL_CMP_BY_U64 %out_ok, %out_ordering, %left_iter, %right_iter, %compare_fn
2409
+ EXPAND ITER_PARTIAL_CMP_BY_U64 %out_ok, %out_ordering, %left_iter, %right_iter, %compare_fn
2410
+ [END_MACRO]
2411
+
2412
+ // Rust method-name alias over VEC_DEQUE_ITER_PARTIAL_CMP_BY_U64.
2413
+ [MACRO] VEC_DEQUE_ITER_PARTIAL_CMP_BY %out_ok, %out_ordering, %left_iter, %right_iter, %compare_fn
2414
+ EXPAND VEC_DEQUE_ITER_PARTIAL_CMP_BY_U64 %out_ok, %out_ordering, %left_iter, %right_iter, %compare_fn
2415
+ [END_MACRO]
2416
+
2417
+ [MACRO] VEC_DEQUE_ITER_EQ_BY_U64 %out_bool, %left_iter, %right_iter, %eq_fn
2418
+ EXPAND ITER_EQ_BY_U64 %out_bool, %left_iter, %right_iter, %eq_fn
2419
+ [END_MACRO]
2420
+
2421
+ // Rust method-name alias over VEC_DEQUE_ITER_EQ_BY_U64.
2422
+ [MACRO] VEC_DEQUE_ITER_EQ_BY %out_bool, %left_iter, %right_iter, %eq_fn
2423
+ EXPAND VEC_DEQUE_ITER_EQ_BY_U64 %out_bool, %left_iter, %right_iter, %eq_fn
2424
+ [END_MACRO]
2425
+
2426
+ [MACRO] VEC_DEQUE_ITER_EQ_U64 %out_bool, %left_iter, %right_iter
2427
+ EXPAND ITER_EQ_U64 %out_bool, %left_iter, %right_iter
2428
+ [END_MACRO]
2429
+
2430
+ // Rust method-name alias over VEC_DEQUE_ITER_EQ_U64.
2431
+ [MACRO] VEC_DEQUE_ITER_EQ %out_bool, %left_iter, %right_iter
2432
+ EXPAND VEC_DEQUE_ITER_EQ_U64 %out_bool, %left_iter, %right_iter
2433
+ [END_MACRO]
2434
+
2435
+ [MACRO] VEC_DEQUE_ITER_PARTIAL_EQ_U64 %out_bool, %left_iter, %right_iter
2436
+ EXPAND ITER_PARTIAL_EQ_U64 %out_bool, %left_iter, %right_iter
2437
+ [END_MACRO]
2438
+
2439
+ // Rust method-name alias over VEC_DEQUE_ITER_PARTIAL_EQ_U64.
2440
+ [MACRO] VEC_DEQUE_ITER_PARTIAL_EQ %out_bool, %left_iter, %right_iter
2441
+ EXPAND VEC_DEQUE_ITER_PARTIAL_EQ_U64 %out_bool, %left_iter, %right_iter
2442
+ [END_MACRO]
2443
+
2444
+ [MACRO] VEC_DEQUE_ITER_NE_U64 %out_bool, %left_iter, %right_iter
2445
+ EXPAND ITER_NE_U64 %out_bool, %left_iter, %right_iter
2446
+ [END_MACRO]
2447
+
2448
+ // Rust method-name alias over VEC_DEQUE_ITER_NE_U64.
2449
+ [MACRO] VEC_DEQUE_ITER_NE %out_bool, %left_iter, %right_iter
2450
+ EXPAND VEC_DEQUE_ITER_NE_U64 %out_bool, %left_iter, %right_iter
2451
+ [END_MACRO]
2452
+
2453
+ [MACRO] VEC_DEQUE_ITER_LT_U64 %out_bool, %left_iter, %right_iter
2454
+ EXPAND ITER_LT_U64 %out_bool, %left_iter, %right_iter
2455
+ [END_MACRO]
2456
+
2457
+ // Rust method-name alias over VEC_DEQUE_ITER_LT_U64.
2458
+ [MACRO] VEC_DEQUE_ITER_LT %out_bool, %left_iter, %right_iter
2459
+ EXPAND VEC_DEQUE_ITER_LT_U64 %out_bool, %left_iter, %right_iter
2460
+ [END_MACRO]
2461
+
2462
+ [MACRO] VEC_DEQUE_ITER_LE_U64 %out_bool, %left_iter, %right_iter
2463
+ EXPAND ITER_LE_U64 %out_bool, %left_iter, %right_iter
2464
+ [END_MACRO]
2465
+
2466
+ // Rust method-name alias over VEC_DEQUE_ITER_LE_U64.
2467
+ [MACRO] VEC_DEQUE_ITER_LE %out_bool, %left_iter, %right_iter
2468
+ EXPAND VEC_DEQUE_ITER_LE_U64 %out_bool, %left_iter, %right_iter
2469
+ [END_MACRO]
2470
+
2471
+ [MACRO] VEC_DEQUE_ITER_GT_U64 %out_bool, %left_iter, %right_iter
2472
+ EXPAND ITER_GT_U64 %out_bool, %left_iter, %right_iter
2473
+ [END_MACRO]
2474
+
2475
+ // Rust method-name alias over VEC_DEQUE_ITER_GT_U64.
2476
+ [MACRO] VEC_DEQUE_ITER_GT %out_bool, %left_iter, %right_iter
2477
+ EXPAND VEC_DEQUE_ITER_GT_U64 %out_bool, %left_iter, %right_iter
2478
+ [END_MACRO]
2479
+
2480
+ [MACRO] VEC_DEQUE_ITER_GE_U64 %out_bool, %left_iter, %right_iter
2481
+ EXPAND ITER_GE_U64 %out_bool, %left_iter, %right_iter
2482
+ [END_MACRO]
2483
+
2484
+ // Rust method-name alias over VEC_DEQUE_ITER_GE_U64.
2485
+ [MACRO] VEC_DEQUE_ITER_GE %out_bool, %left_iter, %right_iter
2486
+ EXPAND VEC_DEQUE_ITER_GE_U64 %out_bool, %left_iter, %right_iter
2487
+ [END_MACRO]
2488
+
2489
+ [MACRO] VEC_DEQUE_ITER_IS_SORTED_U64 %out_bool, %iter_reg
2490
+ EXPAND ITER_IS_SORTED_U64 %out_bool, %iter_reg
2491
+ [END_MACRO]
2492
+
2493
+ // Rust method-name alias over VEC_DEQUE_ITER_IS_SORTED_U64.
2494
+ [MACRO] VEC_DEQUE_ITER_IS_SORTED %out_bool, %iter_reg
2495
+ EXPAND VEC_DEQUE_ITER_IS_SORTED_U64 %out_bool, %iter_reg
2496
+ [END_MACRO]
2497
+
2498
+ [MACRO] VEC_DEQUE_ITER_IS_SORTED_BY_U64 %out_bool, %iter_reg, %compare_fn
2499
+ EXPAND ITER_IS_SORTED_BY_U64 %out_bool, %iter_reg, %compare_fn
2500
+ [END_MACRO]
2501
+
2502
+ // Rust method-name alias over VEC_DEQUE_ITER_IS_SORTED_BY_U64.
2503
+ [MACRO] VEC_DEQUE_ITER_IS_SORTED_BY %out_bool, %iter_reg, %compare_fn
2504
+ EXPAND VEC_DEQUE_ITER_IS_SORTED_BY_U64 %out_bool, %iter_reg, %compare_fn
2505
+ [END_MACRO]
2506
+
2507
+ [MACRO] VEC_DEQUE_ITER_IS_SORTED_BY_KEY_U64 %out_bool, %iter_reg, %key_fn
2508
+ EXPAND ITER_IS_SORTED_BY_KEY_U64 %out_bool, %iter_reg, %key_fn
2509
+ [END_MACRO]
2510
+
2511
+ // Rust method-name alias over VEC_DEQUE_ITER_IS_SORTED_BY_KEY_U64.
2512
+ [MACRO] VEC_DEQUE_ITER_IS_SORTED_BY_KEY %out_bool, %iter_reg, %key_fn
2513
+ EXPAND VEC_DEQUE_ITER_IS_SORTED_BY_KEY_U64 %out_bool, %iter_reg, %key_fn
2514
+ [END_MACRO]
2515
+
2516
+ [MACRO] VEC_DEQUE_ITER_PARTITION_U64 %out_true_vec, %out_false_vec, %iter_reg, %pred_fn
2517
+ EXPAND ITER_PARTITION_U64 %out_true_vec, %out_false_vec, %iter_reg, %pred_fn
2518
+ [END_MACRO]
2519
+
2520
+ // Rust method-name alias over VEC_DEQUE_ITER_PARTITION_U64.
2521
+ [MACRO] VEC_DEQUE_ITER_PARTITION %out_true_vec, %out_false_vec, %iter_reg, %pred_fn
2522
+ EXPAND VEC_DEQUE_ITER_PARTITION_U64 %out_true_vec, %out_false_vec, %iter_reg, %pred_fn
2523
+ [END_MACRO]
2524
+
2525
+ [MACRO] VEC_DEQUE_ITER_IS_PARTITIONED_U64 %out_bool, %iter_reg, %pred_fn
2526
+ EXPAND ITER_IS_PARTITIONED_U64 %out_bool, %iter_reg, %pred_fn
2527
+ [END_MACRO]
2528
+
2529
+ // Rust method-name alias over VEC_DEQUE_ITER_IS_PARTITIONED_U64.
2530
+ [MACRO] VEC_DEQUE_ITER_IS_PARTITIONED %out_bool, %iter_reg, %pred_fn
2531
+ EXPAND VEC_DEQUE_ITER_IS_PARTITIONED_U64 %out_bool, %iter_reg, %pred_fn
2532
+ [END_MACRO]
2533
+
2534
+ [MACRO] VEC_DEQUE_ITER_SIZE_HINT_U64 %out_lower, %out_upper, %iter_reg
2535
+ EXPAND ITER_SIZE_HINT %out_lower, %out_upper, %iter_reg
2536
+ [END_MACRO]
2537
+
2538
+ // Rust method-name alias over VEC_DEQUE_ITER_SIZE_HINT_U64.
2539
+ [MACRO] VEC_DEQUE_ITER_SIZE_HINT %out_lower, %out_upper, %iter_reg
2540
+ EXPAND VEC_DEQUE_ITER_SIZE_HINT_U64 %out_lower, %out_upper, %iter_reg
2541
+ [END_MACRO]
2542
+
2543
+ [MACRO] VEC_DEQUE_ITER_EXACT_SIZE_LEN_U64 %out_len, %iter_reg
2544
+ EXPAND ITER_EXACT_SIZE_LEN %out_len, %iter_reg
2545
+ [END_MACRO]
2546
+
2547
+ // Rust method-name alias over VEC_DEQUE_ITER_EXACT_SIZE_LEN_U64.
2548
+ [MACRO] VEC_DEQUE_ITER_EXACT_SIZE_LEN %out_len, %iter_reg
2549
+ EXPAND VEC_DEQUE_ITER_EXACT_SIZE_LEN_U64 %out_len, %iter_reg
2550
+ [END_MACRO]
2551
+
2552
+ [MACRO] VEC_DEQUE_ITER_EXACT_SIZE_IS_EMPTY_U64 %out_bool, %iter_reg
2553
+ EXPAND ITER_EXACT_SIZE_IS_EMPTY %out_bool, %iter_reg
2554
+ [END_MACRO]
2555
+
2556
+ // Rust method-name alias over VEC_DEQUE_ITER_EXACT_SIZE_IS_EMPTY_U64.
2557
+ [MACRO] VEC_DEQUE_ITER_EXACT_SIZE_IS_EMPTY %out_bool, %iter_reg
2558
+ EXPAND VEC_DEQUE_ITER_EXACT_SIZE_IS_EMPTY_U64 %out_bool, %iter_reg
2559
+ [END_MACRO]
2560
+
2561
+ [MACRO] VEC_DEQUE_ITER_MUT_SIZE_HINT_U64 %out_lower, %out_upper, %iter_reg
2562
+ EXPAND ITER_SIZE_HINT %out_lower, %out_upper, %iter_reg
2563
+ [END_MACRO]
2564
+
2565
+ // Rust method-name alias over VEC_DEQUE_ITER_MUT_SIZE_HINT_U64.
2566
+ [MACRO] VEC_DEQUE_ITER_MUT_SIZE_HINT %out_lower, %out_upper, %iter_reg
2567
+ EXPAND VEC_DEQUE_ITER_MUT_SIZE_HINT_U64 %out_lower, %out_upper, %iter_reg
2568
+ [END_MACRO]
2569
+
2570
+ [MACRO] VEC_DEQUE_ITER_MUT_EXACT_SIZE_LEN_U64 %out_len, %iter_reg
2571
+ EXPAND ITER_EXACT_SIZE_LEN %out_len, %iter_reg
2572
+ [END_MACRO]
2573
+
2574
+ // Rust method-name alias over VEC_DEQUE_ITER_MUT_EXACT_SIZE_LEN_U64.
2575
+ [MACRO] VEC_DEQUE_ITER_MUT_EXACT_SIZE_LEN %out_len, %iter_reg
2576
+ EXPAND VEC_DEQUE_ITER_MUT_EXACT_SIZE_LEN_U64 %out_len, %iter_reg
2577
+ [END_MACRO]
2578
+
2579
+ [MACRO] VEC_DEQUE_ITER_MUT_EXACT_SIZE_IS_EMPTY_U64 %out_bool, %iter_reg
2580
+ EXPAND ITER_EXACT_SIZE_IS_EMPTY %out_bool, %iter_reg
2581
+ [END_MACRO]
2582
+
2583
+ // Rust method-name alias over VEC_DEQUE_ITER_MUT_EXACT_SIZE_IS_EMPTY_U64.
2584
+ [MACRO] VEC_DEQUE_ITER_MUT_EXACT_SIZE_IS_EMPTY %out_bool, %iter_reg
2585
+ EXPAND VEC_DEQUE_ITER_MUT_EXACT_SIZE_IS_EMPTY_U64 %out_bool, %iter_reg
2586
+ [END_MACRO]
2587
+
2588
+ [MACRO] VEC_DEQUE_ITER_COLLECT_U64 %out_vec, %iter_reg
2589
+ EXPAND ITER_COLLECT_U64 %out_vec, %iter_reg
2590
+ [END_MACRO]
2591
+
2592
+ // Rust method-name alias over VEC_DEQUE_ITER_COLLECT_U64.
2593
+ [MACRO] VEC_DEQUE_ITER_COLLECT %out_vec, %iter_reg
2594
+ EXPAND VEC_DEQUE_ITER_COLLECT_U64 %out_vec, %iter_reg
2595
+ [END_MACRO]
2596
+
2597
+ [MACRO] VEC_DEQUE_ITER_TRY_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %try_fn
2598
+ EXPAND ITER_TRY_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %try_fn
2599
+ [END_MACRO]
2600
+
2601
+ // Rust method-name alias over VEC_DEQUE_ITER_TRY_COLLECT_U64.
2602
+ [MACRO] VEC_DEQUE_ITER_TRY_COLLECT %out_ok, %out_vec, %iter_reg, %try_fn
2603
+ EXPAND VEC_DEQUE_ITER_TRY_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %try_fn
2604
+ [END_MACRO]
2605
+
2606
+ [MACRO] VEC_DEQUE_ITER_COLLECT_INTO_U64 %vec_reg, %iter_reg
2607
+ EXPAND ITER_COLLECT_INTO_U64 %vec_reg, %iter_reg
2608
+ [END_MACRO]
2609
+
2610
+ // Rust method-name alias over VEC_DEQUE_ITER_COLLECT_INTO_U64.
2611
+ [MACRO] VEC_DEQUE_ITER_COLLECT_INTO %vec_reg, %iter_reg
2612
+ EXPAND VEC_DEQUE_ITER_COLLECT_INTO_U64 %vec_reg, %iter_reg
2613
+ [END_MACRO]
2614
+
2615
+ [MACRO] VEC_DEQUE_ITER_COPIED_COLLECT_U64 %out_vec, %iter_reg
2616
+ EXPAND ITER_COPIED_COLLECT_U64 %out_vec, %iter_reg
2617
+ [END_MACRO]
2618
+
2619
+ // Rust method-name alias over VEC_DEQUE_ITER_COPIED_COLLECT_U64.
2620
+ [MACRO] VEC_DEQUE_ITER_COPIED_COLLECT %out_vec, %iter_reg
2621
+ EXPAND VEC_DEQUE_ITER_COPIED_COLLECT_U64 %out_vec, %iter_reg
2622
+ [END_MACRO]
2623
+
2624
+ [MACRO] VEC_DEQUE_ITER_CLONED_COLLECT_U64 %out_vec, %iter_reg
2625
+ EXPAND ITER_CLONED_COLLECT_U64 %out_vec, %iter_reg
2626
+ [END_MACRO]
2627
+
2628
+ // Rust method-name alias over VEC_DEQUE_ITER_CLONED_COLLECT_U64.
2629
+ [MACRO] VEC_DEQUE_ITER_CLONED_COLLECT %out_vec, %iter_reg
2630
+ EXPAND VEC_DEQUE_ITER_CLONED_COLLECT_U64 %out_vec, %iter_reg
2631
+ [END_MACRO]
2632
+
2633
+ [MACRO] VEC_DEQUE_ITER_TAKE_COLLECT_U64 %out_vec, %iter_reg, %count
2634
+ EXPAND ITER_TAKE_COLLECT_U64 %out_vec, %iter_reg, %count
2635
+ [END_MACRO]
2636
+
2637
+ // Rust method-name alias over VEC_DEQUE_ITER_TAKE_COLLECT_U64.
2638
+ [MACRO] VEC_DEQUE_ITER_TAKE_COLLECT %out_vec, %iter_reg, %count
2639
+ EXPAND VEC_DEQUE_ITER_TAKE_COLLECT_U64 %out_vec, %iter_reg, %count
2640
+ [END_MACRO]
2641
+
2642
+ [MACRO] VEC_DEQUE_ITER_SKIP_COLLECT_U64 %out_vec, %iter_reg, %count
2643
+ EXPAND ITER_SKIP_COLLECT_U64 %out_vec, %iter_reg, %count
2644
+ [END_MACRO]
2645
+
2646
+ // Rust method-name alias over VEC_DEQUE_ITER_SKIP_COLLECT_U64.
2647
+ [MACRO] VEC_DEQUE_ITER_SKIP_COLLECT %out_vec, %iter_reg, %count
2648
+ EXPAND VEC_DEQUE_ITER_SKIP_COLLECT_U64 %out_vec, %iter_reg, %count
2649
+ [END_MACRO]
2650
+
2651
+ [MACRO] VEC_DEQUE_ITER_REV_COLLECT_U64 %out_vec, %iter_reg
2652
+ EXPAND ITER_REV_COLLECT_U64 %out_vec, %iter_reg
2653
+ [END_MACRO]
2654
+
2655
+ // Rust method-name alias over VEC_DEQUE_ITER_REV_COLLECT_U64.
2656
+ [MACRO] VEC_DEQUE_ITER_REV_COLLECT %out_vec, %iter_reg
2657
+ EXPAND VEC_DEQUE_ITER_REV_COLLECT_U64 %out_vec, %iter_reg
2658
+ [END_MACRO]
2659
+
2660
+ [MACRO] VEC_DEQUE_ITER_TRY_STEP_BY_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %step
2661
+ EXPAND ITER_TRY_STEP_BY_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %step
2662
+ [END_MACRO]
2663
+
2664
+ // Rust method-name alias over VEC_DEQUE_ITER_TRY_STEP_BY_COLLECT_U64.
2665
+ [MACRO] VEC_DEQUE_ITER_TRY_STEP_BY_COLLECT %out_ok, %out_vec, %iter_reg, %step
2666
+ EXPAND VEC_DEQUE_ITER_TRY_STEP_BY_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %step
2667
+ [END_MACRO]
2668
+
2669
+ [MACRO] VEC_DEQUE_ITER_STEP_BY_COLLECT_U64 %out_vec, %iter_reg, %step
2670
+ EXPAND ITER_STEP_BY_COLLECT_U64 %out_vec, %iter_reg, %step
2671
+ [END_MACRO]
2672
+
2673
+ // Rust method-name alias over VEC_DEQUE_ITER_STEP_BY_COLLECT_U64.
2674
+ [MACRO] VEC_DEQUE_ITER_STEP_BY_COLLECT %out_vec, %iter_reg, %step
2675
+ EXPAND VEC_DEQUE_ITER_STEP_BY_COLLECT_U64 %out_vec, %iter_reg, %step
2676
+ [END_MACRO]
2677
+
2678
+ [MACRO] VEC_DEQUE_ITER_MAP_COLLECT_U64 %out_vec, %iter_reg, %map_fn
2679
+ EXPAND ITER_MAP_COLLECT_U64 %out_vec, %iter_reg, %map_fn
2680
+ [END_MACRO]
2681
+
2682
+ // Rust method-name alias over VEC_DEQUE_ITER_MAP_COLLECT_U64.
2683
+ [MACRO] VEC_DEQUE_ITER_MAP_COLLECT %out_vec, %iter_reg, %map_fn
2684
+ EXPAND VEC_DEQUE_ITER_MAP_COLLECT_U64 %out_vec, %iter_reg, %map_fn
2685
+ [END_MACRO]
2686
+
2687
+ [MACRO] VEC_DEQUE_ITER_INSPECT_COLLECT_U64 %out_vec, %iter_reg, %inspect_fn
2688
+ EXPAND ITER_INSPECT_COLLECT_U64 %out_vec, %iter_reg, %inspect_fn
2689
+ [END_MACRO]
2690
+
2691
+ // Rust method-name alias over VEC_DEQUE_ITER_INSPECT_COLLECT_U64.
2692
+ [MACRO] VEC_DEQUE_ITER_INSPECT_COLLECT %out_vec, %iter_reg, %inspect_fn
2693
+ EXPAND VEC_DEQUE_ITER_INSPECT_COLLECT_U64 %out_vec, %iter_reg, %inspect_fn
2694
+ [END_MACRO]
2695
+
2696
+ [MACRO] VEC_DEQUE_ITER_SCAN_COLLECT_U64 %out_vec, %iter_reg, %initial_state, %scan_fn
2697
+ EXPAND ITER_SCAN_COLLECT_U64 %out_vec, %iter_reg, %initial_state, %scan_fn
2698
+ [END_MACRO]
2699
+
2700
+ // Rust method-name alias over VEC_DEQUE_ITER_SCAN_COLLECT_U64.
2701
+ [MACRO] VEC_DEQUE_ITER_SCAN_COLLECT %out_vec, %iter_reg, %initial_state, %scan_fn
2702
+ EXPAND VEC_DEQUE_ITER_SCAN_COLLECT_U64 %out_vec, %iter_reg, %initial_state, %scan_fn
2703
+ [END_MACRO]
2704
+
2705
+ [MACRO] VEC_DEQUE_ITER_FILTER_COLLECT_U64 %out_vec, %iter_reg, %pred_fn
2706
+ EXPAND ITER_FILTER_COLLECT_U64 %out_vec, %iter_reg, %pred_fn
2707
+ [END_MACRO]
2708
+
2709
+ // Rust method-name alias over VEC_DEQUE_ITER_FILTER_COLLECT_U64.
2710
+ [MACRO] VEC_DEQUE_ITER_FILTER_COLLECT %out_vec, %iter_reg, %pred_fn
2711
+ EXPAND VEC_DEQUE_ITER_FILTER_COLLECT_U64 %out_vec, %iter_reg, %pred_fn
2712
+ [END_MACRO]
2713
+
2714
+ [MACRO] VEC_DEQUE_ITER_FILTER_MAP_COLLECT_U64 %out_vec, %iter_reg, %map_fn
2715
+ EXPAND ITER_FILTER_MAP_COLLECT_U64 %out_vec, %iter_reg, %map_fn
2716
+ [END_MACRO]
2717
+
2718
+ // Rust method-name alias over VEC_DEQUE_ITER_FILTER_MAP_COLLECT_U64.
2719
+ [MACRO] VEC_DEQUE_ITER_FILTER_MAP_COLLECT %out_vec, %iter_reg, %map_fn
2720
+ EXPAND VEC_DEQUE_ITER_FILTER_MAP_COLLECT_U64 %out_vec, %iter_reg, %map_fn
2721
+ [END_MACRO]
2722
+
2723
+ [MACRO] VEC_DEQUE_ITER_MAP_WHILE_COLLECT_U64 %out_vec, %iter_reg, %map_fn
2724
+ EXPAND ITER_MAP_WHILE_COLLECT_U64 %out_vec, %iter_reg, %map_fn
2725
+ [END_MACRO]
2726
+
2727
+ // Rust method-name alias over VEC_DEQUE_ITER_MAP_WHILE_COLLECT_U64.
2728
+ [MACRO] VEC_DEQUE_ITER_MAP_WHILE_COLLECT %out_vec, %iter_reg, %map_fn
2729
+ EXPAND VEC_DEQUE_ITER_MAP_WHILE_COLLECT_U64 %out_vec, %iter_reg, %map_fn
2730
+ [END_MACRO]
2731
+
2732
+ [MACRO] VEC_DEQUE_ITER_INTERSPERSE_COLLECT_U64 %out_vec, %iter_reg, %separator
2733
+ EXPAND ITER_INTERSPERSE_COLLECT_U64 %out_vec, %iter_reg, %separator
2734
+ [END_MACRO]
2735
+
2736
+ // Rust method-name alias over VEC_DEQUE_ITER_INTERSPERSE_COLLECT_U64.
2737
+ [MACRO] VEC_DEQUE_ITER_INTERSPERSE_COLLECT %out_vec, %iter_reg, %separator
2738
+ EXPAND VEC_DEQUE_ITER_INTERSPERSE_COLLECT_U64 %out_vec, %iter_reg, %separator
2739
+ [END_MACRO]
2740
+
2741
+ [MACRO] VEC_DEQUE_ITER_INTERSPERSE_WITH_COLLECT_U64 %out_vec, %iter_reg, %sep_fn
2742
+ EXPAND ITER_INTERSPERSE_WITH_COLLECT_U64 %out_vec, %iter_reg, %sep_fn
2743
+ [END_MACRO]
2744
+
2745
+ // Rust method-name alias over VEC_DEQUE_ITER_INTERSPERSE_WITH_COLLECT_U64.
2746
+ [MACRO] VEC_DEQUE_ITER_INTERSPERSE_WITH_COLLECT %out_vec, %iter_reg, %sep_fn
2747
+ EXPAND VEC_DEQUE_ITER_INTERSPERSE_WITH_COLLECT_U64 %out_vec, %iter_reg, %sep_fn
2748
+ [END_MACRO]
2749
+
2750
+ [MACRO] VEC_DEQUE_ITER_CYCLE_TAKE_COLLECT_U64 %out_vec, %iter_reg, %count
2751
+ EXPAND ITER_CYCLE_TAKE_COLLECT_U64 %out_vec, %iter_reg, %count
2752
+ [END_MACRO]
2753
+
2754
+ // Rust method-name alias over VEC_DEQUE_ITER_CYCLE_TAKE_COLLECT_U64.
2755
+ [MACRO] VEC_DEQUE_ITER_CYCLE_TAKE_COLLECT %out_vec, %iter_reg, %count
2756
+ EXPAND VEC_DEQUE_ITER_CYCLE_TAKE_COLLECT_U64 %out_vec, %iter_reg, %count
2757
+ [END_MACRO]
2758
+
2759
+ [MACRO] VEC_DEQUE_ITER_TAKE_WHILE_COLLECT_U64 %out_vec, %iter_reg, %pred_fn
2760
+ EXPAND ITER_TAKE_WHILE_COLLECT_U64 %out_vec, %iter_reg, %pred_fn
2761
+ [END_MACRO]
2762
+
2763
+ // Rust method-name alias over VEC_DEQUE_ITER_TAKE_WHILE_COLLECT_U64.
2764
+ [MACRO] VEC_DEQUE_ITER_TAKE_WHILE_COLLECT %out_vec, %iter_reg, %pred_fn
2765
+ EXPAND VEC_DEQUE_ITER_TAKE_WHILE_COLLECT_U64 %out_vec, %iter_reg, %pred_fn
2766
+ [END_MACRO]
2767
+
2768
+ [MACRO] VEC_DEQUE_ITER_SKIP_WHILE_COLLECT_U64 %out_vec, %iter_reg, %pred_fn
2769
+ EXPAND ITER_SKIP_WHILE_COLLECT_U64 %out_vec, %iter_reg, %pred_fn
2770
+ [END_MACRO]
2771
+
2772
+ // Rust method-name alias over VEC_DEQUE_ITER_SKIP_WHILE_COLLECT_U64.
2773
+ [MACRO] VEC_DEQUE_ITER_SKIP_WHILE_COLLECT %out_vec, %iter_reg, %pred_fn
2774
+ EXPAND VEC_DEQUE_ITER_SKIP_WHILE_COLLECT_U64 %out_vec, %iter_reg, %pred_fn
2775
+ [END_MACRO]
2776
+
2777
+ [MACRO] VEC_DEQUE_ITER_ENUMERATE_COLLECT_U64 %out_vec, %iter_reg
2778
+ EXPAND ITER_ENUMERATE_COLLECT_U64 %out_vec, %iter_reg
2779
+ [END_MACRO]
2780
+
2781
+ // Rust method-name alias over VEC_DEQUE_ITER_ENUMERATE_COLLECT_U64.
2782
+ [MACRO] VEC_DEQUE_ITER_ENUMERATE_COLLECT %out_vec, %iter_reg
2783
+ EXPAND VEC_DEQUE_ITER_ENUMERATE_COLLECT_U64 %out_vec, %iter_reg
2784
+ [END_MACRO]
2785
+
2786
+ [MACRO] VEC_DEQUE_ITER_ZIP_COLLECT_U64 %out_vec, %left_iter, %right_iter
2787
+ EXPAND ITER_ZIP_COLLECT_U64 %out_vec, %left_iter, %right_iter
2788
+ [END_MACRO]
2789
+
2790
+ // Rust method-name alias over VEC_DEQUE_ITER_ZIP_COLLECT_U64.
2791
+ [MACRO] VEC_DEQUE_ITER_ZIP_COLLECT %out_vec, %left_iter, %right_iter
2792
+ EXPAND VEC_DEQUE_ITER_ZIP_COLLECT_U64 %out_vec, %left_iter, %right_iter
2793
+ [END_MACRO]
2794
+
2795
+ [MACRO] VEC_DEQUE_ITER_CHAIN_COLLECT_U64 %out_vec, %left_iter, %right_iter
2796
+ EXPAND ITER_CHAIN_COLLECT_U64 %out_vec, %left_iter, %right_iter
2797
+ [END_MACRO]
2798
+
2799
+ // Rust method-name alias over VEC_DEQUE_ITER_CHAIN_COLLECT_U64.
2800
+ [MACRO] VEC_DEQUE_ITER_CHAIN_COLLECT %out_vec, %left_iter, %right_iter
2801
+ EXPAND VEC_DEQUE_ITER_CHAIN_COLLECT_U64 %out_vec, %left_iter, %right_iter
2802
+ [END_MACRO]
2803
+
2804
+ [MACRO] VEC_DEQUE_ITER_BY_REF_COLLECT_U64 %out_vec, %iter_reg
2805
+ EXPAND ITER_BY_REF_COLLECT_U64 %out_vec, %iter_reg
2806
+ [END_MACRO]
2807
+
2808
+ // Rust method-name alias over VEC_DEQUE_ITER_BY_REF_COLLECT_U64.
2809
+ [MACRO] VEC_DEQUE_ITER_BY_REF_COLLECT %out_vec, %iter_reg
2810
+ EXPAND VEC_DEQUE_ITER_BY_REF_COLLECT_U64 %out_vec, %iter_reg
2811
+ [END_MACRO]
2812
+
2813
+ [MACRO] VEC_DEQUE_ITER_FUSE_COLLECT_U64 %out_vec, %iter_reg
2814
+ EXPAND ITER_FUSE_COLLECT_U64 %out_vec, %iter_reg
2815
+ [END_MACRO]
2816
+
2817
+ // Rust method-name alias over VEC_DEQUE_ITER_FUSE_COLLECT_U64.
2818
+ [MACRO] VEC_DEQUE_ITER_FUSE_COLLECT %out_vec, %iter_reg
2819
+ EXPAND VEC_DEQUE_ITER_FUSE_COLLECT_U64 %out_vec, %iter_reg
2820
+ [END_MACRO]
2821
+
2822
+ [MACRO] VEC_DEQUE_ITER_PEEKABLE_COLLECT_U64 %out_vec, %iter_reg
2823
+ EXPAND ITER_PEEKABLE_COLLECT_U64 %out_vec, %iter_reg
2824
+ [END_MACRO]
2825
+
2826
+ // Rust method-name alias over VEC_DEQUE_ITER_PEEKABLE_COLLECT_U64.
2827
+ [MACRO] VEC_DEQUE_ITER_PEEKABLE_COLLECT %out_vec, %iter_reg
2828
+ EXPAND VEC_DEQUE_ITER_PEEKABLE_COLLECT_U64 %out_vec, %iter_reg
2829
+ [END_MACRO]
2830
+
2831
+ [MACRO] VEC_DEQUE_ITER_ARRAY_CHUNKS_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %chunk_size
2832
+ EXPAND ITER_ARRAY_CHUNKS_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %chunk_size
2833
+ [END_MACRO]
2834
+
2835
+ // Rust method-name alias over VEC_DEQUE_ITER_ARRAY_CHUNKS_COLLECT_U64.
2836
+ [MACRO] VEC_DEQUE_ITER_ARRAY_CHUNKS_COLLECT %out_ok, %out_vec, %iter_reg, %chunk_size
2837
+ EXPAND VEC_DEQUE_ITER_ARRAY_CHUNKS_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %chunk_size
2838
+ [END_MACRO]
2839
+
2840
+ [MACRO] VEC_DEQUE_ITER_MAP_WINDOWS_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %window_size, %map_fn
2841
+ EXPAND ITER_MAP_WINDOWS_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %window_size, %map_fn
2842
+ [END_MACRO]
2843
+
2844
+ // Rust method-name alias over VEC_DEQUE_ITER_MAP_WINDOWS_COLLECT_U64.
2845
+ [MACRO] VEC_DEQUE_ITER_MAP_WINDOWS_COLLECT %out_ok, %out_vec, %iter_reg, %window_size, %map_fn
2846
+ EXPAND VEC_DEQUE_ITER_MAP_WINDOWS_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %window_size, %map_fn
2847
+ [END_MACRO]
2848
+
2849
+ [MACRO] VEC_DEQUE_INTO_ITER_NEXT_U64 %out_has, %out_value, %iter_reg
2850
+ EXPAND VEC_DEQUE_ITER_NEXT_U64 %out_has, %out_value, %iter_reg
2851
+ [END_MACRO]
2852
+
2853
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_NEXT_U64.
2854
+ [MACRO] VEC_DEQUE_INTO_ITER_NEXT %out_has, %out_value, %iter_reg
2855
+ EXPAND VEC_DEQUE_INTO_ITER_NEXT_U64 %out_has, %out_value, %iter_reg
2856
+ [END_MACRO]
2857
+
2858
+ [MACRO] VEC_DEQUE_INTO_ITER_NEXT_BACK_U64 %out_has, %out_value, %iter_reg
2859
+ EXPAND VEC_DEQUE_ITER_NEXT_BACK_U64 %out_has, %out_value, %iter_reg
2860
+ [END_MACRO]
2861
+
2862
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_NEXT_BACK_U64.
2863
+ [MACRO] VEC_DEQUE_INTO_ITER_NEXT_BACK %out_has, %out_value, %iter_reg
2864
+ EXPAND VEC_DEQUE_INTO_ITER_NEXT_BACK_U64 %out_has, %out_value, %iter_reg
2865
+ [END_MACRO]
2866
+
2867
+ [MACRO] VEC_DEQUE_INTO_ITER_NTH_U64 %out_has, %out_value, %iter_reg, %nth
2868
+ EXPAND VEC_DEQUE_ITER_NTH_U64 %out_has, %out_value, %iter_reg, %nth
2869
+ [END_MACRO]
2870
+
2871
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_NTH_U64.
2872
+ [MACRO] VEC_DEQUE_INTO_ITER_NTH %out_has, %out_value, %iter_reg, %nth
2873
+ EXPAND VEC_DEQUE_INTO_ITER_NTH_U64 %out_has, %out_value, %iter_reg, %nth
2874
+ [END_MACRO]
2875
+
2876
+ [MACRO] VEC_DEQUE_INTO_ITER_NTH_BACK_U64 %out_has, %out_value, %iter_reg, %nth
2877
+ EXPAND VEC_DEQUE_ITER_NTH_BACK_U64 %out_has, %out_value, %iter_reg, %nth
2878
+ [END_MACRO]
2879
+
2880
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_NTH_BACK_U64.
2881
+ [MACRO] VEC_DEQUE_INTO_ITER_NTH_BACK %out_has, %out_value, %iter_reg, %nth
2882
+ EXPAND VEC_DEQUE_INTO_ITER_NTH_BACK_U64 %out_has, %out_value, %iter_reg, %nth
2883
+ [END_MACRO]
2884
+
2885
+ [MACRO] VEC_DEQUE_INTO_ITER_TRY_NEXT_CHUNK_U64 %out_ok, %out_filled, %iter_reg, %dst_ptr, %count
2886
+ EXPAND VEC_DEQUE_ITER_TRY_NEXT_CHUNK_U64 %out_ok, %out_filled, %iter_reg, %dst_ptr, %count
2887
+ [END_MACRO]
2888
+
2889
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_TRY_NEXT_CHUNK_U64.
2890
+ [MACRO] VEC_DEQUE_INTO_ITER_TRY_NEXT_CHUNK %out_ok, %out_filled, %iter_reg, %dst_ptr, %count
2891
+ EXPAND VEC_DEQUE_INTO_ITER_TRY_NEXT_CHUNK_U64 %out_ok, %out_filled, %iter_reg, %dst_ptr, %count
2892
+ [END_MACRO]
2893
+
2894
+ [MACRO] VEC_DEQUE_INTO_ITER_ADVANCE_BY %out_ok, %out_remaining, %iter_reg, %count
2895
+ EXPAND VEC_DEQUE_ITER_ADVANCE_BY %out_ok, %out_remaining, %iter_reg, %count
2896
+ [END_MACRO]
2897
+
2898
+ [MACRO] VEC_DEQUE_INTO_ITER_ADVANCE_BACK_BY %out_ok, %out_remaining, %iter_reg, %count
2899
+ EXPAND VEC_DEQUE_ITER_ADVANCE_BACK_BY %out_ok, %out_remaining, %iter_reg, %count
2900
+ [END_MACRO]
2901
+
2902
+ [MACRO] VEC_DEQUE_INTO_ITER_COUNT_U64 %out_count, %iter_reg
2903
+ EXPAND VEC_DEQUE_ITER_COUNT_U64 %out_count, %iter_reg
2904
+ [END_MACRO]
2905
+
2906
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_COUNT_U64.
2907
+ [MACRO] VEC_DEQUE_INTO_ITER_COUNT %out_count, %iter_reg
2908
+ EXPAND VEC_DEQUE_INTO_ITER_COUNT_U64 %out_count, %iter_reg
2909
+ [END_MACRO]
2910
+
2911
+ [MACRO] VEC_DEQUE_INTO_ITER_LAST_U64 %out_has, %out_value, %iter_reg
2912
+ EXPAND VEC_DEQUE_ITER_LAST_U64 %out_has, %out_value, %iter_reg
2913
+ [END_MACRO]
2914
+
2915
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_LAST_U64.
2916
+ [MACRO] VEC_DEQUE_INTO_ITER_LAST %out_has, %out_value, %iter_reg
2917
+ EXPAND VEC_DEQUE_INTO_ITER_LAST_U64 %out_has, %out_value, %iter_reg
2918
+ [END_MACRO]
2919
+
2920
+ [MACRO] VEC_DEQUE_INTO_ITER_FIND_U64 %out_has, %out_value, %iter_reg, %pred_fn
2921
+ EXPAND VEC_DEQUE_ITER_FIND_U64 %out_has, %out_value, %iter_reg, %pred_fn
2922
+ [END_MACRO]
2923
+
2924
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_FIND_U64.
2925
+ [MACRO] VEC_DEQUE_INTO_ITER_FIND %out_has, %out_value, %iter_reg, %pred_fn
2926
+ EXPAND VEC_DEQUE_INTO_ITER_FIND_U64 %out_has, %out_value, %iter_reg, %pred_fn
2927
+ [END_MACRO]
2928
+
2929
+ [MACRO] VEC_DEQUE_INTO_ITER_TRY_FIND_U64 %out_ok, %out_has, %out_value, %iter_reg, %pred_fn
2930
+ EXPAND VEC_DEQUE_ITER_TRY_FIND_U64 %out_ok, %out_has, %out_value, %iter_reg, %pred_fn
2931
+ [END_MACRO]
2932
+
2933
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_TRY_FIND_U64.
2934
+ [MACRO] VEC_DEQUE_INTO_ITER_TRY_FIND %out_ok, %out_has, %out_value, %iter_reg, %pred_fn
2935
+ EXPAND VEC_DEQUE_INTO_ITER_TRY_FIND_U64 %out_ok, %out_has, %out_value, %iter_reg, %pred_fn
2936
+ [END_MACRO]
2937
+
2938
+ [MACRO] VEC_DEQUE_INTO_ITER_FIND_MAP_U64 %out_has, %out_value, %iter_reg, %map_fn
2939
+ EXPAND VEC_DEQUE_ITER_FIND_MAP_U64 %out_has, %out_value, %iter_reg, %map_fn
2940
+ [END_MACRO]
2941
+
2942
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_FIND_MAP_U64.
2943
+ [MACRO] VEC_DEQUE_INTO_ITER_FIND_MAP %out_has, %out_value, %iter_reg, %map_fn
2944
+ EXPAND VEC_DEQUE_INTO_ITER_FIND_MAP_U64 %out_has, %out_value, %iter_reg, %map_fn
2945
+ [END_MACRO]
2946
+
2947
+ [MACRO] VEC_DEQUE_INTO_ITER_POSITION_U64 %out_has, %out_index, %iter_reg, %pred_fn
2948
+ EXPAND VEC_DEQUE_ITER_POSITION_U64 %out_has, %out_index, %iter_reg, %pred_fn
2949
+ [END_MACRO]
2950
+
2951
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_POSITION_U64.
2952
+ [MACRO] VEC_DEQUE_INTO_ITER_POSITION %out_has, %out_index, %iter_reg, %pred_fn
2953
+ EXPAND VEC_DEQUE_INTO_ITER_POSITION_U64 %out_has, %out_index, %iter_reg, %pred_fn
2954
+ [END_MACRO]
2955
+
2956
+ [MACRO] VEC_DEQUE_INTO_ITER_RPOSITION_U64 %out_has, %out_index, %iter_reg, %pred_fn
2957
+ EXPAND VEC_DEQUE_ITER_RPOSITION_U64 %out_has, %out_index, %iter_reg, %pred_fn
2958
+ [END_MACRO]
2959
+
2960
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_RPOSITION_U64.
2961
+ [MACRO] VEC_DEQUE_INTO_ITER_RPOSITION %out_has, %out_index, %iter_reg, %pred_fn
2962
+ EXPAND VEC_DEQUE_INTO_ITER_RPOSITION_U64 %out_has, %out_index, %iter_reg, %pred_fn
2963
+ [END_MACRO]
2964
+
2965
+ [MACRO] VEC_DEQUE_INTO_ITER_RFIND_U64 %out_has, %out_value, %iter_reg, %pred_fn
2966
+ EXPAND VEC_DEQUE_ITER_RFIND_U64 %out_has, %out_value, %iter_reg, %pred_fn
2967
+ [END_MACRO]
2968
+
2969
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_RFIND_U64.
2970
+ [MACRO] VEC_DEQUE_INTO_ITER_RFIND %out_has, %out_value, %iter_reg, %pred_fn
2971
+ EXPAND VEC_DEQUE_INTO_ITER_RFIND_U64 %out_has, %out_value, %iter_reg, %pred_fn
2972
+ [END_MACRO]
2973
+
2974
+ [MACRO] VEC_DEQUE_INTO_ITER_ANY_U64 %out_bool, %iter_reg, %pred_fn
2975
+ EXPAND VEC_DEQUE_ITER_ANY_U64 %out_bool, %iter_reg, %pred_fn
2976
+ [END_MACRO]
2977
+
2978
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_ANY_U64.
2979
+ [MACRO] VEC_DEQUE_INTO_ITER_ANY %out_bool, %iter_reg, %pred_fn
2980
+ EXPAND VEC_DEQUE_INTO_ITER_ANY_U64 %out_bool, %iter_reg, %pred_fn
2981
+ [END_MACRO]
2982
+
2983
+ [MACRO] VEC_DEQUE_INTO_ITER_ALL_U64 %out_bool, %iter_reg, %pred_fn
2984
+ EXPAND VEC_DEQUE_ITER_ALL_U64 %out_bool, %iter_reg, %pred_fn
2985
+ [END_MACRO]
2986
+
2987
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_ALL_U64.
2988
+ [MACRO] VEC_DEQUE_INTO_ITER_ALL %out_bool, %iter_reg, %pred_fn
2989
+ EXPAND VEC_DEQUE_INTO_ITER_ALL_U64 %out_bool, %iter_reg, %pred_fn
2990
+ [END_MACRO]
2991
+
2992
+ [MACRO] VEC_DEQUE_INTO_ITER_FOR_EACH_U64 %iter_reg, %each_fn
2993
+ EXPAND VEC_DEQUE_ITER_FOR_EACH_U64 %iter_reg, %each_fn
2994
+ [END_MACRO]
2995
+
2996
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_FOR_EACH_U64.
2997
+ [MACRO] VEC_DEQUE_INTO_ITER_FOR_EACH %iter_reg, %each_fn
2998
+ EXPAND VEC_DEQUE_INTO_ITER_FOR_EACH_U64 %iter_reg, %each_fn
2999
+ [END_MACRO]
3000
+
3001
+ [MACRO] VEC_DEQUE_INTO_ITER_TRY_FOR_EACH_U64 %out_ok, %iter_reg, %each_fn
3002
+ EXPAND VEC_DEQUE_ITER_TRY_FOR_EACH_U64 %out_ok, %iter_reg, %each_fn
3003
+ [END_MACRO]
3004
+
3005
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_TRY_FOR_EACH_U64.
3006
+ [MACRO] VEC_DEQUE_INTO_ITER_TRY_FOR_EACH %out_ok, %iter_reg, %each_fn
3007
+ EXPAND VEC_DEQUE_INTO_ITER_TRY_FOR_EACH_U64 %out_ok, %iter_reg, %each_fn
3008
+ [END_MACRO]
3009
+
3010
+ [MACRO] VEC_DEQUE_INTO_ITER_FOLD_U64 %out_value, %iter_reg, %init_value, %fold_fn
3011
+ EXPAND VEC_DEQUE_ITER_FOLD_U64 %out_value, %iter_reg, %init_value, %fold_fn
3012
+ [END_MACRO]
3013
+
3014
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_FOLD_U64.
3015
+ [MACRO] VEC_DEQUE_INTO_ITER_FOLD %out_value, %iter_reg, %init_value, %fold_fn
3016
+ EXPAND VEC_DEQUE_INTO_ITER_FOLD_U64 %out_value, %iter_reg, %init_value, %fold_fn
3017
+ [END_MACRO]
3018
+
3019
+ [MACRO] VEC_DEQUE_INTO_ITER_TRY_FOLD_U64 %out_ok, %out_value, %iter_reg, %init_value, %fold_fn
3020
+ EXPAND VEC_DEQUE_ITER_TRY_FOLD_U64 %out_ok, %out_value, %iter_reg, %init_value, %fold_fn
3021
+ [END_MACRO]
3022
+
3023
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_TRY_FOLD_U64.
3024
+ [MACRO] VEC_DEQUE_INTO_ITER_TRY_FOLD %out_ok, %out_value, %iter_reg, %init_value, %fold_fn
3025
+ EXPAND VEC_DEQUE_INTO_ITER_TRY_FOLD_U64 %out_ok, %out_value, %iter_reg, %init_value, %fold_fn
3026
+ [END_MACRO]
3027
+
3028
+ [MACRO] VEC_DEQUE_INTO_ITER_RFOLD_U64 %out_value, %iter_reg, %init_value, %fold_fn
3029
+ EXPAND VEC_DEQUE_ITER_RFOLD_U64 %out_value, %iter_reg, %init_value, %fold_fn
3030
+ [END_MACRO]
3031
+
3032
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_RFOLD_U64.
3033
+ [MACRO] VEC_DEQUE_INTO_ITER_RFOLD %out_value, %iter_reg, %init_value, %fold_fn
3034
+ EXPAND VEC_DEQUE_INTO_ITER_RFOLD_U64 %out_value, %iter_reg, %init_value, %fold_fn
3035
+ [END_MACRO]
3036
+
3037
+ [MACRO] VEC_DEQUE_INTO_ITER_TRY_RFOLD_U64 %out_ok, %out_value, %iter_reg, %init_value, %fold_fn
3038
+ EXPAND VEC_DEQUE_ITER_TRY_RFOLD_U64 %out_ok, %out_value, %iter_reg, %init_value, %fold_fn
3039
+ [END_MACRO]
3040
+
3041
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_TRY_RFOLD_U64.
3042
+ [MACRO] VEC_DEQUE_INTO_ITER_TRY_RFOLD %out_ok, %out_value, %iter_reg, %init_value, %fold_fn
3043
+ EXPAND VEC_DEQUE_INTO_ITER_TRY_RFOLD_U64 %out_ok, %out_value, %iter_reg, %init_value, %fold_fn
3044
+ [END_MACRO]
3045
+
3046
+ [MACRO] VEC_DEQUE_INTO_ITER_SUM_U64 %out_value, %iter_reg
3047
+ EXPAND VEC_DEQUE_ITER_SUM_U64 %out_value, %iter_reg
3048
+ [END_MACRO]
3049
+
3050
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_SUM_U64.
3051
+ [MACRO] VEC_DEQUE_INTO_ITER_SUM %out_value, %iter_reg
3052
+ EXPAND VEC_DEQUE_INTO_ITER_SUM_U64 %out_value, %iter_reg
3053
+ [END_MACRO]
3054
+
3055
+ [MACRO] VEC_DEQUE_INTO_ITER_PRODUCT_U64 %out_value, %iter_reg
3056
+ EXPAND VEC_DEQUE_ITER_PRODUCT_U64 %out_value, %iter_reg
3057
+ [END_MACRO]
3058
+
3059
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_PRODUCT_U64.
3060
+ [MACRO] VEC_DEQUE_INTO_ITER_PRODUCT %out_value, %iter_reg
3061
+ EXPAND VEC_DEQUE_INTO_ITER_PRODUCT_U64 %out_value, %iter_reg
3062
+ [END_MACRO]
3063
+
3064
+ [MACRO] VEC_DEQUE_INTO_ITER_MIN_U64 %out_has, %out_value, %iter_reg
3065
+ EXPAND VEC_DEQUE_ITER_MIN_U64 %out_has, %out_value, %iter_reg
3066
+ [END_MACRO]
3067
+
3068
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_MIN_U64.
3069
+ [MACRO] VEC_DEQUE_INTO_ITER_MIN %out_has, %out_value, %iter_reg
3070
+ EXPAND VEC_DEQUE_INTO_ITER_MIN_U64 %out_has, %out_value, %iter_reg
3071
+ [END_MACRO]
3072
+
3073
+ [MACRO] VEC_DEQUE_INTO_ITER_MAX_U64 %out_has, %out_value, %iter_reg
3074
+ EXPAND VEC_DEQUE_ITER_MAX_U64 %out_has, %out_value, %iter_reg
3075
+ [END_MACRO]
3076
+
3077
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_MAX_U64.
3078
+ [MACRO] VEC_DEQUE_INTO_ITER_MAX %out_has, %out_value, %iter_reg
3079
+ EXPAND VEC_DEQUE_INTO_ITER_MAX_U64 %out_has, %out_value, %iter_reg
3080
+ [END_MACRO]
3081
+
3082
+ [MACRO] VEC_DEQUE_INTO_ITER_REDUCE_U64 %out_has, %out_value, %iter_reg, %reduce_fn
3083
+ EXPAND VEC_DEQUE_ITER_REDUCE_U64 %out_has, %out_value, %iter_reg, %reduce_fn
3084
+ [END_MACRO]
3085
+
3086
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_REDUCE_U64.
3087
+ [MACRO] VEC_DEQUE_INTO_ITER_REDUCE %out_has, %out_value, %iter_reg, %reduce_fn
3088
+ EXPAND VEC_DEQUE_INTO_ITER_REDUCE_U64 %out_has, %out_value, %iter_reg, %reduce_fn
3089
+ [END_MACRO]
3090
+
3091
+ [MACRO] VEC_DEQUE_INTO_ITER_TRY_REDUCE_U64 %out_ok, %out_has, %out_value, %iter_reg, %reduce_fn
3092
+ EXPAND VEC_DEQUE_ITER_TRY_REDUCE_U64 %out_ok, %out_has, %out_value, %iter_reg, %reduce_fn
3093
+ [END_MACRO]
3094
+
3095
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_TRY_REDUCE_U64.
3096
+ [MACRO] VEC_DEQUE_INTO_ITER_TRY_REDUCE %out_ok, %out_has, %out_value, %iter_reg, %reduce_fn
3097
+ EXPAND VEC_DEQUE_INTO_ITER_TRY_REDUCE_U64 %out_ok, %out_has, %out_value, %iter_reg, %reduce_fn
3098
+ [END_MACRO]
3099
+
3100
+ [MACRO] VEC_DEQUE_INTO_ITER_MIN_BY_U64 %out_has, %out_value, %iter_reg, %compare_fn
3101
+ EXPAND VEC_DEQUE_ITER_MIN_BY_U64 %out_has, %out_value, %iter_reg, %compare_fn
3102
+ [END_MACRO]
3103
+
3104
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_MIN_BY_U64.
3105
+ [MACRO] VEC_DEQUE_INTO_ITER_MIN_BY %out_has, %out_value, %iter_reg, %compare_fn
3106
+ EXPAND VEC_DEQUE_INTO_ITER_MIN_BY_U64 %out_has, %out_value, %iter_reg, %compare_fn
3107
+ [END_MACRO]
3108
+
3109
+ [MACRO] VEC_DEQUE_INTO_ITER_MAX_BY_U64 %out_has, %out_value, %iter_reg, %compare_fn
3110
+ EXPAND VEC_DEQUE_ITER_MAX_BY_U64 %out_has, %out_value, %iter_reg, %compare_fn
3111
+ [END_MACRO]
3112
+
3113
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_MAX_BY_U64.
3114
+ [MACRO] VEC_DEQUE_INTO_ITER_MAX_BY %out_has, %out_value, %iter_reg, %compare_fn
3115
+ EXPAND VEC_DEQUE_INTO_ITER_MAX_BY_U64 %out_has, %out_value, %iter_reg, %compare_fn
3116
+ [END_MACRO]
3117
+
3118
+ [MACRO] VEC_DEQUE_INTO_ITER_MIN_BY_KEY_U64 %out_has, %out_value, %iter_reg, %key_fn
3119
+ EXPAND VEC_DEQUE_ITER_MIN_BY_KEY_U64 %out_has, %out_value, %iter_reg, %key_fn
3120
+ [END_MACRO]
3121
+
3122
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_MIN_BY_KEY_U64.
3123
+ [MACRO] VEC_DEQUE_INTO_ITER_MIN_BY_KEY %out_has, %out_value, %iter_reg, %key_fn
3124
+ EXPAND VEC_DEQUE_INTO_ITER_MIN_BY_KEY_U64 %out_has, %out_value, %iter_reg, %key_fn
3125
+ [END_MACRO]
3126
+
3127
+ [MACRO] VEC_DEQUE_INTO_ITER_MAX_BY_KEY_U64 %out_has, %out_value, %iter_reg, %key_fn
3128
+ EXPAND VEC_DEQUE_ITER_MAX_BY_KEY_U64 %out_has, %out_value, %iter_reg, %key_fn
3129
+ [END_MACRO]
3130
+
3131
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_MAX_BY_KEY_U64.
3132
+ [MACRO] VEC_DEQUE_INTO_ITER_MAX_BY_KEY %out_has, %out_value, %iter_reg, %key_fn
3133
+ EXPAND VEC_DEQUE_INTO_ITER_MAX_BY_KEY_U64 %out_has, %out_value, %iter_reg, %key_fn
3134
+ [END_MACRO]
3135
+
3136
+ [MACRO] VEC_DEQUE_INTO_ITER_CMP_U64 %out_ordering, %left_iter, %right_iter
3137
+ EXPAND VEC_DEQUE_ITER_CMP_U64 %out_ordering, %left_iter, %right_iter
3138
+ [END_MACRO]
3139
+
3140
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_CMP_U64.
3141
+ [MACRO] VEC_DEQUE_INTO_ITER_CMP %out_ordering, %left_iter, %right_iter
3142
+ EXPAND VEC_DEQUE_INTO_ITER_CMP_U64 %out_ordering, %left_iter, %right_iter
3143
+ [END_MACRO]
3144
+
3145
+ [MACRO] VEC_DEQUE_INTO_ITER_CMP_BY_U64 %out_ordering, %left_iter, %right_iter, %compare_fn
3146
+ EXPAND VEC_DEQUE_ITER_CMP_BY_U64 %out_ordering, %left_iter, %right_iter, %compare_fn
3147
+ [END_MACRO]
3148
+
3149
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_CMP_BY_U64.
3150
+ [MACRO] VEC_DEQUE_INTO_ITER_CMP_BY %out_ordering, %left_iter, %right_iter, %compare_fn
3151
+ EXPAND VEC_DEQUE_INTO_ITER_CMP_BY_U64 %out_ordering, %left_iter, %right_iter, %compare_fn
3152
+ [END_MACRO]
3153
+
3154
+ [MACRO] VEC_DEQUE_INTO_ITER_PARTIAL_CMP_U64 %out_ordering, %left_iter, %right_iter
3155
+ EXPAND VEC_DEQUE_ITER_PARTIAL_CMP_U64 %out_ordering, %left_iter, %right_iter
3156
+ [END_MACRO]
3157
+
3158
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_PARTIAL_CMP_U64.
3159
+ [MACRO] VEC_DEQUE_INTO_ITER_PARTIAL_CMP %out_ordering, %left_iter, %right_iter
3160
+ EXPAND VEC_DEQUE_INTO_ITER_PARTIAL_CMP_U64 %out_ordering, %left_iter, %right_iter
3161
+ [END_MACRO]
3162
+
3163
+ [MACRO] VEC_DEQUE_INTO_ITER_PARTIAL_CMP_BY_U64 %out_ok, %out_ordering, %left_iter, %right_iter, %compare_fn
3164
+ EXPAND VEC_DEQUE_ITER_PARTIAL_CMP_BY_U64 %out_ok, %out_ordering, %left_iter, %right_iter, %compare_fn
3165
+ [END_MACRO]
3166
+
3167
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_PARTIAL_CMP_BY_U64.
3168
+ [MACRO] VEC_DEQUE_INTO_ITER_PARTIAL_CMP_BY %out_ok, %out_ordering, %left_iter, %right_iter, %compare_fn
3169
+ EXPAND VEC_DEQUE_INTO_ITER_PARTIAL_CMP_BY_U64 %out_ok, %out_ordering, %left_iter, %right_iter, %compare_fn
3170
+ [END_MACRO]
3171
+
3172
+ [MACRO] VEC_DEQUE_INTO_ITER_EQ_BY_U64 %out_bool, %left_iter, %right_iter, %eq_fn
3173
+ EXPAND VEC_DEQUE_ITER_EQ_BY_U64 %out_bool, %left_iter, %right_iter, %eq_fn
3174
+ [END_MACRO]
3175
+
3176
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_EQ_BY_U64.
3177
+ [MACRO] VEC_DEQUE_INTO_ITER_EQ_BY %out_bool, %left_iter, %right_iter, %eq_fn
3178
+ EXPAND VEC_DEQUE_INTO_ITER_EQ_BY_U64 %out_bool, %left_iter, %right_iter, %eq_fn
3179
+ [END_MACRO]
3180
+
3181
+ [MACRO] VEC_DEQUE_INTO_ITER_EQ_U64 %out_bool, %left_iter, %right_iter
3182
+ EXPAND VEC_DEQUE_ITER_EQ_U64 %out_bool, %left_iter, %right_iter
3183
+ [END_MACRO]
3184
+
3185
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_EQ_U64.
3186
+ [MACRO] VEC_DEQUE_INTO_ITER_EQ %out_bool, %left_iter, %right_iter
3187
+ EXPAND VEC_DEQUE_INTO_ITER_EQ_U64 %out_bool, %left_iter, %right_iter
3188
+ [END_MACRO]
3189
+
3190
+ [MACRO] VEC_DEQUE_INTO_ITER_PARTIAL_EQ_U64 %out_bool, %left_iter, %right_iter
3191
+ EXPAND VEC_DEQUE_ITER_PARTIAL_EQ_U64 %out_bool, %left_iter, %right_iter
3192
+ [END_MACRO]
3193
+
3194
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_PARTIAL_EQ_U64.
3195
+ [MACRO] VEC_DEQUE_INTO_ITER_PARTIAL_EQ %out_bool, %left_iter, %right_iter
3196
+ EXPAND VEC_DEQUE_INTO_ITER_PARTIAL_EQ_U64 %out_bool, %left_iter, %right_iter
3197
+ [END_MACRO]
3198
+
3199
+ [MACRO] VEC_DEQUE_INTO_ITER_NE_U64 %out_bool, %left_iter, %right_iter
3200
+ EXPAND VEC_DEQUE_ITER_NE_U64 %out_bool, %left_iter, %right_iter
3201
+ [END_MACRO]
3202
+
3203
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_NE_U64.
3204
+ [MACRO] VEC_DEQUE_INTO_ITER_NE %out_bool, %left_iter, %right_iter
3205
+ EXPAND VEC_DEQUE_INTO_ITER_NE_U64 %out_bool, %left_iter, %right_iter
3206
+ [END_MACRO]
3207
+
3208
+ [MACRO] VEC_DEQUE_INTO_ITER_LT_U64 %out_bool, %left_iter, %right_iter
3209
+ EXPAND VEC_DEQUE_ITER_LT_U64 %out_bool, %left_iter, %right_iter
3210
+ [END_MACRO]
3211
+
3212
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_LT_U64.
3213
+ [MACRO] VEC_DEQUE_INTO_ITER_LT %out_bool, %left_iter, %right_iter
3214
+ EXPAND VEC_DEQUE_INTO_ITER_LT_U64 %out_bool, %left_iter, %right_iter
3215
+ [END_MACRO]
3216
+
3217
+ [MACRO] VEC_DEQUE_INTO_ITER_LE_U64 %out_bool, %left_iter, %right_iter
3218
+ EXPAND VEC_DEQUE_ITER_LE_U64 %out_bool, %left_iter, %right_iter
3219
+ [END_MACRO]
3220
+
3221
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_LE_U64.
3222
+ [MACRO] VEC_DEQUE_INTO_ITER_LE %out_bool, %left_iter, %right_iter
3223
+ EXPAND VEC_DEQUE_INTO_ITER_LE_U64 %out_bool, %left_iter, %right_iter
3224
+ [END_MACRO]
3225
+
3226
+ [MACRO] VEC_DEQUE_INTO_ITER_GT_U64 %out_bool, %left_iter, %right_iter
3227
+ EXPAND VEC_DEQUE_ITER_GT_U64 %out_bool, %left_iter, %right_iter
3228
+ [END_MACRO]
3229
+
3230
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_GT_U64.
3231
+ [MACRO] VEC_DEQUE_INTO_ITER_GT %out_bool, %left_iter, %right_iter
3232
+ EXPAND VEC_DEQUE_INTO_ITER_GT_U64 %out_bool, %left_iter, %right_iter
3233
+ [END_MACRO]
3234
+
3235
+ [MACRO] VEC_DEQUE_INTO_ITER_GE_U64 %out_bool, %left_iter, %right_iter
3236
+ EXPAND VEC_DEQUE_ITER_GE_U64 %out_bool, %left_iter, %right_iter
3237
+ [END_MACRO]
3238
+
3239
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_GE_U64.
3240
+ [MACRO] VEC_DEQUE_INTO_ITER_GE %out_bool, %left_iter, %right_iter
3241
+ EXPAND VEC_DEQUE_INTO_ITER_GE_U64 %out_bool, %left_iter, %right_iter
3242
+ [END_MACRO]
3243
+
3244
+ [MACRO] VEC_DEQUE_INTO_ITER_IS_SORTED_U64 %out_bool, %iter_reg
3245
+ EXPAND VEC_DEQUE_ITER_IS_SORTED_U64 %out_bool, %iter_reg
3246
+ [END_MACRO]
3247
+
3248
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_IS_SORTED_U64.
3249
+ [MACRO] VEC_DEQUE_INTO_ITER_IS_SORTED %out_bool, %iter_reg
3250
+ EXPAND VEC_DEQUE_INTO_ITER_IS_SORTED_U64 %out_bool, %iter_reg
3251
+ [END_MACRO]
3252
+
3253
+ [MACRO] VEC_DEQUE_INTO_ITER_IS_SORTED_BY_U64 %out_bool, %iter_reg, %compare_fn
3254
+ EXPAND VEC_DEQUE_ITER_IS_SORTED_BY_U64 %out_bool, %iter_reg, %compare_fn
3255
+ [END_MACRO]
3256
+
3257
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_IS_SORTED_BY_U64.
3258
+ [MACRO] VEC_DEQUE_INTO_ITER_IS_SORTED_BY %out_bool, %iter_reg, %compare_fn
3259
+ EXPAND VEC_DEQUE_INTO_ITER_IS_SORTED_BY_U64 %out_bool, %iter_reg, %compare_fn
3260
+ [END_MACRO]
3261
+
3262
+ [MACRO] VEC_DEQUE_INTO_ITER_IS_SORTED_BY_KEY_U64 %out_bool, %iter_reg, %key_fn
3263
+ EXPAND VEC_DEQUE_ITER_IS_SORTED_BY_KEY_U64 %out_bool, %iter_reg, %key_fn
3264
+ [END_MACRO]
3265
+
3266
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_IS_SORTED_BY_KEY_U64.
3267
+ [MACRO] VEC_DEQUE_INTO_ITER_IS_SORTED_BY_KEY %out_bool, %iter_reg, %key_fn
3268
+ EXPAND VEC_DEQUE_INTO_ITER_IS_SORTED_BY_KEY_U64 %out_bool, %iter_reg, %key_fn
3269
+ [END_MACRO]
3270
+
3271
+ [MACRO] VEC_DEQUE_INTO_ITER_PARTITION_U64 %out_true_vec, %out_false_vec, %iter_reg, %pred_fn
3272
+ EXPAND VEC_DEQUE_ITER_PARTITION_U64 %out_true_vec, %out_false_vec, %iter_reg, %pred_fn
3273
+ [END_MACRO]
3274
+
3275
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_PARTITION_U64.
3276
+ [MACRO] VEC_DEQUE_INTO_ITER_PARTITION %out_true_vec, %out_false_vec, %iter_reg, %pred_fn
3277
+ EXPAND VEC_DEQUE_INTO_ITER_PARTITION_U64 %out_true_vec, %out_false_vec, %iter_reg, %pred_fn
3278
+ [END_MACRO]
3279
+
3280
+ [MACRO] VEC_DEQUE_INTO_ITER_IS_PARTITIONED_U64 %out_bool, %iter_reg, %pred_fn
3281
+ EXPAND VEC_DEQUE_ITER_IS_PARTITIONED_U64 %out_bool, %iter_reg, %pred_fn
3282
+ [END_MACRO]
3283
+
3284
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_IS_PARTITIONED_U64.
3285
+ [MACRO] VEC_DEQUE_INTO_ITER_IS_PARTITIONED %out_bool, %iter_reg, %pred_fn
3286
+ EXPAND VEC_DEQUE_INTO_ITER_IS_PARTITIONED_U64 %out_bool, %iter_reg, %pred_fn
3287
+ [END_MACRO]
3288
+
3289
+ [MACRO] VEC_DEQUE_INTO_ITER_SIZE_HINT_U64 %out_lower, %out_upper, %iter_reg
3290
+ EXPAND VEC_DEQUE_ITER_SIZE_HINT_U64 %out_lower, %out_upper, %iter_reg
3291
+ [END_MACRO]
3292
+
3293
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_SIZE_HINT_U64.
3294
+ [MACRO] VEC_DEQUE_INTO_ITER_SIZE_HINT %out_lower, %out_upper, %iter_reg
3295
+ EXPAND VEC_DEQUE_INTO_ITER_SIZE_HINT_U64 %out_lower, %out_upper, %iter_reg
3296
+ [END_MACRO]
3297
+
3298
+ [MACRO] VEC_DEQUE_INTO_ITER_EXACT_SIZE_LEN_U64 %out_len, %iter_reg
3299
+ EXPAND VEC_DEQUE_ITER_EXACT_SIZE_LEN_U64 %out_len, %iter_reg
3300
+ [END_MACRO]
3301
+
3302
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_EXACT_SIZE_LEN_U64.
3303
+ [MACRO] VEC_DEQUE_INTO_ITER_EXACT_SIZE_LEN %out_len, %iter_reg
3304
+ EXPAND VEC_DEQUE_INTO_ITER_EXACT_SIZE_LEN_U64 %out_len, %iter_reg
3305
+ [END_MACRO]
3306
+
3307
+ [MACRO] VEC_DEQUE_INTO_ITER_EXACT_SIZE_IS_EMPTY_U64 %out_bool, %iter_reg
3308
+ EXPAND VEC_DEQUE_ITER_EXACT_SIZE_IS_EMPTY_U64 %out_bool, %iter_reg
3309
+ [END_MACRO]
3310
+
3311
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_EXACT_SIZE_IS_EMPTY_U64.
3312
+ [MACRO] VEC_DEQUE_INTO_ITER_EXACT_SIZE_IS_EMPTY %out_bool, %iter_reg
3313
+ EXPAND VEC_DEQUE_INTO_ITER_EXACT_SIZE_IS_EMPTY_U64 %out_bool, %iter_reg
3314
+ [END_MACRO]
3315
+
3316
+ [MACRO] VEC_DEQUE_INTO_ITER_COLLECT_U64 %out_vec, %iter_reg
3317
+ EXPAND VEC_DEQUE_ITER_COLLECT_U64 %out_vec, %iter_reg
3318
+ [END_MACRO]
3319
+
3320
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_COLLECT_U64.
3321
+ [MACRO] VEC_DEQUE_INTO_ITER_COLLECT %out_vec, %iter_reg
3322
+ EXPAND VEC_DEQUE_INTO_ITER_COLLECT_U64 %out_vec, %iter_reg
3323
+ [END_MACRO]
3324
+
3325
+ [MACRO] VEC_DEQUE_INTO_ITER_TRY_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %try_fn
3326
+ EXPAND VEC_DEQUE_ITER_TRY_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %try_fn
3327
+ [END_MACRO]
3328
+
3329
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_TRY_COLLECT_U64.
3330
+ [MACRO] VEC_DEQUE_INTO_ITER_TRY_COLLECT %out_ok, %out_vec, %iter_reg, %try_fn
3331
+ EXPAND VEC_DEQUE_INTO_ITER_TRY_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %try_fn
3332
+ [END_MACRO]
3333
+
3334
+ [MACRO] VEC_DEQUE_INTO_ITER_COLLECT_INTO_U64 %vec_reg, %iter_reg
3335
+ EXPAND VEC_DEQUE_ITER_COLLECT_INTO_U64 %vec_reg, %iter_reg
3336
+ [END_MACRO]
3337
+
3338
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_COLLECT_INTO_U64.
3339
+ [MACRO] VEC_DEQUE_INTO_ITER_COLLECT_INTO %vec_reg, %iter_reg
3340
+ EXPAND VEC_DEQUE_INTO_ITER_COLLECT_INTO_U64 %vec_reg, %iter_reg
3341
+ [END_MACRO]
3342
+
3343
+ [MACRO] VEC_DEQUE_INTO_ITER_COPIED_COLLECT_U64 %out_vec, %iter_reg
3344
+ EXPAND VEC_DEQUE_ITER_COPIED_COLLECT_U64 %out_vec, %iter_reg
3345
+ [END_MACRO]
3346
+
3347
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_COPIED_COLLECT_U64.
3348
+ [MACRO] VEC_DEQUE_INTO_ITER_COPIED_COLLECT %out_vec, %iter_reg
3349
+ EXPAND VEC_DEQUE_INTO_ITER_COPIED_COLLECT_U64 %out_vec, %iter_reg
3350
+ [END_MACRO]
3351
+
3352
+ [MACRO] VEC_DEQUE_INTO_ITER_CLONED_COLLECT_U64 %out_vec, %iter_reg
3353
+ EXPAND VEC_DEQUE_ITER_CLONED_COLLECT_U64 %out_vec, %iter_reg
3354
+ [END_MACRO]
3355
+
3356
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_CLONED_COLLECT_U64.
3357
+ [MACRO] VEC_DEQUE_INTO_ITER_CLONED_COLLECT %out_vec, %iter_reg
3358
+ EXPAND VEC_DEQUE_INTO_ITER_CLONED_COLLECT_U64 %out_vec, %iter_reg
3359
+ [END_MACRO]
3360
+
3361
+ [MACRO] VEC_DEQUE_INTO_ITER_TAKE_COLLECT_U64 %out_vec, %iter_reg, %count
3362
+ EXPAND VEC_DEQUE_ITER_TAKE_COLLECT_U64 %out_vec, %iter_reg, %count
3363
+ [END_MACRO]
3364
+
3365
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_TAKE_COLLECT_U64.
3366
+ [MACRO] VEC_DEQUE_INTO_ITER_TAKE_COLLECT %out_vec, %iter_reg, %count
3367
+ EXPAND VEC_DEQUE_INTO_ITER_TAKE_COLLECT_U64 %out_vec, %iter_reg, %count
3368
+ [END_MACRO]
3369
+
3370
+ [MACRO] VEC_DEQUE_INTO_ITER_SKIP_COLLECT_U64 %out_vec, %iter_reg, %count
3371
+ EXPAND VEC_DEQUE_ITER_SKIP_COLLECT_U64 %out_vec, %iter_reg, %count
3372
+ [END_MACRO]
3373
+
3374
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_SKIP_COLLECT_U64.
3375
+ [MACRO] VEC_DEQUE_INTO_ITER_SKIP_COLLECT %out_vec, %iter_reg, %count
3376
+ EXPAND VEC_DEQUE_INTO_ITER_SKIP_COLLECT_U64 %out_vec, %iter_reg, %count
3377
+ [END_MACRO]
3378
+
3379
+ [MACRO] VEC_DEQUE_INTO_ITER_REV_COLLECT_U64 %out_vec, %iter_reg
3380
+ EXPAND VEC_DEQUE_ITER_REV_COLLECT_U64 %out_vec, %iter_reg
3381
+ [END_MACRO]
3382
+
3383
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_REV_COLLECT_U64.
3384
+ [MACRO] VEC_DEQUE_INTO_ITER_REV_COLLECT %out_vec, %iter_reg
3385
+ EXPAND VEC_DEQUE_INTO_ITER_REV_COLLECT_U64 %out_vec, %iter_reg
3386
+ [END_MACRO]
3387
+
3388
+ [MACRO] VEC_DEQUE_INTO_ITER_TRY_STEP_BY_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %step
3389
+ EXPAND VEC_DEQUE_ITER_TRY_STEP_BY_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %step
3390
+ [END_MACRO]
3391
+
3392
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_TRY_STEP_BY_COLLECT_U64.
3393
+ [MACRO] VEC_DEQUE_INTO_ITER_TRY_STEP_BY_COLLECT %out_ok, %out_vec, %iter_reg, %step
3394
+ EXPAND VEC_DEQUE_INTO_ITER_TRY_STEP_BY_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %step
3395
+ [END_MACRO]
3396
+
3397
+ [MACRO] VEC_DEQUE_INTO_ITER_STEP_BY_COLLECT_U64 %out_vec, %iter_reg, %step
3398
+ EXPAND VEC_DEQUE_ITER_STEP_BY_COLLECT_U64 %out_vec, %iter_reg, %step
3399
+ [END_MACRO]
3400
+
3401
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_STEP_BY_COLLECT_U64.
3402
+ [MACRO] VEC_DEQUE_INTO_ITER_STEP_BY_COLLECT %out_vec, %iter_reg, %step
3403
+ EXPAND VEC_DEQUE_INTO_ITER_STEP_BY_COLLECT_U64 %out_vec, %iter_reg, %step
3404
+ [END_MACRO]
3405
+
3406
+ [MACRO] VEC_DEQUE_INTO_ITER_MAP_COLLECT_U64 %out_vec, %iter_reg, %map_fn
3407
+ EXPAND VEC_DEQUE_ITER_MAP_COLLECT_U64 %out_vec, %iter_reg, %map_fn
3408
+ [END_MACRO]
3409
+
3410
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_MAP_COLLECT_U64.
3411
+ [MACRO] VEC_DEQUE_INTO_ITER_MAP_COLLECT %out_vec, %iter_reg, %map_fn
3412
+ EXPAND VEC_DEQUE_INTO_ITER_MAP_COLLECT_U64 %out_vec, %iter_reg, %map_fn
3413
+ [END_MACRO]
3414
+
3415
+ [MACRO] VEC_DEQUE_INTO_ITER_INSPECT_COLLECT_U64 %out_vec, %iter_reg, %inspect_fn
3416
+ EXPAND VEC_DEQUE_ITER_INSPECT_COLLECT_U64 %out_vec, %iter_reg, %inspect_fn
3417
+ [END_MACRO]
3418
+
3419
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_INSPECT_COLLECT_U64.
3420
+ [MACRO] VEC_DEQUE_INTO_ITER_INSPECT_COLLECT %out_vec, %iter_reg, %inspect_fn
3421
+ EXPAND VEC_DEQUE_INTO_ITER_INSPECT_COLLECT_U64 %out_vec, %iter_reg, %inspect_fn
3422
+ [END_MACRO]
3423
+
3424
+ [MACRO] VEC_DEQUE_INTO_ITER_SCAN_COLLECT_U64 %out_vec, %iter_reg, %initial_state, %scan_fn
3425
+ EXPAND VEC_DEQUE_ITER_SCAN_COLLECT_U64 %out_vec, %iter_reg, %initial_state, %scan_fn
3426
+ [END_MACRO]
3427
+
3428
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_SCAN_COLLECT_U64.
3429
+ [MACRO] VEC_DEQUE_INTO_ITER_SCAN_COLLECT %out_vec, %iter_reg, %initial_state, %scan_fn
3430
+ EXPAND VEC_DEQUE_INTO_ITER_SCAN_COLLECT_U64 %out_vec, %iter_reg, %initial_state, %scan_fn
3431
+ [END_MACRO]
3432
+
3433
+ [MACRO] VEC_DEQUE_INTO_ITER_FILTER_COLLECT_U64 %out_vec, %iter_reg, %pred_fn
3434
+ EXPAND VEC_DEQUE_ITER_FILTER_COLLECT_U64 %out_vec, %iter_reg, %pred_fn
3435
+ [END_MACRO]
3436
+
3437
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_FILTER_COLLECT_U64.
3438
+ [MACRO] VEC_DEQUE_INTO_ITER_FILTER_COLLECT %out_vec, %iter_reg, %pred_fn
3439
+ EXPAND VEC_DEQUE_INTO_ITER_FILTER_COLLECT_U64 %out_vec, %iter_reg, %pred_fn
3440
+ [END_MACRO]
3441
+
3442
+ [MACRO] VEC_DEQUE_INTO_ITER_FILTER_MAP_COLLECT_U64 %out_vec, %iter_reg, %map_fn
3443
+ EXPAND VEC_DEQUE_ITER_FILTER_MAP_COLLECT_U64 %out_vec, %iter_reg, %map_fn
3444
+ [END_MACRO]
3445
+
3446
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_FILTER_MAP_COLLECT_U64.
3447
+ [MACRO] VEC_DEQUE_INTO_ITER_FILTER_MAP_COLLECT %out_vec, %iter_reg, %map_fn
3448
+ EXPAND VEC_DEQUE_INTO_ITER_FILTER_MAP_COLLECT_U64 %out_vec, %iter_reg, %map_fn
3449
+ [END_MACRO]
3450
+
3451
+ [MACRO] VEC_DEQUE_INTO_ITER_MAP_WHILE_COLLECT_U64 %out_vec, %iter_reg, %map_fn
3452
+ EXPAND VEC_DEQUE_ITER_MAP_WHILE_COLLECT_U64 %out_vec, %iter_reg, %map_fn
3453
+ [END_MACRO]
3454
+
3455
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_MAP_WHILE_COLLECT_U64.
3456
+ [MACRO] VEC_DEQUE_INTO_ITER_MAP_WHILE_COLLECT %out_vec, %iter_reg, %map_fn
3457
+ EXPAND VEC_DEQUE_INTO_ITER_MAP_WHILE_COLLECT_U64 %out_vec, %iter_reg, %map_fn
3458
+ [END_MACRO]
3459
+
3460
+ [MACRO] VEC_DEQUE_INTO_ITER_INTERSPERSE_COLLECT_U64 %out_vec, %iter_reg, %separator
3461
+ EXPAND VEC_DEQUE_ITER_INTERSPERSE_COLLECT_U64 %out_vec, %iter_reg, %separator
3462
+ [END_MACRO]
3463
+
3464
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_INTERSPERSE_COLLECT_U64.
3465
+ [MACRO] VEC_DEQUE_INTO_ITER_INTERSPERSE_COLLECT %out_vec, %iter_reg, %separator
3466
+ EXPAND VEC_DEQUE_INTO_ITER_INTERSPERSE_COLLECT_U64 %out_vec, %iter_reg, %separator
3467
+ [END_MACRO]
3468
+
3469
+ [MACRO] VEC_DEQUE_INTO_ITER_INTERSPERSE_WITH_COLLECT_U64 %out_vec, %iter_reg, %sep_fn
3470
+ EXPAND VEC_DEQUE_ITER_INTERSPERSE_WITH_COLLECT_U64 %out_vec, %iter_reg, %sep_fn
3471
+ [END_MACRO]
3472
+
3473
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_INTERSPERSE_WITH_COLLECT_U64.
3474
+ [MACRO] VEC_DEQUE_INTO_ITER_INTERSPERSE_WITH_COLLECT %out_vec, %iter_reg, %sep_fn
3475
+ EXPAND VEC_DEQUE_INTO_ITER_INTERSPERSE_WITH_COLLECT_U64 %out_vec, %iter_reg, %sep_fn
3476
+ [END_MACRO]
3477
+
3478
+ [MACRO] VEC_DEQUE_INTO_ITER_CYCLE_TAKE_COLLECT_U64 %out_vec, %iter_reg, %count
3479
+ EXPAND VEC_DEQUE_ITER_CYCLE_TAKE_COLLECT_U64 %out_vec, %iter_reg, %count
3480
+ [END_MACRO]
3481
+
3482
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_CYCLE_TAKE_COLLECT_U64.
3483
+ [MACRO] VEC_DEQUE_INTO_ITER_CYCLE_TAKE_COLLECT %out_vec, %iter_reg, %count
3484
+ EXPAND VEC_DEQUE_INTO_ITER_CYCLE_TAKE_COLLECT_U64 %out_vec, %iter_reg, %count
3485
+ [END_MACRO]
3486
+
3487
+ [MACRO] VEC_DEQUE_INTO_ITER_TAKE_WHILE_COLLECT_U64 %out_vec, %iter_reg, %pred_fn
3488
+ EXPAND VEC_DEQUE_ITER_TAKE_WHILE_COLLECT_U64 %out_vec, %iter_reg, %pred_fn
3489
+ [END_MACRO]
3490
+
3491
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_TAKE_WHILE_COLLECT_U64.
3492
+ [MACRO] VEC_DEQUE_INTO_ITER_TAKE_WHILE_COLLECT %out_vec, %iter_reg, %pred_fn
3493
+ EXPAND VEC_DEQUE_INTO_ITER_TAKE_WHILE_COLLECT_U64 %out_vec, %iter_reg, %pred_fn
3494
+ [END_MACRO]
3495
+
3496
+ [MACRO] VEC_DEQUE_INTO_ITER_SKIP_WHILE_COLLECT_U64 %out_vec, %iter_reg, %pred_fn
3497
+ EXPAND VEC_DEQUE_ITER_SKIP_WHILE_COLLECT_U64 %out_vec, %iter_reg, %pred_fn
3498
+ [END_MACRO]
3499
+
3500
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_SKIP_WHILE_COLLECT_U64.
3501
+ [MACRO] VEC_DEQUE_INTO_ITER_SKIP_WHILE_COLLECT %out_vec, %iter_reg, %pred_fn
3502
+ EXPAND VEC_DEQUE_INTO_ITER_SKIP_WHILE_COLLECT_U64 %out_vec, %iter_reg, %pred_fn
3503
+ [END_MACRO]
3504
+
3505
+ [MACRO] VEC_DEQUE_INTO_ITER_ENUMERATE_COLLECT_U64 %out_vec, %iter_reg
3506
+ EXPAND VEC_DEQUE_ITER_ENUMERATE_COLLECT_U64 %out_vec, %iter_reg
3507
+ [END_MACRO]
3508
+
3509
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_ENUMERATE_COLLECT_U64.
3510
+ [MACRO] VEC_DEQUE_INTO_ITER_ENUMERATE_COLLECT %out_vec, %iter_reg
3511
+ EXPAND VEC_DEQUE_INTO_ITER_ENUMERATE_COLLECT_U64 %out_vec, %iter_reg
3512
+ [END_MACRO]
3513
+
3514
+ [MACRO] VEC_DEQUE_INTO_ITER_ZIP_COLLECT_U64 %out_vec, %left_iter, %right_iter
3515
+ EXPAND VEC_DEQUE_ITER_ZIP_COLLECT_U64 %out_vec, %left_iter, %right_iter
3516
+ [END_MACRO]
3517
+
3518
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_ZIP_COLLECT_U64.
3519
+ [MACRO] VEC_DEQUE_INTO_ITER_ZIP_COLLECT %out_vec, %left_iter, %right_iter
3520
+ EXPAND VEC_DEQUE_INTO_ITER_ZIP_COLLECT_U64 %out_vec, %left_iter, %right_iter
3521
+ [END_MACRO]
3522
+
3523
+ [MACRO] VEC_DEQUE_INTO_ITER_CHAIN_COLLECT_U64 %out_vec, %left_iter, %right_iter
3524
+ EXPAND VEC_DEQUE_ITER_CHAIN_COLLECT_U64 %out_vec, %left_iter, %right_iter
3525
+ [END_MACRO]
3526
+
3527
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_CHAIN_COLLECT_U64.
3528
+ [MACRO] VEC_DEQUE_INTO_ITER_CHAIN_COLLECT %out_vec, %left_iter, %right_iter
3529
+ EXPAND VEC_DEQUE_INTO_ITER_CHAIN_COLLECT_U64 %out_vec, %left_iter, %right_iter
3530
+ [END_MACRO]
3531
+
3532
+ [MACRO] VEC_DEQUE_INTO_ITER_BY_REF_COLLECT_U64 %out_vec, %iter_reg
3533
+ EXPAND VEC_DEQUE_ITER_BY_REF_COLLECT_U64 %out_vec, %iter_reg
3534
+ [END_MACRO]
3535
+
3536
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_BY_REF_COLLECT_U64.
3537
+ [MACRO] VEC_DEQUE_INTO_ITER_BY_REF_COLLECT %out_vec, %iter_reg
3538
+ EXPAND VEC_DEQUE_INTO_ITER_BY_REF_COLLECT_U64 %out_vec, %iter_reg
3539
+ [END_MACRO]
3540
+
3541
+ [MACRO] VEC_DEQUE_INTO_ITER_FUSE_COLLECT_U64 %out_vec, %iter_reg
3542
+ EXPAND VEC_DEQUE_ITER_FUSE_COLLECT_U64 %out_vec, %iter_reg
3543
+ [END_MACRO]
3544
+
3545
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_FUSE_COLLECT_U64.
3546
+ [MACRO] VEC_DEQUE_INTO_ITER_FUSE_COLLECT %out_vec, %iter_reg
3547
+ EXPAND VEC_DEQUE_INTO_ITER_FUSE_COLLECT_U64 %out_vec, %iter_reg
3548
+ [END_MACRO]
3549
+
3550
+ [MACRO] VEC_DEQUE_INTO_ITER_PEEKABLE_COLLECT_U64 %out_vec, %iter_reg
3551
+ EXPAND VEC_DEQUE_ITER_PEEKABLE_COLLECT_U64 %out_vec, %iter_reg
3552
+ [END_MACRO]
3553
+
3554
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_PEEKABLE_COLLECT_U64.
3555
+ [MACRO] VEC_DEQUE_INTO_ITER_PEEKABLE_COLLECT %out_vec, %iter_reg
3556
+ EXPAND VEC_DEQUE_INTO_ITER_PEEKABLE_COLLECT_U64 %out_vec, %iter_reg
3557
+ [END_MACRO]
3558
+
3559
+ [MACRO] VEC_DEQUE_INTO_ITER_ARRAY_CHUNKS_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %chunk_size
3560
+ EXPAND VEC_DEQUE_ITER_ARRAY_CHUNKS_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %chunk_size
3561
+ [END_MACRO]
3562
+
3563
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_ARRAY_CHUNKS_COLLECT_U64.
3564
+ [MACRO] VEC_DEQUE_INTO_ITER_ARRAY_CHUNKS_COLLECT %out_ok, %out_vec, %iter_reg, %chunk_size
3565
+ EXPAND VEC_DEQUE_INTO_ITER_ARRAY_CHUNKS_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %chunk_size
3566
+ [END_MACRO]
3567
+
3568
+ [MACRO] VEC_DEQUE_INTO_ITER_MAP_WINDOWS_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %window_size, %map_fn
3569
+ EXPAND VEC_DEQUE_ITER_MAP_WINDOWS_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %window_size, %map_fn
3570
+ [END_MACRO]
3571
+
3572
+ // Rust method-name alias over VEC_DEQUE_INTO_ITER_MAP_WINDOWS_COLLECT_U64.
3573
+ [MACRO] VEC_DEQUE_INTO_ITER_MAP_WINDOWS_COLLECT %out_ok, %out_vec, %iter_reg, %window_size, %map_fn
3574
+ EXPAND VEC_DEQUE_INTO_ITER_MAP_WINDOWS_COLLECT_U64 %out_ok, %out_vec, %iter_reg, %window_size, %map_fn
3575
+ [END_MACRO]
3576
+
3577
+ [MACRO] VEC_DEQUE_RESERVE %deque_reg, %additional
3578
+ call @sa_vec_deque_reserve(&%deque_reg, %additional)
3579
+ [END_MACRO]
3580
+
3581
+ [MACRO] VEC_DEQUE_RESERVE_EXACT %deque_reg, %additional
3582
+ call @sa_vec_deque_reserve_exact(&%deque_reg, %additional)
3583
+ [END_MACRO]
3584
+
3585
+ [MACRO] VEC_DEQUE_TRY_RESERVE %out_ok, %deque_reg, %additional
3586
+ %out_ok = call @sa_vec_deque_try_reserve(&%deque_reg, %additional)
3587
+ [END_MACRO]
3588
+
3589
+ [MACRO] VEC_DEQUE_TRY_RESERVE_EXACT %out_ok, %deque_reg, %additional
3590
+ %out_ok = call @sa_vec_deque_try_reserve_exact(&%deque_reg, %additional)
3591
+ [END_MACRO]
3592
+
3593
+ [MACRO] VEC_DEQUE_TRY_SHRINK_TO %out_ok, %deque_reg, %min_capacity
3594
+ %out_ok = call @sa_vec_deque_try_shrink_to(&%deque_reg, %min_capacity)
3595
+ [END_MACRO]
3596
+
3597
+ [MACRO] VEC_DEQUE_TRY_SHRINK_TO_FIT %out_ok, %deque_reg
3598
+ %out_ok = call @sa_vec_deque_try_shrink_to_fit(&%deque_reg)
3599
+ [END_MACRO]
3600
+
3601
+ [MACRO] VEC_DEQUE_SHRINK_TO %deque_reg, %min_capacity
3602
+ call @sa_vec_deque_shrink_to(&%deque_reg, %min_capacity)
3603
+ [END_MACRO]
3604
+
3605
+ [MACRO] VEC_DEQUE_SHRINK_TO_FIT %deque_reg
3606
+ call @sa_vec_deque_shrink_to_fit(&%deque_reg)
3607
+ [END_MACRO]
3608
+
3609
+ [MACRO] VEC_DEQUE_AS_SLICES %out_front_slice, %out_back_slice, %deque_reg
3610
+ %out_front_slice = alloc Slice_SIZE
3611
+ %out_back_slice = alloc Slice_SIZE
3612
+ call @sa_vec_deque_as_slices(&%deque_reg, &%out_front_slice, &%out_back_slice)
3613
+ [END_MACRO]
3614
+
3615
+ [MACRO] VEC_DEQUE_AS_MUT_SLICES %out_front_slice, %out_back_slice, %deque_reg
3616
+ %out_front_slice = alloc Slice_SIZE
3617
+ %out_back_slice = alloc Slice_SIZE
3618
+ call @sa_vec_deque_as_mut_slices(&%deque_reg, &%out_front_slice, &%out_back_slice)
3619
+ [END_MACRO]
3620
+
3621
+ [MACRO] VEC_DEQUE_MAKE_CONTIGUOUS %out_slice, %deque_reg
3622
+ %out_slice = alloc Slice_SIZE
3623
+ call @sa_vec_deque_make_contiguous(&%deque_reg, &%out_slice)
3624
+ [END_MACRO]
3625
+
3626
+ [MACRO] DEFAULT_HASHER_WRITE_VEC_DEQUE_U64 %hasher, %deque_reg
3627
+ EXPAND VEC_DEQUE_MAKE_CONTIGUOUS __vec_deque_hash_slice_%hasher, %deque_reg
3628
+ EXPAND DEFAULT_HASHER_WRITE_SLICE_U64 %hasher, __vec_deque_hash_slice_%hasher
3629
+ !__vec_deque_hash_slice_%hasher
3630
+ [END_MACRO]
3631
+
3632
+ // Rust method-name alias over DEFAULT_HASHER_WRITE_VEC_DEQUE_U64.
3633
+ [MACRO] DEFAULT_HASHER_WRITE_VEC_DEQUE %hasher, %deque_reg
3634
+ EXPAND DEFAULT_HASHER_WRITE_VEC_DEQUE_U64 %hasher, %deque_reg
3635
+ [END_MACRO]
3636
+
3637
+ [MACRO] VEC_DEQUE_HASH_U64 %out_hash, %deque_reg
3638
+ __vec_deque_hash_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
3639
+ EXPAND DEFAULT_HASHER_NEW __vec_deque_hash_hasher_%out_hash
3640
+ EXPAND DEFAULT_HASHER_WRITE_VEC_DEQUE_U64 __vec_deque_hash_hasher_%out_hash, %deque_reg
3641
+ EXPAND DEFAULT_HASHER_FINISH %out_hash, __vec_deque_hash_hasher_%out_hash
3642
+ [END_MACRO]
3643
+
3644
+ // Rust method-name alias over VEC_DEQUE_HASH_U64.
3645
+ [MACRO] VEC_DEQUE_HASH %out_hash, %deque_reg
3646
+ EXPAND VEC_DEQUE_HASH_U64 %out_hash, %deque_reg
3647
+ [END_MACRO]
3648
+
3649
+ [MACRO] BUILD_HASHER_DEFAULT_HASH_ONE_VEC_DEQUE_U64 %out_hash, %builder, %deque_reg
3650
+ __build_hash_one_vec_deque_u64_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
3651
+ EXPAND BUILD_HASHER_DEFAULT_BUILD __build_hash_one_vec_deque_u64_hasher_%out_hash, %builder
3652
+ EXPAND DEFAULT_HASHER_WRITE_VEC_DEQUE_U64 __build_hash_one_vec_deque_u64_hasher_%out_hash, %deque_reg
3653
+ EXPAND DEFAULT_HASHER_FINISH %out_hash, __build_hash_one_vec_deque_u64_hasher_%out_hash
3654
+ [END_MACRO]
3655
+
3656
+ // Rust method-name alias over BUILD_HASHER_DEFAULT_HASH_ONE_VEC_DEQUE_U64.
3657
+ [MACRO] BUILD_HASHER_DEFAULT_HASH_ONE_VEC_DEQUE %out_hash, %builder, %deque_reg
3658
+ EXPAND BUILD_HASHER_DEFAULT_HASH_ONE_VEC_DEQUE_U64 %out_hash, %builder, %deque_reg
3659
+ [END_MACRO]
3660
+
3661
+ [MACRO] RANDOM_STATE_HASH_ONE_VEC_DEQUE_U64 %out_hash, %state, %deque_reg
3662
+ __random_state_hash_one_vec_deque_u64_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
3663
+ EXPAND RANDOM_STATE_BUILD __random_state_hash_one_vec_deque_u64_hasher_%out_hash, %state
3664
+ EXPAND DEFAULT_HASHER_WRITE_VEC_DEQUE_U64 __random_state_hash_one_vec_deque_u64_hasher_%out_hash, %deque_reg
3665
+ EXPAND DEFAULT_HASHER_FINISH %out_hash, __random_state_hash_one_vec_deque_u64_hasher_%out_hash
3666
+ [END_MACRO]
3667
+
3668
+ // Rust method-name alias over RANDOM_STATE_HASH_ONE_VEC_DEQUE_U64.
3669
+ [MACRO] RANDOM_STATE_HASH_ONE_VEC_DEQUE %out_hash, %state, %deque_reg
3670
+ EXPAND RANDOM_STATE_HASH_ONE_VEC_DEQUE_U64 %out_hash, %state, %deque_reg
3671
+ [END_MACRO]
3672
+
3673
+ [MACRO] VEC_DEQUE_RETAIN_U64 %out_len, %deque_reg, %pred_fn
3674
+ call @vec_deque_force_contiguous(&%deque_reg)
3675
+ __vec_deque_retain_view_%out_len = & %deque_reg
3676
+ __vec_deque_retain_ptr_%out_len = load __vec_deque_retain_view_%out_len+VecDeque_buf as ptr
3677
+ __vec_deque_retain_len_%out_len = load __vec_deque_retain_view_%out_len+VecDeque_len as u64
3678
+ __vec_deque_retain_read_slot_%out_len = stack_alloc 8
3679
+ __vec_deque_retain_write_slot_%out_len = stack_alloc 8
3680
+ store __vec_deque_retain_read_slot_%out_len+0, 0 as u64
3681
+ store __vec_deque_retain_write_slot_%out_len+0, 0 as u64
3682
+ jmp L_VEC_DEQUE_RETAIN_HEAD_%out_len
3683
+
3684
+ L_VEC_DEQUE_RETAIN_HEAD_%out_len:
3685
+ __vec_deque_retain_read_%out_len = load __vec_deque_retain_read_slot_%out_len+0 as u64
3686
+ __vec_deque_retain_done_%out_len = eq __vec_deque_retain_read_%out_len, __vec_deque_retain_len_%out_len
3687
+ br __vec_deque_retain_done_%out_len -> L_VEC_DEQUE_RETAIN_DONE_%out_len, L_VEC_DEQUE_RETAIN_BODY_%out_len
3688
+
3689
+ L_VEC_DEQUE_RETAIN_BODY_%out_len:
3690
+ __vec_deque_retain_read_off_%out_len = mul __vec_deque_retain_read_%out_len, VecDeque_SLOT_SIZE
3691
+ __vec_deque_retain_read_ptr_%out_len = ptr_add __vec_deque_retain_ptr_%out_len, __vec_deque_retain_read_off_%out_len
3692
+ __vec_deque_retain_value_%out_len = load __vec_deque_retain_read_ptr_%out_len+0 as u64
3693
+ __vec_deque_retain_pred_%out_len = call %pred_fn(__vec_deque_retain_value_%out_len)
3694
+ __vec_deque_retain_keep_%out_len = ne __vec_deque_retain_pred_%out_len, 0
3695
+ br __vec_deque_retain_keep_%out_len -> L_VEC_DEQUE_RETAIN_KEEP_%out_len, L_VEC_DEQUE_RETAIN_SKIP_%out_len
3696
+
3697
+ L_VEC_DEQUE_RETAIN_KEEP_%out_len:
3698
+ __vec_deque_retain_write_%out_len = load __vec_deque_retain_write_slot_%out_len+0 as u64
3699
+ __vec_deque_retain_write_off_%out_len = mul __vec_deque_retain_write_%out_len, VecDeque_SLOT_SIZE
3700
+ __vec_deque_retain_write_ptr_%out_len = ptr_add __vec_deque_retain_ptr_%out_len, __vec_deque_retain_write_off_%out_len
3701
+ store __vec_deque_retain_write_ptr_%out_len+0, __vec_deque_retain_value_%out_len as u64
3702
+ __vec_deque_retain_next_write_%out_len = add __vec_deque_retain_write_%out_len, 1
3703
+ store __vec_deque_retain_write_slot_%out_len+0, __vec_deque_retain_next_write_%out_len as u64
3704
+ !__vec_deque_retain_next_write_%out_len
3705
+ !__vec_deque_retain_write_ptr_%out_len
3706
+ !__vec_deque_retain_write_off_%out_len
3707
+ !__vec_deque_retain_write_%out_len
3708
+ jmp L_VEC_DEQUE_RETAIN_NEXT_%out_len
3709
+
3710
+ L_VEC_DEQUE_RETAIN_SKIP_%out_len:
3711
+ jmp L_VEC_DEQUE_RETAIN_NEXT_%out_len
3712
+
3713
+ L_VEC_DEQUE_RETAIN_NEXT_%out_len:
3714
+ __vec_deque_retain_next_read_%out_len = add __vec_deque_retain_read_%out_len, 1
3715
+ store __vec_deque_retain_read_slot_%out_len+0, __vec_deque_retain_next_read_%out_len as u64
3716
+ !__vec_deque_retain_next_read_%out_len
3717
+ !__vec_deque_retain_keep_%out_len
3718
+ !__vec_deque_retain_pred_%out_len
3719
+ !__vec_deque_retain_value_%out_len
3720
+ !__vec_deque_retain_read_ptr_%out_len
3721
+ !__vec_deque_retain_read_off_%out_len
3722
+ !__vec_deque_retain_done_%out_len
3723
+ !__vec_deque_retain_read_%out_len
3724
+ jmp L_VEC_DEQUE_RETAIN_HEAD_%out_len
3725
+
3726
+ L_VEC_DEQUE_RETAIN_DONE_%out_len:
3727
+ %out_len = load __vec_deque_retain_write_slot_%out_len+0 as u64
3728
+ store __vec_deque_retain_view_%out_len+VecDeque_len, %out_len as u64
3729
+ store __vec_deque_retain_view_%out_len+VecDeque_head, 0 as u64
3730
+ !__vec_deque_retain_done_%out_len
3731
+ !__vec_deque_retain_read_%out_len
3732
+ !__vec_deque_retain_len_%out_len
3733
+ !__vec_deque_retain_ptr_%out_len
3734
+ !__vec_deque_retain_view_%out_len
3735
+ [END_MACRO]
3736
+
3737
+ [MACRO] VEC_DEQUE_RETAIN_MUT_U64 %out_len, %deque_reg, %pred_fn
3738
+ call @vec_deque_force_contiguous(&%deque_reg)
3739
+ __vec_deque_retain_mut_view_%out_len = & %deque_reg
3740
+ __vec_deque_retain_mut_ptr_%out_len = load __vec_deque_retain_mut_view_%out_len+VecDeque_buf as ptr
3741
+ __vec_deque_retain_mut_len_%out_len = load __vec_deque_retain_mut_view_%out_len+VecDeque_len as u64
3742
+ __vec_deque_retain_mut_read_slot_%out_len = stack_alloc 8
3743
+ __vec_deque_retain_mut_write_slot_%out_len = stack_alloc 8
3744
+ store __vec_deque_retain_mut_read_slot_%out_len+0, 0 as u64
3745
+ store __vec_deque_retain_mut_write_slot_%out_len+0, 0 as u64
3746
+ jmp L_VEC_DEQUE_RETAIN_MUT_HEAD_%out_len
3747
+
3748
+ L_VEC_DEQUE_RETAIN_MUT_HEAD_%out_len:
3749
+ __vec_deque_retain_mut_read_%out_len = load __vec_deque_retain_mut_read_slot_%out_len+0 as u64
3750
+ __vec_deque_retain_mut_done_%out_len = eq __vec_deque_retain_mut_read_%out_len, __vec_deque_retain_mut_len_%out_len
3751
+ br __vec_deque_retain_mut_done_%out_len -> L_VEC_DEQUE_RETAIN_MUT_DONE_%out_len, L_VEC_DEQUE_RETAIN_MUT_BODY_%out_len
3752
+
3753
+ L_VEC_DEQUE_RETAIN_MUT_BODY_%out_len:
3754
+ __vec_deque_retain_mut_read_off_%out_len = mul __vec_deque_retain_mut_read_%out_len, VecDeque_SLOT_SIZE
3755
+ __vec_deque_retain_mut_read_ptr_%out_len = ptr_add __vec_deque_retain_mut_ptr_%out_len, __vec_deque_retain_mut_read_off_%out_len
3756
+ __vec_deque_retain_mut_pred_%out_len = call %pred_fn(__vec_deque_retain_mut_read_ptr_%out_len)
3757
+ __vec_deque_retain_mut_keep_%out_len = ne __vec_deque_retain_mut_pred_%out_len, 0
3758
+ br __vec_deque_retain_mut_keep_%out_len -> L_VEC_DEQUE_RETAIN_MUT_KEEP_%out_len, L_VEC_DEQUE_RETAIN_MUT_SKIP_%out_len
3759
+
3760
+ L_VEC_DEQUE_RETAIN_MUT_KEEP_%out_len:
3761
+ __vec_deque_retain_mut_value_%out_len = load __vec_deque_retain_mut_read_ptr_%out_len+0 as u64
3762
+ __vec_deque_retain_mut_write_%out_len = load __vec_deque_retain_mut_write_slot_%out_len+0 as u64
3763
+ __vec_deque_retain_mut_write_off_%out_len = mul __vec_deque_retain_mut_write_%out_len, VecDeque_SLOT_SIZE
3764
+ __vec_deque_retain_mut_write_ptr_%out_len = ptr_add __vec_deque_retain_mut_ptr_%out_len, __vec_deque_retain_mut_write_off_%out_len
3765
+ store __vec_deque_retain_mut_write_ptr_%out_len+0, __vec_deque_retain_mut_value_%out_len as u64
3766
+ __vec_deque_retain_mut_next_write_%out_len = add __vec_deque_retain_mut_write_%out_len, 1
3767
+ store __vec_deque_retain_mut_write_slot_%out_len+0, __vec_deque_retain_mut_next_write_%out_len as u64
3768
+ !__vec_deque_retain_mut_next_write_%out_len
3769
+ !__vec_deque_retain_mut_write_ptr_%out_len
3770
+ !__vec_deque_retain_mut_write_off_%out_len
3771
+ !__vec_deque_retain_mut_write_%out_len
3772
+ !__vec_deque_retain_mut_value_%out_len
3773
+ jmp L_VEC_DEQUE_RETAIN_MUT_NEXT_%out_len
3774
+
3775
+ L_VEC_DEQUE_RETAIN_MUT_SKIP_%out_len:
3776
+ jmp L_VEC_DEQUE_RETAIN_MUT_NEXT_%out_len
3777
+
3778
+ L_VEC_DEQUE_RETAIN_MUT_NEXT_%out_len:
3779
+ __vec_deque_retain_mut_next_read_%out_len = add __vec_deque_retain_mut_read_%out_len, 1
3780
+ store __vec_deque_retain_mut_read_slot_%out_len+0, __vec_deque_retain_mut_next_read_%out_len as u64
3781
+ !__vec_deque_retain_mut_next_read_%out_len
3782
+ !__vec_deque_retain_mut_keep_%out_len
3783
+ !__vec_deque_retain_mut_pred_%out_len
3784
+ !__vec_deque_retain_mut_read_ptr_%out_len
3785
+ !__vec_deque_retain_mut_read_off_%out_len
3786
+ !__vec_deque_retain_mut_done_%out_len
3787
+ !__vec_deque_retain_mut_read_%out_len
3788
+ jmp L_VEC_DEQUE_RETAIN_MUT_HEAD_%out_len
3789
+
3790
+ L_VEC_DEQUE_RETAIN_MUT_DONE_%out_len:
3791
+ %out_len = load __vec_deque_retain_mut_write_slot_%out_len+0 as u64
3792
+ store __vec_deque_retain_mut_view_%out_len+VecDeque_len, %out_len as u64
3793
+ store __vec_deque_retain_mut_view_%out_len+VecDeque_head, 0 as u64
3794
+ !__vec_deque_retain_mut_done_%out_len
3795
+ !__vec_deque_retain_mut_read_%out_len
3796
+ !__vec_deque_retain_mut_len_%out_len
3797
+ !__vec_deque_retain_mut_ptr_%out_len
3798
+ !__vec_deque_retain_mut_view_%out_len
3799
+ [END_MACRO]
3800
+
3801
+ [MACRO] VEC_DEQUE_RETAIN %out_len, %deque_reg, %pred_fn
3802
+ EXPAND VEC_DEQUE_RETAIN_U64 %out_len, %deque_reg, %pred_fn
3803
+ [END_MACRO]
3804
+
3805
+ [MACRO] VEC_DEQUE_RETAIN_MUT %out_len, %deque_reg, %pred_fn
3806
+ EXPAND VEC_DEQUE_RETAIN_MUT_U64 %out_len, %deque_reg, %pred_fn
3807
+ [END_MACRO]
3808
+
3809
+ [MACRO] VEC_DEQUE_EXTRACT_IF_U64 %out_len, %out_vec, %deque_reg, %pred_fn
3810
+ call @vec_deque_force_contiguous(&%deque_reg)
3811
+ __vec_deque_extract_view_%out_len = & %deque_reg
3812
+ __vec_deque_extract_ptr_%out_len = load __vec_deque_extract_view_%out_len+VecDeque_buf as ptr
3813
+ __vec_deque_extract_len_%out_len = load __vec_deque_extract_view_%out_len+VecDeque_len as u64
3814
+ EXPAND VEC_WITH_CAPACITY_U64 %out_vec, __vec_deque_extract_len_%out_len
3815
+ __vec_deque_extract_read_slot_%out_len = stack_alloc 8
3816
+ __vec_deque_extract_write_slot_%out_len = stack_alloc 8
3817
+ store __vec_deque_extract_read_slot_%out_len+0, 0 as u64
3818
+ store __vec_deque_extract_write_slot_%out_len+0, 0 as u64
3819
+ jmp L_VEC_DEQUE_EXTRACT_HEAD_%out_len
3820
+
3821
+ L_VEC_DEQUE_EXTRACT_HEAD_%out_len:
3822
+ __vec_deque_extract_read_%out_len = load __vec_deque_extract_read_slot_%out_len+0 as u64
3823
+ __vec_deque_extract_done_%out_len = eq __vec_deque_extract_read_%out_len, __vec_deque_extract_len_%out_len
3824
+ br __vec_deque_extract_done_%out_len -> L_VEC_DEQUE_EXTRACT_DONE_%out_len, L_VEC_DEQUE_EXTRACT_BODY_%out_len
3825
+
3826
+ L_VEC_DEQUE_EXTRACT_BODY_%out_len:
3827
+ __vec_deque_extract_read_off_%out_len = mul __vec_deque_extract_read_%out_len, VecDeque_SLOT_SIZE
3828
+ __vec_deque_extract_read_ptr_%out_len = ptr_add __vec_deque_extract_ptr_%out_len, __vec_deque_extract_read_off_%out_len
3829
+ __vec_deque_extract_value_%out_len = load __vec_deque_extract_read_ptr_%out_len+0 as u64
3830
+ __vec_deque_extract_pred_%out_len = call %pred_fn(__vec_deque_extract_value_%out_len)
3831
+ __vec_deque_extract_take_%out_len = ne __vec_deque_extract_pred_%out_len, 0
3832
+ br __vec_deque_extract_take_%out_len -> L_VEC_DEQUE_EXTRACT_TAKE_%out_len, L_VEC_DEQUE_EXTRACT_KEEP_%out_len
3833
+
3834
+ L_VEC_DEQUE_EXTRACT_TAKE_%out_len:
3835
+ EXPAND VEC_PUSH_U64 %out_vec, __vec_deque_extract_value_%out_len
3836
+ jmp L_VEC_DEQUE_EXTRACT_NEXT_%out_len
3837
+
3838
+ L_VEC_DEQUE_EXTRACT_KEEP_%out_len:
3839
+ __vec_deque_extract_write_%out_len = load __vec_deque_extract_write_slot_%out_len+0 as u64
3840
+ __vec_deque_extract_write_off_%out_len = mul __vec_deque_extract_write_%out_len, VecDeque_SLOT_SIZE
3841
+ __vec_deque_extract_write_ptr_%out_len = ptr_add __vec_deque_extract_ptr_%out_len, __vec_deque_extract_write_off_%out_len
3842
+ store __vec_deque_extract_write_ptr_%out_len+0, __vec_deque_extract_value_%out_len as u64
3843
+ __vec_deque_extract_next_write_%out_len = add __vec_deque_extract_write_%out_len, 1
3844
+ store __vec_deque_extract_write_slot_%out_len+0, __vec_deque_extract_next_write_%out_len as u64
3845
+ !__vec_deque_extract_next_write_%out_len
3846
+ !__vec_deque_extract_write_ptr_%out_len
3847
+ !__vec_deque_extract_write_off_%out_len
3848
+ !__vec_deque_extract_write_%out_len
3849
+ jmp L_VEC_DEQUE_EXTRACT_NEXT_%out_len
3850
+
3851
+ L_VEC_DEQUE_EXTRACT_NEXT_%out_len:
3852
+ __vec_deque_extract_next_read_%out_len = add __vec_deque_extract_read_%out_len, 1
3853
+ store __vec_deque_extract_read_slot_%out_len+0, __vec_deque_extract_next_read_%out_len as u64
3854
+ !__vec_deque_extract_next_read_%out_len
3855
+ !__vec_deque_extract_take_%out_len
3856
+ !__vec_deque_extract_pred_%out_len
3857
+ !__vec_deque_extract_value_%out_len
3858
+ !__vec_deque_extract_read_ptr_%out_len
3859
+ !__vec_deque_extract_read_off_%out_len
3860
+ !__vec_deque_extract_done_%out_len
3861
+ !__vec_deque_extract_read_%out_len
3862
+ jmp L_VEC_DEQUE_EXTRACT_HEAD_%out_len
3863
+
3864
+ L_VEC_DEQUE_EXTRACT_DONE_%out_len:
3865
+ %out_len = load __vec_deque_extract_write_slot_%out_len+0 as u64
3866
+ store __vec_deque_extract_view_%out_len+VecDeque_len, %out_len as u64
3867
+ store __vec_deque_extract_view_%out_len+VecDeque_head, 0 as u64
3868
+ !__vec_deque_extract_done_%out_len
3869
+ !__vec_deque_extract_read_%out_len
3870
+ !__vec_deque_extract_len_%out_len
3871
+ !__vec_deque_extract_ptr_%out_len
3872
+ !__vec_deque_extract_view_%out_len
3873
+ [END_MACRO]
3874
+
3875
+ [MACRO] VEC_DEQUE_EXTRACT_IF %out_len, %out_vec, %deque_reg, %pred_fn
3876
+ EXPAND VEC_DEQUE_EXTRACT_IF_U64 %out_len, %out_vec, %deque_reg, %pred_fn
3877
+ [END_MACRO]
3878
+
3879
+ [MACRO] VEC_DEQUE_SPLICE_U64 %out_ok, %out_vec, %deque_reg, %start, %length, %replacement_slice
3880
+ EXPAND VEC_DEQUE_MAKE_CONTIGUOUS __vec_deque_splice_slice_%out_ok, %deque_reg
3881
+ EXPAND VEC_FROM_SLICE_U64 __vec_deque_splice_vec_%out_ok, __vec_deque_splice_slice_%out_ok
3882
+ EXPAND VEC_SPLICE_U64 %out_ok, %out_vec, __vec_deque_splice_vec_%out_ok, %start, %length, %replacement_slice
3883
+ __vec_deque_splice_hit_%out_ok = ne %out_ok, 0
3884
+ br __vec_deque_splice_hit_%out_ok -> L_VEC_DEQUE_SPLICE_REBUILD_%out_ok, L_VEC_DEQUE_SPLICE_MISS_%out_ok
3885
+
3886
+ L_VEC_DEQUE_SPLICE_REBUILD_%out_ok:
3887
+ EXPAND VEC_DEQUE_CLEAR %deque_reg
3888
+ EXPAND VEC_LEN __vec_deque_splice_new_len_%out_ok, __vec_deque_splice_vec_%out_ok
3889
+ __vec_deque_splice_idx_slot_%out_ok = stack_alloc 8
3890
+ store __vec_deque_splice_idx_slot_%out_ok+0, 0 as u64
3891
+ jmp L_VEC_DEQUE_SPLICE_COPY_HEAD_%out_ok
3892
+
3893
+ L_VEC_DEQUE_SPLICE_COPY_HEAD_%out_ok:
3894
+ __vec_deque_splice_idx_%out_ok = load __vec_deque_splice_idx_slot_%out_ok+0 as u64
3895
+ __vec_deque_splice_copy_done_%out_ok = eq __vec_deque_splice_idx_%out_ok, __vec_deque_splice_new_len_%out_ok
3896
+ br __vec_deque_splice_copy_done_%out_ok -> L_VEC_DEQUE_SPLICE_COPY_END_%out_ok, L_VEC_DEQUE_SPLICE_COPY_BODY_%out_ok
3897
+
3898
+ L_VEC_DEQUE_SPLICE_COPY_BODY_%out_ok:
3899
+ EXPAND VEC_GET_U64 __vec_deque_splice_value_%out_ok, __vec_deque_splice_vec_%out_ok, __vec_deque_splice_idx_%out_ok
3900
+ EXPAND VEC_DEQUE_PUSH_BACK %deque_reg, __vec_deque_splice_value_%out_ok
3901
+ __vec_deque_splice_next_%out_ok = add __vec_deque_splice_idx_%out_ok, 1
3902
+ store __vec_deque_splice_idx_slot_%out_ok+0, __vec_deque_splice_next_%out_ok as u64
3903
+ !__vec_deque_splice_next_%out_ok
3904
+ !__vec_deque_splice_value_%out_ok
3905
+ !__vec_deque_splice_copy_done_%out_ok
3906
+ !__vec_deque_splice_idx_%out_ok
3907
+ jmp L_VEC_DEQUE_SPLICE_COPY_HEAD_%out_ok
3908
+
3909
+ L_VEC_DEQUE_SPLICE_COPY_END_%out_ok:
3910
+ !__vec_deque_splice_copy_done_%out_ok
3911
+ !__vec_deque_splice_idx_%out_ok
3912
+ !__vec_deque_splice_new_len_%out_ok
3913
+ !__vec_deque_splice_hit_%out_ok
3914
+ jmp L_VEC_DEQUE_SPLICE_DONE_%out_ok
3915
+
3916
+ L_VEC_DEQUE_SPLICE_MISS_%out_ok:
3917
+ !__vec_deque_splice_hit_%out_ok
3918
+ jmp L_VEC_DEQUE_SPLICE_DONE_%out_ok
3919
+
3920
+ L_VEC_DEQUE_SPLICE_DONE_%out_ok:
3921
+ EXPAND VEC_FREE __vec_deque_splice_vec_%out_ok
3922
+ !__vec_deque_splice_slice_%out_ok
3923
+ [END_MACRO]
3924
+
3925
+ // Rust method-name alias over VEC_DEQUE_SPLICE_U64.
3926
+ [MACRO] VEC_DEQUE_SPLICE %out_ok, %out_vec, %deque_reg, %start, %length, %replacement_slice
3927
+ EXPAND VEC_DEQUE_SPLICE_U64 %out_ok, %out_vec, %deque_reg, %start, %length, %replacement_slice
3928
+ [END_MACRO]
3929
+
3930
+ [MACRO] VEC_DEQUE_TRY_FRONT_MUT_PTR %out_ok, %out_ptr, %deque_reg
3931
+ __vec_deque_front_mut_slot_%out_ok = stack_alloc 8
3932
+ __vec_deque_front_mut_ok_%out_ok = call @sa_vec_deque_try_front_mut_ptr(&%deque_reg, &__vec_deque_front_mut_slot_%out_ok)
3933
+ %out_ptr = load __vec_deque_front_mut_slot_%out_ok+0 as ptr
3934
+ %out_ok = __vec_deque_front_mut_ok_%out_ok
3935
+ [END_MACRO]
3936
+
3937
+ [MACRO] VEC_DEQUE_FRONT_MUT_PTR %out_ok, %out_ptr, %deque_reg
3938
+ EXPAND VEC_DEQUE_TRY_FRONT_MUT_PTR %out_ok, %out_ptr, %deque_reg
3939
+ [END_MACRO]
3940
+
3941
+ [MACRO] VEC_DEQUE_FRONT_MUT %out_ok, %out_ptr, %deque_reg
3942
+ EXPAND VEC_DEQUE_TRY_FRONT_MUT_PTR %out_ok, %out_ptr, %deque_reg
3943
+ [END_MACRO]
3944
+
3945
+ [MACRO] VEC_DEQUE_TRY_BACK_MUT_PTR %out_ok, %out_ptr, %deque_reg
3946
+ __vec_deque_back_mut_slot_%out_ok = stack_alloc 8
3947
+ __vec_deque_back_mut_ok_%out_ok = call @sa_vec_deque_try_back_mut_ptr(&%deque_reg, &__vec_deque_back_mut_slot_%out_ok)
3948
+ %out_ptr = load __vec_deque_back_mut_slot_%out_ok+0 as ptr
3949
+ %out_ok = __vec_deque_back_mut_ok_%out_ok
3950
+ [END_MACRO]
3951
+
3952
+ [MACRO] VEC_DEQUE_BACK_MUT_PTR %out_ok, %out_ptr, %deque_reg
3953
+ EXPAND VEC_DEQUE_TRY_BACK_MUT_PTR %out_ok, %out_ptr, %deque_reg
3954
+ [END_MACRO]
3955
+
3956
+ [MACRO] VEC_DEQUE_BACK_MUT %out_ok, %out_ptr, %deque_reg
3957
+ EXPAND VEC_DEQUE_TRY_BACK_MUT_PTR %out_ok, %out_ptr, %deque_reg
3958
+ [END_MACRO]
3959
+
3960
+ [MACRO] VEC_DEQUE_TRY_INSERT %out_ok, %deque_reg, %index, %value
3961
+ %out_ok = call @sa_vec_deque_try_insert(&%deque_reg, %index, %value)
3962
+ [END_MACRO]
3963
+
3964
+ [MACRO] VEC_DEQUE_TRY_INSERT_MUT_PTR %out_ok, %out_ptr, %deque_reg, %index, %value
3965
+ __vec_deque_insert_mut_ok_%out_ok = call @sa_vec_deque_try_insert(&%deque_reg, %index, %value)
3966
+ br __vec_deque_insert_mut_ok_%out_ok -> L_VEC_DEQUE_INSERT_MUT_PTR_OK_%out_ok, L_VEC_DEQUE_INSERT_MUT_PTR_MISS_%out_ok
3967
+ L_VEC_DEQUE_INSERT_MUT_PTR_OK_%out_ok:
3968
+ __vec_deque_insert_mut_slot_%out_ok = stack_alloc 8
3969
+ __vec_deque_insert_mut_get_ok_%out_ok = call @sa_vec_deque_try_get_mut_ptr(&%deque_reg, %index, &__vec_deque_insert_mut_slot_%out_ok)
3970
+ %out_ptr = load __vec_deque_insert_mut_slot_%out_ok+0 as ptr
3971
+ %out_ok = __vec_deque_insert_mut_get_ok_%out_ok
3972
+ !__vec_deque_insert_mut_ok_%out_ok
3973
+ jmp L_VEC_DEQUE_INSERT_MUT_PTR_END_%out_ok
3974
+ L_VEC_DEQUE_INSERT_MUT_PTR_MISS_%out_ok:
3975
+ %out_ptr = 0 as ptr
3976
+ %out_ok = add 0, 0
3977
+ !__vec_deque_insert_mut_ok_%out_ok
3978
+ L_VEC_DEQUE_INSERT_MUT_PTR_END_%out_ok:
3979
+ [END_MACRO]
3980
+
3981
+ [MACRO] VEC_DEQUE_INSERT_MUT_PTR %out_ok, %out_ptr, %deque_reg, %index, %value
3982
+ EXPAND VEC_DEQUE_TRY_INSERT_MUT_PTR %out_ok, %out_ptr, %deque_reg, %index, %value
3983
+ [END_MACRO]
3984
+
3985
+ [MACRO] VEC_DEQUE_INSERT_MUT %out_ok, %out_ptr, %deque_reg, %index, %value
3986
+ EXPAND VEC_DEQUE_TRY_INSERT_MUT_PTR %out_ok, %out_ptr, %deque_reg, %index, %value
3987
+ [END_MACRO]
3988
+
3989
+ [MACRO] VEC_DEQUE_INSERT %out_ok, %deque_reg, %index, %value
3990
+ EXPAND VEC_DEQUE_TRY_INSERT %out_ok, %deque_reg, %index, %value
3991
+ [END_MACRO]
3992
+
3993
+ [MACRO] VEC_DEQUE_TRY_REMOVE %out_ok, %out_value, %deque_reg, %index
3994
+ __vec_deque_remove_slot_%out_ok = stack_alloc 8
3995
+ __vec_deque_remove_ok_%out_ok = call @sa_vec_deque_try_remove(&%deque_reg, %index, &__vec_deque_remove_slot_%out_ok)
3996
+ %out_value = load __vec_deque_remove_slot_%out_ok+0 as u64
3997
+ %out_ok = __vec_deque_remove_ok_%out_ok
3998
+ [END_MACRO]
3999
+
4000
+ [MACRO] VEC_DEQUE_REMOVE %out_ok, %out_value, %deque_reg, %index
4001
+ EXPAND VEC_DEQUE_TRY_REMOVE %out_ok, %out_value, %deque_reg, %index
4002
+ [END_MACRO]
4003
+
4004
+ [MACRO] VEC_DEQUE_TRY_SWAP_REMOVE_FRONT %out_ok, %out_value, %deque_reg, %index
4005
+ __vec_deque_swap_remove_front_slot_%out_ok = stack_alloc 8
4006
+ __vec_deque_swap_remove_front_ok_%out_ok = call @sa_vec_deque_try_swap_remove_front(&%deque_reg, %index, &__vec_deque_swap_remove_front_slot_%out_ok)
4007
+ %out_value = load __vec_deque_swap_remove_front_slot_%out_ok+0 as u64
4008
+ %out_ok = __vec_deque_swap_remove_front_ok_%out_ok
4009
+ [END_MACRO]
4010
+
4011
+ [MACRO] VEC_DEQUE_SWAP_REMOVE_FRONT %out_ok, %out_value, %deque_reg, %index
4012
+ EXPAND VEC_DEQUE_TRY_SWAP_REMOVE_FRONT %out_ok, %out_value, %deque_reg, %index
4013
+ [END_MACRO]
4014
+
4015
+ [MACRO] VEC_DEQUE_TRY_SWAP_REMOVE_BACK %out_ok, %out_value, %deque_reg, %index
4016
+ __vec_deque_swap_remove_back_slot_%out_ok = stack_alloc 8
4017
+ __vec_deque_swap_remove_back_ok_%out_ok = call @sa_vec_deque_try_swap_remove_back(&%deque_reg, %index, &__vec_deque_swap_remove_back_slot_%out_ok)
4018
+ %out_value = load __vec_deque_swap_remove_back_slot_%out_ok+0 as u64
4019
+ %out_ok = __vec_deque_swap_remove_back_ok_%out_ok
4020
+ [END_MACRO]
4021
+
4022
+ [MACRO] VEC_DEQUE_SWAP_REMOVE_BACK %out_ok, %out_value, %deque_reg, %index
4023
+ EXPAND VEC_DEQUE_TRY_SWAP_REMOVE_BACK %out_ok, %out_value, %deque_reg, %index
4024
+ [END_MACRO]
4025
+
4026
+ [MACRO] VEC_DEQUE_TRUNCATE %deque_reg, %new_len
4027
+ call @sa_vec_deque_truncate(&%deque_reg, %new_len)
4028
+ [END_MACRO]
4029
+
4030
+ // Rust method-name alias: VecDeque::truncate_front.
4031
+ [MACRO] VEC_DEQUE_TRUNCATE_FRONT %deque_reg, %new_len
4032
+ call @sa_vec_deque_truncate_front(&%deque_reg, %new_len)
4033
+ [END_MACRO]
4034
+
4035
+ // Rust VecDeque::binary_search via make_contiguous + slice binary search.
4036
+ [MACRO] VEC_DEQUE_TRY_BINARY_SEARCH_U64 %out_ok, %out_index, %deque_reg, %needle
4037
+ EXPAND VEC_DEQUE_MAKE_CONTIGUOUS __vec_deque_binary_search_slice_%out_ok, %deque_reg
4038
+ EXPAND SLICE_TRY_BINARY_SEARCH_U64 %out_ok, %out_index, __vec_deque_binary_search_slice_%out_ok, %needle
4039
+ !__vec_deque_binary_search_slice_%out_ok
4040
+ [END_MACRO]
4041
+
4042
+ // Rust method-name alias over VEC_DEQUE_TRY_BINARY_SEARCH_U64.
4043
+ [MACRO] VEC_DEQUE_TRY_BINARY_SEARCH %out_ok, %out_index, %deque_reg, %needle
4044
+ EXPAND VEC_DEQUE_TRY_BINARY_SEARCH_U64 %out_ok, %out_index, %deque_reg, %needle
4045
+ [END_MACRO]
4046
+
4047
+ [MACRO] VEC_DEQUE_BINARY_SEARCH_U64 %out_ok, %out_index, %deque_reg, %needle
4048
+ EXPAND VEC_DEQUE_TRY_BINARY_SEARCH_U64 %out_ok, %out_index, %deque_reg, %needle
4049
+ [END_MACRO]
4050
+
4051
+ // Rust method-name alias over VEC_DEQUE_BINARY_SEARCH_U64.
4052
+ [MACRO] VEC_DEQUE_BINARY_SEARCH %out_ok, %out_index, %deque_reg, %needle
4053
+ EXPAND VEC_DEQUE_BINARY_SEARCH_U64 %out_ok, %out_index, %deque_reg, %needle
4054
+ [END_MACRO]
4055
+
4056
+ // Rust VecDeque::partition_point via make_contiguous + slice partition_point.
4057
+ [MACRO] VEC_DEQUE_PARTITION_POINT_U64 %out_index, %deque_reg, %pred_fn
4058
+ EXPAND VEC_DEQUE_MAKE_CONTIGUOUS __vec_deque_partition_point_slice_%out_index, %deque_reg
4059
+ EXPAND SLICE_PARTITION_POINT_U64 %out_index, __vec_deque_partition_point_slice_%out_index, %pred_fn
4060
+ !__vec_deque_partition_point_slice_%out_index
4061
+ [END_MACRO]
4062
+
4063
+ // Rust method-name alias over VEC_DEQUE_PARTITION_POINT_U64.
4064
+ [MACRO] VEC_DEQUE_PARTITION_POINT %out_index, %deque_reg, %pred_fn
4065
+ EXPAND VEC_DEQUE_PARTITION_POINT_U64 %out_index, %deque_reg, %pred_fn
4066
+ [END_MACRO]
4067
+
4068
+ [MACRO] VEC_DEQUE_RESIZE %out_ok, %deque_reg, %new_len, %value
4069
+ __vec_deque_rs_lang_%out_ok = load %deque_reg+VecDeque_len as u64
4070
+ __vec_deque_rs_shrink_%out_ok = ule %new_len, __vec_deque_rs_lang_%out_ok
4071
+ br __vec_deque_rs_shrink_%out_ok -> L_VEC_DEQUE_RS_SHRINK_%out_ok, L_VEC_DEQUE_RS_GROW_%out_ok
4072
+ L_VEC_DEQUE_RS_SHRINK_%out_ok:
4073
+ call @sa_vec_deque_truncate(&%deque_reg, %new_len)
4074
+ !__vec_deque_rs_shrink_%out_ok
4075
+ !__vec_deque_rs_lang_%out_ok
4076
+ %out_ok = 1
4077
+ jmp L_VEC_DEQUE_RS_END_%out_ok
4078
+ L_VEC_DEQUE_RS_GROW_%out_ok:
4079
+ __vec_deque_rs_target_slot_%out_ok = stack_alloc 8
4080
+ store __vec_deque_rs_target_slot_%out_ok+0, %new_len as u64
4081
+ %out_ok = 1
4082
+ jmp L_VEC_DEQUE_RS_GROW_HEAD_%out_ok
4083
+ L_VEC_DEQUE_RS_GROW_HEAD_%out_ok:
4084
+ __vec_deque_rs_cur_%out_ok = load %deque_reg+VecDeque_len as u64
4085
+ __vec_deque_rs_tgt_%out_ok = load __vec_deque_rs_target_slot_%out_ok+0 as u64
4086
+ __vec_deque_rs_done_%out_ok = eq __vec_deque_rs_cur_%out_ok, __vec_deque_rs_tgt_%out_ok
4087
+ br __vec_deque_rs_done_%out_ok -> L_VEC_DEQUE_RS_GROW_DONE_%out_ok, L_VEC_DEQUE_RS_GROW_BODY_%out_ok
4088
+ L_VEC_DEQUE_RS_GROW_BODY_%out_ok:
4089
+ call @sa_vec_deque_push_back(&%deque_reg, %value)
4090
+ !__vec_deque_rs_cur_%out_ok
4091
+ !__vec_deque_rs_tgt_%out_ok
4092
+ !__vec_deque_rs_done_%out_ok
4093
+ jmp L_VEC_DEQUE_RS_GROW_HEAD_%out_ok
4094
+ L_VEC_DEQUE_RS_GROW_DONE_%out_ok:
4095
+ !__vec_deque_rs_cur_%out_ok
4096
+ !__vec_deque_rs_tgt_%out_ok
4097
+ !__vec_deque_rs_done_%out_ok
4098
+ !__vec_deque_rs_shrink_%out_ok
4099
+ !__vec_deque_rs_lang_%out_ok
4100
+ jmp L_VEC_DEQUE_RS_END_%out_ok
4101
+ L_VEC_DEQUE_RS_END_%out_ok:
4102
+ [END_MACRO]
4103
+
4104
+ [MACRO] VEC_DEQUE_RESIZE_U64 %out_ok, %deque_reg, %new_len, %value
4105
+ EXPAND VEC_DEQUE_RESIZE %out_ok, %deque_reg, %new_len, %value
4106
+ [END_MACRO]
4107
+
4108
+ [MACRO] VEC_DEQUE_RESIZE_WITH %out_ok, %deque_reg, %new_len, %gen_fn
4109
+ __vec_deque_rsw_lang_%out_ok = load %deque_reg+VecDeque_len as u64
4110
+ __vec_deque_rsw_shrink_%out_ok = ule %new_len, __vec_deque_rsw_lang_%out_ok
4111
+ br __vec_deque_rsw_shrink_%out_ok -> L_VEC_DEQUE_RSW_SHRINK_%out_ok, L_VEC_DEQUE_RSW_GROW_%out_ok
4112
+ L_VEC_DEQUE_RSW_SHRINK_%out_ok:
4113
+ call @sa_vec_deque_truncate(&%deque_reg, %new_len)
4114
+ !__vec_deque_rsw_shrink_%out_ok
4115
+ !__vec_deque_rsw_lang_%out_ok
4116
+ %out_ok = 1
4117
+ jmp L_VEC_DEQUE_RSW_END_%out_ok
4118
+ L_VEC_DEQUE_RSW_GROW_%out_ok:
4119
+ __vec_deque_rsw_target_slot_%out_ok = stack_alloc 8
4120
+ store __vec_deque_rsw_target_slot_%out_ok+0, %new_len as u64
4121
+ %out_ok = 1
4122
+ jmp L_VEC_DEQUE_RSW_GROW_HEAD_%out_ok
4123
+ L_VEC_DEQUE_RSW_GROW_HEAD_%out_ok:
4124
+ __vec_deque_rsw_cur_%out_ok = load %deque_reg+VecDeque_len as u64
4125
+ __vec_deque_rsw_tgt_%out_ok = load __vec_deque_rsw_target_slot_%out_ok+0 as u64
4126
+ __vec_deque_rsw_done_%out_ok = eq __vec_deque_rsw_cur_%out_ok, __vec_deque_rsw_tgt_%out_ok
4127
+ br __vec_deque_rsw_done_%out_ok -> L_VEC_DEQUE_RSW_GROW_DONE_%out_ok, L_VEC_DEQUE_RSW_GROW_BODY_%out_ok
4128
+ L_VEC_DEQUE_RSW_GROW_BODY_%out_ok:
4129
+ __vec_deque_rsw_value_%out_ok = call %gen_fn()
4130
+ call @sa_vec_deque_push_back(&%deque_reg, __vec_deque_rsw_value_%out_ok)
4131
+ !__vec_deque_rsw_value_%out_ok
4132
+ !__vec_deque_rsw_cur_%out_ok
4133
+ !__vec_deque_rsw_tgt_%out_ok
4134
+ !__vec_deque_rsw_done_%out_ok
4135
+ jmp L_VEC_DEQUE_RSW_GROW_HEAD_%out_ok
4136
+ L_VEC_DEQUE_RSW_GROW_DONE_%out_ok:
4137
+ !__vec_deque_rsw_cur_%out_ok
4138
+ !__vec_deque_rsw_tgt_%out_ok
4139
+ !__vec_deque_rsw_done_%out_ok
4140
+ !__vec_deque_rsw_shrink_%out_ok
4141
+ !__vec_deque_rsw_lang_%out_ok
4142
+ jmp L_VEC_DEQUE_RSW_END_%out_ok
4143
+ L_VEC_DEQUE_RSW_END_%out_ok:
4144
+ [END_MACRO]
4145
+
4146
+ [MACRO] VEC_DEQUE_RESIZE_WITH_U64 %out_ok, %deque_reg, %new_len, %gen_fn
4147
+ EXPAND VEC_DEQUE_RESIZE_WITH %out_ok, %deque_reg, %new_len, %gen_fn
4148
+ [END_MACRO]
4149
+
4150
+ [MACRO] VEC_DEQUE_TRY_RESIZE_WITHIN_CAPACITY %out_ok, %deque_reg, %new_len, %value
4151
+ __vec_deque_trswc_len_%out_ok = load %deque_reg+VecDeque_len as u64
4152
+ __vec_deque_trswc_shrink_%out_ok = ule %new_len, __vec_deque_trswc_len_%out_ok
4153
+ br __vec_deque_trswc_shrink_%out_ok -> L_VEC_DEQUE_TRSWC_SHRINK_%out_ok, L_VEC_DEQUE_TRSWC_GROW_CHECK_%out_ok
4154
+ L_VEC_DEQUE_TRSWC_SHRINK_%out_ok:
4155
+ call @sa_vec_deque_truncate(&%deque_reg, %new_len)
4156
+ !__vec_deque_trswc_shrink_%out_ok
4157
+ !__vec_deque_trswc_len_%out_ok
4158
+ %out_ok = 1
4159
+ jmp L_VEC_DEQUE_TRSWC_END_%out_ok
4160
+ L_VEC_DEQUE_TRSWC_GROW_CHECK_%out_ok:
4161
+ __vec_deque_trswc_cap_%out_ok = load %deque_reg+VecDeque_cap as u64
4162
+ __vec_deque_trswc_room_ok_%out_ok = ule %new_len, __vec_deque_trswc_cap_%out_ok
4163
+ br __vec_deque_trswc_room_ok_%out_ok -> L_VEC_DEQUE_TRSWC_GROW_%out_ok, L_VEC_DEQUE_TRSWC_MISS_%out_ok
4164
+ L_VEC_DEQUE_TRSWC_MISS_%out_ok:
4165
+ !__vec_deque_trswc_room_ok_%out_ok
4166
+ !__vec_deque_trswc_cap_%out_ok
4167
+ !__vec_deque_trswc_shrink_%out_ok
4168
+ !__vec_deque_trswc_len_%out_ok
4169
+ %out_ok = 0
4170
+ jmp L_VEC_DEQUE_TRSWC_END_%out_ok
4171
+ L_VEC_DEQUE_TRSWC_GROW_%out_ok:
4172
+ __vec_deque_trswc_target_slot_%out_ok = stack_alloc 8
4173
+ store __vec_deque_trswc_target_slot_%out_ok+0, %new_len as u64
4174
+ !__vec_deque_trswc_room_ok_%out_ok
4175
+ !__vec_deque_trswc_cap_%out_ok
4176
+ %out_ok = 1
4177
+ jmp L_VEC_DEQUE_TRSWC_GROW_HEAD_%out_ok
4178
+ L_VEC_DEQUE_TRSWC_GROW_HEAD_%out_ok:
4179
+ __vec_deque_trswc_cur_%out_ok = load %deque_reg+VecDeque_len as u64
4180
+ __vec_deque_trswc_tgt_%out_ok = load __vec_deque_trswc_target_slot_%out_ok+0 as u64
4181
+ __vec_deque_trswc_done_%out_ok = eq __vec_deque_trswc_cur_%out_ok, __vec_deque_trswc_tgt_%out_ok
4182
+ br __vec_deque_trswc_done_%out_ok -> L_VEC_DEQUE_TRSWC_GROW_DONE_%out_ok, L_VEC_DEQUE_TRSWC_GROW_BODY_%out_ok
4183
+ L_VEC_DEQUE_TRSWC_GROW_BODY_%out_ok:
4184
+ call @sa_vec_deque_push_back(&%deque_reg, %value)
4185
+ !__vec_deque_trswc_cur_%out_ok
4186
+ !__vec_deque_trswc_tgt_%out_ok
4187
+ !__vec_deque_trswc_done_%out_ok
4188
+ jmp L_VEC_DEQUE_TRSWC_GROW_HEAD_%out_ok
4189
+ L_VEC_DEQUE_TRSWC_GROW_DONE_%out_ok:
4190
+ !__vec_deque_trswc_cur_%out_ok
4191
+ !__vec_deque_trswc_tgt_%out_ok
4192
+ !__vec_deque_trswc_done_%out_ok
4193
+ !__vec_deque_trswc_shrink_%out_ok
4194
+ !__vec_deque_trswc_len_%out_ok
4195
+ jmp L_VEC_DEQUE_TRSWC_END_%out_ok
4196
+ L_VEC_DEQUE_TRSWC_END_%out_ok:
4197
+ [END_MACRO]
4198
+
4199
+ [MACRO] VEC_DEQUE_TRY_RESIZE_WITHIN_CAPACITY_U64 %out_ok, %deque_reg, %new_len, %value
4200
+ EXPAND VEC_DEQUE_TRY_RESIZE_WITHIN_CAPACITY %out_ok, %deque_reg, %new_len, %value
4201
+ [END_MACRO]
4202
+
4203
+ [MACRO] VEC_DEQUE_TRY_RESIZE_WITH_WITHIN_CAPACITY %out_ok, %deque_reg, %new_len, %gen_fn
4204
+ __vec_deque_trswwc_len_%out_ok = load %deque_reg+VecDeque_len as u64
4205
+ __vec_deque_trswwc_shrink_%out_ok = ule %new_len, __vec_deque_trswwc_len_%out_ok
4206
+ br __vec_deque_trswwc_shrink_%out_ok -> L_VEC_DEQUE_TRSWWC_SHRINK_%out_ok, L_VEC_DEQUE_TRSWWC_GROW_CHECK_%out_ok
4207
+ L_VEC_DEQUE_TRSWWC_SHRINK_%out_ok:
4208
+ call @sa_vec_deque_truncate(&%deque_reg, %new_len)
4209
+ !__vec_deque_trswwc_shrink_%out_ok
4210
+ !__vec_deque_trswwc_len_%out_ok
4211
+ %out_ok = 1
4212
+ jmp L_VEC_DEQUE_TRSWWC_END_%out_ok
4213
+ L_VEC_DEQUE_TRSWWC_GROW_CHECK_%out_ok:
4214
+ __vec_deque_trswwc_cap_%out_ok = load %deque_reg+VecDeque_cap as u64
4215
+ __vec_deque_trswwc_room_ok_%out_ok = ule %new_len, __vec_deque_trswwc_cap_%out_ok
4216
+ br __vec_deque_trswwc_room_ok_%out_ok -> L_VEC_DEQUE_TRSWWC_GROW_%out_ok, L_VEC_DEQUE_TRSWWC_MISS_%out_ok
4217
+ L_VEC_DEQUE_TRSWWC_MISS_%out_ok:
4218
+ !__vec_deque_trswwc_room_ok_%out_ok
4219
+ !__vec_deque_trswwc_cap_%out_ok
4220
+ !__vec_deque_trswwc_shrink_%out_ok
4221
+ !__vec_deque_trswwc_len_%out_ok
4222
+ %out_ok = 0
4223
+ jmp L_VEC_DEQUE_TRSWWC_END_%out_ok
4224
+ L_VEC_DEQUE_TRSWWC_GROW_%out_ok:
4225
+ __vec_deque_trswwc_target_slot_%out_ok = stack_alloc 8
4226
+ store __vec_deque_trswwc_target_slot_%out_ok+0, %new_len as u64
4227
+ !__vec_deque_trswwc_room_ok_%out_ok
4228
+ !__vec_deque_trswwc_cap_%out_ok
4229
+ %out_ok = 1
4230
+ jmp L_VEC_DEQUE_TRSWWC_GROW_HEAD_%out_ok
4231
+ L_VEC_DEQUE_TRSWWC_GROW_HEAD_%out_ok:
4232
+ __vec_deque_trswwc_cur_%out_ok = load %deque_reg+VecDeque_len as u64
4233
+ __vec_deque_trswwc_tgt_%out_ok = load __vec_deque_trswwc_target_slot_%out_ok+0 as u64
4234
+ __vec_deque_trswwc_done_%out_ok = eq __vec_deque_trswwc_cur_%out_ok, __vec_deque_trswwc_tgt_%out_ok
4235
+ br __vec_deque_trswwc_done_%out_ok -> L_VEC_DEQUE_TRSWWC_GROW_DONE_%out_ok, L_VEC_DEQUE_TRSWWC_GROW_BODY_%out_ok
4236
+ L_VEC_DEQUE_TRSWWC_GROW_BODY_%out_ok:
4237
+ __vec_deque_trswwc_value_%out_ok = call %gen_fn()
4238
+ call @sa_vec_deque_push_back(&%deque_reg, __vec_deque_trswwc_value_%out_ok)
4239
+ !__vec_deque_trswwc_value_%out_ok
4240
+ !__vec_deque_trswwc_cur_%out_ok
4241
+ !__vec_deque_trswwc_tgt_%out_ok
4242
+ !__vec_deque_trswwc_done_%out_ok
4243
+ jmp L_VEC_DEQUE_TRSWWC_GROW_HEAD_%out_ok
4244
+ L_VEC_DEQUE_TRSWWC_GROW_DONE_%out_ok:
4245
+ !__vec_deque_trswwc_cur_%out_ok
4246
+ !__vec_deque_trswwc_tgt_%out_ok
4247
+ !__vec_deque_trswwc_done_%out_ok
4248
+ !__vec_deque_trswwc_shrink_%out_ok
4249
+ !__vec_deque_trswwc_len_%out_ok
4250
+ jmp L_VEC_DEQUE_TRSWWC_END_%out_ok
4251
+ L_VEC_DEQUE_TRSWWC_END_%out_ok:
4252
+ [END_MACRO]
4253
+
4254
+ [MACRO] VEC_DEQUE_TRY_RESIZE_WITH_WITHIN_CAPACITY_U64 %out_ok, %deque_reg, %new_len, %gen_fn
4255
+ EXPAND VEC_DEQUE_TRY_RESIZE_WITH_WITHIN_CAPACITY %out_ok, %deque_reg, %new_len, %gen_fn
4256
+ [END_MACRO]
4257
+
4258
+ [MACRO] VEC_DEQUE_RESIZE_WITHIN_CAPACITY %out_ok, %deque_reg, %new_len, %value
4259
+ EXPAND VEC_DEQUE_TRY_RESIZE_WITHIN_CAPACITY %out_ok, %deque_reg, %new_len, %value
4260
+ [END_MACRO]
4261
+
4262
+ [MACRO] VEC_DEQUE_RESIZE_WITHIN_CAPACITY_U64 %out_ok, %deque_reg, %new_len, %value
4263
+ EXPAND VEC_DEQUE_TRY_RESIZE_WITHIN_CAPACITY %out_ok, %deque_reg, %new_len, %value
4264
+ [END_MACRO]
4265
+
4266
+ [MACRO] VEC_DEQUE_RESIZE_WITH_WITHIN_CAPACITY %out_ok, %deque_reg, %new_len, %gen_fn
4267
+ EXPAND VEC_DEQUE_TRY_RESIZE_WITH_WITHIN_CAPACITY %out_ok, %deque_reg, %new_len, %gen_fn
4268
+ [END_MACRO]
4269
+
4270
+ [MACRO] VEC_DEQUE_RESIZE_WITH_WITHIN_CAPACITY_U64 %out_ok, %deque_reg, %new_len, %gen_fn
4271
+ EXPAND VEC_DEQUE_TRY_RESIZE_WITH_WITHIN_CAPACITY %out_ok, %deque_reg, %new_len, %gen_fn
4272
+ [END_MACRO]
4273
+
4274
+ [MACRO] VEC_DEQUE_TRY_EXTEND_FROM_SLICE_U64 %out_ok, %deque_reg, %src_slice
4275
+ __vec_deque_efswc_len_%out_ok = load %deque_reg+VecDeque_len as u64
4276
+ __vec_deque_efswc_cap_%out_ok = load %deque_reg+VecDeque_cap as u64
4277
+ __vec_deque_efswc_src_len_%out_ok = load %src_slice+Slice_len as u64
4278
+ __vec_deque_efswc_total_%out_ok = add __vec_deque_efswc_len_%out_ok, __vec_deque_efswc_src_len_%out_ok
4279
+ __vec_deque_efswc_room_ok_%out_ok = ule __vec_deque_efswc_total_%out_ok, __vec_deque_efswc_cap_%out_ok
4280
+ br __vec_deque_efswc_room_ok_%out_ok -> L_VEC_DEQUE_EFSWC_INIT_%out_ok, L_VEC_DEQUE_EFSWC_MISS_ROOM_%out_ok
4281
+ L_VEC_DEQUE_EFSWC_INIT_%out_ok:
4282
+ __vec_deque_efswc_idx_slot_%out_ok = stack_alloc 8
4283
+ store __vec_deque_efswc_idx_slot_%out_ok+0, 0 as u64
4284
+ jmp L_VEC_DEQUE_EFSWC_HEAD_%out_ok
4285
+ L_VEC_DEQUE_EFSWC_HEAD_%out_ok:
4286
+ __vec_deque_efswc_idx_%out_ok = load __vec_deque_efswc_idx_slot_%out_ok+0 as u64
4287
+ __vec_deque_efswc_done_%out_ok = eq __vec_deque_efswc_idx_%out_ok, __vec_deque_efswc_src_len_%out_ok
4288
+ br __vec_deque_efswc_done_%out_ok -> L_VEC_DEQUE_EFSWC_DONE_%out_ok, L_VEC_DEQUE_EFSWC_BODY_%out_ok
4289
+ L_VEC_DEQUE_EFSWC_BODY_%out_ok:
4290
+ __vec_deque_efswc_src_ptr_%out_ok = load %src_slice+Slice_ptr as ptr
4291
+ __vec_deque_efswc_off_%out_ok = mul __vec_deque_efswc_idx_%out_ok, 8
4292
+ __vec_deque_efswc_elem_ptr_%out_ok = ptr_add __vec_deque_efswc_src_ptr_%out_ok, __vec_deque_efswc_off_%out_ok
4293
+ __vec_deque_efswc_value_%out_ok = load __vec_deque_efswc_elem_ptr_%out_ok+0 as u64
4294
+ call @sa_vec_deque_push_back(&%deque_reg, __vec_deque_efswc_value_%out_ok)
4295
+ __vec_deque_efswc_next_%out_ok = add __vec_deque_efswc_idx_%out_ok, 1
4296
+ store __vec_deque_efswc_idx_slot_%out_ok+0, __vec_deque_efswc_next_%out_ok as u64
4297
+ !__vec_deque_efswc_next_%out_ok
4298
+ !__vec_deque_efswc_value_%out_ok
4299
+ !__vec_deque_efswc_elem_ptr_%out_ok
4300
+ !__vec_deque_efswc_off_%out_ok
4301
+ !__vec_deque_efswc_src_ptr_%out_ok
4302
+ !__vec_deque_efswc_done_%out_ok
4303
+ !__vec_deque_efswc_idx_%out_ok
4304
+ jmp L_VEC_DEQUE_EFSWC_HEAD_%out_ok
4305
+ L_VEC_DEQUE_EFSWC_DONE_%out_ok:
4306
+ !__vec_deque_efswc_done_%out_ok
4307
+ !__vec_deque_efswc_idx_%out_ok
4308
+ !__vec_deque_efswc_total_%out_ok
4309
+ !__vec_deque_efswc_room_ok_%out_ok
4310
+ !__vec_deque_efswc_cap_%out_ok
4311
+ !__vec_deque_efswc_len_%out_ok
4312
+ !__vec_deque_efswc_src_len_%out_ok
4313
+ %out_ok = 1
4314
+ jmp L_VEC_DEQUE_EFSWC_END_%out_ok
4315
+ L_VEC_DEQUE_EFSWC_MISS_ROOM_%out_ok:
4316
+ !__vec_deque_efswc_room_ok_%out_ok
4317
+ !__vec_deque_efswc_total_%out_ok
4318
+ !__vec_deque_efswc_cap_%out_ok
4319
+ !__vec_deque_efswc_len_%out_ok
4320
+ !__vec_deque_efswc_src_len_%out_ok
4321
+ %out_ok = 0
4322
+ jmp L_VEC_DEQUE_EFSWC_END_%out_ok
4323
+ L_VEC_DEQUE_EFSWC_END_%out_ok:
4324
+ [END_MACRO]
4325
+
4326
+ // Rust method-name alias over VEC_DEQUE_TRY_EXTEND_FROM_SLICE_U64.
4327
+ [MACRO] VEC_DEQUE_TRY_EXTEND_FROM_SLICE %out_ok, %deque_reg, %src_slice
4328
+ EXPAND VEC_DEQUE_TRY_EXTEND_FROM_SLICE_U64 %out_ok, %deque_reg, %src_slice
4329
+ [END_MACRO]
4330
+
4331
+ [MACRO] VEC_DEQUE_EXTEND_FROM_SLICE_U64 %out_ok, %deque_reg, %src_slice
4332
+ EXPAND VEC_DEQUE_TRY_EXTEND_FROM_SLICE_U64 %out_ok, %deque_reg, %src_slice
4333
+ [END_MACRO]
4334
+
4335
+ [MACRO] VEC_DEQUE_EXTEND_FROM_SLICE %out_ok, %deque_reg, %src_slice
4336
+ EXPAND VEC_DEQUE_TRY_EXTEND_FROM_SLICE_U64 %out_ok, %deque_reg, %src_slice
4337
+ [END_MACRO]
4338
+
4339
+ [MACRO] VEC_DEQUE_TRY_EXTEND_CHARS_U64 %out_ok, %deque_reg, %src_slice
4340
+ EXPAND VEC_DEQUE_TRY_EXTEND_FROM_SLICE_U64 %out_ok, %deque_reg, %src_slice
4341
+ [END_MACRO]
4342
+
4343
+ // Rust method-name alias over VEC_DEQUE_TRY_EXTEND_CHARS_U64.
4344
+ [MACRO] VEC_DEQUE_TRY_EXTEND_CHARS %out_ok, %deque_reg, %src_slice
4345
+ EXPAND VEC_DEQUE_TRY_EXTEND_CHARS_U64 %out_ok, %deque_reg, %src_slice
4346
+ [END_MACRO]
4347
+
4348
+ [MACRO] VEC_DEQUE_EXTEND_CHARS_U64 %out_ok, %deque_reg, %src_slice
4349
+ EXPAND VEC_DEQUE_TRY_EXTEND_CHARS_U64 %out_ok, %deque_reg, %src_slice
4350
+ [END_MACRO]
4351
+
4352
+ // Rust method-name alias over VEC_DEQUE_EXTEND_CHARS_U64.
4353
+ [MACRO] VEC_DEQUE_EXTEND_CHARS %out_ok, %deque_reg, %src_slice
4354
+ EXPAND VEC_DEQUE_EXTEND_CHARS_U64 %out_ok, %deque_reg, %src_slice
4355
+ [END_MACRO]
4356
+
4357
+ [MACRO] VEC_DEQUE_TRY_EXTEND_FROM_SLICE_N_WITHIN_CAPACITY_U64 %out_ok, %deque_reg, %src_slice, %count
4358
+ __vec_deque_efsnwc_src_len_%out_ok = load %src_slice+Slice_len as u64
4359
+ __vec_deque_efsnwc_total_%out_ok = mul __vec_deque_efsnwc_src_len_%out_ok, %count
4360
+ __vec_deque_efsnwc_len_%out_ok = load %deque_reg+VecDeque_len as u64
4361
+ __vec_deque_efsnwc_cap_%out_ok = load %deque_reg+VecDeque_cap as u64
4362
+ __vec_deque_efsnwc_new_len_%out_ok = add __vec_deque_efsnwc_len_%out_ok, __vec_deque_efsnwc_total_%out_ok
4363
+ __vec_deque_efsnwc_room_ok_%out_ok = ule __vec_deque_efsnwc_new_len_%out_ok, __vec_deque_efsnwc_cap_%out_ok
4364
+ br __vec_deque_efsnwc_room_ok_%out_ok -> L_VEC_DEQUE_EFSNWC_SETUP_%out_ok, L_VEC_DEQUE_EFSNWC_MISS_%out_ok
4365
+ L_VEC_DEQUE_EFSNWC_SETUP_%out_ok:
4366
+ __vec_deque_efsnwc_idx_slot_%out_ok = stack_alloc 8
4367
+ store __vec_deque_efsnwc_idx_slot_%out_ok+0, 0 as u64
4368
+ !__vec_deque_efsnwc_room_ok_%out_ok
4369
+ !__vec_deque_efsnwc_new_len_%out_ok
4370
+ !__vec_deque_efsnwc_cap_%out_ok
4371
+ !__vec_deque_efsnwc_len_%out_ok
4372
+ !__vec_deque_efsnwc_total_%out_ok
4373
+ !__vec_deque_efsnwc_src_len_%out_ok
4374
+ jmp L_VEC_DEQUE_EFSNWC_HEAD_%out_ok
4375
+ L_VEC_DEQUE_EFSNWC_HEAD_%out_ok:
4376
+ __vec_deque_efsnwc_idx_%out_ok = load __vec_deque_efsnwc_idx_slot_%out_ok+0 as u64
4377
+ __vec_deque_efsnwc_done_%out_ok = eq __vec_deque_efsnwc_idx_%out_ok, %count
4378
+ br __vec_deque_efsnwc_done_%out_ok -> L_VEC_DEQUE_EFSNWC_DONE_%out_ok, L_VEC_DEQUE_EFSNWC_BODY_%out_ok
4379
+ L_VEC_DEQUE_EFSNWC_BODY_%out_ok:
4380
+ EXPAND VEC_DEQUE_TRY_EXTEND_FROM_SLICE_U64 __vec_deque_efsnwc_push_ok_%out_ok, %deque_reg, %src_slice
4381
+ br __vec_deque_efsnwc_push_ok_%out_ok -> L_VEC_DEQUE_EFSNWC_NEXT_%out_ok, L_VEC_DEQUE_EFSNWC_FAIL_%out_ok
4382
+ L_VEC_DEQUE_EFSNWC_NEXT_%out_ok:
4383
+ __vec_deque_efsnwc_next_%out_ok = add __vec_deque_efsnwc_idx_%out_ok, 1
4384
+ store __vec_deque_efsnwc_idx_slot_%out_ok+0, __vec_deque_efsnwc_next_%out_ok as u64
4385
+ !__vec_deque_efsnwc_next_%out_ok
4386
+ !__vec_deque_efsnwc_push_ok_%out_ok
4387
+ !__vec_deque_efsnwc_done_%out_ok
4388
+ !__vec_deque_efsnwc_idx_%out_ok
4389
+ jmp L_VEC_DEQUE_EFSNWC_HEAD_%out_ok
4390
+ L_VEC_DEQUE_EFSNWC_FAIL_%out_ok:
4391
+ %out_ok = add 0, 0
4392
+ !__vec_deque_efsnwc_push_ok_%out_ok
4393
+ !__vec_deque_efsnwc_done_%out_ok
4394
+ !__vec_deque_efsnwc_idx_%out_ok
4395
+ jmp L_VEC_DEQUE_EFSNWC_END_%out_ok
4396
+ L_VEC_DEQUE_EFSNWC_DONE_%out_ok:
4397
+ %out_ok = add 0, 1
4398
+ !__vec_deque_efsnwc_done_%out_ok
4399
+ !__vec_deque_efsnwc_idx_%out_ok
4400
+ jmp L_VEC_DEQUE_EFSNWC_END_%out_ok
4401
+ L_VEC_DEQUE_EFSNWC_MISS_%out_ok:
4402
+ %out_ok = add 0, 0
4403
+ !__vec_deque_efsnwc_room_ok_%out_ok
4404
+ !__vec_deque_efsnwc_new_len_%out_ok
4405
+ !__vec_deque_efsnwc_cap_%out_ok
4406
+ !__vec_deque_efsnwc_len_%out_ok
4407
+ !__vec_deque_efsnwc_total_%out_ok
4408
+ !__vec_deque_efsnwc_src_len_%out_ok
4409
+ L_VEC_DEQUE_EFSNWC_END_%out_ok:
4410
+ [END_MACRO]
4411
+
4412
+ // Rust method-name alias over VEC_DEQUE_TRY_EXTEND_FROM_SLICE_N_WITHIN_CAPACITY_U64.
4413
+ [MACRO] VEC_DEQUE_TRY_EXTEND_FROM_SLICE_N_WITHIN_CAPACITY %out_ok, %deque_reg, %src_slice, %count
4414
+ EXPAND VEC_DEQUE_TRY_EXTEND_FROM_SLICE_N_WITHIN_CAPACITY_U64 %out_ok, %deque_reg, %src_slice, %count
4415
+ [END_MACRO]
4416
+
4417
+ [MACRO] VEC_DEQUE_EXTEND_FROM_SLICE_N_WITHIN_CAPACITY_U64 %out_ok, %deque_reg, %src_slice, %count
4418
+ EXPAND VEC_DEQUE_TRY_EXTEND_FROM_SLICE_N_WITHIN_CAPACITY_U64 %out_ok, %deque_reg, %src_slice, %count
4419
+ [END_MACRO]
4420
+
4421
+ // Rust method-name alias over VEC_DEQUE_EXTEND_FROM_SLICE_N_WITHIN_CAPACITY_U64.
4422
+ [MACRO] VEC_DEQUE_EXTEND_FROM_SLICE_N_WITHIN_CAPACITY %out_ok, %deque_reg, %src_slice, %count
4423
+ EXPAND VEC_DEQUE_EXTEND_FROM_SLICE_N_WITHIN_CAPACITY_U64 %out_ok, %deque_reg, %src_slice, %count
4424
+ [END_MACRO]
4425
+
4426
+ [MACRO] VEC_DEQUE_TRY_PUSH_BACK_N_WITHIN_CAPACITY_U64 %out_ok, %deque_reg, %value, %count
4427
+ __vec_deque_pbnwc_len_%out_ok = load %deque_reg+VecDeque_len as u64
4428
+ __vec_deque_pbnwc_cap_%out_ok = load %deque_reg+VecDeque_cap as u64
4429
+ __vec_deque_pbnwc_new_len_%out_ok = add __vec_deque_pbnwc_len_%out_ok, %count
4430
+ __vec_deque_pbnwc_room_ok_%out_ok = ule __vec_deque_pbnwc_new_len_%out_ok, __vec_deque_pbnwc_cap_%out_ok
4431
+ br __vec_deque_pbnwc_room_ok_%out_ok -> L_VEC_DEQUE_PBNWC_SETUP_%out_ok, L_VEC_DEQUE_PBNWC_MISS_%out_ok
4432
+ L_VEC_DEQUE_PBNWC_SETUP_%out_ok:
4433
+ __vec_deque_pbnwc_idx_slot_%out_ok = stack_alloc 8
4434
+ store __vec_deque_pbnwc_idx_slot_%out_ok+0, 0 as u64
4435
+ !__vec_deque_pbnwc_room_ok_%out_ok
4436
+ !__vec_deque_pbnwc_new_len_%out_ok
4437
+ !__vec_deque_pbnwc_cap_%out_ok
4438
+ !__vec_deque_pbnwc_len_%out_ok
4439
+ jmp L_VEC_DEQUE_PBNWC_HEAD_%out_ok
4440
+ L_VEC_DEQUE_PBNWC_HEAD_%out_ok:
4441
+ __vec_deque_pbnwc_idx_%out_ok = load __vec_deque_pbnwc_idx_slot_%out_ok+0 as u64
4442
+ __vec_deque_pbnwc_done_%out_ok = eq __vec_deque_pbnwc_idx_%out_ok, %count
4443
+ br __vec_deque_pbnwc_done_%out_ok -> L_VEC_DEQUE_PBNWC_DONE_%out_ok, L_VEC_DEQUE_PBNWC_BODY_%out_ok
4444
+ L_VEC_DEQUE_PBNWC_BODY_%out_ok:
4445
+ call @sa_vec_deque_push_back(&%deque_reg, %value)
4446
+ __vec_deque_pbnwc_next_%out_ok = add __vec_deque_pbnwc_idx_%out_ok, 1
4447
+ store __vec_deque_pbnwc_idx_slot_%out_ok+0, __vec_deque_pbnwc_next_%out_ok as u64
4448
+ !__vec_deque_pbnwc_next_%out_ok
4449
+ !__vec_deque_pbnwc_done_%out_ok
4450
+ !__vec_deque_pbnwc_idx_%out_ok
4451
+ jmp L_VEC_DEQUE_PBNWC_HEAD_%out_ok
4452
+ L_VEC_DEQUE_PBNWC_DONE_%out_ok:
4453
+ %out_ok = add 0, 1
4454
+ !__vec_deque_pbnwc_done_%out_ok
4455
+ !__vec_deque_pbnwc_idx_%out_ok
4456
+ jmp L_VEC_DEQUE_PBNWC_END_%out_ok
4457
+ L_VEC_DEQUE_PBNWC_MISS_%out_ok:
4458
+ %out_ok = add 0, 0
4459
+ !__vec_deque_pbnwc_room_ok_%out_ok
4460
+ !__vec_deque_pbnwc_new_len_%out_ok
4461
+ !__vec_deque_pbnwc_cap_%out_ok
4462
+ !__vec_deque_pbnwc_len_%out_ok
4463
+ L_VEC_DEQUE_PBNWC_END_%out_ok:
4464
+ [END_MACRO]
4465
+
4466
+ // Rust method-name alias over VEC_DEQUE_TRY_PUSH_BACK_N_WITHIN_CAPACITY_U64.
4467
+ [MACRO] VEC_DEQUE_TRY_PUSH_BACK_N_WITHIN_CAPACITY %out_ok, %deque_reg, %value, %count
4468
+ EXPAND VEC_DEQUE_TRY_PUSH_BACK_N_WITHIN_CAPACITY_U64 %out_ok, %deque_reg, %value, %count
4469
+ [END_MACRO]
4470
+
4471
+ [MACRO] VEC_DEQUE_PUSH_BACK_N_WITHIN_CAPACITY_U64 %out_ok, %deque_reg, %value, %count
4472
+ EXPAND VEC_DEQUE_TRY_PUSH_BACK_N_WITHIN_CAPACITY_U64 %out_ok, %deque_reg, %value, %count
4473
+ [END_MACRO]
4474
+
4475
+ // Rust method-name alias over VEC_DEQUE_PUSH_BACK_N_WITHIN_CAPACITY_U64.
4476
+ [MACRO] VEC_DEQUE_PUSH_BACK_N_WITHIN_CAPACITY %out_ok, %deque_reg, %value, %count
4477
+ EXPAND VEC_DEQUE_PUSH_BACK_N_WITHIN_CAPACITY_U64 %out_ok, %deque_reg, %value, %count
4478
+ [END_MACRO]
4479
+
4480
+ [MACRO] VEC_DEQUE_TRY_PUSH_FRONT_N_WITHIN_CAPACITY_U64 %out_ok, %deque_reg, %value, %count
4481
+ __vec_deque_pfnwc_len_%out_ok = load %deque_reg+VecDeque_len as u64
4482
+ __vec_deque_pfnwc_cap_%out_ok = load %deque_reg+VecDeque_cap as u64
4483
+ __vec_deque_pfnwc_new_len_%out_ok = add __vec_deque_pfnwc_len_%out_ok, %count
4484
+ __vec_deque_pfnwc_room_ok_%out_ok = ule __vec_deque_pfnwc_new_len_%out_ok, __vec_deque_pfnwc_cap_%out_ok
4485
+ br __vec_deque_pfnwc_room_ok_%out_ok -> L_VEC_DEQUE_PFNWC_SETUP_%out_ok, L_VEC_DEQUE_PFNWC_MISS_%out_ok
4486
+ L_VEC_DEQUE_PFNWC_SETUP_%out_ok:
4487
+ __vec_deque_pfnwc_idx_slot_%out_ok = stack_alloc 8
4488
+ store __vec_deque_pfnwc_idx_slot_%out_ok+0, 0 as u64
4489
+ !__vec_deque_pfnwc_room_ok_%out_ok
4490
+ !__vec_deque_pfnwc_new_len_%out_ok
4491
+ !__vec_deque_pfnwc_cap_%out_ok
4492
+ !__vec_deque_pfnwc_len_%out_ok
4493
+ jmp L_VEC_DEQUE_PFNWC_HEAD_%out_ok
4494
+ L_VEC_DEQUE_PFNWC_HEAD_%out_ok:
4495
+ __vec_deque_pfnwc_idx_%out_ok = load __vec_deque_pfnwc_idx_slot_%out_ok+0 as u64
4496
+ __vec_deque_pfnwc_done_%out_ok = eq __vec_deque_pfnwc_idx_%out_ok, %count
4497
+ br __vec_deque_pfnwc_done_%out_ok -> L_VEC_DEQUE_PFNWC_DONE_%out_ok, L_VEC_DEQUE_PFNWC_BODY_%out_ok
4498
+ L_VEC_DEQUE_PFNWC_BODY_%out_ok:
4499
+ call @sa_vec_deque_push_front(&%deque_reg, %value)
4500
+ __vec_deque_pfnwc_next_%out_ok = add __vec_deque_pfnwc_idx_%out_ok, 1
4501
+ store __vec_deque_pfnwc_idx_slot_%out_ok+0, __vec_deque_pfnwc_next_%out_ok as u64
4502
+ !__vec_deque_pfnwc_next_%out_ok
4503
+ !__vec_deque_pfnwc_done_%out_ok
4504
+ !__vec_deque_pfnwc_idx_%out_ok
4505
+ jmp L_VEC_DEQUE_PFNWC_HEAD_%out_ok
4506
+ L_VEC_DEQUE_PFNWC_DONE_%out_ok:
4507
+ %out_ok = add 0, 1
4508
+ !__vec_deque_pfnwc_done_%out_ok
4509
+ !__vec_deque_pfnwc_idx_%out_ok
4510
+ jmp L_VEC_DEQUE_PFNWC_END_%out_ok
4511
+ L_VEC_DEQUE_PFNWC_MISS_%out_ok:
4512
+ %out_ok = add 0, 0
4513
+ !__vec_deque_pfnwc_room_ok_%out_ok
4514
+ !__vec_deque_pfnwc_new_len_%out_ok
4515
+ !__vec_deque_pfnwc_cap_%out_ok
4516
+ !__vec_deque_pfnwc_len_%out_ok
4517
+ L_VEC_DEQUE_PFNWC_END_%out_ok:
4518
+ [END_MACRO]
4519
+
4520
+ // Rust method-name alias over VEC_DEQUE_TRY_PUSH_FRONT_N_WITHIN_CAPACITY_U64.
4521
+ [MACRO] VEC_DEQUE_TRY_PUSH_FRONT_N_WITHIN_CAPACITY %out_ok, %deque_reg, %value, %count
4522
+ EXPAND VEC_DEQUE_TRY_PUSH_FRONT_N_WITHIN_CAPACITY_U64 %out_ok, %deque_reg, %value, %count
4523
+ [END_MACRO]
4524
+
4525
+ [MACRO] VEC_DEQUE_PUSH_FRONT_N_WITHIN_CAPACITY_U64 %out_ok, %deque_reg, %value, %count
4526
+ EXPAND VEC_DEQUE_TRY_PUSH_FRONT_N_WITHIN_CAPACITY_U64 %out_ok, %deque_reg, %value, %count
4527
+ [END_MACRO]
4528
+
4529
+ // Rust method-name alias over VEC_DEQUE_PUSH_FRONT_N_WITHIN_CAPACITY_U64.
4530
+ [MACRO] VEC_DEQUE_PUSH_FRONT_N_WITHIN_CAPACITY %out_ok, %deque_reg, %value, %count
4531
+ EXPAND VEC_DEQUE_PUSH_FRONT_N_WITHIN_CAPACITY_U64 %out_ok, %deque_reg, %value, %count
4532
+ [END_MACRO]
4533
+
4534
+ [MACRO] VEC_DEQUE_TRY_INSERT_WITHIN_CAPACITY %out_ok, %deque_reg, %index, %value
4535
+ __vec_deque_iwc_len_%out_ok = load %deque_reg+VecDeque_len as u64
4536
+ __vec_deque_iwc_cap_%out_ok = load %deque_reg+VecDeque_cap as u64
4537
+ __vec_deque_iwc_in_bounds_%out_ok = ule %index, __vec_deque_iwc_len_%out_ok
4538
+ __vec_deque_iwc_new_len_%out_ok = add __vec_deque_iwc_len_%out_ok, 1
4539
+ __vec_deque_iwc_has_room_%out_ok = ule __vec_deque_iwc_new_len_%out_ok, __vec_deque_iwc_cap_%out_ok
4540
+ __vec_deque_iwc_ok_all_%out_ok = and __vec_deque_iwc_in_bounds_%out_ok, __vec_deque_iwc_has_room_%out_ok
4541
+ br __vec_deque_iwc_ok_all_%out_ok -> L_VEC_DEQUE_IWC_OK_%out_ok, L_VEC_DEQUE_IWC_MISS_%out_ok
4542
+ L_VEC_DEQUE_IWC_OK_%out_ok:
4543
+ __vec_deque_iwc_abi_ok_%out_ok = call @sa_vec_deque_try_insert(&%deque_reg, %index, %value)
4544
+ %out_ok = __vec_deque_iwc_abi_ok_%out_ok
4545
+ !__vec_deque_iwc_ok_all_%out_ok
4546
+ !__vec_deque_iwc_in_bounds_%out_ok
4547
+ !__vec_deque_iwc_new_len_%out_ok
4548
+ !__vec_deque_iwc_has_room_%out_ok
4549
+ !__vec_deque_iwc_cap_%out_ok
4550
+ !__vec_deque_iwc_len_%out_ok
4551
+ jmp L_VEC_DEQUE_IWC_END_%out_ok
4552
+ L_VEC_DEQUE_IWC_MISS_%out_ok:
4553
+ %out_ok = add 0, 0
4554
+ !__vec_deque_iwc_ok_all_%out_ok
4555
+ !__vec_deque_iwc_in_bounds_%out_ok
4556
+ !__vec_deque_iwc_new_len_%out_ok
4557
+ !__vec_deque_iwc_has_room_%out_ok
4558
+ !__vec_deque_iwc_cap_%out_ok
4559
+ !__vec_deque_iwc_len_%out_ok
4560
+ jmp L_VEC_DEQUE_IWC_END_%out_ok
4561
+ L_VEC_DEQUE_IWC_END_%out_ok:
4562
+ [END_MACRO]
4563
+
4564
+ [MACRO] VEC_DEQUE_TRY_INSERT_WITHIN_CAPACITY_U64 %out_ok, %deque_reg, %index, %value
4565
+ EXPAND VEC_DEQUE_TRY_INSERT_WITHIN_CAPACITY %out_ok, %deque_reg, %index, %value
4566
+ [END_MACRO]
4567
+
4568
+ [MACRO] VEC_DEQUE_INSERT_WITHIN_CAPACITY %out_ok, %deque_reg, %index, %value
4569
+ EXPAND VEC_DEQUE_TRY_INSERT_WITHIN_CAPACITY %out_ok, %deque_reg, %index, %value
4570
+ [END_MACRO]
4571
+
4572
+ [MACRO] VEC_DEQUE_INSERT_WITHIN_CAPACITY_U64 %out_ok, %deque_reg, %index, %value
4573
+ EXPAND VEC_DEQUE_TRY_INSERT_WITHIN_CAPACITY %out_ok, %deque_reg, %index, %value
4574
+ [END_MACRO]
4575
+
4576
+ [MACRO] VEC_DEQUE_TRY_INSERT_N_WITHIN_CAPACITY %out_ok, %deque_reg, %index, %value, %count
4577
+ __vec_deque_inwc_len_%out_ok = load %deque_reg+VecDeque_len as u64
4578
+ __vec_deque_inwc_in_bounds_%out_ok = ule %index, __vec_deque_inwc_len_%out_ok
4579
+ br __vec_deque_inwc_in_bounds_%out_ok -> L_VEC_DEQUE_INWC_ROOM_%out_ok, L_VEC_DEQUE_INWC_MISS_%out_ok
4580
+ L_VEC_DEQUE_INWC_ROOM_%out_ok:
4581
+ __vec_deque_inwc_new_len_%out_ok = add __vec_deque_inwc_len_%out_ok, %count
4582
+ __vec_deque_inwc_cap_%out_ok = load %deque_reg+VecDeque_cap as u64
4583
+ __vec_deque_inwc_room_ok_%out_ok = ule __vec_deque_inwc_new_len_%out_ok, __vec_deque_inwc_cap_%out_ok
4584
+ br __vec_deque_inwc_room_ok_%out_ok -> L_VEC_DEQUE_INWC_SETUP_%out_ok, L_VEC_DEQUE_INWC_NO_ROOM_%out_ok
4585
+ L_VEC_DEQUE_INWC_SETUP_%out_ok:
4586
+ __vec_deque_inwc_idx_slot_%out_ok = stack_alloc 8
4587
+ store __vec_deque_inwc_idx_slot_%out_ok+0, 0 as u64
4588
+ !__vec_deque_inwc_room_ok_%out_ok
4589
+ !__vec_deque_inwc_new_len_%out_ok
4590
+ !__vec_deque_inwc_cap_%out_ok
4591
+ !__vec_deque_inwc_in_bounds_%out_ok
4592
+ !__vec_deque_inwc_len_%out_ok
4593
+ jmp L_VEC_DEQUE_INWC_HEAD_%out_ok
4594
+ L_VEC_DEQUE_INWC_HEAD_%out_ok:
4595
+ __vec_deque_inwc_idx_%out_ok = load __vec_deque_inwc_idx_slot_%out_ok+0 as u64
4596
+ __vec_deque_inwc_done_%out_ok = eq __vec_deque_inwc_idx_%out_ok, %count
4597
+ br __vec_deque_inwc_done_%out_ok -> L_VEC_DEQUE_INWC_DONE_%out_ok, L_VEC_DEQUE_INWC_BODY_%out_ok
4598
+ L_VEC_DEQUE_INWC_BODY_%out_ok:
4599
+ __vec_deque_inwc_pos_%out_ok = add %index, __vec_deque_inwc_idx_%out_ok
4600
+ EXPAND VEC_DEQUE_TRY_INSERT_WITHIN_CAPACITY __vec_deque_inwc_push_ok_%out_ok, %deque_reg, __vec_deque_inwc_pos_%out_ok, %value
4601
+ br __vec_deque_inwc_push_ok_%out_ok -> L_VEC_DEQUE_INWC_NEXT_%out_ok, L_VEC_DEQUE_INWC_FAIL_%out_ok
4602
+ L_VEC_DEQUE_INWC_NEXT_%out_ok:
4603
+ __vec_deque_inwc_next_%out_ok = add __vec_deque_inwc_idx_%out_ok, 1
4604
+ store __vec_deque_inwc_idx_slot_%out_ok+0, __vec_deque_inwc_next_%out_ok as u64
4605
+ !__vec_deque_inwc_next_%out_ok
4606
+ !__vec_deque_inwc_push_ok_%out_ok
4607
+ !__vec_deque_inwc_pos_%out_ok
4608
+ !__vec_deque_inwc_done_%out_ok
4609
+ !__vec_deque_inwc_idx_%out_ok
4610
+ jmp L_VEC_DEQUE_INWC_HEAD_%out_ok
4611
+ L_VEC_DEQUE_INWC_FAIL_%out_ok:
4612
+ %out_ok = add 0, 0
4613
+ !__vec_deque_inwc_push_ok_%out_ok
4614
+ !__vec_deque_inwc_pos_%out_ok
4615
+ !__vec_deque_inwc_done_%out_ok
4616
+ !__vec_deque_inwc_idx_%out_ok
4617
+ jmp L_VEC_DEQUE_INWC_END_%out_ok
4618
+ L_VEC_DEQUE_INWC_DONE_%out_ok:
4619
+ %out_ok = add 0, 1
4620
+ !__vec_deque_inwc_done_%out_ok
4621
+ !__vec_deque_inwc_idx_%out_ok
4622
+ jmp L_VEC_DEQUE_INWC_END_%out_ok
4623
+ L_VEC_DEQUE_INWC_NO_ROOM_%out_ok:
4624
+ %out_ok = add 0, 0
4625
+ !__vec_deque_inwc_room_ok_%out_ok
4626
+ !__vec_deque_inwc_new_len_%out_ok
4627
+ !__vec_deque_inwc_cap_%out_ok
4628
+ !__vec_deque_inwc_in_bounds_%out_ok
4629
+ !__vec_deque_inwc_len_%out_ok
4630
+ jmp L_VEC_DEQUE_INWC_END_%out_ok
4631
+ L_VEC_DEQUE_INWC_MISS_%out_ok:
4632
+ %out_ok = add 0, 0
4633
+ !__vec_deque_inwc_in_bounds_%out_ok
4634
+ !__vec_deque_inwc_len_%out_ok
4635
+ L_VEC_DEQUE_INWC_END_%out_ok:
4636
+ [END_MACRO]
4637
+
4638
+ [MACRO] VEC_DEQUE_TRY_INSERT_N_WITHIN_CAPACITY_U64 %out_ok, %deque_reg, %index, %value, %count
4639
+ EXPAND VEC_DEQUE_TRY_INSERT_N_WITHIN_CAPACITY %out_ok, %deque_reg, %index, %value, %count
4640
+ [END_MACRO]
4641
+
4642
+ [MACRO] VEC_DEQUE_INSERT_N_WITHIN_CAPACITY %out_ok, %deque_reg, %index, %value, %count
4643
+ EXPAND VEC_DEQUE_TRY_INSERT_N_WITHIN_CAPACITY %out_ok, %deque_reg, %index, %value, %count
4644
+ [END_MACRO]
4645
+
4646
+ [MACRO] VEC_DEQUE_INSERT_N_WITHIN_CAPACITY_U64 %out_ok, %deque_reg, %index, %value, %count
4647
+ EXPAND VEC_DEQUE_TRY_INSERT_N_WITHIN_CAPACITY %out_ok, %deque_reg, %index, %value, %count
4648
+ [END_MACRO]
4649
+
4650
+ [MACRO] VEC_DEQUE_TRY_INSERT_FROM_SLICE_WITHIN_CAPACITY %out_ok, %deque_reg, %index, %src_slice
4651
+ __vec_deque_ifswc_src_len_%out_ok = load %src_slice+Slice_len as u64
4652
+ __vec_deque_ifswc_len_%out_ok = load %deque_reg+VecDeque_len as u64
4653
+ __vec_deque_ifswc_in_bounds_%out_ok = ule %index, __vec_deque_ifswc_len_%out_ok
4654
+ br __vec_deque_ifswc_in_bounds_%out_ok -> L_VEC_DEQUE_IFSWC_ROOM_%out_ok, L_VEC_DEQUE_IFSWC_MISS_%out_ok
4655
+ L_VEC_DEQUE_IFSWC_ROOM_%out_ok:
4656
+ __vec_deque_ifswc_new_len_%out_ok = add __vec_deque_ifswc_len_%out_ok, __vec_deque_ifswc_src_len_%out_ok
4657
+ __vec_deque_ifswc_cap_%out_ok = load %deque_reg+VecDeque_cap as u64
4658
+ __vec_deque_ifswc_room_ok_%out_ok = ule __vec_deque_ifswc_new_len_%out_ok, __vec_deque_ifswc_cap_%out_ok
4659
+ br __vec_deque_ifswc_room_ok_%out_ok -> L_VEC_DEQUE_IFSWC_EMPTY_%out_ok, L_VEC_DEQUE_IFSWC_NO_ROOM_%out_ok
4660
+ L_VEC_DEQUE_IFSWC_EMPTY_%out_ok:
4661
+ __vec_deque_ifswc_empty_%out_ok = eq __vec_deque_ifswc_src_len_%out_ok, 0
4662
+ br __vec_deque_ifswc_empty_%out_ok -> L_VEC_DEQUE_IFSWC_EMPTY_HIT_%out_ok, L_VEC_DEQUE_IFSWC_SETUP_%out_ok
4663
+ L_VEC_DEQUE_IFSWC_EMPTY_HIT_%out_ok:
4664
+ %out_ok = add 0, 1
4665
+ !__vec_deque_ifswc_empty_%out_ok
4666
+ !__vec_deque_ifswc_room_ok_%out_ok
4667
+ !__vec_deque_ifswc_new_len_%out_ok
4668
+ !__vec_deque_ifswc_in_bounds_%out_ok
4669
+ !__vec_deque_ifswc_cap_%out_ok
4670
+ !__vec_deque_ifswc_len_%out_ok
4671
+ !__vec_deque_ifswc_src_len_%out_ok
4672
+ jmp L_VEC_DEQUE_IFSWC_END_%out_ok
4673
+ L_VEC_DEQUE_IFSWC_SETUP_%out_ok:
4674
+ __vec_deque_ifswc_idx_slot_%out_ok = stack_alloc 8
4675
+ store __vec_deque_ifswc_idx_slot_%out_ok+0, 0 as u64
4676
+ !__vec_deque_ifswc_empty_%out_ok
4677
+ !__vec_deque_ifswc_room_ok_%out_ok
4678
+ !__vec_deque_ifswc_new_len_%out_ok
4679
+ !__vec_deque_ifswc_cap_%out_ok
4680
+ !__vec_deque_ifswc_in_bounds_%out_ok
4681
+ !__vec_deque_ifswc_len_%out_ok
4682
+ jmp L_VEC_DEQUE_IFSWC_HEAD_%out_ok
4683
+ L_VEC_DEQUE_IFSWC_HEAD_%out_ok:
4684
+ __vec_deque_ifswc_idx_%out_ok = load __vec_deque_ifswc_idx_slot_%out_ok+0 as u64
4685
+ __vec_deque_ifswc_done_%out_ok = eq __vec_deque_ifswc_idx_%out_ok, __vec_deque_ifswc_src_len_%out_ok
4686
+ br __vec_deque_ifswc_done_%out_ok -> L_VEC_DEQUE_IFSWC_DONE_%out_ok, L_VEC_DEQUE_IFSWC_BODY_%out_ok
4687
+ L_VEC_DEQUE_IFSWC_BODY_%out_ok:
4688
+ __vec_deque_ifswc_src_ptr_%out_ok = load %src_slice+Slice_ptr as ptr
4689
+ __vec_deque_ifswc_off_%out_ok = mul __vec_deque_ifswc_idx_%out_ok, 8
4690
+ __vec_deque_ifswc_elem_ptr_%out_ok = ptr_add __vec_deque_ifswc_src_ptr_%out_ok, __vec_deque_ifswc_off_%out_ok
4691
+ __vec_deque_ifswc_value_%out_ok = load __vec_deque_ifswc_elem_ptr_%out_ok+0 as u64
4692
+ __vec_deque_ifswc_pos_%out_ok = add %index, __vec_deque_ifswc_idx_%out_ok
4693
+ EXPAND VEC_DEQUE_TRY_INSERT_WITHIN_CAPACITY __vec_deque_ifswc_push_ok_%out_ok, %deque_reg, __vec_deque_ifswc_pos_%out_ok, __vec_deque_ifswc_value_%out_ok
4694
+ br __vec_deque_ifswc_push_ok_%out_ok -> L_VEC_DEQUE_IFSWC_NEXT_%out_ok, L_VEC_DEQUE_IFSWC_FAIL_%out_ok
4695
+ L_VEC_DEQUE_IFSWC_NEXT_%out_ok:
4696
+ __vec_deque_ifswc_next_%out_ok = add __vec_deque_ifswc_idx_%out_ok, 1
4697
+ store __vec_deque_ifswc_idx_slot_%out_ok+0, __vec_deque_ifswc_next_%out_ok as u64
4698
+ !__vec_deque_ifswc_next_%out_ok
4699
+ !__vec_deque_ifswc_push_ok_%out_ok
4700
+ !__vec_deque_ifswc_pos_%out_ok
4701
+ !__vec_deque_ifswc_value_%out_ok
4702
+ !__vec_deque_ifswc_elem_ptr_%out_ok
4703
+ !__vec_deque_ifswc_off_%out_ok
4704
+ !__vec_deque_ifswc_src_ptr_%out_ok
4705
+ !__vec_deque_ifswc_done_%out_ok
4706
+ !__vec_deque_ifswc_idx_%out_ok
4707
+ jmp L_VEC_DEQUE_IFSWC_HEAD_%out_ok
4708
+ L_VEC_DEQUE_IFSWC_FAIL_%out_ok:
4709
+ %out_ok = add 0, 0
4710
+ !__vec_deque_ifswc_push_ok_%out_ok
4711
+ !__vec_deque_ifswc_pos_%out_ok
4712
+ !__vec_deque_ifswc_value_%out_ok
4713
+ !__vec_deque_ifswc_elem_ptr_%out_ok
4714
+ !__vec_deque_ifswc_off_%out_ok
4715
+ !__vec_deque_ifswc_src_ptr_%out_ok
4716
+ !__vec_deque_ifswc_done_%out_ok
4717
+ !__vec_deque_ifswc_idx_%out_ok
4718
+ !__vec_deque_ifswc_src_len_%out_ok
4719
+ jmp L_VEC_DEQUE_IFSWC_END_%out_ok
4720
+ L_VEC_DEQUE_IFSWC_DONE_%out_ok:
4721
+ %out_ok = add 0, 1
4722
+ !__vec_deque_ifswc_done_%out_ok
4723
+ !__vec_deque_ifswc_idx_%out_ok
4724
+ !__vec_deque_ifswc_src_len_%out_ok
4725
+ jmp L_VEC_DEQUE_IFSWC_END_%out_ok
4726
+ L_VEC_DEQUE_IFSWC_NO_ROOM_%out_ok:
4727
+ %out_ok = add 0, 0
4728
+ !__vec_deque_ifswc_room_ok_%out_ok
4729
+ !__vec_deque_ifswc_new_len_%out_ok
4730
+ !__vec_deque_ifswc_in_bounds_%out_ok
4731
+ !__vec_deque_ifswc_cap_%out_ok
4732
+ !__vec_deque_ifswc_len_%out_ok
4733
+ !__vec_deque_ifswc_src_len_%out_ok
4734
+ jmp L_VEC_DEQUE_IFSWC_END_%out_ok
4735
+ L_VEC_DEQUE_IFSWC_MISS_%out_ok:
4736
+ %out_ok = add 0, 0
4737
+ !__vec_deque_ifswc_in_bounds_%out_ok
4738
+ !__vec_deque_ifswc_len_%out_ok
4739
+ !__vec_deque_ifswc_src_len_%out_ok
4740
+ L_VEC_DEQUE_IFSWC_END_%out_ok:
4741
+ [END_MACRO]
4742
+
4743
+ [MACRO] VEC_DEQUE_TRY_INSERT_FROM_SLICE_WITHIN_CAPACITY_U64 %out_ok, %deque_reg, %index, %src_slice
4744
+ EXPAND VEC_DEQUE_TRY_INSERT_FROM_SLICE_WITHIN_CAPACITY %out_ok, %deque_reg, %index, %src_slice
4745
+ [END_MACRO]
4746
+
4747
+ [MACRO] VEC_DEQUE_INSERT_FROM_SLICE_WITHIN_CAPACITY %out_ok, %deque_reg, %index, %src_slice
4748
+ EXPAND VEC_DEQUE_TRY_INSERT_FROM_SLICE_WITHIN_CAPACITY %out_ok, %deque_reg, %index, %src_slice
4749
+ [END_MACRO]
4750
+
4751
+ [MACRO] VEC_DEQUE_INSERT_FROM_SLICE_WITHIN_CAPACITY_U64 %out_ok, %deque_reg, %index, %src_slice
4752
+ EXPAND VEC_DEQUE_TRY_INSERT_FROM_SLICE_WITHIN_CAPACITY %out_ok, %deque_reg, %index, %src_slice
4753
+ [END_MACRO]
4754
+
4755
+ [MACRO] VEC_DEQUE_TRY_INSERT_FROM_SLICE_N_WITHIN_CAPACITY %out_ok, %deque_reg, %index, %src_slice, %count
4756
+ __vec_deque_ifsnwc_src_len_%out_ok = load %src_slice+Slice_len as u64
4757
+ __vec_deque_ifsnwc_total_%out_ok = mul __vec_deque_ifsnwc_src_len_%out_ok, %count
4758
+ __vec_deque_ifsnwc_len_%out_ok = load %deque_reg+VecDeque_len as u64
4759
+ __vec_deque_ifsnwc_in_bounds_%out_ok = ule %index, __vec_deque_ifsnwc_len_%out_ok
4760
+ br __vec_deque_ifsnwc_in_bounds_%out_ok -> L_VEC_DEQUE_IFSNWC_ROOM_%out_ok, L_VEC_DEQUE_IFSNWC_MISS_%out_ok
4761
+ L_VEC_DEQUE_IFSNWC_ROOM_%out_ok:
4762
+ __vec_deque_ifsnwc_new_len_%out_ok = add __vec_deque_ifsnwc_len_%out_ok, __vec_deque_ifsnwc_total_%out_ok
4763
+ __vec_deque_ifsnwc_cap_%out_ok = load %deque_reg+VecDeque_cap as u64
4764
+ __vec_deque_ifsnwc_room_ok_%out_ok = ule __vec_deque_ifsnwc_new_len_%out_ok, __vec_deque_ifsnwc_cap_%out_ok
4765
+ br __vec_deque_ifsnwc_room_ok_%out_ok -> L_VEC_DEQUE_IFSNWC_SETUP_%out_ok, L_VEC_DEQUE_IFSNWC_NO_ROOM_%out_ok
4766
+ L_VEC_DEQUE_IFSNWC_SETUP_%out_ok:
4767
+ __vec_deque_ifsnwc_idx_slot_%out_ok = stack_alloc 8
4768
+ store __vec_deque_ifsnwc_idx_slot_%out_ok+0, 0 as u64
4769
+ !__vec_deque_ifsnwc_in_bounds_%out_ok
4770
+ !__vec_deque_ifsnwc_room_ok_%out_ok
4771
+ !__vec_deque_ifsnwc_new_len_%out_ok
4772
+ !__vec_deque_ifsnwc_cap_%out_ok
4773
+ !__vec_deque_ifsnwc_len_%out_ok
4774
+ !__vec_deque_ifsnwc_total_%out_ok
4775
+ !__vec_deque_ifsnwc_src_len_%out_ok
4776
+ jmp L_VEC_DEQUE_IFSNWC_HEAD_%out_ok
4777
+ L_VEC_DEQUE_IFSNWC_HEAD_%out_ok:
4778
+ __vec_deque_ifsnwc_idx_%out_ok = load __vec_deque_ifsnwc_idx_slot_%out_ok+0 as u64
4779
+ __vec_deque_ifsnwc_done_%out_ok = eq __vec_deque_ifsnwc_idx_%out_ok, %count
4780
+ br __vec_deque_ifsnwc_done_%out_ok -> L_VEC_DEQUE_IFSNWC_DONE_%out_ok, L_VEC_DEQUE_IFSNWC_BODY_%out_ok
4781
+ L_VEC_DEQUE_IFSNWC_BODY_%out_ok:
4782
+ __vec_deque_ifsnwc_src_len2_%out_ok = load %src_slice+Slice_len as u64
4783
+ __vec_deque_ifsnwc_block_off_%out_ok = mul __vec_deque_ifsnwc_idx_%out_ok, __vec_deque_ifsnwc_src_len2_%out_ok
4784
+ __vec_deque_ifsnwc_pos_%out_ok = add %index, __vec_deque_ifsnwc_block_off_%out_ok
4785
+ EXPAND VEC_DEQUE_TRY_INSERT_FROM_SLICE_WITHIN_CAPACITY __vec_deque_ifsnwc_block_ok_%out_ok, %deque_reg, __vec_deque_ifsnwc_pos_%out_ok, %src_slice
4786
+ br __vec_deque_ifsnwc_block_ok_%out_ok -> L_VEC_DEQUE_IFSNWC_NEXT_%out_ok, L_VEC_DEQUE_IFSNWC_FAIL_%out_ok
4787
+ L_VEC_DEQUE_IFSNWC_NEXT_%out_ok:
4788
+ __vec_deque_ifsnwc_next_%out_ok = add __vec_deque_ifsnwc_idx_%out_ok, 1
4789
+ store __vec_deque_ifsnwc_idx_slot_%out_ok+0, __vec_deque_ifsnwc_next_%out_ok as u64
4790
+ !__vec_deque_ifsnwc_next_%out_ok
4791
+ !__vec_deque_ifsnwc_block_ok_%out_ok
4792
+ !__vec_deque_ifsnwc_pos_%out_ok
4793
+ !__vec_deque_ifsnwc_block_off_%out_ok
4794
+ !__vec_deque_ifsnwc_src_len2_%out_ok
4795
+ !__vec_deque_ifsnwc_done_%out_ok
4796
+ !__vec_deque_ifsnwc_idx_%out_ok
4797
+ jmp L_VEC_DEQUE_IFSNWC_HEAD_%out_ok
4798
+ L_VEC_DEQUE_IFSNWC_FAIL_%out_ok:
4799
+ %out_ok = add 0, 0
4800
+ !__vec_deque_ifsnwc_block_ok_%out_ok
4801
+ !__vec_deque_ifsnwc_pos_%out_ok
4802
+ !__vec_deque_ifsnwc_block_off_%out_ok
4803
+ !__vec_deque_ifsnwc_src_len2_%out_ok
4804
+ !__vec_deque_ifsnwc_done_%out_ok
4805
+ !__vec_deque_ifsnwc_idx_%out_ok
4806
+ jmp L_VEC_DEQUE_IFSNWC_END_%out_ok
4807
+ L_VEC_DEQUE_IFSNWC_DONE_%out_ok:
4808
+ %out_ok = add 0, 1
4809
+ !__vec_deque_ifsnwc_done_%out_ok
4810
+ !__vec_deque_ifsnwc_idx_%out_ok
4811
+ jmp L_VEC_DEQUE_IFSNWC_END_%out_ok
4812
+ L_VEC_DEQUE_IFSNWC_NO_ROOM_%out_ok:
4813
+ %out_ok = add 0, 0
4814
+ !__vec_deque_ifsnwc_room_ok_%out_ok
4815
+ !__vec_deque_ifsnwc_new_len_%out_ok
4816
+ !__vec_deque_ifsnwc_in_bounds_%out_ok
4817
+ !__vec_deque_ifsnwc_cap_%out_ok
4818
+ !__vec_deque_ifsnwc_len_%out_ok
4819
+ !__vec_deque_ifsnwc_total_%out_ok
4820
+ !__vec_deque_ifsnwc_src_len_%out_ok
4821
+ jmp L_VEC_DEQUE_IFSNWC_END_%out_ok
4822
+ L_VEC_DEQUE_IFSNWC_MISS_%out_ok:
4823
+ %out_ok = add 0, 0
4824
+ !__vec_deque_ifsnwc_in_bounds_%out_ok
4825
+ !__vec_deque_ifsnwc_len_%out_ok
4826
+ !__vec_deque_ifsnwc_total_%out_ok
4827
+ !__vec_deque_ifsnwc_src_len_%out_ok
4828
+ L_VEC_DEQUE_IFSNWC_END_%out_ok:
4829
+ [END_MACRO]
4830
+
4831
+ [MACRO] VEC_DEQUE_TRY_INSERT_FROM_SLICE_N_WITHIN_CAPACITY_U64 %out_ok, %deque_reg, %index, %src_slice, %count
4832
+ EXPAND VEC_DEQUE_TRY_INSERT_FROM_SLICE_N_WITHIN_CAPACITY %out_ok, %deque_reg, %index, %src_slice, %count
4833
+ [END_MACRO]
4834
+
4835
+ [MACRO] VEC_DEQUE_INSERT_FROM_SLICE_N_WITHIN_CAPACITY %out_ok, %deque_reg, %index, %src_slice, %count
4836
+ EXPAND VEC_DEQUE_TRY_INSERT_FROM_SLICE_N_WITHIN_CAPACITY %out_ok, %deque_reg, %index, %src_slice, %count
4837
+ [END_MACRO]
4838
+
4839
+ [MACRO] VEC_DEQUE_INSERT_FROM_SLICE_N_WITHIN_CAPACITY_U64 %out_ok, %deque_reg, %index, %src_slice, %count
4840
+ EXPAND VEC_DEQUE_TRY_INSERT_FROM_SLICE_N_WITHIN_CAPACITY %out_ok, %deque_reg, %index, %src_slice, %count
4841
+ [END_MACRO]
4842
+
4843
+
4844
+ [MACRO] VEC_DEQUE_APPEND %deque_reg, %other_deque_reg
4845
+ call @sa_vec_deque_append(&%deque_reg, &%other_deque_reg)
4846
+ [END_MACRO]
4847
+
4848
+ [MACRO] VEC_DEQUE_TRY_SPLIT_OFF %out_ok, %out_deque, %deque_reg, %index
4849
+ __vec_deque_split_slot_%out_ok = stack_alloc 8
4850
+ __vec_deque_split_ok_%out_ok = call @sa_vec_deque_try_split_off(&%deque_reg, %index, &__vec_deque_split_slot_%out_ok)
4851
+ %out_deque = load __vec_deque_split_slot_%out_ok+0 as ptr
4852
+ %out_ok = __vec_deque_split_ok_%out_ok
4853
+ [END_MACRO]
4854
+
4855
+ [MACRO] VEC_DEQUE_SPLIT_OFF %out_ok, %out_deque, %deque_reg, %index
4856
+ EXPAND VEC_DEQUE_TRY_SPLIT_OFF %out_ok, %out_deque, %deque_reg, %index
4857
+ [END_MACRO]
4858
+
4859
+ // Fixed-arity / from-collection constructors over the concrete u64 VecDeque.
4860
+
4861
+ [MACRO] VEC_DEQUE_LIT1 %out_deque, %value1
4862
+ EXPAND VEC_DEQUE_NEW %out_deque
4863
+ EXPAND VEC_DEQUE_PUSH_BACK %out_deque, %value1
4864
+ [END_MACRO]
4865
+
4866
+ [MACRO] VEC_DEQUE_LIT2 %out_deque, %value1, %value2
4867
+ EXPAND VEC_DEQUE_NEW %out_deque
4868
+ EXPAND VEC_DEQUE_PUSH_BACK %out_deque, %value1
4869
+ EXPAND VEC_DEQUE_PUSH_BACK %out_deque, %value2
4870
+ [END_MACRO]
4871
+
4872
+ [MACRO] VEC_DEQUE_LIT3 %out_deque, %value1, %value2, %value3
4873
+ EXPAND VEC_DEQUE_NEW %out_deque
4874
+ EXPAND VEC_DEQUE_PUSH_BACK %out_deque, %value1
4875
+ EXPAND VEC_DEQUE_PUSH_BACK %out_deque, %value2
4876
+ EXPAND VEC_DEQUE_PUSH_BACK %out_deque, %value3
4877
+ [END_MACRO]
4878
+
4879
+ [MACRO] VEC_DEQUE_FROM_SLICE_U64 %out_deque, %slice_reg
4880
+ EXPAND VEC_DEQUE_NEW %out_deque
4881
+ __vd_from_len_%out_deque = load %slice_reg+Slice_len as u64
4882
+ __vd_from_idx_slot_%out_deque = stack_alloc 8
4883
+ store __vd_from_idx_slot_%out_deque+0, 0 as u64
4884
+ jmp L_VEC_DEQUE_FROM_SLICE_HEAD_%out_deque
4885
+ L_VEC_DEQUE_FROM_SLICE_HEAD_%out_deque:
4886
+ __vd_from_idx_%out_deque = load __vd_from_idx_slot_%out_deque+0 as u64
4887
+ __vd_from_done_%out_deque = eq __vd_from_idx_%out_deque, __vd_from_len_%out_deque
4888
+ br __vd_from_done_%out_deque -> L_VEC_DEQUE_FROM_SLICE_DONE_%out_deque, L_VEC_DEQUE_FROM_SLICE_BODY_%out_deque
4889
+ L_VEC_DEQUE_FROM_SLICE_BODY_%out_deque:
4890
+ EXPAND SLICE_GET_U64 __vd_from_val_%out_deque, %slice_reg, __vd_from_idx_%out_deque
4891
+ EXPAND VEC_DEQUE_PUSH_BACK %out_deque, __vd_from_val_%out_deque
4892
+ __vd_from_next_%out_deque = add __vd_from_idx_%out_deque, 1
4893
+ store __vd_from_idx_slot_%out_deque+0, __vd_from_next_%out_deque as u64
4894
+ !__vd_from_next_%out_deque
4895
+ !__vd_from_val_%out_deque
4896
+ !__vd_from_done_%out_deque
4897
+ !__vd_from_idx_%out_deque
4898
+ jmp L_VEC_DEQUE_FROM_SLICE_HEAD_%out_deque
4899
+ L_VEC_DEQUE_FROM_SLICE_DONE_%out_deque:
4900
+ !__vd_from_done_%out_deque
4901
+ !__vd_from_idx_%out_deque
4902
+ !__vd_from_len_%out_deque
4903
+ [END_MACRO]
4904
+
4905
+ // Rust method-name alias over VEC_DEQUE_FROM_SLICE_U64.
4906
+ [MACRO] VEC_DEQUE_FROM_SLICE %out_deque, %slice_reg
4907
+ EXPAND VEC_DEQUE_FROM_SLICE_U64 %out_deque, %slice_reg
4908
+ [END_MACRO]
4909
+
4910
+ [MACRO] VEC_DEQUE_FROM_VEC_U64 %out_deque, %vec_reg
4911
+ EXPAND VEC_AS_SLICE __vec_deque_from_vec_slice_%out_deque, %vec_reg
4912
+ EXPAND VEC_DEQUE_FROM_SLICE_U64 %out_deque, __vec_deque_from_vec_slice_%out_deque
4913
+ !__vec_deque_from_vec_slice_%out_deque
4914
+ [END_MACRO]
4915
+
4916
+ // Rust method-name alias over VEC_DEQUE_FROM_VEC_U64.
4917
+ [MACRO] VEC_DEQUE_FROM_VEC %out_deque, %vec_reg
4918
+ EXPAND VEC_DEQUE_FROM_VEC_U64 %out_deque, %vec_reg
4919
+ [END_MACRO]
4920
+
4921
+ // Rust Default-style empty VecDeque constructor alias.
4922
+
4923
+ [MACRO] VEC_DEQUE_DEFAULT %out_deque
4924
+ EXPAND VEC_DEQUE_NEW %out_deque
4925
+ [END_MACRO]