@salang/sa 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. package/bin/sa.js +13 -1
  2. package/package.json +8 -7
  3. package/sa_std/alloc/layout.sal +12 -0
  4. package/sa_std/alloc/prelude.sa +1 -0
  5. package/sa_std/alloc/prelude.sal +1 -0
  6. package/sa_std/alloc/string.sa +3 -0
  7. package/sa_std/alloc/vec.sa +684 -0
  8. package/sa_std/alloc/vec.sal +4 -0
  9. package/sa_std/any.sa +130 -0
  10. package/sa_std/any.sal +23 -0
  11. package/sa_std/array.sa +1876 -0
  12. package/sa_std/ascii.sa +2 -0
  13. package/sa_std/ascii.sal +1 -0
  14. package/sa_std/async.sla +116 -0
  15. package/sa_std/binary_heap.sa +3003 -0
  16. package/sa_std/binary_heap.sal +7 -0
  17. package/sa_std/borrow.sa +171 -0
  18. package/sa_std/borrow.sal +13 -0
  19. package/sa_std/btree_map.sa +2210 -0
  20. package/sa_std/btree_map.sal +11 -0
  21. package/sa_std/btree_set.sa +1072 -0
  22. package/sa_std/btree_set.sal +6 -0
  23. package/sa_std/char.sa +1309 -0
  24. package/sa_std/char.sal +50 -0
  25. package/sa_std/cmp.sa +554 -0
  26. package/sa_std/cmp.sal +14 -0
  27. package/sa_std/collections/binary_heap.sa +1 -0
  28. package/sa_std/collections/btree_map.sa +1 -0
  29. package/sa_std/collections/btree_set.sa +1 -0
  30. package/sa_std/collections/hashmap.sa +1 -0
  31. package/sa_std/collections/hashset.sa +1 -0
  32. package/sa_std/collections/linked_list.sa +1120 -0
  33. package/sa_std/collections/linked_list.sal +10 -0
  34. package/sa_std/collections/prelude.sa +7 -0
  35. package/sa_std/collections/prelude.sal +1 -0
  36. package/sa_std/collections/vec_deque.sa +1 -0
  37. package/sa_std/collections.sal +13 -0
  38. package/sa_std/convert.sa +1115 -0
  39. package/sa_std/convert.sal +24 -0
  40. package/sa_std/core/arc.sa +233 -0
  41. package/sa_std/core/arc.sal +4 -0
  42. package/sa_std/core/ascii.sa +784 -0
  43. package/sa_std/core/ascii.sal +34 -0
  44. package/sa_std/core/bit.sa +41 -0
  45. package/sa_std/core/box.sa +1 -0
  46. package/sa_std/core/box.sal +2 -0
  47. package/sa_std/core/cell.sa +108 -0
  48. package/sa_std/core/cell.sal +5 -0
  49. package/sa_std/core/cleanup.sa +26 -0
  50. package/sa_std/core/control.sa +20 -0
  51. package/sa_std/core/derive.sa +60 -0
  52. package/sa_std/core/derive.sal +1 -0
  53. package/sa_std/core/dispatch.sa +7 -0
  54. package/sa_std/core/dispatch.sal +5 -0
  55. package/sa_std/core/future.sa +777 -0
  56. package/sa_std/core/future.sal +73 -0
  57. package/sa_std/core/hash.sa +48 -0
  58. package/sa_std/core/iter.sa +2805 -0
  59. package/sa_std/core/iter.sal +4 -0
  60. package/sa_std/core/loop.sa +60 -0
  61. package/sa_std/core/mem.sa +220 -0
  62. package/sa_std/core/option.sa +825 -0
  63. package/sa_std/core/option.sal +11 -0
  64. package/sa_std/core/panic.sa +23 -0
  65. package/sa_std/core/panic.sal +12 -0
  66. package/sa_std/core/prelude.sa +18 -0
  67. package/sa_std/core/prelude.sal +18 -0
  68. package/sa_std/core/rc.sa +225 -0
  69. package/sa_std/core/rc.sal +4 -0
  70. package/sa_std/core/refcell.sa +283 -0
  71. package/sa_std/core/refcell.sal +13 -0
  72. package/sa_std/core/result.sa +708 -0
  73. package/sa_std/core/result.sal +6 -0
  74. package/sa_std/core/rust_patterns.sal +295 -0
  75. package/sa_std/core/sa_core.sa +84 -0
  76. package/sa_std/core/slice.sa +4021 -0
  77. package/sa_std/core/slice.sal +7 -0
  78. package/sa_std/core/task.sa +112 -0
  79. package/sa_std/core/task.sal +15 -0
  80. package/sa_std/core/trait_object.sa +26 -0
  81. package/sa_std/core/trait_object.sal +4 -0
  82. package/sa_std/core/waker.sa +289 -0
  83. package/sa_std/core/waker.sal +31 -0
  84. package/sa_std/core/weak.sa +2 -0
  85. package/sa_std/core/weak.sal +4 -0
  86. package/sa_std/cow.sa +3 -0
  87. package/sa_std/cow.sal +2 -0
  88. package/sa_std/cstring.sa +3 -0
  89. package/sa_std/cstring.sal +2 -0
  90. package/sa_std/default.sa +99 -0
  91. package/sa_std/duration.sa +3 -0
  92. package/sa_std/duration.sal +2 -0
  93. package/sa_std/encoding/json.sa +259 -0
  94. package/sa_std/encoding/json.sai +54 -0
  95. package/sa_std/encoding/json.sal +35 -0
  96. package/sa_std/encoding/prelude.sa +1 -0
  97. package/sa_std/encoding/prelude.sal +0 -0
  98. package/sa_std/env.sa +390 -0
  99. package/sa_std/env.sai +25 -0
  100. package/sa_std/error.sa +253 -0
  101. package/sa_std/error.sal +44 -0
  102. package/sa_std/ffi/cstring.sa +3 -0
  103. package/sa_std/ffi/cstring.sal +1 -0
  104. package/sa_std/ffi/prelude.sa +2 -0
  105. package/sa_std/ffi/prelude.sal +2 -0
  106. package/sa_std/ffi.sa +635 -0
  107. package/sa_std/ffi.sal +51 -0
  108. package/sa_std/fmt.sa +2 -0
  109. package/sa_std/fmt.sai +18 -0
  110. package/sa_std/fmt.sal +35 -0
  111. package/sa_std/fs.sa +1023 -0
  112. package/sa_std/fs.sai +127 -0
  113. package/sa_std/fs.sal +51 -0
  114. package/sa_std/future.sa +2 -0
  115. package/sa_std/future.sal +1 -0
  116. package/sa_std/hash.sa +1486 -0
  117. package/sa_std/hash.sal +13 -0
  118. package/sa_std/hashmap.sa +1962 -0
  119. package/sa_std/hashmap.sal +20 -0
  120. package/sa_std/hashset.sa +1004 -0
  121. package/sa_std/hashset.sal +18 -0
  122. package/sa_std/http2.sa +78 -0
  123. package/sa_std/http2.sai +26 -0
  124. package/sa_std/http2.sal +36 -0
  125. package/sa_std/instant.sa +3 -0
  126. package/sa_std/instant.sal +2 -0
  127. package/sa_std/io/buf_reader.sa +43 -0
  128. package/sa_std/io/buf_writer.sa +35 -0
  129. package/sa_std/io/bufio.sa +4 -0
  130. package/sa_std/io/bufio.sal +4 -0
  131. package/sa_std/io/prelude.sa +1 -0
  132. package/sa_std/io/prelude.sal +1 -0
  133. package/sa_std/io/print.sa +2 -0
  134. package/sa_std/io/print.sai +3 -0
  135. package/sa_std/io.sa +925 -0
  136. package/sa_std/io.sai +25 -0
  137. package/sa_std/io.sal +84 -0
  138. package/sa_std/iter.sa +2 -0
  139. package/sa_std/iter.sal +1 -0
  140. package/sa_std/join_handle.sa +3 -0
  141. package/sa_std/join_handle.sal +2 -0
  142. package/sa_std/libsa_async.sa +80 -0
  143. package/sa_std/m_async.sa +137 -0
  144. package/sa_std/m_async.sal +30 -0
  145. package/sa_std/m_async.sla +2 -0
  146. package/sa_std/manually_drop.sa +3 -0
  147. package/sa_std/manually_drop.sal +2 -0
  148. package/sa_std/marker/phantom_data.sa +3 -0
  149. package/sa_std/marker/phantom_data.sal +1 -0
  150. package/sa_std/marker/prelude.sa +4 -0
  151. package/sa_std/marker/prelude.sal +4 -0
  152. package/sa_std/marker.sa +220 -0
  153. package/sa_std/marker.sal +15 -0
  154. package/sa_std/math.sa +84 -0
  155. package/sa_std/math.sai +10 -0
  156. package/sa_std/mem/manually_drop.sa +3 -0
  157. package/sa_std/mem/manually_drop.sal +1 -0
  158. package/sa_std/mem/prelude.sa +2 -0
  159. package/sa_std/mem/prelude.sal +2 -0
  160. package/sa_std/mem.sa +564 -0
  161. package/sa_std/mem.sal +40 -0
  162. package/sa_std/modstate.sai +19 -0
  163. package/sa_std/net.sa +4227 -0
  164. package/sa_std/net.sai +239 -0
  165. package/sa_std/net.sal +159 -0
  166. package/sa_std/netx.sa +85 -0
  167. package/sa_std/netx.sai +11 -0
  168. package/sa_std/netx.sal +39 -0
  169. package/sa_std/nonzero.sa +3 -0
  170. package/sa_std/nonzero.sal +2 -0
  171. package/sa_std/num/nonzero.sa +3 -0
  172. package/sa_std/num/nonzero.sal +1 -0
  173. package/sa_std/num/prelude.sa +3 -0
  174. package/sa_std/num/prelude.sal +3 -0
  175. package/sa_std/num.sa +17302 -0
  176. package/sa_std/num.sai +11 -0
  177. package/sa_std/num.sal +341 -0
  178. package/sa_std/ops.sa +1884 -0
  179. package/sa_std/ops.sal +68 -0
  180. package/sa_std/option.sa +2 -0
  181. package/sa_std/option.sal +1 -0
  182. package/sa_std/os/fd.sa +96 -0
  183. package/sa_std/os/fd.sai +7 -0
  184. package/sa_std/os/fd.sal +11 -0
  185. package/sa_std/os/prelude.sa +2 -0
  186. package/sa_std/os/prelude.sal +1 -0
  187. package/sa_std/os/unix_ffi.sa +271 -0
  188. package/sa_std/panic.sa +1 -0
  189. package/sa_std/panic.sal +1 -0
  190. package/sa_std/path.sa +3170 -0
  191. package/sa_std/path.sal +12 -0
  192. package/sa_std/phantom_data.sa +3 -0
  193. package/sa_std/phantom_data.sal +2 -0
  194. package/sa_std/pin.sa +79 -0
  195. package/sa_std/pin.sal +5 -0
  196. package/sa_std/plugin_async.sa +90 -0
  197. package/sa_std/plugin_async.sal +29 -0
  198. package/sa_std/plugin_async.sla +4 -0
  199. package/sa_std/plugin_http_async.sa +46 -0
  200. package/sa_std/plugin_http_server.sa +61 -0
  201. package/sa_std/plugin_http_server.sla +2 -0
  202. package/sa_std/plugin_sqlite.sa +106 -0
  203. package/sa_std/plugin_sqlite.sla +2 -0
  204. package/sa_std/prelude.sa +60 -0
  205. package/sa_std/prelude.sal +55 -0
  206. package/sa_std/process.sa +916 -0
  207. package/sa_std/process.sai +57 -0
  208. package/sa_std/process.sal +27 -0
  209. package/sa_std/ptr.sa +503 -0
  210. package/sa_std/ptr.sal +2 -0
  211. package/sa_std/result.sa +2 -0
  212. package/sa_std/result.sal +1 -0
  213. package/sa_std/rust_core.sa +51 -0
  214. package/sa_std/rust_core.sal +26 -0
  215. package/sa_std/sa.mod +7 -0
  216. package/sa_std/sort.sa +156 -0
  217. package/sa_std/str.sla +13 -0
  218. package/sa_std/string.sa +12240 -0
  219. package/sa_std/string.sai +25 -0
  220. package/sa_std/string.sal +17 -0
  221. package/sa_std/string_format.sa +269 -0
  222. package/sa_std/sync/atomic.sa +1500 -0
  223. package/sa_std/sync/atomic.sal +45 -0
  224. package/sa_std/sync/barrier.sa +105 -0
  225. package/sa_std/sync/barrier.sal +7 -0
  226. package/sa_std/sync/condvar.sa +240 -0
  227. package/sa_std/sync/condvar.sal +4 -0
  228. package/sa_std/sync/mpsc.sa +758 -0
  229. package/sa_std/sync/mpsc.sal +42 -0
  230. package/sa_std/sync/mpsc_list.sa +255 -0
  231. package/sa_std/sync/mpsc_list.sal +3 -0
  232. package/sa_std/sync/mutex.sa +182 -0
  233. package/sa_std/sync/mutex.sal +7 -0
  234. package/sa_std/sync/once.sa +371 -0
  235. package/sa_std/sync/once.sal +31 -0
  236. package/sa_std/sync/poison.sa +36 -0
  237. package/sa_std/sync/poison.sal +11 -0
  238. package/sa_std/sync/prelude.sa +8 -0
  239. package/sa_std/sync/prelude.sal +7 -0
  240. package/sa_std/sync/rwlock.sa +369 -0
  241. package/sa_std/sync/rwlock.sal +13 -0
  242. package/sa_std/task.sa +2 -0
  243. package/sa_std/task.sal +1 -0
  244. package/sa_std/term.sa +2 -0
  245. package/sa_std/term.sai +10 -0
  246. package/sa_std/term.sal +33 -0
  247. package/sa_std/testing/assert.sai +4 -0
  248. package/sa_std/testing/mock_io.sa +174 -0
  249. package/sa_std/testing/mock_io.sal +5 -0
  250. package/sa_std/testing/prelude.sa +2 -0
  251. package/sa_std/testing/prelude.sal +1 -0
  252. package/sa_std/text/prelude.sa +1 -0
  253. package/sa_std/text/prelude.sal +1 -0
  254. package/sa_std/text/regex.sa +2 -0
  255. package/sa_std/text/regex.sai +9 -0
  256. package/sa_std/text/regex.sal +33 -0
  257. package/sa_std/thread/join_handle.sa +3 -0
  258. package/sa_std/thread/join_handle.sal +1 -0
  259. package/sa_std/thread/prelude.sa +4 -0
  260. package/sa_std/thread/prelude.sal +3 -0
  261. package/sa_std/thread.sa +160 -0
  262. package/sa_std/thread.sai +11 -0
  263. package/sa_std/thread.sal +4 -0
  264. package/sa_std/thread_local.sa +45 -0
  265. package/sa_std/thread_local.sai +9 -0
  266. package/sa_std/time/duration.sa +3 -0
  267. package/sa_std/time/duration.sal +1 -0
  268. package/sa_std/time/instant.sa +3 -0
  269. package/sa_std/time/instant.sal +1 -0
  270. package/sa_std/time/prelude.sa +4 -0
  271. package/sa_std/time/prelude.sal +4 -0
  272. package/sa_std/time.sa +850 -0
  273. package/sa_std/time.sai +37 -0
  274. package/sa_std/time.sal +35 -0
  275. package/sa_std/time.sla +67 -0
  276. package/sa_std/tls_client.sai +39 -0
  277. package/sa_std/vec.sa +5754 -0
  278. package/sa_std/vec.sal +1 -0
  279. package/sa_std/vec_deque.sa +4925 -0
  280. package/sa_std/vec_deque.sal +8 -0
  281. package/sa_std/vec_runtime_macros.sa +11 -0
  282. package/sa_std/ws_client.sai +57 -0
package/sa_std/ops.sa ADDED
@@ -0,0 +1,1884 @@
1
+ @import "ops.sal"
2
+ @import "core/option.sal"
3
+ @import "core/result.sal"
4
+ @import "core/slice.sal"
5
+ @import "core/slice.sa"
6
+
7
+ [MACRO] RANGE_U64_NEW %range_ptr, %start, %end
8
+ store %range_ptr+RangeU64_start, %start as u64
9
+ store %range_ptr+RangeU64_end, %end as u64
10
+ [END_MACRO]
11
+
12
+ [MACRO] CONTROL_FLOW_CONTINUE_U64 %control_flow_ptr, %value
13
+ store %control_flow_ptr+ControlFlowU64_tag, CONTROL_FLOW_CONTINUE as u64
14
+ store %control_flow_ptr+ControlFlowU64_value, %value as u64
15
+ [END_MACRO]
16
+
17
+ // Rust method-name alias over CONTROL_FLOW_CONTINUE_U64.
18
+ [MACRO] CONTROL_FLOW_CONTINUE %control_flow_ptr, %value
19
+ EXPAND CONTROL_FLOW_CONTINUE_U64 %control_flow_ptr, %value
20
+ [END_MACRO]
21
+
22
+ [MACRO] CONTROL_FLOW_BREAK_U64 %control_flow_ptr, %value
23
+ store %control_flow_ptr+ControlFlowU64_tag, CONTROL_FLOW_BREAK as u64
24
+ store %control_flow_ptr+ControlFlowU64_value, %value as u64
25
+ [END_MACRO]
26
+
27
+ // Rust method-name alias over CONTROL_FLOW_BREAK_U64.
28
+ [MACRO] CONTROL_FLOW_BREAK %control_flow_ptr, %value
29
+ EXPAND CONTROL_FLOW_BREAK_U64 %control_flow_ptr, %value
30
+ [END_MACRO]
31
+
32
+ [MACRO] CONTROL_FLOW_TAG %out_tag, %control_flow_ptr
33
+ %out_tag = load %control_flow_ptr+ControlFlowU64_tag as u64
34
+ [END_MACRO]
35
+
36
+ [MACRO] CONTROL_FLOW_VALUE_U64 %out_value, %control_flow_ptr
37
+ %out_value = load %control_flow_ptr+ControlFlowU64_value as u64
38
+ [END_MACRO]
39
+
40
+ // Rust method-name alias over CONTROL_FLOW_VALUE_U64.
41
+ [MACRO] CONTROL_FLOW_VALUE %out_value, %control_flow_ptr
42
+ EXPAND CONTROL_FLOW_VALUE_U64 %out_value, %control_flow_ptr
43
+ [END_MACRO]
44
+
45
+ [MACRO] CONTROL_FLOW_IS_CONTINUE %out_bool, %control_flow_ptr
46
+ __control_flow_tag_%out_bool = load %control_flow_ptr+ControlFlowU64_tag as u64
47
+ %out_bool = eq __control_flow_tag_%out_bool, CONTROL_FLOW_CONTINUE
48
+ !__control_flow_tag_%out_bool
49
+ [END_MACRO]
50
+
51
+ [MACRO] CONTROL_FLOW_IS_BREAK %out_bool, %control_flow_ptr
52
+ __control_flow_tag_%out_bool = load %control_flow_ptr+ControlFlowU64_tag as u64
53
+ %out_bool = eq __control_flow_tag_%out_bool, CONTROL_FLOW_BREAK
54
+ !__control_flow_tag_%out_bool
55
+ [END_MACRO]
56
+
57
+ [MACRO] CONTROL_FLOW_BREAK_VALUE_U64 %out_option_ptr, %control_flow_ptr
58
+ __control_flow_break_value_tag_%out_option_ptr = load %control_flow_ptr+ControlFlowU64_tag as u64
59
+ __control_flow_break_value_is_break_%out_option_ptr = eq __control_flow_break_value_tag_%out_option_ptr, CONTROL_FLOW_BREAK
60
+ br __control_flow_break_value_is_break_%out_option_ptr -> L_CONTROL_FLOW_BREAK_VALUE_SOME_%out_option_ptr, L_CONTROL_FLOW_BREAK_VALUE_NONE_%out_option_ptr
61
+
62
+ L_CONTROL_FLOW_BREAK_VALUE_SOME_%out_option_ptr:
63
+ __control_flow_break_value_%out_option_ptr = load %control_flow_ptr+ControlFlowU64_value as u64
64
+ store %out_option_ptr+Option_tag, Option_SOME as u64
65
+ store %out_option_ptr+Option_value, __control_flow_break_value_%out_option_ptr as u64
66
+ !__control_flow_break_value_%out_option_ptr
67
+ !__control_flow_break_value_is_break_%out_option_ptr
68
+ !__control_flow_break_value_tag_%out_option_ptr
69
+ jmp L_CONTROL_FLOW_BREAK_VALUE_DONE_%out_option_ptr
70
+
71
+ L_CONTROL_FLOW_BREAK_VALUE_NONE_%out_option_ptr:
72
+ store %out_option_ptr+Option_tag, Option_NONE as u64
73
+ store %out_option_ptr+Option_value, 0 as u64
74
+ !__control_flow_break_value_is_break_%out_option_ptr
75
+ !__control_flow_break_value_tag_%out_option_ptr
76
+
77
+ L_CONTROL_FLOW_BREAK_VALUE_DONE_%out_option_ptr:
78
+ [END_MACRO]
79
+
80
+ // Rust method-name alias over CONTROL_FLOW_BREAK_VALUE_U64.
81
+ [MACRO] CONTROL_FLOW_BREAK_VALUE %out_option_ptr, %control_flow_ptr
82
+ EXPAND CONTROL_FLOW_BREAK_VALUE_U64 %out_option_ptr, %control_flow_ptr
83
+ [END_MACRO]
84
+
85
+ [MACRO] CONTROL_FLOW_CONTINUE_VALUE_U64 %out_option_ptr, %control_flow_ptr
86
+ __control_flow_continue_value_tag_%out_option_ptr = load %control_flow_ptr+ControlFlowU64_tag as u64
87
+ __control_flow_continue_value_is_continue_%out_option_ptr = eq __control_flow_continue_value_tag_%out_option_ptr, CONTROL_FLOW_CONTINUE
88
+ br __control_flow_continue_value_is_continue_%out_option_ptr -> L_CONTROL_FLOW_CONTINUE_VALUE_SOME_%out_option_ptr, L_CONTROL_FLOW_CONTINUE_VALUE_NONE_%out_option_ptr
89
+
90
+ L_CONTROL_FLOW_CONTINUE_VALUE_SOME_%out_option_ptr:
91
+ __control_flow_continue_value_%out_option_ptr = load %control_flow_ptr+ControlFlowU64_value as u64
92
+ store %out_option_ptr+Option_tag, Option_SOME as u64
93
+ store %out_option_ptr+Option_value, __control_flow_continue_value_%out_option_ptr as u64
94
+ !__control_flow_continue_value_%out_option_ptr
95
+ !__control_flow_continue_value_is_continue_%out_option_ptr
96
+ !__control_flow_continue_value_tag_%out_option_ptr
97
+ jmp L_CONTROL_FLOW_CONTINUE_VALUE_DONE_%out_option_ptr
98
+
99
+ L_CONTROL_FLOW_CONTINUE_VALUE_NONE_%out_option_ptr:
100
+ store %out_option_ptr+Option_tag, Option_NONE as u64
101
+ store %out_option_ptr+Option_value, 0 as u64
102
+ !__control_flow_continue_value_is_continue_%out_option_ptr
103
+ !__control_flow_continue_value_tag_%out_option_ptr
104
+
105
+ L_CONTROL_FLOW_CONTINUE_VALUE_DONE_%out_option_ptr:
106
+ [END_MACRO]
107
+
108
+ // Rust method-name alias over CONTROL_FLOW_CONTINUE_VALUE_U64.
109
+ [MACRO] CONTROL_FLOW_CONTINUE_VALUE %out_option_ptr, %control_flow_ptr
110
+ EXPAND CONTROL_FLOW_CONTINUE_VALUE_U64 %out_option_ptr, %control_flow_ptr
111
+ [END_MACRO]
112
+
113
+ [MACRO] CONTROL_FLOW_BREAK_OK_U64 %out_result_ptr, %control_flow_ptr
114
+ __control_flow_break_ok_tag_%out_result_ptr = load %control_flow_ptr+ControlFlowU64_tag as u64
115
+ __control_flow_break_ok_value_%out_result_ptr = load %control_flow_ptr+ControlFlowU64_value as u64
116
+ __control_flow_break_ok_is_break_%out_result_ptr = eq __control_flow_break_ok_tag_%out_result_ptr, CONTROL_FLOW_BREAK
117
+ br __control_flow_break_ok_is_break_%out_result_ptr -> L_CONTROL_FLOW_BREAK_OK_OK_%out_result_ptr, L_CONTROL_FLOW_BREAK_OK_ERR_%out_result_ptr
118
+
119
+ L_CONTROL_FLOW_BREAK_OK_OK_%out_result_ptr:
120
+ store %out_result_ptr+Result_tag, Result_OK as u64
121
+ store %out_result_ptr+Result_ok, __control_flow_break_ok_value_%out_result_ptr as u64
122
+ store %out_result_ptr+Result_err, 0 as u64
123
+ !__control_flow_break_ok_is_break_%out_result_ptr
124
+ !__control_flow_break_ok_value_%out_result_ptr
125
+ !__control_flow_break_ok_tag_%out_result_ptr
126
+ jmp L_CONTROL_FLOW_BREAK_OK_DONE_%out_result_ptr
127
+
128
+ L_CONTROL_FLOW_BREAK_OK_ERR_%out_result_ptr:
129
+ store %out_result_ptr+Result_tag, Result_ERR as u64
130
+ store %out_result_ptr+Result_ok, 0 as u64
131
+ store %out_result_ptr+Result_err, __control_flow_break_ok_value_%out_result_ptr as u64
132
+ !__control_flow_break_ok_is_break_%out_result_ptr
133
+ !__control_flow_break_ok_value_%out_result_ptr
134
+ !__control_flow_break_ok_tag_%out_result_ptr
135
+
136
+ L_CONTROL_FLOW_BREAK_OK_DONE_%out_result_ptr:
137
+ [END_MACRO]
138
+
139
+ // Rust method-name alias over CONTROL_FLOW_BREAK_OK_U64.
140
+ [MACRO] CONTROL_FLOW_BREAK_OK %out_result_ptr, %control_flow_ptr
141
+ EXPAND CONTROL_FLOW_BREAK_OK_U64 %out_result_ptr, %control_flow_ptr
142
+ [END_MACRO]
143
+
144
+ [MACRO] CONTROL_FLOW_CONTINUE_OK_U64 %out_result_ptr, %control_flow_ptr
145
+ __control_flow_continue_ok_tag_%out_result_ptr = load %control_flow_ptr+ControlFlowU64_tag as u64
146
+ __control_flow_continue_ok_value_%out_result_ptr = load %control_flow_ptr+ControlFlowU64_value as u64
147
+ __control_flow_continue_ok_is_continue_%out_result_ptr = eq __control_flow_continue_ok_tag_%out_result_ptr, CONTROL_FLOW_CONTINUE
148
+ br __control_flow_continue_ok_is_continue_%out_result_ptr -> L_CONTROL_FLOW_CONTINUE_OK_OK_%out_result_ptr, L_CONTROL_FLOW_CONTINUE_OK_ERR_%out_result_ptr
149
+
150
+ L_CONTROL_FLOW_CONTINUE_OK_OK_%out_result_ptr:
151
+ store %out_result_ptr+Result_tag, Result_OK as u64
152
+ store %out_result_ptr+Result_ok, __control_flow_continue_ok_value_%out_result_ptr as u64
153
+ store %out_result_ptr+Result_err, 0 as u64
154
+ !__control_flow_continue_ok_is_continue_%out_result_ptr
155
+ !__control_flow_continue_ok_value_%out_result_ptr
156
+ !__control_flow_continue_ok_tag_%out_result_ptr
157
+ jmp L_CONTROL_FLOW_CONTINUE_OK_DONE_%out_result_ptr
158
+
159
+ L_CONTROL_FLOW_CONTINUE_OK_ERR_%out_result_ptr:
160
+ store %out_result_ptr+Result_tag, Result_ERR as u64
161
+ store %out_result_ptr+Result_ok, 0 as u64
162
+ store %out_result_ptr+Result_err, __control_flow_continue_ok_value_%out_result_ptr as u64
163
+ !__control_flow_continue_ok_is_continue_%out_result_ptr
164
+ !__control_flow_continue_ok_value_%out_result_ptr
165
+ !__control_flow_continue_ok_tag_%out_result_ptr
166
+
167
+ L_CONTROL_FLOW_CONTINUE_OK_DONE_%out_result_ptr:
168
+ [END_MACRO]
169
+
170
+ // Rust method-name alias over CONTROL_FLOW_CONTINUE_OK_U64.
171
+ [MACRO] CONTROL_FLOW_CONTINUE_OK %out_result_ptr, %control_flow_ptr
172
+ EXPAND CONTROL_FLOW_CONTINUE_OK_U64 %out_result_ptr, %control_flow_ptr
173
+ [END_MACRO]
174
+
175
+ [MACRO] CONTROL_FLOW_MAP_BREAK_U64 %out_control_flow_ptr, %control_flow_ptr, %map_fn
176
+ __control_flow_map_break_tag_%out_control_flow_ptr = load %control_flow_ptr+ControlFlowU64_tag as u64
177
+ __control_flow_map_break_value_%out_control_flow_ptr = load %control_flow_ptr+ControlFlowU64_value as u64
178
+ __control_flow_map_break_is_break_%out_control_flow_ptr = eq __control_flow_map_break_tag_%out_control_flow_ptr, CONTROL_FLOW_BREAK
179
+ br __control_flow_map_break_is_break_%out_control_flow_ptr -> L_CONTROL_FLOW_MAP_BREAK_CALL_%out_control_flow_ptr, L_CONTROL_FLOW_MAP_BREAK_COPY_%out_control_flow_ptr
180
+
181
+ L_CONTROL_FLOW_MAP_BREAK_CALL_%out_control_flow_ptr:
182
+ __control_flow_map_break_mapped_%out_control_flow_ptr = call %map_fn(__control_flow_map_break_value_%out_control_flow_ptr)
183
+ store %out_control_flow_ptr+ControlFlowU64_tag, CONTROL_FLOW_BREAK as u64
184
+ store %out_control_flow_ptr+ControlFlowU64_value, __control_flow_map_break_mapped_%out_control_flow_ptr as u64
185
+ !__control_flow_map_break_mapped_%out_control_flow_ptr
186
+ !__control_flow_map_break_is_break_%out_control_flow_ptr
187
+ !__control_flow_map_break_value_%out_control_flow_ptr
188
+ !__control_flow_map_break_tag_%out_control_flow_ptr
189
+ jmp L_CONTROL_FLOW_MAP_BREAK_DONE_%out_control_flow_ptr
190
+
191
+ L_CONTROL_FLOW_MAP_BREAK_COPY_%out_control_flow_ptr:
192
+ store %out_control_flow_ptr+ControlFlowU64_tag, __control_flow_map_break_tag_%out_control_flow_ptr as u64
193
+ store %out_control_flow_ptr+ControlFlowU64_value, __control_flow_map_break_value_%out_control_flow_ptr as u64
194
+ !__control_flow_map_break_is_break_%out_control_flow_ptr
195
+ !__control_flow_map_break_value_%out_control_flow_ptr
196
+ !__control_flow_map_break_tag_%out_control_flow_ptr
197
+
198
+ L_CONTROL_FLOW_MAP_BREAK_DONE_%out_control_flow_ptr:
199
+ [END_MACRO]
200
+
201
+ // Rust method-name alias over CONTROL_FLOW_MAP_BREAK_U64.
202
+ [MACRO] CONTROL_FLOW_MAP_BREAK %out_control_flow_ptr, %control_flow_ptr, %map_fn
203
+ EXPAND CONTROL_FLOW_MAP_BREAK_U64 %out_control_flow_ptr, %control_flow_ptr, %map_fn
204
+ [END_MACRO]
205
+
206
+ [MACRO] CONTROL_FLOW_MAP_CONTINUE_U64 %out_control_flow_ptr, %control_flow_ptr, %map_fn
207
+ __control_flow_map_continue_tag_%out_control_flow_ptr = load %control_flow_ptr+ControlFlowU64_tag as u64
208
+ __control_flow_map_continue_value_%out_control_flow_ptr = load %control_flow_ptr+ControlFlowU64_value as u64
209
+ __control_flow_map_continue_is_continue_%out_control_flow_ptr = eq __control_flow_map_continue_tag_%out_control_flow_ptr, CONTROL_FLOW_CONTINUE
210
+ br __control_flow_map_continue_is_continue_%out_control_flow_ptr -> L_CONTROL_FLOW_MAP_CONTINUE_CALL_%out_control_flow_ptr, L_CONTROL_FLOW_MAP_CONTINUE_COPY_%out_control_flow_ptr
211
+
212
+ L_CONTROL_FLOW_MAP_CONTINUE_CALL_%out_control_flow_ptr:
213
+ __control_flow_map_continue_mapped_%out_control_flow_ptr = call %map_fn(__control_flow_map_continue_value_%out_control_flow_ptr)
214
+ store %out_control_flow_ptr+ControlFlowU64_tag, CONTROL_FLOW_CONTINUE as u64
215
+ store %out_control_flow_ptr+ControlFlowU64_value, __control_flow_map_continue_mapped_%out_control_flow_ptr as u64
216
+ !__control_flow_map_continue_mapped_%out_control_flow_ptr
217
+ !__control_flow_map_continue_is_continue_%out_control_flow_ptr
218
+ !__control_flow_map_continue_value_%out_control_flow_ptr
219
+ !__control_flow_map_continue_tag_%out_control_flow_ptr
220
+ jmp L_CONTROL_FLOW_MAP_CONTINUE_DONE_%out_control_flow_ptr
221
+
222
+ L_CONTROL_FLOW_MAP_CONTINUE_COPY_%out_control_flow_ptr:
223
+ store %out_control_flow_ptr+ControlFlowU64_tag, __control_flow_map_continue_tag_%out_control_flow_ptr as u64
224
+ store %out_control_flow_ptr+ControlFlowU64_value, __control_flow_map_continue_value_%out_control_flow_ptr as u64
225
+ !__control_flow_map_continue_is_continue_%out_control_flow_ptr
226
+ !__control_flow_map_continue_value_%out_control_flow_ptr
227
+ !__control_flow_map_continue_tag_%out_control_flow_ptr
228
+
229
+ L_CONTROL_FLOW_MAP_CONTINUE_DONE_%out_control_flow_ptr:
230
+ [END_MACRO]
231
+
232
+ // Rust method-name alias over CONTROL_FLOW_MAP_CONTINUE_U64.
233
+ [MACRO] CONTROL_FLOW_MAP_CONTINUE %out_control_flow_ptr, %control_flow_ptr, %map_fn
234
+ EXPAND CONTROL_FLOW_MAP_CONTINUE_U64 %out_control_flow_ptr, %control_flow_ptr, %map_fn
235
+ [END_MACRO]
236
+
237
+ [MACRO] CONTROL_FLOW_INTO_VALUE_U64 %out_value, %control_flow_ptr
238
+ %out_value = load %control_flow_ptr+ControlFlowU64_value as u64
239
+ [END_MACRO]
240
+
241
+ // Rust method-name alias over CONTROL_FLOW_INTO_VALUE_U64.
242
+ [MACRO] CONTROL_FLOW_INTO_VALUE %out_value, %control_flow_ptr
243
+ EXPAND CONTROL_FLOW_INTO_VALUE_U64 %out_value, %control_flow_ptr
244
+ [END_MACRO]
245
+
246
+ [MACRO] RANGE_U64_START %out_start, %range_ptr
247
+ %out_start = load %range_ptr+RangeU64_start as u64
248
+ [END_MACRO]
249
+
250
+ [MACRO] RANGE_U64_END %out_end, %range_ptr
251
+ %out_end = load %range_ptr+RangeU64_end as u64
252
+ [END_MACRO]
253
+
254
+ [MACRO] RANGE_U64_CONTAINS %out_bool, %range_ptr, %item
255
+ __range_start_%out_bool = load %range_ptr+RangeU64_start as u64
256
+ __range_end_%out_bool = load %range_ptr+RangeU64_end as u64
257
+ __range_ge_start_%out_bool = ule __range_start_%out_bool, %item
258
+ __range_lt_end_%out_bool = ult %item, __range_end_%out_bool
259
+ %out_bool = and __range_ge_start_%out_bool, __range_lt_end_%out_bool
260
+ !__range_lt_end_%out_bool
261
+ !__range_ge_start_%out_bool
262
+ !__range_end_%out_bool
263
+ !__range_start_%out_bool
264
+ [END_MACRO]
265
+
266
+ [MACRO] RANGE_U64_IS_EMPTY %out_bool, %range_ptr
267
+ __range_empty_start_%out_bool = load %range_ptr+RangeU64_start as u64
268
+ __range_empty_end_%out_bool = load %range_ptr+RangeU64_end as u64
269
+ __range_not_empty_%out_bool = ult __range_empty_start_%out_bool, __range_empty_end_%out_bool
270
+ %out_bool = eq __range_not_empty_%out_bool, 0
271
+ !__range_not_empty_%out_bool
272
+ !__range_empty_end_%out_bool
273
+ !__range_empty_start_%out_bool
274
+ [END_MACRO]
275
+
276
+ [MACRO] RANGE_U64_LEN %out_len, %range_ptr
277
+ EXPAND RANGE_U64_IS_EMPTY __range_len_empty_%out_len, %range_ptr
278
+ br __range_len_empty_%out_len -> L_RANGE_U64_LEN_EMPTY_%out_len, L_RANGE_U64_LEN_NONEMPTY_%out_len
279
+
280
+ L_RANGE_U64_LEN_NONEMPTY_%out_len:
281
+ __range_len_start_%out_len = load %range_ptr+RangeU64_start as u64
282
+ __range_len_end_%out_len = load %range_ptr+RangeU64_end as u64
283
+ %out_len = sub __range_len_end_%out_len, __range_len_start_%out_len
284
+ !__range_len_end_%out_len
285
+ !__range_len_start_%out_len
286
+ !__range_len_empty_%out_len
287
+ jmp L_RANGE_U64_LEN_END_%out_len
288
+
289
+ L_RANGE_U64_LEN_EMPTY_%out_len:
290
+ %out_len = add 0, 0
291
+ !__range_len_empty_%out_len
292
+
293
+ L_RANGE_U64_LEN_END_%out_len:
294
+ [END_MACRO]
295
+
296
+ [MACRO] RANGE_U64_NEXT %out_ok, %out_value, %range_ptr
297
+ __range_next_start_%out_ok = load %range_ptr+RangeU64_start as u64
298
+ __range_next_end_%out_ok = load %range_ptr+RangeU64_end as u64
299
+ __range_next_has_%out_ok = ult __range_next_start_%out_ok, __range_next_end_%out_ok
300
+ br __range_next_has_%out_ok -> L_RANGE_U64_NEXT_SOME_%out_ok, L_RANGE_U64_NEXT_NONE_%out_ok
301
+ L_RANGE_U64_NEXT_SOME_%out_ok:
302
+ %out_value = add __range_next_start_%out_ok, 0
303
+ __range_next_start2_%out_ok = add __range_next_start_%out_ok, 1
304
+ store %range_ptr+RangeU64_start, __range_next_start2_%out_ok as u64
305
+ %out_ok = add 0, 1
306
+ !__range_next_start2_%out_ok
307
+ !__range_next_has_%out_ok
308
+ !__range_next_end_%out_ok
309
+ !__range_next_start_%out_ok
310
+ jmp L_RANGE_U64_NEXT_END_%out_ok
311
+ L_RANGE_U64_NEXT_NONE_%out_ok:
312
+ %out_value = add 0, 0
313
+ %out_ok = add 0, 0
314
+ !__range_next_has_%out_ok
315
+ !__range_next_end_%out_ok
316
+ !__range_next_start_%out_ok
317
+ L_RANGE_U64_NEXT_END_%out_ok:
318
+ [END_MACRO]
319
+
320
+ [MACRO] RANGE_U64_NEXT_BACK %out_ok, %out_value, %range_ptr
321
+ __range_back_start_%out_ok = load %range_ptr+RangeU64_start as u64
322
+ __range_back_end_%out_ok = load %range_ptr+RangeU64_end as u64
323
+ __range_back_has_%out_ok = ult __range_back_start_%out_ok, __range_back_end_%out_ok
324
+ br __range_back_has_%out_ok -> L_RANGE_U64_BACK_SOME_%out_ok, L_RANGE_U64_BACK_NONE_%out_ok
325
+ L_RANGE_U64_BACK_SOME_%out_ok:
326
+ __range_back_end2_%out_ok = sub __range_back_end_%out_ok, 1
327
+ store %range_ptr+RangeU64_end, __range_back_end2_%out_ok as u64
328
+ %out_value = add __range_back_end2_%out_ok, 0
329
+ %out_ok = add 0, 1
330
+ !__range_back_end2_%out_ok
331
+ !__range_back_has_%out_ok
332
+ !__range_back_end_%out_ok
333
+ !__range_back_start_%out_ok
334
+ jmp L_RANGE_U64_BACK_END_%out_ok
335
+ L_RANGE_U64_BACK_NONE_%out_ok:
336
+ %out_value = add 0, 0
337
+ %out_ok = add 0, 0
338
+ !__range_back_has_%out_ok
339
+ !__range_back_end_%out_ok
340
+ !__range_back_start_%out_ok
341
+ L_RANGE_U64_BACK_END_%out_ok:
342
+ [END_MACRO]
343
+
344
+ [MACRO] RANGE_U64_NTH %out_ok, %out_value, %range_ptr, %nth
345
+ EXPAND RANGE_U64_LEN __range_nth_len_%out_ok, %range_ptr
346
+ __range_nth_has_%out_ok = ult %nth, __range_nth_len_%out_ok
347
+ br __range_nth_has_%out_ok -> L_RANGE_U64_NTH_SOME_%out_ok, L_RANGE_U64_NTH_NONE_%out_ok
348
+ L_RANGE_U64_NTH_SOME_%out_ok:
349
+ __range_nth_start_%out_ok = load %range_ptr+RangeU64_start as u64
350
+ __range_nth_value_%out_ok = add __range_nth_start_%out_ok, %nth
351
+ __range_nth_next_%out_ok = add __range_nth_value_%out_ok, 1
352
+ store %range_ptr+RangeU64_start, __range_nth_next_%out_ok as u64
353
+ %out_value = add __range_nth_value_%out_ok, 0
354
+ %out_ok = add 0, 1
355
+ !__range_nth_next_%out_ok
356
+ !__range_nth_value_%out_ok
357
+ !__range_nth_start_%out_ok
358
+ !__range_nth_has_%out_ok
359
+ !__range_nth_len_%out_ok
360
+ jmp L_RANGE_U64_NTH_END_%out_ok
361
+ L_RANGE_U64_NTH_NONE_%out_ok:
362
+ __range_nth_end_%out_ok = load %range_ptr+RangeU64_end as u64
363
+ store %range_ptr+RangeU64_start, __range_nth_end_%out_ok as u64
364
+ %out_value = add 0, 0
365
+ %out_ok = add 0, 0
366
+ !__range_nth_end_%out_ok
367
+ !__range_nth_has_%out_ok
368
+ !__range_nth_len_%out_ok
369
+ L_RANGE_U64_NTH_END_%out_ok:
370
+ [END_MACRO]
371
+
372
+ [MACRO] RANGE_U64_COUNT %out_count, %range_ptr
373
+ EXPAND RANGE_U64_LEN %out_count, %range_ptr
374
+ __range_count_end_%out_count = load %range_ptr+RangeU64_end as u64
375
+ store %range_ptr+RangeU64_start, __range_count_end_%out_count as u64
376
+ !__range_count_end_%out_count
377
+ [END_MACRO]
378
+
379
+ [MACRO] RANGE_U64_TRY_GET_SLICE %out_ok, %out_slice, %base_slice, %range_ptr
380
+ __range_slice_start_%out_ok = load %range_ptr+RangeU64_start as u64
381
+ __range_slice_end_%out_ok = load %range_ptr+RangeU64_end as u64
382
+ __range_slice_len_%out_ok = load %base_slice+Slice_len as u64
383
+ __range_slice_order_%out_ok = ule __range_slice_start_%out_ok, __range_slice_end_%out_ok
384
+ __range_slice_bound_%out_ok = ule __range_slice_end_%out_ok, __range_slice_len_%out_ok
385
+ __range_slice_valid_%out_ok = and __range_slice_order_%out_ok, __range_slice_bound_%out_ok
386
+ br __range_slice_valid_%out_ok -> L_RANGE_U64_SLICE_HIT_%out_ok, L_RANGE_U64_SLICE_MISS_%out_ok
387
+
388
+ L_RANGE_U64_SLICE_HIT_%out_ok:
389
+ __range_slice_base_%out_ok = load %base_slice+Slice_ptr as ptr
390
+ __range_slice_byte_off_%out_ok = mul __range_slice_start_%out_ok, 8
391
+ __range_slice_ptr_%out_ok = ptr_add __range_slice_base_%out_ok, __range_slice_byte_off_%out_ok
392
+ __range_slice_view_len_%out_ok = sub __range_slice_end_%out_ok, __range_slice_start_%out_ok
393
+ EXPAND SLICE_NEW %out_slice, __range_slice_ptr_%out_ok, __range_slice_view_len_%out_ok
394
+ %out_ok = add 0, 1
395
+ !__range_slice_view_len_%out_ok
396
+ !__range_slice_ptr_%out_ok
397
+ !__range_slice_byte_off_%out_ok
398
+ !__range_slice_base_%out_ok
399
+ !__range_slice_valid_%out_ok
400
+ !__range_slice_bound_%out_ok
401
+ !__range_slice_order_%out_ok
402
+ !__range_slice_len_%out_ok
403
+ !__range_slice_end_%out_ok
404
+ !__range_slice_start_%out_ok
405
+ jmp L_RANGE_U64_SLICE_END_%out_ok
406
+
407
+ L_RANGE_U64_SLICE_MISS_%out_ok:
408
+ __range_slice_null_%out_ok = 0 as ptr
409
+ EXPAND SLICE_NEW %out_slice, __range_slice_null_%out_ok, 0
410
+ %out_ok = add 0, 0
411
+ !__range_slice_null_%out_ok
412
+ !__range_slice_valid_%out_ok
413
+ !__range_slice_bound_%out_ok
414
+ !__range_slice_order_%out_ok
415
+ !__range_slice_len_%out_ok
416
+ !__range_slice_end_%out_ok
417
+ !__range_slice_start_%out_ok
418
+
419
+ L_RANGE_U64_SLICE_END_%out_ok:
420
+ [END_MACRO]
421
+
422
+ [MACRO] RANGE_FROM_U64_NEW %range_ptr, %start
423
+ store %range_ptr+RangeFromU64_start, %start as u64
424
+ [END_MACRO]
425
+
426
+ [MACRO] RANGE_FROM_U64_START %out_start, %range_ptr
427
+ %out_start = load %range_ptr+RangeFromU64_start as u64
428
+ [END_MACRO]
429
+
430
+ [MACRO] RANGE_FROM_U64_CONTAINS %out_bool, %range_ptr, %item
431
+ __range_from_start_%out_bool = load %range_ptr+RangeFromU64_start as u64
432
+ %out_bool = ule __range_from_start_%out_bool, %item
433
+ !__range_from_start_%out_bool
434
+ [END_MACRO]
435
+
436
+ [MACRO] RANGE_FROM_U64_TRY_GET_SLICE %out_ok, %out_slice, %base_slice, %range_ptr
437
+ __range_from_start_%out_ok = load %range_ptr+RangeFromU64_start as u64
438
+ __range_from_len_%out_ok = load %base_slice+Slice_len as u64
439
+ __range_from_valid_%out_ok = ule __range_from_start_%out_ok, __range_from_len_%out_ok
440
+ br __range_from_valid_%out_ok -> L_RANGE_FROM_SLICE_HIT_%out_ok, L_RANGE_FROM_SLICE_MISS_%out_ok
441
+
442
+ L_RANGE_FROM_SLICE_HIT_%out_ok:
443
+ __range_from_base_%out_ok = load %base_slice+Slice_ptr as ptr
444
+ __range_from_byte_off_%out_ok = mul __range_from_start_%out_ok, 8
445
+ __range_from_ptr_%out_ok = ptr_add __range_from_base_%out_ok, __range_from_byte_off_%out_ok
446
+ __range_from_view_len_%out_ok = sub __range_from_len_%out_ok, __range_from_start_%out_ok
447
+ EXPAND SLICE_NEW %out_slice, __range_from_ptr_%out_ok, __range_from_view_len_%out_ok
448
+ %out_ok = add 0, 1
449
+ !__range_from_view_len_%out_ok
450
+ !__range_from_ptr_%out_ok
451
+ !__range_from_byte_off_%out_ok
452
+ !__range_from_base_%out_ok
453
+ !__range_from_valid_%out_ok
454
+ !__range_from_len_%out_ok
455
+ !__range_from_start_%out_ok
456
+ jmp L_RANGE_FROM_SLICE_END_%out_ok
457
+
458
+ L_RANGE_FROM_SLICE_MISS_%out_ok:
459
+ __range_from_null_%out_ok = 0 as ptr
460
+ EXPAND SLICE_NEW %out_slice, __range_from_null_%out_ok, 0
461
+ %out_ok = add 0, 0
462
+ !__range_from_null_%out_ok
463
+ !__range_from_valid_%out_ok
464
+ !__range_from_len_%out_ok
465
+ !__range_from_start_%out_ok
466
+
467
+ L_RANGE_FROM_SLICE_END_%out_ok:
468
+ [END_MACRO]
469
+
470
+ [MACRO] RANGE_TO_U64_NEW %range_ptr, %end
471
+ store %range_ptr+RangeToU64_end, %end as u64
472
+ [END_MACRO]
473
+
474
+ [MACRO] RANGE_TO_U64_END %out_end, %range_ptr
475
+ %out_end = load %range_ptr+RangeToU64_end as u64
476
+ [END_MACRO]
477
+
478
+ [MACRO] RANGE_TO_U64_CONTAINS %out_bool, %range_ptr, %item
479
+ __range_to_end_%out_bool = load %range_ptr+RangeToU64_end as u64
480
+ %out_bool = ult %item, __range_to_end_%out_bool
481
+ !__range_to_end_%out_bool
482
+ [END_MACRO]
483
+
484
+ [MACRO] RANGE_TO_U64_TRY_GET_SLICE %out_ok, %out_slice, %base_slice, %range_ptr
485
+ __range_to_end_%out_ok = load %range_ptr+RangeToU64_end as u64
486
+ __range_to_len_%out_ok = load %base_slice+Slice_len as u64
487
+ __range_to_valid_%out_ok = ule __range_to_end_%out_ok, __range_to_len_%out_ok
488
+ br __range_to_valid_%out_ok -> L_RANGE_TO_SLICE_HIT_%out_ok, L_RANGE_TO_SLICE_MISS_%out_ok
489
+
490
+ L_RANGE_TO_SLICE_HIT_%out_ok:
491
+ __range_to_base_%out_ok = load %base_slice+Slice_ptr as ptr
492
+ EXPAND SLICE_NEW %out_slice, __range_to_base_%out_ok, __range_to_end_%out_ok
493
+ %out_ok = add 0, 1
494
+ !__range_to_base_%out_ok
495
+ !__range_to_valid_%out_ok
496
+ !__range_to_len_%out_ok
497
+ !__range_to_end_%out_ok
498
+ jmp L_RANGE_TO_SLICE_END_%out_ok
499
+
500
+ L_RANGE_TO_SLICE_MISS_%out_ok:
501
+ __range_to_null_%out_ok = 0 as ptr
502
+ EXPAND SLICE_NEW %out_slice, __range_to_null_%out_ok, 0
503
+ %out_ok = add 0, 0
504
+ !__range_to_null_%out_ok
505
+ !__range_to_valid_%out_ok
506
+ !__range_to_len_%out_ok
507
+ !__range_to_end_%out_ok
508
+
509
+ L_RANGE_TO_SLICE_END_%out_ok:
510
+ [END_MACRO]
511
+
512
+ [MACRO] RANGE_INCLUSIVE_U64_NEW %range_ptr, %start, %end
513
+ store %range_ptr+RangeInclusiveU64_start, %start as u64
514
+ store %range_ptr+RangeInclusiveU64_end, %end as u64
515
+ store %range_ptr+RangeInclusiveU64_exhausted, 0 as u64
516
+ [END_MACRO]
517
+
518
+ [MACRO] RANGE_INCLUSIVE_U64_SET_EXHAUSTED %range_ptr, %exhausted
519
+ store %range_ptr+RangeInclusiveU64_exhausted, %exhausted as u64
520
+ [END_MACRO]
521
+
522
+ [MACRO] RANGE_INCLUSIVE_U64_START %out_start, %range_ptr
523
+ %out_start = load %range_ptr+RangeInclusiveU64_start as u64
524
+ [END_MACRO]
525
+
526
+ [MACRO] RANGE_INCLUSIVE_U64_END %out_end, %range_ptr
527
+ %out_end = load %range_ptr+RangeInclusiveU64_end as u64
528
+ [END_MACRO]
529
+
530
+ [MACRO] RANGE_INCLUSIVE_U64_INTO_INNER %out_start, %out_end, %range_ptr
531
+ %out_start = load %range_ptr+RangeInclusiveU64_start as u64
532
+ %out_end = load %range_ptr+RangeInclusiveU64_end as u64
533
+ [END_MACRO]
534
+
535
+ [MACRO] RANGE_INCLUSIVE_U64_CONTAINS %out_bool, %range_ptr, %item
536
+ __range_inc_start_%out_bool = load %range_ptr+RangeInclusiveU64_start as u64
537
+ __range_inc_end_%out_bool = load %range_ptr+RangeInclusiveU64_end as u64
538
+ __range_inc_exhausted_%out_bool = load %range_ptr+RangeInclusiveU64_exhausted as u64
539
+ __range_inc_not_exhausted_%out_bool = eq __range_inc_exhausted_%out_bool, 0
540
+ __range_inc_ge_start_%out_bool = ule __range_inc_start_%out_bool, %item
541
+ __range_inc_le_end_%out_bool = ule %item, __range_inc_end_%out_bool
542
+ __range_inc_bounds_%out_bool = and __range_inc_ge_start_%out_bool, __range_inc_le_end_%out_bool
543
+ %out_bool = and __range_inc_not_exhausted_%out_bool, __range_inc_bounds_%out_bool
544
+ !__range_inc_bounds_%out_bool
545
+ !__range_inc_le_end_%out_bool
546
+ !__range_inc_ge_start_%out_bool
547
+ !__range_inc_not_exhausted_%out_bool
548
+ !__range_inc_exhausted_%out_bool
549
+ !__range_inc_end_%out_bool
550
+ !__range_inc_start_%out_bool
551
+ [END_MACRO]
552
+
553
+ [MACRO] RANGE_INCLUSIVE_U64_IS_EMPTY %out_bool, %range_ptr
554
+ __range_inc_empty_start_%out_bool = load %range_ptr+RangeInclusiveU64_start as u64
555
+ __range_inc_empty_end_%out_bool = load %range_ptr+RangeInclusiveU64_end as u64
556
+ __range_inc_empty_exhausted_%out_bool = load %range_ptr+RangeInclusiveU64_exhausted as u64
557
+ __range_inc_empty_order_%out_bool = ult __range_inc_empty_end_%out_bool, __range_inc_empty_start_%out_bool
558
+ __range_inc_empty_exh_%out_bool = ne __range_inc_empty_exhausted_%out_bool, 0
559
+ %out_bool = or __range_inc_empty_order_%out_bool, __range_inc_empty_exh_%out_bool
560
+ !__range_inc_empty_exh_%out_bool
561
+ !__range_inc_empty_order_%out_bool
562
+ !__range_inc_empty_exhausted_%out_bool
563
+ !__range_inc_empty_end_%out_bool
564
+ !__range_inc_empty_start_%out_bool
565
+ [END_MACRO]
566
+
567
+ [MACRO] RANGE_INCLUSIVE_U64_LEN %out_len, %range_ptr
568
+ EXPAND RANGE_INCLUSIVE_U64_IS_EMPTY __range_inc_len_empty_%out_len, %range_ptr
569
+ br __range_inc_len_empty_%out_len -> L_RANGE_INC_LEN_EMPTY_%out_len, L_RANGE_INC_LEN_NONEMPTY_%out_len
570
+
571
+ L_RANGE_INC_LEN_NONEMPTY_%out_len:
572
+ __range_inc_len_start_%out_len = load %range_ptr+RangeInclusiveU64_start as u64
573
+ __range_inc_len_end_%out_len = load %range_ptr+RangeInclusiveU64_end as u64
574
+ __range_inc_len_span_%out_len = sub __range_inc_len_end_%out_len, __range_inc_len_start_%out_len
575
+ %out_len = add __range_inc_len_span_%out_len, 1
576
+ !__range_inc_len_span_%out_len
577
+ !__range_inc_len_end_%out_len
578
+ !__range_inc_len_start_%out_len
579
+ !__range_inc_len_empty_%out_len
580
+ jmp L_RANGE_INC_LEN_END_%out_len
581
+
582
+ L_RANGE_INC_LEN_EMPTY_%out_len:
583
+ %out_len = add 0, 0
584
+ !__range_inc_len_empty_%out_len
585
+
586
+ L_RANGE_INC_LEN_END_%out_len:
587
+ [END_MACRO]
588
+
589
+ [MACRO] RANGE_INCLUSIVE_U64_NEXT %out_ok, %out_value, %range_ptr
590
+ EXPAND RANGE_INCLUSIVE_U64_IS_EMPTY __range_inc_next_empty_%out_ok, %range_ptr
591
+ br __range_inc_next_empty_%out_ok -> L_RANGE_INC_NEXT_NONE_%out_ok, L_RANGE_INC_NEXT_SOME_%out_ok
592
+ L_RANGE_INC_NEXT_SOME_%out_ok:
593
+ __range_inc_next_start_%out_ok = load %range_ptr+RangeInclusiveU64_start as u64
594
+ __range_inc_next_end_%out_ok = load %range_ptr+RangeInclusiveU64_end as u64
595
+ %out_value = add __range_inc_next_start_%out_ok, 0
596
+ __range_inc_next_last_%out_ok = eq __range_inc_next_start_%out_ok, __range_inc_next_end_%out_ok
597
+ br __range_inc_next_last_%out_ok -> L_RANGE_INC_NEXT_EXHAUST_%out_ok, L_RANGE_INC_NEXT_ADVANCE_%out_ok
598
+ L_RANGE_INC_NEXT_ADVANCE_%out_ok:
599
+ __range_inc_next_start2_%out_ok = add __range_inc_next_start_%out_ok, 1
600
+ store %range_ptr+RangeInclusiveU64_start, __range_inc_next_start2_%out_ok as u64
601
+ %out_ok = add 0, 1
602
+ !__range_inc_next_start2_%out_ok
603
+ !__range_inc_next_last_%out_ok
604
+ !__range_inc_next_end_%out_ok
605
+ !__range_inc_next_start_%out_ok
606
+ !__range_inc_next_empty_%out_ok
607
+ jmp L_RANGE_INC_NEXT_END_%out_ok
608
+ L_RANGE_INC_NEXT_EXHAUST_%out_ok:
609
+ store %range_ptr+RangeInclusiveU64_exhausted, 1 as u64
610
+ %out_ok = add 0, 1
611
+ !__range_inc_next_last_%out_ok
612
+ !__range_inc_next_end_%out_ok
613
+ !__range_inc_next_start_%out_ok
614
+ !__range_inc_next_empty_%out_ok
615
+ jmp L_RANGE_INC_NEXT_END_%out_ok
616
+ L_RANGE_INC_NEXT_NONE_%out_ok:
617
+ %out_value = add 0, 0
618
+ %out_ok = add 0, 0
619
+ !__range_inc_next_empty_%out_ok
620
+ L_RANGE_INC_NEXT_END_%out_ok:
621
+ [END_MACRO]
622
+
623
+ [MACRO] RANGE_INCLUSIVE_U64_NEXT_BACK %out_ok, %out_value, %range_ptr
624
+ EXPAND RANGE_INCLUSIVE_U64_IS_EMPTY __range_inc_back_empty_%out_ok, %range_ptr
625
+ br __range_inc_back_empty_%out_ok -> L_RANGE_INC_BACK_NONE_%out_ok, L_RANGE_INC_BACK_SOME_%out_ok
626
+ L_RANGE_INC_BACK_SOME_%out_ok:
627
+ __range_inc_back_start_%out_ok = load %range_ptr+RangeInclusiveU64_start as u64
628
+ __range_inc_back_end_%out_ok = load %range_ptr+RangeInclusiveU64_end as u64
629
+ %out_value = add __range_inc_back_end_%out_ok, 0
630
+ __range_inc_back_last_%out_ok = eq __range_inc_back_start_%out_ok, __range_inc_back_end_%out_ok
631
+ br __range_inc_back_last_%out_ok -> L_RANGE_INC_BACK_EXHAUST_%out_ok, L_RANGE_INC_BACK_ADVANCE_%out_ok
632
+ L_RANGE_INC_BACK_ADVANCE_%out_ok:
633
+ __range_inc_back_end2_%out_ok = sub __range_inc_back_end_%out_ok, 1
634
+ store %range_ptr+RangeInclusiveU64_end, __range_inc_back_end2_%out_ok as u64
635
+ %out_ok = add 0, 1
636
+ !__range_inc_back_end2_%out_ok
637
+ !__range_inc_back_last_%out_ok
638
+ !__range_inc_back_end_%out_ok
639
+ !__range_inc_back_start_%out_ok
640
+ !__range_inc_back_empty_%out_ok
641
+ jmp L_RANGE_INC_BACK_END_%out_ok
642
+ L_RANGE_INC_BACK_EXHAUST_%out_ok:
643
+ store %range_ptr+RangeInclusiveU64_exhausted, 1 as u64
644
+ %out_ok = add 0, 1
645
+ !__range_inc_back_last_%out_ok
646
+ !__range_inc_back_end_%out_ok
647
+ !__range_inc_back_start_%out_ok
648
+ !__range_inc_back_empty_%out_ok
649
+ jmp L_RANGE_INC_BACK_END_%out_ok
650
+ L_RANGE_INC_BACK_NONE_%out_ok:
651
+ %out_value = add 0, 0
652
+ %out_ok = add 0, 0
653
+ !__range_inc_back_empty_%out_ok
654
+ L_RANGE_INC_BACK_END_%out_ok:
655
+ [END_MACRO]
656
+
657
+ [MACRO] RANGE_INCLUSIVE_U64_COUNT %out_count, %range_ptr
658
+ EXPAND RANGE_INCLUSIVE_U64_LEN %out_count, %range_ptr
659
+ store %range_ptr+RangeInclusiveU64_exhausted, 1 as u64
660
+ [END_MACRO]
661
+
662
+ [MACRO] RANGE_INCLUSIVE_U64_TRY_GET_SLICE %out_ok, %out_slice, %base_slice, %range_ptr
663
+ EXPAND RANGE_INCLUSIVE_U64_IS_EMPTY __range_inc_slice_empty_%out_ok, %range_ptr
664
+ br __range_inc_slice_empty_%out_ok -> L_RANGE_INC_SLICE_EMPTY_%out_ok, L_RANGE_INC_SLICE_CHECK_%out_ok
665
+
666
+ L_RANGE_INC_SLICE_CHECK_%out_ok:
667
+ __range_inc_slice_start_%out_ok = load %range_ptr+RangeInclusiveU64_start as u64
668
+ __range_inc_slice_end_%out_ok = load %range_ptr+RangeInclusiveU64_end as u64
669
+ __range_inc_slice_len_%out_ok = load %base_slice+Slice_len as u64
670
+ __range_inc_slice_bound_%out_ok = ult __range_inc_slice_end_%out_ok, __range_inc_slice_len_%out_ok
671
+ br __range_inc_slice_bound_%out_ok -> L_RANGE_INC_SLICE_HIT_%out_ok, L_RANGE_INC_SLICE_MISS_%out_ok
672
+
673
+ L_RANGE_INC_SLICE_HIT_%out_ok:
674
+ __range_inc_slice_base_%out_ok = load %base_slice+Slice_ptr as ptr
675
+ __range_inc_slice_byte_off_%out_ok = mul __range_inc_slice_start_%out_ok, 8
676
+ __range_inc_slice_ptr_%out_ok = ptr_add __range_inc_slice_base_%out_ok, __range_inc_slice_byte_off_%out_ok
677
+ __range_inc_slice_span_%out_ok = sub __range_inc_slice_end_%out_ok, __range_inc_slice_start_%out_ok
678
+ __range_inc_slice_view_len_%out_ok = add __range_inc_slice_span_%out_ok, 1
679
+ EXPAND SLICE_NEW %out_slice, __range_inc_slice_ptr_%out_ok, __range_inc_slice_view_len_%out_ok
680
+ %out_ok = add 0, 1
681
+ !__range_inc_slice_view_len_%out_ok
682
+ !__range_inc_slice_span_%out_ok
683
+ !__range_inc_slice_ptr_%out_ok
684
+ !__range_inc_slice_byte_off_%out_ok
685
+ !__range_inc_slice_base_%out_ok
686
+ !__range_inc_slice_bound_%out_ok
687
+ !__range_inc_slice_len_%out_ok
688
+ !__range_inc_slice_end_%out_ok
689
+ !__range_inc_slice_start_%out_ok
690
+ !__range_inc_slice_empty_%out_ok
691
+ jmp L_RANGE_INC_SLICE_END_%out_ok
692
+
693
+ L_RANGE_INC_SLICE_MISS_%out_ok:
694
+ !__range_inc_slice_bound_%out_ok
695
+ !__range_inc_slice_len_%out_ok
696
+ !__range_inc_slice_end_%out_ok
697
+ !__range_inc_slice_start_%out_ok
698
+ jmp L_RANGE_INC_SLICE_EMPTY_%out_ok
699
+
700
+ L_RANGE_INC_SLICE_EMPTY_%out_ok:
701
+ __range_inc_slice_null_%out_ok = 0 as ptr
702
+ EXPAND SLICE_NEW %out_slice, __range_inc_slice_null_%out_ok, 0
703
+ %out_ok = add 0, 0
704
+ !__range_inc_slice_null_%out_ok
705
+ !__range_inc_slice_empty_%out_ok
706
+
707
+ L_RANGE_INC_SLICE_END_%out_ok:
708
+ [END_MACRO]
709
+
710
+ [MACRO] RANGE_TO_INCLUSIVE_U64_NEW %range_ptr, %end
711
+ store %range_ptr+RangeToInclusiveU64_end, %end as u64
712
+ [END_MACRO]
713
+
714
+ [MACRO] RANGE_TO_INCLUSIVE_U64_END %out_end, %range_ptr
715
+ %out_end = load %range_ptr+RangeToInclusiveU64_end as u64
716
+ [END_MACRO]
717
+
718
+ [MACRO] RANGE_TO_INCLUSIVE_U64_CONTAINS %out_bool, %range_ptr, %item
719
+ __range_to_inc_end_%out_bool = load %range_ptr+RangeToInclusiveU64_end as u64
720
+ %out_bool = ule %item, __range_to_inc_end_%out_bool
721
+ !__range_to_inc_end_%out_bool
722
+ [END_MACRO]
723
+
724
+ [MACRO] RANGE_TO_INCLUSIVE_U64_TRY_GET_SLICE %out_ok, %out_slice, %base_slice, %range_ptr
725
+ __range_to_inc_end_%out_ok = load %range_ptr+RangeToInclusiveU64_end as u64
726
+ __range_to_inc_len_%out_ok = load %base_slice+Slice_len as u64
727
+ __range_to_inc_valid_%out_ok = ult __range_to_inc_end_%out_ok, __range_to_inc_len_%out_ok
728
+ br __range_to_inc_valid_%out_ok -> L_RANGE_TO_INC_SLICE_HIT_%out_ok, L_RANGE_TO_INC_SLICE_MISS_%out_ok
729
+
730
+ L_RANGE_TO_INC_SLICE_HIT_%out_ok:
731
+ __range_to_inc_base_%out_ok = load %base_slice+Slice_ptr as ptr
732
+ __range_to_inc_view_len_%out_ok = add __range_to_inc_end_%out_ok, 1
733
+ EXPAND SLICE_NEW %out_slice, __range_to_inc_base_%out_ok, __range_to_inc_view_len_%out_ok
734
+ %out_ok = add 0, 1
735
+ !__range_to_inc_view_len_%out_ok
736
+ !__range_to_inc_base_%out_ok
737
+ !__range_to_inc_valid_%out_ok
738
+ !__range_to_inc_len_%out_ok
739
+ !__range_to_inc_end_%out_ok
740
+ jmp L_RANGE_TO_INC_SLICE_END_%out_ok
741
+
742
+ L_RANGE_TO_INC_SLICE_MISS_%out_ok:
743
+ __range_to_inc_null_%out_ok = 0 as ptr
744
+ EXPAND SLICE_NEW %out_slice, __range_to_inc_null_%out_ok, 0
745
+ %out_ok = add 0, 0
746
+ !__range_to_inc_null_%out_ok
747
+ !__range_to_inc_valid_%out_ok
748
+ !__range_to_inc_len_%out_ok
749
+ !__range_to_inc_end_%out_ok
750
+
751
+ L_RANGE_TO_INC_SLICE_END_%out_ok:
752
+ [END_MACRO]
753
+
754
+ [MACRO] RANGE_FULL_CONTAINS_U64 %out_bool, %item
755
+ %out_bool = add 0, 1
756
+ [END_MACRO]
757
+
758
+ // Rust method-name alias over RANGE_FULL_CONTAINS_U64.
759
+ [MACRO] RANGE_FULL_CONTAINS %out_bool, %item
760
+ EXPAND RANGE_FULL_CONTAINS_U64 %out_bool, %item
761
+ [END_MACRO]
762
+
763
+ [MACRO] RANGE_FULL_GET_SLICE %out_slice, %base_slice
764
+ __range_full_ptr_%out_slice = load %base_slice+Slice_ptr as ptr
765
+ __range_full_len_%out_slice = load %base_slice+Slice_len as u64
766
+ EXPAND SLICE_NEW %out_slice, __range_full_ptr_%out_slice, __range_full_len_%out_slice
767
+ !__range_full_len_%out_slice
768
+ !__range_full_ptr_%out_slice
769
+ [END_MACRO]
770
+
771
+ [MACRO] BOUND_U64_UNBOUNDED_NEW %bound_ptr
772
+ store %bound_ptr+BoundU64_tag, BOUND_U64_UNBOUNDED as u64
773
+ store %bound_ptr+BoundU64_value, 0 as u64
774
+ [END_MACRO]
775
+
776
+ [MACRO] BOUND_U64_INCLUDED_NEW %bound_ptr, %value
777
+ store %bound_ptr+BoundU64_tag, BOUND_U64_INCLUDED as u64
778
+ store %bound_ptr+BoundU64_value, %value as u64
779
+ [END_MACRO]
780
+
781
+ [MACRO] BOUND_U64_EXCLUDED_NEW %bound_ptr, %value
782
+ store %bound_ptr+BoundU64_tag, BOUND_U64_EXCLUDED as u64
783
+ store %bound_ptr+BoundU64_value, %value as u64
784
+ [END_MACRO]
785
+
786
+ [MACRO] BOUND_U64_TAG %out_tag, %bound_ptr
787
+ %out_tag = load %bound_ptr+BoundU64_tag as u64
788
+ [END_MACRO]
789
+
790
+ [MACRO] BOUND_U64_VALUE %out_value, %bound_ptr
791
+ %out_value = load %bound_ptr+BoundU64_value as u64
792
+ [END_MACRO]
793
+
794
+ [MACRO] BOUND_U64_AS_REF %dst_bound_ref_ptr, %src_bound_ptr
795
+ __bound_u64_as_ref_tag_%dst_bound_ref_ptr = load %src_bound_ptr+BoundU64_tag as u64
796
+ __bound_u64_as_ref_unbounded_%dst_bound_ref_ptr = eq __bound_u64_as_ref_tag_%dst_bound_ref_ptr, BOUND_U64_UNBOUNDED
797
+ store %dst_bound_ref_ptr+BoundU64Ref_tag, __bound_u64_as_ref_tag_%dst_bound_ref_ptr as u64
798
+ br __bound_u64_as_ref_unbounded_%dst_bound_ref_ptr -> L_BOUND_U64_AS_REF_UNBOUNDED_%dst_bound_ref_ptr, L_BOUND_U64_AS_REF_VALUE_%dst_bound_ref_ptr
799
+
800
+ L_BOUND_U64_AS_REF_VALUE_%dst_bound_ref_ptr:
801
+ __bound_u64_as_ref_ptr_%dst_bound_ref_ptr = ptr_add %src_bound_ptr, BoundU64_value
802
+ store %dst_bound_ref_ptr+BoundU64Ref_ptr, __bound_u64_as_ref_ptr_%dst_bound_ref_ptr as ptr
803
+ !__bound_u64_as_ref_ptr_%dst_bound_ref_ptr
804
+ !__bound_u64_as_ref_unbounded_%dst_bound_ref_ptr
805
+ !__bound_u64_as_ref_tag_%dst_bound_ref_ptr
806
+ jmp L_BOUND_U64_AS_REF_DONE_%dst_bound_ref_ptr
807
+
808
+ L_BOUND_U64_AS_REF_UNBOUNDED_%dst_bound_ref_ptr:
809
+ store %dst_bound_ref_ptr+BoundU64Ref_ptr, 0 as u64
810
+ !__bound_u64_as_ref_unbounded_%dst_bound_ref_ptr
811
+ !__bound_u64_as_ref_tag_%dst_bound_ref_ptr
812
+
813
+ L_BOUND_U64_AS_REF_DONE_%dst_bound_ref_ptr:
814
+ [END_MACRO]
815
+
816
+ [MACRO] BOUND_U64_AS_MUT %dst_bound_ref_ptr, %src_bound_ptr
817
+ EXPAND BOUND_U64_AS_REF %dst_bound_ref_ptr, %src_bound_ptr
818
+ [END_MACRO]
819
+
820
+ [MACRO] BOUND_U64_REF_TAG %out_tag, %bound_ref_ptr
821
+ %out_tag = load %bound_ref_ptr+BoundU64Ref_tag as u64
822
+ [END_MACRO]
823
+
824
+ [MACRO] BOUND_U64_REF_PTR %out_ptr, %bound_ref_ptr
825
+ %out_ptr = load %bound_ref_ptr+BoundU64Ref_ptr as ptr
826
+ [END_MACRO]
827
+
828
+ [MACRO] BOUND_U64_REF_COPIED %dst_bound_ptr, %src_bound_ref_ptr
829
+ __bound_u64_ref_copied_tag_%dst_bound_ptr = load %src_bound_ref_ptr+BoundU64Ref_tag as u64
830
+ __bound_u64_ref_copied_unbounded_%dst_bound_ptr = eq __bound_u64_ref_copied_tag_%dst_bound_ptr, BOUND_U64_UNBOUNDED
831
+ store %dst_bound_ptr+BoundU64_tag, __bound_u64_ref_copied_tag_%dst_bound_ptr as u64
832
+ br __bound_u64_ref_copied_unbounded_%dst_bound_ptr -> L_BOUND_U64_REF_COPIED_UNBOUNDED_%dst_bound_ptr, L_BOUND_U64_REF_COPIED_VALUE_%dst_bound_ptr
833
+
834
+ L_BOUND_U64_REF_COPIED_VALUE_%dst_bound_ptr:
835
+ __bound_u64_ref_copied_ptr_%dst_bound_ptr = load %src_bound_ref_ptr+BoundU64Ref_ptr as ptr
836
+ __bound_u64_ref_copied_value_%dst_bound_ptr = load __bound_u64_ref_copied_ptr_%dst_bound_ptr+0 as u64
837
+ store %dst_bound_ptr+BoundU64_value, __bound_u64_ref_copied_value_%dst_bound_ptr as u64
838
+ !__bound_u64_ref_copied_value_%dst_bound_ptr
839
+ !__bound_u64_ref_copied_ptr_%dst_bound_ptr
840
+ !__bound_u64_ref_copied_unbounded_%dst_bound_ptr
841
+ !__bound_u64_ref_copied_tag_%dst_bound_ptr
842
+ jmp L_BOUND_U64_REF_COPIED_DONE_%dst_bound_ptr
843
+
844
+ L_BOUND_U64_REF_COPIED_UNBOUNDED_%dst_bound_ptr:
845
+ store %dst_bound_ptr+BoundU64_value, 0 as u64
846
+ !__bound_u64_ref_copied_unbounded_%dst_bound_ptr
847
+ !__bound_u64_ref_copied_tag_%dst_bound_ptr
848
+
849
+ L_BOUND_U64_REF_COPIED_DONE_%dst_bound_ptr:
850
+ [END_MACRO]
851
+
852
+ [MACRO] BOUND_U64_REF_CLONED %dst_bound_ptr, %src_bound_ref_ptr
853
+ EXPAND BOUND_U64_REF_COPIED %dst_bound_ptr, %src_bound_ref_ptr
854
+ [END_MACRO]
855
+
856
+ [MACRO] BOUND_U64_IS_UNBOUNDED %out_bool, %bound_ptr
857
+ __bound_tag_%out_bool = load %bound_ptr+BoundU64_tag as u64
858
+ %out_bool = eq __bound_tag_%out_bool, BOUND_U64_UNBOUNDED
859
+ !__bound_tag_%out_bool
860
+ [END_MACRO]
861
+
862
+ [MACRO] BOUND_U64_IS_INCLUDED %out_bool, %bound_ptr
863
+ __bound_tag_%out_bool = load %bound_ptr+BoundU64_tag as u64
864
+ %out_bool = eq __bound_tag_%out_bool, BOUND_U64_INCLUDED
865
+ !__bound_tag_%out_bool
866
+ [END_MACRO]
867
+
868
+ [MACRO] BOUND_U64_IS_EXCLUDED %out_bool, %bound_ptr
869
+ __bound_tag_%out_bool = load %bound_ptr+BoundU64_tag as u64
870
+ %out_bool = eq __bound_tag_%out_bool, BOUND_U64_EXCLUDED
871
+ !__bound_tag_%out_bool
872
+ [END_MACRO]
873
+
874
+ [MACRO] BOUND_U64_CONTAINS_START %out_bool, %bound_ptr, %item
875
+ __bound_start_tag_%out_bool = load %bound_ptr+BoundU64_tag as u64
876
+ __bound_start_unbounded_%out_bool = eq __bound_start_tag_%out_bool, BOUND_U64_UNBOUNDED
877
+ br __bound_start_unbounded_%out_bool -> L_BOUND_START_TRUE_%out_bool, L_BOUND_START_CHECK_%out_bool
878
+
879
+ L_BOUND_START_CHECK_%out_bool:
880
+ __bound_start_value_%out_bool = load %bound_ptr+BoundU64_value as u64
881
+ __bound_start_included_%out_bool = eq __bound_start_tag_%out_bool, BOUND_U64_INCLUDED
882
+ br __bound_start_included_%out_bool -> L_BOUND_START_INCLUDED_%out_bool, L_BOUND_START_EXCLUDED_%out_bool
883
+
884
+ L_BOUND_START_INCLUDED_%out_bool:
885
+ %out_bool = ule __bound_start_value_%out_bool, %item
886
+ !__bound_start_included_%out_bool
887
+ !__bound_start_value_%out_bool
888
+ !__bound_start_unbounded_%out_bool
889
+ !__bound_start_tag_%out_bool
890
+ jmp L_BOUND_START_END_%out_bool
891
+
892
+ L_BOUND_START_EXCLUDED_%out_bool:
893
+ %out_bool = ult __bound_start_value_%out_bool, %item
894
+ !__bound_start_included_%out_bool
895
+ !__bound_start_value_%out_bool
896
+ !__bound_start_unbounded_%out_bool
897
+ !__bound_start_tag_%out_bool
898
+ jmp L_BOUND_START_END_%out_bool
899
+
900
+ L_BOUND_START_TRUE_%out_bool:
901
+ %out_bool = add 0, 1
902
+ !__bound_start_unbounded_%out_bool
903
+ !__bound_start_tag_%out_bool
904
+
905
+ L_BOUND_START_END_%out_bool:
906
+ [END_MACRO]
907
+
908
+ [MACRO] BOUND_U64_CONTAINS_END %out_bool, %bound_ptr, %item
909
+ __bound_end_tag_%out_bool = load %bound_ptr+BoundU64_tag as u64
910
+ __bound_end_unbounded_%out_bool = eq __bound_end_tag_%out_bool, BOUND_U64_UNBOUNDED
911
+ br __bound_end_unbounded_%out_bool -> L_BOUND_END_TRUE_%out_bool, L_BOUND_END_CHECK_%out_bool
912
+
913
+ L_BOUND_END_CHECK_%out_bool:
914
+ __bound_end_value_%out_bool = load %bound_ptr+BoundU64_value as u64
915
+ __bound_end_included_%out_bool = eq __bound_end_tag_%out_bool, BOUND_U64_INCLUDED
916
+ br __bound_end_included_%out_bool -> L_BOUND_END_INCLUDED_%out_bool, L_BOUND_END_EXCLUDED_%out_bool
917
+
918
+ L_BOUND_END_INCLUDED_%out_bool:
919
+ %out_bool = ule %item, __bound_end_value_%out_bool
920
+ !__bound_end_included_%out_bool
921
+ !__bound_end_value_%out_bool
922
+ !__bound_end_unbounded_%out_bool
923
+ !__bound_end_tag_%out_bool
924
+ jmp L_BOUND_END_END_%out_bool
925
+
926
+ L_BOUND_END_EXCLUDED_%out_bool:
927
+ %out_bool = ult %item, __bound_end_value_%out_bool
928
+ !__bound_end_included_%out_bool
929
+ !__bound_end_value_%out_bool
930
+ !__bound_end_unbounded_%out_bool
931
+ !__bound_end_tag_%out_bool
932
+ jmp L_BOUND_END_END_%out_bool
933
+
934
+ L_BOUND_END_TRUE_%out_bool:
935
+ %out_bool = add 0, 1
936
+ !__bound_end_unbounded_%out_bool
937
+ !__bound_end_tag_%out_bool
938
+
939
+ L_BOUND_END_END_%out_bool:
940
+ [END_MACRO]
941
+
942
+ [MACRO] BOUND_U64_RANGE_CONTAINS %out_bool, %start_bound_ptr, %end_bound_ptr, %item
943
+ EXPAND BOUND_U64_CONTAINS_START __bound_range_start_%out_bool, %start_bound_ptr, %item
944
+ EXPAND BOUND_U64_CONTAINS_END __bound_range_end_%out_bool, %end_bound_ptr, %item
945
+ %out_bool = and __bound_range_start_%out_bool, __bound_range_end_%out_bool
946
+ !__bound_range_end_%out_bool
947
+ !__bound_range_start_%out_bool
948
+ [END_MACRO]
949
+
950
+ [MACRO] BOUND_U64_RANGE_IS_EMPTY %out_bool, %start_bound_ptr, %end_bound_ptr
951
+ __bound_u64_empty_start_tag_%out_bool = load %start_bound_ptr+BoundU64_tag as u64
952
+ __bound_u64_empty_end_tag_%out_bool = load %end_bound_ptr+BoundU64_tag as u64
953
+ __bound_u64_empty_start_unbounded_%out_bool = eq __bound_u64_empty_start_tag_%out_bool, BOUND_U64_UNBOUNDED
954
+ __bound_u64_empty_end_unbounded_%out_bool = eq __bound_u64_empty_end_tag_%out_bool, BOUND_U64_UNBOUNDED
955
+ __bound_u64_empty_unbounded_%out_bool = or __bound_u64_empty_start_unbounded_%out_bool, __bound_u64_empty_end_unbounded_%out_bool
956
+ br __bound_u64_empty_unbounded_%out_bool -> L_BOUND_U64_EMPTY_FALSE_%out_bool, L_BOUND_U64_EMPTY_CHECK_%out_bool
957
+
958
+ L_BOUND_U64_EMPTY_CHECK_%out_bool:
959
+ __bound_u64_empty_start_value_%out_bool = load %start_bound_ptr+BoundU64_value as u64
960
+ __bound_u64_empty_end_value_%out_bool = load %end_bound_ptr+BoundU64_value as u64
961
+ __bound_u64_empty_start_included_%out_bool = eq __bound_u64_empty_start_tag_%out_bool, BOUND_U64_INCLUDED
962
+ __bound_u64_empty_end_included_%out_bool = eq __bound_u64_empty_end_tag_%out_bool, BOUND_U64_INCLUDED
963
+ __bound_u64_empty_both_included_%out_bool = and __bound_u64_empty_start_included_%out_bool, __bound_u64_empty_end_included_%out_bool
964
+ br __bound_u64_empty_both_included_%out_bool -> L_BOUND_U64_EMPTY_INCLUDED_%out_bool, L_BOUND_U64_EMPTY_STRICT_%out_bool
965
+
966
+ L_BOUND_U64_EMPTY_INCLUDED_%out_bool:
967
+ __bound_u64_empty_valid_inc_%out_bool = ule __bound_u64_empty_start_value_%out_bool, __bound_u64_empty_end_value_%out_bool
968
+ %out_bool = eq __bound_u64_empty_valid_inc_%out_bool, 0
969
+ !__bound_u64_empty_valid_inc_%out_bool
970
+ !__bound_u64_empty_both_included_%out_bool
971
+ !__bound_u64_empty_end_included_%out_bool
972
+ !__bound_u64_empty_start_included_%out_bool
973
+ !__bound_u64_empty_end_value_%out_bool
974
+ !__bound_u64_empty_start_value_%out_bool
975
+ !__bound_u64_empty_unbounded_%out_bool
976
+ !__bound_u64_empty_end_unbounded_%out_bool
977
+ !__bound_u64_empty_start_unbounded_%out_bool
978
+ !__bound_u64_empty_end_tag_%out_bool
979
+ !__bound_u64_empty_start_tag_%out_bool
980
+ jmp L_BOUND_U64_EMPTY_DONE_%out_bool
981
+
982
+ L_BOUND_U64_EMPTY_STRICT_%out_bool:
983
+ __bound_u64_empty_valid_strict_%out_bool = ult __bound_u64_empty_start_value_%out_bool, __bound_u64_empty_end_value_%out_bool
984
+ %out_bool = eq __bound_u64_empty_valid_strict_%out_bool, 0
985
+ !__bound_u64_empty_valid_strict_%out_bool
986
+ !__bound_u64_empty_both_included_%out_bool
987
+ !__bound_u64_empty_end_included_%out_bool
988
+ !__bound_u64_empty_start_included_%out_bool
989
+ !__bound_u64_empty_end_value_%out_bool
990
+ !__bound_u64_empty_start_value_%out_bool
991
+ !__bound_u64_empty_unbounded_%out_bool
992
+ !__bound_u64_empty_end_unbounded_%out_bool
993
+ !__bound_u64_empty_start_unbounded_%out_bool
994
+ !__bound_u64_empty_end_tag_%out_bool
995
+ !__bound_u64_empty_start_tag_%out_bool
996
+ jmp L_BOUND_U64_EMPTY_DONE_%out_bool
997
+
998
+ L_BOUND_U64_EMPTY_FALSE_%out_bool:
999
+ %out_bool = add 0, 0
1000
+ !__bound_u64_empty_unbounded_%out_bool
1001
+ !__bound_u64_empty_end_unbounded_%out_bool
1002
+ !__bound_u64_empty_start_unbounded_%out_bool
1003
+ !__bound_u64_empty_end_tag_%out_bool
1004
+ !__bound_u64_empty_start_tag_%out_bool
1005
+
1006
+ L_BOUND_U64_EMPTY_DONE_%out_bool:
1007
+ [END_MACRO]
1008
+
1009
+ [MACRO] RANGE_U64_DEFAULT %range_ptr
1010
+ store %range_ptr+RangeU64_start, 0 as u64
1011
+ store %range_ptr+RangeU64_end, 0 as u64
1012
+ [END_MACRO]
1013
+
1014
+ [MACRO] RANGE_FULL_DEFAULT %range_ptr
1015
+ __range_full_noop_%range_ptr = add 0, 0
1016
+ !__range_full_noop_%range_ptr
1017
+ [END_MACRO]
1018
+
1019
+ [MACRO] BOUND_U64_DEFAULT %bound_ptr
1020
+ EXPAND BOUND_U64_UNBOUNDED_NEW %bound_ptr
1021
+ [END_MACRO]
1022
+
1023
+ [MACRO] BOUND_U64_COPY %dst_bound_ptr, %src_bound_ptr
1024
+ __bound_u64_copy_tag_%dst_bound_ptr = load %src_bound_ptr+BoundU64_tag as u64
1025
+ __bound_u64_copy_value_%dst_bound_ptr = load %src_bound_ptr+BoundU64_value as u64
1026
+ store %dst_bound_ptr+BoundU64_tag, __bound_u64_copy_tag_%dst_bound_ptr as u64
1027
+ store %dst_bound_ptr+BoundU64_value, __bound_u64_copy_value_%dst_bound_ptr as u64
1028
+ !__bound_u64_copy_value_%dst_bound_ptr
1029
+ !__bound_u64_copy_tag_%dst_bound_ptr
1030
+ [END_MACRO]
1031
+
1032
+ [MACRO] BOUND_U64_COPIED %dst_bound_ptr, %src_bound_ptr
1033
+ EXPAND BOUND_U64_COPY %dst_bound_ptr, %src_bound_ptr
1034
+ [END_MACRO]
1035
+
1036
+ [MACRO] BOUND_U64_CLONED %dst_bound_ptr, %src_bound_ptr
1037
+ EXPAND BOUND_U64_COPY %dst_bound_ptr, %src_bound_ptr
1038
+ [END_MACRO]
1039
+
1040
+ [MACRO] BOUND_U64_MAP %dst_bound_ptr, %src_bound_ptr, %map_fn
1041
+ __bound_u64_map_tag_%dst_bound_ptr = load %src_bound_ptr+BoundU64_tag as u64
1042
+ __bound_u64_map_unbounded_%dst_bound_ptr = eq __bound_u64_map_tag_%dst_bound_ptr, BOUND_U64_UNBOUNDED
1043
+ br __bound_u64_map_unbounded_%dst_bound_ptr -> L_BOUND_U64_MAP_UNBOUNDED_%dst_bound_ptr, L_BOUND_U64_MAP_VALUE_%dst_bound_ptr
1044
+
1045
+ L_BOUND_U64_MAP_VALUE_%dst_bound_ptr:
1046
+ __bound_u64_map_value_%dst_bound_ptr = load %src_bound_ptr+BoundU64_value as u64
1047
+ __bound_u64_map_mapped_%dst_bound_ptr = call %map_fn(__bound_u64_map_value_%dst_bound_ptr)
1048
+ store %dst_bound_ptr+BoundU64_tag, __bound_u64_map_tag_%dst_bound_ptr as u64
1049
+ store %dst_bound_ptr+BoundU64_value, __bound_u64_map_mapped_%dst_bound_ptr as u64
1050
+ !__bound_u64_map_mapped_%dst_bound_ptr
1051
+ !__bound_u64_map_value_%dst_bound_ptr
1052
+ !__bound_u64_map_unbounded_%dst_bound_ptr
1053
+ !__bound_u64_map_tag_%dst_bound_ptr
1054
+ jmp L_BOUND_U64_MAP_DONE_%dst_bound_ptr
1055
+
1056
+ L_BOUND_U64_MAP_UNBOUNDED_%dst_bound_ptr:
1057
+ store %dst_bound_ptr+BoundU64_tag, BOUND_U64_UNBOUNDED as u64
1058
+ store %dst_bound_ptr+BoundU64_value, 0 as u64
1059
+ !__bound_u64_map_unbounded_%dst_bound_ptr
1060
+ !__bound_u64_map_tag_%dst_bound_ptr
1061
+
1062
+ L_BOUND_U64_MAP_DONE_%dst_bound_ptr:
1063
+ [END_MACRO]
1064
+
1065
+ [MACRO] BOUND_USIZE_UNBOUNDED_NEW %bound_ptr
1066
+ store %bound_ptr+BoundUsize_tag, BOUND_USIZE_UNBOUNDED as u64
1067
+ store %bound_ptr+BoundUsize_value, 0 as u64
1068
+ [END_MACRO]
1069
+
1070
+ [MACRO] BOUND_USIZE_INCLUDED_NEW %bound_ptr, %value
1071
+ store %bound_ptr+BoundUsize_tag, BOUND_USIZE_INCLUDED as u64
1072
+ store %bound_ptr+BoundUsize_value, %value as u64
1073
+ [END_MACRO]
1074
+
1075
+ [MACRO] BOUND_USIZE_EXCLUDED_NEW %bound_ptr, %value
1076
+ store %bound_ptr+BoundUsize_tag, BOUND_USIZE_EXCLUDED as u64
1077
+ store %bound_ptr+BoundUsize_value, %value as u64
1078
+ [END_MACRO]
1079
+
1080
+ [MACRO] BOUND_USIZE_TAG %out_tag, %bound_ptr
1081
+ %out_tag = load %bound_ptr+BoundUsize_tag as u64
1082
+ [END_MACRO]
1083
+
1084
+ [MACRO] BOUND_USIZE_VALUE %out_value, %bound_ptr
1085
+ %out_value = load %bound_ptr+BoundUsize_value as u64
1086
+ [END_MACRO]
1087
+
1088
+ [MACRO] BOUND_USIZE_AS_REF %dst_bound_ref_ptr, %src_bound_ptr
1089
+ EXPAND BOUND_U64_AS_REF %dst_bound_ref_ptr, %src_bound_ptr
1090
+ [END_MACRO]
1091
+
1092
+ [MACRO] BOUND_USIZE_AS_MUT %dst_bound_ref_ptr, %src_bound_ptr
1093
+ EXPAND BOUND_U64_AS_MUT %dst_bound_ref_ptr, %src_bound_ptr
1094
+ [END_MACRO]
1095
+
1096
+ [MACRO] BOUND_USIZE_REF_TAG %out_tag, %bound_ref_ptr
1097
+ %out_tag = load %bound_ref_ptr+BoundUsizeRef_tag as u64
1098
+ [END_MACRO]
1099
+
1100
+ [MACRO] BOUND_USIZE_REF_PTR %out_ptr, %bound_ref_ptr
1101
+ %out_ptr = load %bound_ref_ptr+BoundUsizeRef_ptr as ptr
1102
+ [END_MACRO]
1103
+
1104
+ [MACRO] BOUND_USIZE_REF_COPIED %dst_bound_ptr, %src_bound_ref_ptr
1105
+ EXPAND BOUND_U64_REF_COPIED %dst_bound_ptr, %src_bound_ref_ptr
1106
+ [END_MACRO]
1107
+
1108
+ [MACRO] BOUND_USIZE_REF_CLONED %dst_bound_ptr, %src_bound_ref_ptr
1109
+ EXPAND BOUND_U64_REF_CLONED %dst_bound_ptr, %src_bound_ref_ptr
1110
+ [END_MACRO]
1111
+
1112
+ [MACRO] BOUND_USIZE_IS_UNBOUNDED %out_bool, %bound_ptr
1113
+ __bound_usize_tag_%out_bool = load %bound_ptr+BoundUsize_tag as u64
1114
+ %out_bool = eq __bound_usize_tag_%out_bool, BOUND_USIZE_UNBOUNDED
1115
+ !__bound_usize_tag_%out_bool
1116
+ [END_MACRO]
1117
+
1118
+ [MACRO] BOUND_USIZE_IS_INCLUDED %out_bool, %bound_ptr
1119
+ __bound_usize_tag_%out_bool = load %bound_ptr+BoundUsize_tag as u64
1120
+ %out_bool = eq __bound_usize_tag_%out_bool, BOUND_USIZE_INCLUDED
1121
+ !__bound_usize_tag_%out_bool
1122
+ [END_MACRO]
1123
+
1124
+ [MACRO] BOUND_USIZE_IS_EXCLUDED %out_bool, %bound_ptr
1125
+ __bound_usize_tag_%out_bool = load %bound_ptr+BoundUsize_tag as u64
1126
+ %out_bool = eq __bound_usize_tag_%out_bool, BOUND_USIZE_EXCLUDED
1127
+ !__bound_usize_tag_%out_bool
1128
+ [END_MACRO]
1129
+
1130
+ [MACRO] BOUND_USIZE_CONTAINS_START %out_bool, %bound_ptr, %item
1131
+ __bound_usize_start_tag_%out_bool = load %bound_ptr+BoundUsize_tag as u64
1132
+ __bound_usize_start_unbounded_%out_bool = eq __bound_usize_start_tag_%out_bool, BOUND_USIZE_UNBOUNDED
1133
+ br __bound_usize_start_unbounded_%out_bool -> L_BOUND_USIZE_START_TRUE_%out_bool, L_BOUND_USIZE_START_CHECK_%out_bool
1134
+
1135
+ L_BOUND_USIZE_START_CHECK_%out_bool:
1136
+ __bound_usize_start_value_%out_bool = load %bound_ptr+BoundUsize_value as u64
1137
+ __bound_usize_start_included_%out_bool = eq __bound_usize_start_tag_%out_bool, BOUND_USIZE_INCLUDED
1138
+ br __bound_usize_start_included_%out_bool -> L_BOUND_USIZE_START_INCLUDED_%out_bool, L_BOUND_USIZE_START_EXCLUDED_%out_bool
1139
+
1140
+ L_BOUND_USIZE_START_INCLUDED_%out_bool:
1141
+ %out_bool = ule __bound_usize_start_value_%out_bool, %item
1142
+ !__bound_usize_start_included_%out_bool
1143
+ !__bound_usize_start_value_%out_bool
1144
+ !__bound_usize_start_unbounded_%out_bool
1145
+ !__bound_usize_start_tag_%out_bool
1146
+ jmp L_BOUND_USIZE_START_END_%out_bool
1147
+
1148
+ L_BOUND_USIZE_START_EXCLUDED_%out_bool:
1149
+ %out_bool = ult __bound_usize_start_value_%out_bool, %item
1150
+ !__bound_usize_start_included_%out_bool
1151
+ !__bound_usize_start_value_%out_bool
1152
+ !__bound_usize_start_unbounded_%out_bool
1153
+ !__bound_usize_start_tag_%out_bool
1154
+ jmp L_BOUND_USIZE_START_END_%out_bool
1155
+
1156
+ L_BOUND_USIZE_START_TRUE_%out_bool:
1157
+ %out_bool = add 0, 1
1158
+ !__bound_usize_start_unbounded_%out_bool
1159
+ !__bound_usize_start_tag_%out_bool
1160
+
1161
+ L_BOUND_USIZE_START_END_%out_bool:
1162
+ [END_MACRO]
1163
+
1164
+ [MACRO] BOUND_USIZE_CONTAINS_END %out_bool, %bound_ptr, %item
1165
+ __bound_usize_end_tag_%out_bool = load %bound_ptr+BoundUsize_tag as u64
1166
+ __bound_usize_end_unbounded_%out_bool = eq __bound_usize_end_tag_%out_bool, BOUND_USIZE_UNBOUNDED
1167
+ br __bound_usize_end_unbounded_%out_bool -> L_BOUND_USIZE_END_TRUE_%out_bool, L_BOUND_USIZE_END_CHECK_%out_bool
1168
+
1169
+ L_BOUND_USIZE_END_CHECK_%out_bool:
1170
+ __bound_usize_end_value_%out_bool = load %bound_ptr+BoundUsize_value as u64
1171
+ __bound_usize_end_included_%out_bool = eq __bound_usize_end_tag_%out_bool, BOUND_USIZE_INCLUDED
1172
+ br __bound_usize_end_included_%out_bool -> L_BOUND_USIZE_END_INCLUDED_%out_bool, L_BOUND_USIZE_END_EXCLUDED_%out_bool
1173
+
1174
+ L_BOUND_USIZE_END_INCLUDED_%out_bool:
1175
+ %out_bool = ule %item, __bound_usize_end_value_%out_bool
1176
+ !__bound_usize_end_included_%out_bool
1177
+ !__bound_usize_end_value_%out_bool
1178
+ !__bound_usize_end_unbounded_%out_bool
1179
+ !__bound_usize_end_tag_%out_bool
1180
+ jmp L_BOUND_USIZE_END_END_%out_bool
1181
+
1182
+ L_BOUND_USIZE_END_EXCLUDED_%out_bool:
1183
+ %out_bool = ult %item, __bound_usize_end_value_%out_bool
1184
+ !__bound_usize_end_included_%out_bool
1185
+ !__bound_usize_end_value_%out_bool
1186
+ !__bound_usize_end_unbounded_%out_bool
1187
+ !__bound_usize_end_tag_%out_bool
1188
+ jmp L_BOUND_USIZE_END_END_%out_bool
1189
+
1190
+ L_BOUND_USIZE_END_TRUE_%out_bool:
1191
+ %out_bool = add 0, 1
1192
+ !__bound_usize_end_unbounded_%out_bool
1193
+ !__bound_usize_end_tag_%out_bool
1194
+
1195
+ L_BOUND_USIZE_END_END_%out_bool:
1196
+ [END_MACRO]
1197
+
1198
+ [MACRO] BOUND_USIZE_RANGE_CONTAINS %out_bool, %start_bound_ptr, %end_bound_ptr, %item
1199
+ EXPAND BOUND_USIZE_CONTAINS_START __bound_usize_range_start_%out_bool, %start_bound_ptr, %item
1200
+ EXPAND BOUND_USIZE_CONTAINS_END __bound_usize_range_end_%out_bool, %end_bound_ptr, %item
1201
+ %out_bool = and __bound_usize_range_start_%out_bool, __bound_usize_range_end_%out_bool
1202
+ !__bound_usize_range_end_%out_bool
1203
+ !__bound_usize_range_start_%out_bool
1204
+ [END_MACRO]
1205
+
1206
+ [MACRO] BOUND_USIZE_RANGE_IS_EMPTY %out_bool, %start_bound_ptr, %end_bound_ptr
1207
+ __bound_usize_empty_start_tag_%out_bool = load %start_bound_ptr+BoundUsize_tag as u64
1208
+ __bound_usize_empty_end_tag_%out_bool = load %end_bound_ptr+BoundUsize_tag as u64
1209
+ __bound_usize_empty_start_unbounded_%out_bool = eq __bound_usize_empty_start_tag_%out_bool, BOUND_USIZE_UNBOUNDED
1210
+ __bound_usize_empty_end_unbounded_%out_bool = eq __bound_usize_empty_end_tag_%out_bool, BOUND_USIZE_UNBOUNDED
1211
+ __bound_usize_empty_unbounded_%out_bool = or __bound_usize_empty_start_unbounded_%out_bool, __bound_usize_empty_end_unbounded_%out_bool
1212
+ br __bound_usize_empty_unbounded_%out_bool -> L_BOUND_USIZE_EMPTY_FALSE_%out_bool, L_BOUND_USIZE_EMPTY_CHECK_%out_bool
1213
+
1214
+ L_BOUND_USIZE_EMPTY_CHECK_%out_bool:
1215
+ __bound_usize_empty_start_value_%out_bool = load %start_bound_ptr+BoundUsize_value as u64
1216
+ __bound_usize_empty_end_value_%out_bool = load %end_bound_ptr+BoundUsize_value as u64
1217
+ __bound_usize_empty_start_included_%out_bool = eq __bound_usize_empty_start_tag_%out_bool, BOUND_USIZE_INCLUDED
1218
+ __bound_usize_empty_end_included_%out_bool = eq __bound_usize_empty_end_tag_%out_bool, BOUND_USIZE_INCLUDED
1219
+ __bound_usize_empty_both_included_%out_bool = and __bound_usize_empty_start_included_%out_bool, __bound_usize_empty_end_included_%out_bool
1220
+ br __bound_usize_empty_both_included_%out_bool -> L_BOUND_USIZE_EMPTY_INCLUDED_%out_bool, L_BOUND_USIZE_EMPTY_STRICT_%out_bool
1221
+
1222
+ L_BOUND_USIZE_EMPTY_INCLUDED_%out_bool:
1223
+ __bound_usize_empty_valid_inc_%out_bool = ule __bound_usize_empty_start_value_%out_bool, __bound_usize_empty_end_value_%out_bool
1224
+ %out_bool = eq __bound_usize_empty_valid_inc_%out_bool, 0
1225
+ !__bound_usize_empty_valid_inc_%out_bool
1226
+ !__bound_usize_empty_both_included_%out_bool
1227
+ !__bound_usize_empty_end_included_%out_bool
1228
+ !__bound_usize_empty_start_included_%out_bool
1229
+ !__bound_usize_empty_end_value_%out_bool
1230
+ !__bound_usize_empty_start_value_%out_bool
1231
+ !__bound_usize_empty_unbounded_%out_bool
1232
+ !__bound_usize_empty_end_unbounded_%out_bool
1233
+ !__bound_usize_empty_start_unbounded_%out_bool
1234
+ !__bound_usize_empty_end_tag_%out_bool
1235
+ !__bound_usize_empty_start_tag_%out_bool
1236
+ jmp L_BOUND_USIZE_EMPTY_DONE_%out_bool
1237
+
1238
+ L_BOUND_USIZE_EMPTY_STRICT_%out_bool:
1239
+ __bound_usize_empty_valid_strict_%out_bool = ult __bound_usize_empty_start_value_%out_bool, __bound_usize_empty_end_value_%out_bool
1240
+ %out_bool = eq __bound_usize_empty_valid_strict_%out_bool, 0
1241
+ !__bound_usize_empty_valid_strict_%out_bool
1242
+ !__bound_usize_empty_both_included_%out_bool
1243
+ !__bound_usize_empty_end_included_%out_bool
1244
+ !__bound_usize_empty_start_included_%out_bool
1245
+ !__bound_usize_empty_end_value_%out_bool
1246
+ !__bound_usize_empty_start_value_%out_bool
1247
+ !__bound_usize_empty_unbounded_%out_bool
1248
+ !__bound_usize_empty_end_unbounded_%out_bool
1249
+ !__bound_usize_empty_start_unbounded_%out_bool
1250
+ !__bound_usize_empty_end_tag_%out_bool
1251
+ !__bound_usize_empty_start_tag_%out_bool
1252
+ jmp L_BOUND_USIZE_EMPTY_DONE_%out_bool
1253
+
1254
+ L_BOUND_USIZE_EMPTY_FALSE_%out_bool:
1255
+ %out_bool = add 0, 0
1256
+ !__bound_usize_empty_unbounded_%out_bool
1257
+ !__bound_usize_empty_end_unbounded_%out_bool
1258
+ !__bound_usize_empty_start_unbounded_%out_bool
1259
+ !__bound_usize_empty_end_tag_%out_bool
1260
+ !__bound_usize_empty_start_tag_%out_bool
1261
+
1262
+ L_BOUND_USIZE_EMPTY_DONE_%out_bool:
1263
+ [END_MACRO]
1264
+
1265
+ [MACRO] BOUND_USIZE_DEFAULT %bound_ptr
1266
+ EXPAND BOUND_USIZE_UNBOUNDED_NEW %bound_ptr
1267
+ [END_MACRO]
1268
+
1269
+ [MACRO] BOUND_USIZE_COPY %dst_bound_ptr, %src_bound_ptr
1270
+ __bound_usize_copy_tag_%dst_bound_ptr = load %src_bound_ptr+BoundUsize_tag as u64
1271
+ __bound_usize_copy_value_%dst_bound_ptr = load %src_bound_ptr+BoundUsize_value as u64
1272
+ store %dst_bound_ptr+BoundUsize_tag, __bound_usize_copy_tag_%dst_bound_ptr as u64
1273
+ store %dst_bound_ptr+BoundUsize_value, __bound_usize_copy_value_%dst_bound_ptr as u64
1274
+ !__bound_usize_copy_value_%dst_bound_ptr
1275
+ !__bound_usize_copy_tag_%dst_bound_ptr
1276
+ [END_MACRO]
1277
+
1278
+ [MACRO] BOUND_USIZE_COPIED %dst_bound_ptr, %src_bound_ptr
1279
+ EXPAND BOUND_USIZE_COPY %dst_bound_ptr, %src_bound_ptr
1280
+ [END_MACRO]
1281
+
1282
+ [MACRO] BOUND_USIZE_CLONED %dst_bound_ptr, %src_bound_ptr
1283
+ EXPAND BOUND_USIZE_COPY %dst_bound_ptr, %src_bound_ptr
1284
+ [END_MACRO]
1285
+
1286
+ [MACRO] BOUND_USIZE_MAP %dst_bound_ptr, %src_bound_ptr, %map_fn
1287
+ __bound_usize_map_tag_%dst_bound_ptr = load %src_bound_ptr+BoundUsize_tag as u64
1288
+ __bound_usize_map_unbounded_%dst_bound_ptr = eq __bound_usize_map_tag_%dst_bound_ptr, BOUND_USIZE_UNBOUNDED
1289
+ br __bound_usize_map_unbounded_%dst_bound_ptr -> L_BOUND_USIZE_MAP_UNBOUNDED_%dst_bound_ptr, L_BOUND_USIZE_MAP_VALUE_%dst_bound_ptr
1290
+
1291
+ L_BOUND_USIZE_MAP_VALUE_%dst_bound_ptr:
1292
+ __bound_usize_map_value_%dst_bound_ptr = load %src_bound_ptr+BoundUsize_value as u64
1293
+ __bound_usize_map_mapped_%dst_bound_ptr = call %map_fn(__bound_usize_map_value_%dst_bound_ptr)
1294
+ store %dst_bound_ptr+BoundUsize_tag, __bound_usize_map_tag_%dst_bound_ptr as u64
1295
+ store %dst_bound_ptr+BoundUsize_value, __bound_usize_map_mapped_%dst_bound_ptr as u64
1296
+ !__bound_usize_map_mapped_%dst_bound_ptr
1297
+ !__bound_usize_map_value_%dst_bound_ptr
1298
+ !__bound_usize_map_unbounded_%dst_bound_ptr
1299
+ !__bound_usize_map_tag_%dst_bound_ptr
1300
+ jmp L_BOUND_USIZE_MAP_DONE_%dst_bound_ptr
1301
+
1302
+ L_BOUND_USIZE_MAP_UNBOUNDED_%dst_bound_ptr:
1303
+ store %dst_bound_ptr+BoundUsize_tag, BOUND_USIZE_UNBOUNDED as u64
1304
+ store %dst_bound_ptr+BoundUsize_value, 0 as u64
1305
+ !__bound_usize_map_unbounded_%dst_bound_ptr
1306
+ !__bound_usize_map_tag_%dst_bound_ptr
1307
+
1308
+ L_BOUND_USIZE_MAP_DONE_%dst_bound_ptr:
1309
+ [END_MACRO]
1310
+
1311
+ [MACRO] RANGE_FULL_START_BOUND_U64 %bound_ptr
1312
+ EXPAND BOUND_U64_UNBOUNDED_NEW %bound_ptr
1313
+ [END_MACRO]
1314
+
1315
+ // Rust method-name alias over RANGE_FULL_START_BOUND_U64.
1316
+ [MACRO] RANGE_FULL_START_BOUND %bound_ptr
1317
+ EXPAND RANGE_FULL_START_BOUND_U64 %bound_ptr
1318
+ [END_MACRO]
1319
+
1320
+ [MACRO] RANGE_FULL_END_BOUND_U64 %bound_ptr
1321
+ EXPAND BOUND_U64_UNBOUNDED_NEW %bound_ptr
1322
+ [END_MACRO]
1323
+
1324
+ // Rust method-name alias over RANGE_FULL_END_BOUND_U64.
1325
+ [MACRO] RANGE_FULL_END_BOUND %bound_ptr
1326
+ EXPAND RANGE_FULL_END_BOUND_U64 %bound_ptr
1327
+ [END_MACRO]
1328
+
1329
+ [MACRO] RANGE_FULL_INTO_BOUNDS_U64 %start_bound_ptr, %end_bound_ptr
1330
+ EXPAND BOUND_U64_UNBOUNDED_NEW %start_bound_ptr
1331
+ EXPAND BOUND_U64_UNBOUNDED_NEW %end_bound_ptr
1332
+ [END_MACRO]
1333
+
1334
+ // Rust method-name alias over RANGE_FULL_INTO_BOUNDS_U64.
1335
+ [MACRO] RANGE_FULL_INTO_BOUNDS %start_bound_ptr, %end_bound_ptr
1336
+ EXPAND RANGE_FULL_INTO_BOUNDS_U64 %start_bound_ptr, %end_bound_ptr
1337
+ [END_MACRO]
1338
+
1339
+ [MACRO] RANGE_U64_START_BOUND %bound_ptr, %range_ptr
1340
+ __range_bound_start_%bound_ptr = load %range_ptr+RangeU64_start as u64
1341
+ EXPAND BOUND_U64_INCLUDED_NEW %bound_ptr, __range_bound_start_%bound_ptr
1342
+ !__range_bound_start_%bound_ptr
1343
+ [END_MACRO]
1344
+
1345
+ [MACRO] RANGE_U64_END_BOUND %bound_ptr, %range_ptr
1346
+ __range_bound_end_%bound_ptr = load %range_ptr+RangeU64_end as u64
1347
+ EXPAND BOUND_U64_EXCLUDED_NEW %bound_ptr, __range_bound_end_%bound_ptr
1348
+ !__range_bound_end_%bound_ptr
1349
+ [END_MACRO]
1350
+
1351
+ [MACRO] RANGE_U64_INTO_BOUNDS %start_bound_ptr, %end_bound_ptr, %range_ptr
1352
+ EXPAND RANGE_U64_START_BOUND %start_bound_ptr, %range_ptr
1353
+ EXPAND RANGE_U64_END_BOUND %end_bound_ptr, %range_ptr
1354
+ [END_MACRO]
1355
+
1356
+ [MACRO] RANGE_FROM_U64_START_BOUND %bound_ptr, %range_ptr
1357
+ __range_from_bound_start_%bound_ptr = load %range_ptr+RangeFromU64_start as u64
1358
+ EXPAND BOUND_U64_INCLUDED_NEW %bound_ptr, __range_from_bound_start_%bound_ptr
1359
+ !__range_from_bound_start_%bound_ptr
1360
+ [END_MACRO]
1361
+
1362
+ [MACRO] RANGE_FROM_U64_END_BOUND %bound_ptr, %range_ptr
1363
+ EXPAND BOUND_U64_UNBOUNDED_NEW %bound_ptr
1364
+ [END_MACRO]
1365
+
1366
+ [MACRO] RANGE_FROM_U64_INTO_BOUNDS %start_bound_ptr, %end_bound_ptr, %range_ptr
1367
+ EXPAND RANGE_FROM_U64_START_BOUND %start_bound_ptr, %range_ptr
1368
+ EXPAND RANGE_FROM_U64_END_BOUND %end_bound_ptr, %range_ptr
1369
+ [END_MACRO]
1370
+
1371
+ [MACRO] RANGE_TO_U64_START_BOUND %bound_ptr, %range_ptr
1372
+ EXPAND BOUND_U64_UNBOUNDED_NEW %bound_ptr
1373
+ [END_MACRO]
1374
+
1375
+ [MACRO] RANGE_TO_U64_END_BOUND %bound_ptr, %range_ptr
1376
+ __range_to_bound_end_%bound_ptr = load %range_ptr+RangeToU64_end as u64
1377
+ EXPAND BOUND_U64_EXCLUDED_NEW %bound_ptr, __range_to_bound_end_%bound_ptr
1378
+ !__range_to_bound_end_%bound_ptr
1379
+ [END_MACRO]
1380
+
1381
+ [MACRO] RANGE_TO_U64_INTO_BOUNDS %start_bound_ptr, %end_bound_ptr, %range_ptr
1382
+ EXPAND RANGE_TO_U64_START_BOUND %start_bound_ptr, %range_ptr
1383
+ EXPAND RANGE_TO_U64_END_BOUND %end_bound_ptr, %range_ptr
1384
+ [END_MACRO]
1385
+
1386
+ [MACRO] RANGE_INCLUSIVE_U64_START_BOUND %bound_ptr, %range_ptr
1387
+ __range_inc_bound_start_%bound_ptr = load %range_ptr+RangeInclusiveU64_start as u64
1388
+ EXPAND BOUND_U64_INCLUDED_NEW %bound_ptr, __range_inc_bound_start_%bound_ptr
1389
+ !__range_inc_bound_start_%bound_ptr
1390
+ [END_MACRO]
1391
+
1392
+ [MACRO] RANGE_INCLUSIVE_U64_END_BOUND %bound_ptr, %range_ptr
1393
+ __range_inc_bound_end_%bound_ptr = load %range_ptr+RangeInclusiveU64_end as u64
1394
+ __range_inc_bound_exhausted_%bound_ptr = load %range_ptr+RangeInclusiveU64_exhausted as u64
1395
+ br __range_inc_bound_exhausted_%bound_ptr -> L_RANGE_INC_BOUND_END_EXCLUDED_%bound_ptr, L_RANGE_INC_BOUND_END_INCLUDED_%bound_ptr
1396
+
1397
+ L_RANGE_INC_BOUND_END_INCLUDED_%bound_ptr:
1398
+ EXPAND BOUND_U64_INCLUDED_NEW %bound_ptr, __range_inc_bound_end_%bound_ptr
1399
+ !__range_inc_bound_exhausted_%bound_ptr
1400
+ !__range_inc_bound_end_%bound_ptr
1401
+ jmp L_RANGE_INC_BOUND_END_DONE_%bound_ptr
1402
+
1403
+ L_RANGE_INC_BOUND_END_EXCLUDED_%bound_ptr:
1404
+ EXPAND BOUND_U64_EXCLUDED_NEW %bound_ptr, __range_inc_bound_end_%bound_ptr
1405
+ !__range_inc_bound_exhausted_%bound_ptr
1406
+ !__range_inc_bound_end_%bound_ptr
1407
+
1408
+ L_RANGE_INC_BOUND_END_DONE_%bound_ptr:
1409
+ [END_MACRO]
1410
+
1411
+ [MACRO] RANGE_INCLUSIVE_U64_INTO_BOUNDS %start_bound_ptr, %end_bound_ptr, %range_ptr
1412
+ EXPAND RANGE_INCLUSIVE_U64_START_BOUND %start_bound_ptr, %range_ptr
1413
+ EXPAND RANGE_INCLUSIVE_U64_END_BOUND %end_bound_ptr, %range_ptr
1414
+ [END_MACRO]
1415
+
1416
+ [MACRO] RANGE_TO_INCLUSIVE_U64_START_BOUND %bound_ptr, %range_ptr
1417
+ EXPAND BOUND_U64_UNBOUNDED_NEW %bound_ptr
1418
+ [END_MACRO]
1419
+
1420
+ [MACRO] RANGE_TO_INCLUSIVE_U64_END_BOUND %bound_ptr, %range_ptr
1421
+ __range_to_inc_bound_end_%bound_ptr = load %range_ptr+RangeToInclusiveU64_end as u64
1422
+ EXPAND BOUND_U64_INCLUDED_NEW %bound_ptr, __range_to_inc_bound_end_%bound_ptr
1423
+ !__range_to_inc_bound_end_%bound_ptr
1424
+ [END_MACRO]
1425
+
1426
+ [MACRO] RANGE_TO_INCLUSIVE_U64_INTO_BOUNDS %start_bound_ptr, %end_bound_ptr, %range_ptr
1427
+ EXPAND RANGE_TO_INCLUSIVE_U64_START_BOUND %start_bound_ptr, %range_ptr
1428
+ EXPAND RANGE_TO_INCLUSIVE_U64_END_BOUND %end_bound_ptr, %range_ptr
1429
+ [END_MACRO]
1430
+
1431
+ [MACRO] RANGE_FULL_START_BOUND_USIZE %bound_ptr
1432
+ EXPAND BOUND_USIZE_UNBOUNDED_NEW %bound_ptr
1433
+ [END_MACRO]
1434
+
1435
+ [MACRO] RANGE_FULL_END_BOUND_USIZE %bound_ptr
1436
+ EXPAND BOUND_USIZE_UNBOUNDED_NEW %bound_ptr
1437
+ [END_MACRO]
1438
+
1439
+ [MACRO] RANGE_FULL_INTO_BOUNDS_USIZE %start_bound_ptr, %end_bound_ptr
1440
+ EXPAND BOUND_USIZE_UNBOUNDED_NEW %start_bound_ptr
1441
+ EXPAND BOUND_USIZE_UNBOUNDED_NEW %end_bound_ptr
1442
+ [END_MACRO]
1443
+
1444
+ [MACRO] RANGE_USIZE_START_BOUND %bound_ptr, %range_ptr
1445
+ __range_usize_bound_start_%bound_ptr = load %range_ptr+RangeUsize_start as u64
1446
+ EXPAND BOUND_USIZE_INCLUDED_NEW %bound_ptr, __range_usize_bound_start_%bound_ptr
1447
+ !__range_usize_bound_start_%bound_ptr
1448
+ [END_MACRO]
1449
+
1450
+ [MACRO] RANGE_USIZE_END_BOUND %bound_ptr, %range_ptr
1451
+ __range_usize_bound_end_%bound_ptr = load %range_ptr+RangeUsize_end as u64
1452
+ EXPAND BOUND_USIZE_EXCLUDED_NEW %bound_ptr, __range_usize_bound_end_%bound_ptr
1453
+ !__range_usize_bound_end_%bound_ptr
1454
+ [END_MACRO]
1455
+
1456
+ [MACRO] RANGE_USIZE_INTO_BOUNDS %start_bound_ptr, %end_bound_ptr, %range_ptr
1457
+ EXPAND RANGE_USIZE_START_BOUND %start_bound_ptr, %range_ptr
1458
+ EXPAND RANGE_USIZE_END_BOUND %end_bound_ptr, %range_ptr
1459
+ [END_MACRO]
1460
+
1461
+ [MACRO] RANGE_FROM_USIZE_START_BOUND %bound_ptr, %range_ptr
1462
+ __range_from_usize_bound_start_%bound_ptr = load %range_ptr+RangeFromUsize_start as u64
1463
+ EXPAND BOUND_USIZE_INCLUDED_NEW %bound_ptr, __range_from_usize_bound_start_%bound_ptr
1464
+ !__range_from_usize_bound_start_%bound_ptr
1465
+ [END_MACRO]
1466
+
1467
+ [MACRO] RANGE_FROM_USIZE_END_BOUND %bound_ptr, %range_ptr
1468
+ EXPAND BOUND_USIZE_UNBOUNDED_NEW %bound_ptr
1469
+ [END_MACRO]
1470
+
1471
+ [MACRO] RANGE_FROM_USIZE_INTO_BOUNDS %start_bound_ptr, %end_bound_ptr, %range_ptr
1472
+ EXPAND RANGE_FROM_USIZE_START_BOUND %start_bound_ptr, %range_ptr
1473
+ EXPAND RANGE_FROM_USIZE_END_BOUND %end_bound_ptr, %range_ptr
1474
+ [END_MACRO]
1475
+
1476
+ [MACRO] RANGE_TO_USIZE_START_BOUND %bound_ptr, %range_ptr
1477
+ EXPAND BOUND_USIZE_UNBOUNDED_NEW %bound_ptr
1478
+ [END_MACRO]
1479
+
1480
+ [MACRO] RANGE_TO_USIZE_END_BOUND %bound_ptr, %range_ptr
1481
+ __range_to_usize_bound_end_%bound_ptr = load %range_ptr+RangeToUsize_end as u64
1482
+ EXPAND BOUND_USIZE_EXCLUDED_NEW %bound_ptr, __range_to_usize_bound_end_%bound_ptr
1483
+ !__range_to_usize_bound_end_%bound_ptr
1484
+ [END_MACRO]
1485
+
1486
+ [MACRO] RANGE_TO_USIZE_INTO_BOUNDS %start_bound_ptr, %end_bound_ptr, %range_ptr
1487
+ EXPAND RANGE_TO_USIZE_START_BOUND %start_bound_ptr, %range_ptr
1488
+ EXPAND RANGE_TO_USIZE_END_BOUND %end_bound_ptr, %range_ptr
1489
+ [END_MACRO]
1490
+
1491
+ [MACRO] RANGE_INCLUSIVE_USIZE_START_BOUND %bound_ptr, %range_ptr
1492
+ __range_inc_usize_bound_start_%bound_ptr = load %range_ptr+RangeInclusiveUsize_start as u64
1493
+ EXPAND BOUND_USIZE_INCLUDED_NEW %bound_ptr, __range_inc_usize_bound_start_%bound_ptr
1494
+ !__range_inc_usize_bound_start_%bound_ptr
1495
+ [END_MACRO]
1496
+
1497
+ [MACRO] RANGE_INCLUSIVE_USIZE_END_BOUND %bound_ptr, %range_ptr
1498
+ __range_inc_usize_bound_end_%bound_ptr = load %range_ptr+RangeInclusiveUsize_end as u64
1499
+ __range_inc_usize_bound_exhausted_%bound_ptr = load %range_ptr+RangeInclusiveUsize_exhausted as u64
1500
+ br __range_inc_usize_bound_exhausted_%bound_ptr -> L_RANGE_INC_USIZE_BOUND_END_EXCLUDED_%bound_ptr, L_RANGE_INC_USIZE_BOUND_END_INCLUDED_%bound_ptr
1501
+
1502
+ L_RANGE_INC_USIZE_BOUND_END_INCLUDED_%bound_ptr:
1503
+ EXPAND BOUND_USIZE_INCLUDED_NEW %bound_ptr, __range_inc_usize_bound_end_%bound_ptr
1504
+ !__range_inc_usize_bound_exhausted_%bound_ptr
1505
+ !__range_inc_usize_bound_end_%bound_ptr
1506
+ jmp L_RANGE_INC_USIZE_BOUND_END_DONE_%bound_ptr
1507
+
1508
+ L_RANGE_INC_USIZE_BOUND_END_EXCLUDED_%bound_ptr:
1509
+ EXPAND BOUND_USIZE_EXCLUDED_NEW %bound_ptr, __range_inc_usize_bound_end_%bound_ptr
1510
+ !__range_inc_usize_bound_exhausted_%bound_ptr
1511
+ !__range_inc_usize_bound_end_%bound_ptr
1512
+
1513
+ L_RANGE_INC_USIZE_BOUND_END_DONE_%bound_ptr:
1514
+ [END_MACRO]
1515
+
1516
+ [MACRO] RANGE_INCLUSIVE_USIZE_INTO_BOUNDS %start_bound_ptr, %end_bound_ptr, %range_ptr
1517
+ EXPAND RANGE_INCLUSIVE_USIZE_START_BOUND %start_bound_ptr, %range_ptr
1518
+ EXPAND RANGE_INCLUSIVE_USIZE_END_BOUND %end_bound_ptr, %range_ptr
1519
+ [END_MACRO]
1520
+
1521
+ [MACRO] RANGE_TO_INCLUSIVE_USIZE_START_BOUND %bound_ptr, %range_ptr
1522
+ EXPAND BOUND_USIZE_UNBOUNDED_NEW %bound_ptr
1523
+ [END_MACRO]
1524
+
1525
+ [MACRO] RANGE_TO_INCLUSIVE_USIZE_END_BOUND %bound_ptr, %range_ptr
1526
+ __range_to_inc_usize_bound_end_%bound_ptr = load %range_ptr+RangeToInclusiveUsize_end as u64
1527
+ EXPAND BOUND_USIZE_INCLUDED_NEW %bound_ptr, __range_to_inc_usize_bound_end_%bound_ptr
1528
+ !__range_to_inc_usize_bound_end_%bound_ptr
1529
+ [END_MACRO]
1530
+
1531
+ [MACRO] RANGE_TO_INCLUSIVE_USIZE_INTO_BOUNDS %start_bound_ptr, %end_bound_ptr, %range_ptr
1532
+ EXPAND RANGE_TO_INCLUSIVE_USIZE_START_BOUND %start_bound_ptr, %range_ptr
1533
+ EXPAND RANGE_TO_INCLUSIVE_USIZE_END_BOUND %end_bound_ptr, %range_ptr
1534
+ [END_MACRO]
1535
+
1536
+ [MACRO] BOUND_U64_INTERSECT_START %dst_bound_ptr, %left_bound_ptr, %right_bound_ptr
1537
+ __bound_u64_intersect_start_left_tag_%dst_bound_ptr = load %left_bound_ptr+BoundU64_tag as u64
1538
+ __bound_u64_intersect_start_right_tag_%dst_bound_ptr = load %right_bound_ptr+BoundU64_tag as u64
1539
+ __bound_u64_intersect_start_left_unbounded_%dst_bound_ptr = eq __bound_u64_intersect_start_left_tag_%dst_bound_ptr, BOUND_U64_UNBOUNDED
1540
+ br __bound_u64_intersect_start_left_unbounded_%dst_bound_ptr -> L_BOUND_U64_INTERSECT_START_COPY_RIGHT_UNBOUNDED_%dst_bound_ptr, L_BOUND_U64_INTERSECT_START_CHECK_RIGHT_%dst_bound_ptr
1541
+
1542
+ L_BOUND_U64_INTERSECT_START_CHECK_RIGHT_%dst_bound_ptr:
1543
+ __bound_u64_intersect_start_right_unbounded_%dst_bound_ptr = eq __bound_u64_intersect_start_right_tag_%dst_bound_ptr, BOUND_U64_UNBOUNDED
1544
+ br __bound_u64_intersect_start_right_unbounded_%dst_bound_ptr -> L_BOUND_U64_INTERSECT_START_COPY_LEFT_UNBOUNDED_%dst_bound_ptr, L_BOUND_U64_INTERSECT_START_BOUNDED_%dst_bound_ptr
1545
+
1546
+ L_BOUND_U64_INTERSECT_START_BOUNDED_%dst_bound_ptr:
1547
+ __bound_u64_intersect_start_left_value_%dst_bound_ptr = load %left_bound_ptr+BoundU64_value as u64
1548
+ __bound_u64_intersect_start_right_value_%dst_bound_ptr = load %right_bound_ptr+BoundU64_value as u64
1549
+ __bound_u64_intersect_start_left_gt_%dst_bound_ptr = ugt __bound_u64_intersect_start_left_value_%dst_bound_ptr, __bound_u64_intersect_start_right_value_%dst_bound_ptr
1550
+ __bound_u64_intersect_start_values_eq_%dst_bound_ptr = eq __bound_u64_intersect_start_left_value_%dst_bound_ptr, __bound_u64_intersect_start_right_value_%dst_bound_ptr
1551
+ __bound_u64_intersect_start_left_excluded_%dst_bound_ptr = eq __bound_u64_intersect_start_left_tag_%dst_bound_ptr, BOUND_U64_EXCLUDED
1552
+ __bound_u64_intersect_start_right_included_%dst_bound_ptr = eq __bound_u64_intersect_start_right_tag_%dst_bound_ptr, BOUND_U64_INCLUDED
1553
+ __bound_u64_intersect_start_tie_excluded_%dst_bound_ptr = and __bound_u64_intersect_start_left_excluded_%dst_bound_ptr, __bound_u64_intersect_start_right_included_%dst_bound_ptr
1554
+ __bound_u64_intersect_start_tie_left_%dst_bound_ptr = and __bound_u64_intersect_start_values_eq_%dst_bound_ptr, __bound_u64_intersect_start_tie_excluded_%dst_bound_ptr
1555
+ __bound_u64_intersect_start_choose_left_%dst_bound_ptr = or __bound_u64_intersect_start_left_gt_%dst_bound_ptr, __bound_u64_intersect_start_tie_left_%dst_bound_ptr
1556
+ br __bound_u64_intersect_start_choose_left_%dst_bound_ptr -> L_BOUND_U64_INTERSECT_START_COPY_LEFT_BOUNDED_%dst_bound_ptr, L_BOUND_U64_INTERSECT_START_COPY_RIGHT_BOUNDED_%dst_bound_ptr
1557
+
1558
+ L_BOUND_U64_INTERSECT_START_COPY_LEFT_BOUNDED_%dst_bound_ptr:
1559
+ EXPAND BOUND_U64_COPY %dst_bound_ptr, %left_bound_ptr
1560
+ !__bound_u64_intersect_start_choose_left_%dst_bound_ptr
1561
+ !__bound_u64_intersect_start_tie_left_%dst_bound_ptr
1562
+ !__bound_u64_intersect_start_tie_excluded_%dst_bound_ptr
1563
+ !__bound_u64_intersect_start_right_included_%dst_bound_ptr
1564
+ !__bound_u64_intersect_start_left_excluded_%dst_bound_ptr
1565
+ !__bound_u64_intersect_start_values_eq_%dst_bound_ptr
1566
+ !__bound_u64_intersect_start_left_gt_%dst_bound_ptr
1567
+ !__bound_u64_intersect_start_right_value_%dst_bound_ptr
1568
+ !__bound_u64_intersect_start_left_value_%dst_bound_ptr
1569
+ !__bound_u64_intersect_start_right_unbounded_%dst_bound_ptr
1570
+ !__bound_u64_intersect_start_left_unbounded_%dst_bound_ptr
1571
+ !__bound_u64_intersect_start_right_tag_%dst_bound_ptr
1572
+ !__bound_u64_intersect_start_left_tag_%dst_bound_ptr
1573
+ jmp L_BOUND_U64_INTERSECT_START_DONE_%dst_bound_ptr
1574
+
1575
+ L_BOUND_U64_INTERSECT_START_COPY_RIGHT_BOUNDED_%dst_bound_ptr:
1576
+ EXPAND BOUND_U64_COPY %dst_bound_ptr, %right_bound_ptr
1577
+ !__bound_u64_intersect_start_choose_left_%dst_bound_ptr
1578
+ !__bound_u64_intersect_start_tie_left_%dst_bound_ptr
1579
+ !__bound_u64_intersect_start_tie_excluded_%dst_bound_ptr
1580
+ !__bound_u64_intersect_start_right_included_%dst_bound_ptr
1581
+ !__bound_u64_intersect_start_left_excluded_%dst_bound_ptr
1582
+ !__bound_u64_intersect_start_values_eq_%dst_bound_ptr
1583
+ !__bound_u64_intersect_start_left_gt_%dst_bound_ptr
1584
+ !__bound_u64_intersect_start_right_value_%dst_bound_ptr
1585
+ !__bound_u64_intersect_start_left_value_%dst_bound_ptr
1586
+ !__bound_u64_intersect_start_right_unbounded_%dst_bound_ptr
1587
+ !__bound_u64_intersect_start_left_unbounded_%dst_bound_ptr
1588
+ !__bound_u64_intersect_start_right_tag_%dst_bound_ptr
1589
+ !__bound_u64_intersect_start_left_tag_%dst_bound_ptr
1590
+ jmp L_BOUND_U64_INTERSECT_START_DONE_%dst_bound_ptr
1591
+
1592
+ L_BOUND_U64_INTERSECT_START_COPY_LEFT_UNBOUNDED_%dst_bound_ptr:
1593
+ EXPAND BOUND_U64_COPY %dst_bound_ptr, %left_bound_ptr
1594
+ !__bound_u64_intersect_start_right_unbounded_%dst_bound_ptr
1595
+ !__bound_u64_intersect_start_left_unbounded_%dst_bound_ptr
1596
+ !__bound_u64_intersect_start_right_tag_%dst_bound_ptr
1597
+ !__bound_u64_intersect_start_left_tag_%dst_bound_ptr
1598
+ jmp L_BOUND_U64_INTERSECT_START_DONE_%dst_bound_ptr
1599
+
1600
+ L_BOUND_U64_INTERSECT_START_COPY_RIGHT_UNBOUNDED_%dst_bound_ptr:
1601
+ EXPAND BOUND_U64_COPY %dst_bound_ptr, %right_bound_ptr
1602
+ !__bound_u64_intersect_start_left_unbounded_%dst_bound_ptr
1603
+ !__bound_u64_intersect_start_right_tag_%dst_bound_ptr
1604
+ !__bound_u64_intersect_start_left_tag_%dst_bound_ptr
1605
+
1606
+ L_BOUND_U64_INTERSECT_START_DONE_%dst_bound_ptr:
1607
+ [END_MACRO]
1608
+
1609
+ [MACRO] BOUND_U64_INTERSECT_END %dst_bound_ptr, %left_bound_ptr, %right_bound_ptr
1610
+ __bound_u64_intersect_end_left_tag_%dst_bound_ptr = load %left_bound_ptr+BoundU64_tag as u64
1611
+ __bound_u64_intersect_end_right_tag_%dst_bound_ptr = load %right_bound_ptr+BoundU64_tag as u64
1612
+ __bound_u64_intersect_end_left_unbounded_%dst_bound_ptr = eq __bound_u64_intersect_end_left_tag_%dst_bound_ptr, BOUND_U64_UNBOUNDED
1613
+ br __bound_u64_intersect_end_left_unbounded_%dst_bound_ptr -> L_BOUND_U64_INTERSECT_END_COPY_RIGHT_UNBOUNDED_%dst_bound_ptr, L_BOUND_U64_INTERSECT_END_CHECK_RIGHT_%dst_bound_ptr
1614
+
1615
+ L_BOUND_U64_INTERSECT_END_CHECK_RIGHT_%dst_bound_ptr:
1616
+ __bound_u64_intersect_end_right_unbounded_%dst_bound_ptr = eq __bound_u64_intersect_end_right_tag_%dst_bound_ptr, BOUND_U64_UNBOUNDED
1617
+ br __bound_u64_intersect_end_right_unbounded_%dst_bound_ptr -> L_BOUND_U64_INTERSECT_END_COPY_LEFT_UNBOUNDED_%dst_bound_ptr, L_BOUND_U64_INTERSECT_END_BOUNDED_%dst_bound_ptr
1618
+
1619
+ L_BOUND_U64_INTERSECT_END_BOUNDED_%dst_bound_ptr:
1620
+ __bound_u64_intersect_end_left_value_%dst_bound_ptr = load %left_bound_ptr+BoundU64_value as u64
1621
+ __bound_u64_intersect_end_right_value_%dst_bound_ptr = load %right_bound_ptr+BoundU64_value as u64
1622
+ __bound_u64_intersect_end_left_lt_%dst_bound_ptr = ult __bound_u64_intersect_end_left_value_%dst_bound_ptr, __bound_u64_intersect_end_right_value_%dst_bound_ptr
1623
+ __bound_u64_intersect_end_values_eq_%dst_bound_ptr = eq __bound_u64_intersect_end_left_value_%dst_bound_ptr, __bound_u64_intersect_end_right_value_%dst_bound_ptr
1624
+ __bound_u64_intersect_end_left_excluded_%dst_bound_ptr = eq __bound_u64_intersect_end_left_tag_%dst_bound_ptr, BOUND_U64_EXCLUDED
1625
+ __bound_u64_intersect_end_right_included_%dst_bound_ptr = eq __bound_u64_intersect_end_right_tag_%dst_bound_ptr, BOUND_U64_INCLUDED
1626
+ __bound_u64_intersect_end_tie_excluded_%dst_bound_ptr = and __bound_u64_intersect_end_left_excluded_%dst_bound_ptr, __bound_u64_intersect_end_right_included_%dst_bound_ptr
1627
+ __bound_u64_intersect_end_tie_left_%dst_bound_ptr = and __bound_u64_intersect_end_values_eq_%dst_bound_ptr, __bound_u64_intersect_end_tie_excluded_%dst_bound_ptr
1628
+ __bound_u64_intersect_end_choose_left_%dst_bound_ptr = or __bound_u64_intersect_end_left_lt_%dst_bound_ptr, __bound_u64_intersect_end_tie_left_%dst_bound_ptr
1629
+ br __bound_u64_intersect_end_choose_left_%dst_bound_ptr -> L_BOUND_U64_INTERSECT_END_COPY_LEFT_BOUNDED_%dst_bound_ptr, L_BOUND_U64_INTERSECT_END_COPY_RIGHT_BOUNDED_%dst_bound_ptr
1630
+
1631
+ L_BOUND_U64_INTERSECT_END_COPY_LEFT_BOUNDED_%dst_bound_ptr:
1632
+ EXPAND BOUND_U64_COPY %dst_bound_ptr, %left_bound_ptr
1633
+ !__bound_u64_intersect_end_choose_left_%dst_bound_ptr
1634
+ !__bound_u64_intersect_end_tie_left_%dst_bound_ptr
1635
+ !__bound_u64_intersect_end_tie_excluded_%dst_bound_ptr
1636
+ !__bound_u64_intersect_end_right_included_%dst_bound_ptr
1637
+ !__bound_u64_intersect_end_left_excluded_%dst_bound_ptr
1638
+ !__bound_u64_intersect_end_values_eq_%dst_bound_ptr
1639
+ !__bound_u64_intersect_end_left_lt_%dst_bound_ptr
1640
+ !__bound_u64_intersect_end_right_value_%dst_bound_ptr
1641
+ !__bound_u64_intersect_end_left_value_%dst_bound_ptr
1642
+ !__bound_u64_intersect_end_right_unbounded_%dst_bound_ptr
1643
+ !__bound_u64_intersect_end_left_unbounded_%dst_bound_ptr
1644
+ !__bound_u64_intersect_end_right_tag_%dst_bound_ptr
1645
+ !__bound_u64_intersect_end_left_tag_%dst_bound_ptr
1646
+ jmp L_BOUND_U64_INTERSECT_END_DONE_%dst_bound_ptr
1647
+
1648
+ L_BOUND_U64_INTERSECT_END_COPY_RIGHT_BOUNDED_%dst_bound_ptr:
1649
+ EXPAND BOUND_U64_COPY %dst_bound_ptr, %right_bound_ptr
1650
+ !__bound_u64_intersect_end_choose_left_%dst_bound_ptr
1651
+ !__bound_u64_intersect_end_tie_left_%dst_bound_ptr
1652
+ !__bound_u64_intersect_end_tie_excluded_%dst_bound_ptr
1653
+ !__bound_u64_intersect_end_right_included_%dst_bound_ptr
1654
+ !__bound_u64_intersect_end_left_excluded_%dst_bound_ptr
1655
+ !__bound_u64_intersect_end_values_eq_%dst_bound_ptr
1656
+ !__bound_u64_intersect_end_left_lt_%dst_bound_ptr
1657
+ !__bound_u64_intersect_end_right_value_%dst_bound_ptr
1658
+ !__bound_u64_intersect_end_left_value_%dst_bound_ptr
1659
+ !__bound_u64_intersect_end_right_unbounded_%dst_bound_ptr
1660
+ !__bound_u64_intersect_end_left_unbounded_%dst_bound_ptr
1661
+ !__bound_u64_intersect_end_right_tag_%dst_bound_ptr
1662
+ !__bound_u64_intersect_end_left_tag_%dst_bound_ptr
1663
+ jmp L_BOUND_U64_INTERSECT_END_DONE_%dst_bound_ptr
1664
+
1665
+ L_BOUND_U64_INTERSECT_END_COPY_LEFT_UNBOUNDED_%dst_bound_ptr:
1666
+ EXPAND BOUND_U64_COPY %dst_bound_ptr, %left_bound_ptr
1667
+ !__bound_u64_intersect_end_right_unbounded_%dst_bound_ptr
1668
+ !__bound_u64_intersect_end_left_unbounded_%dst_bound_ptr
1669
+ !__bound_u64_intersect_end_right_tag_%dst_bound_ptr
1670
+ !__bound_u64_intersect_end_left_tag_%dst_bound_ptr
1671
+ jmp L_BOUND_U64_INTERSECT_END_DONE_%dst_bound_ptr
1672
+
1673
+ L_BOUND_U64_INTERSECT_END_COPY_RIGHT_UNBOUNDED_%dst_bound_ptr:
1674
+ EXPAND BOUND_U64_COPY %dst_bound_ptr, %right_bound_ptr
1675
+ !__bound_u64_intersect_end_left_unbounded_%dst_bound_ptr
1676
+ !__bound_u64_intersect_end_right_tag_%dst_bound_ptr
1677
+ !__bound_u64_intersect_end_left_tag_%dst_bound_ptr
1678
+
1679
+ L_BOUND_U64_INTERSECT_END_DONE_%dst_bound_ptr:
1680
+ [END_MACRO]
1681
+
1682
+ [MACRO] BOUND_U64_INTERSECT_RANGE %out_start_bound_ptr, %out_end_bound_ptr, %left_start_bound_ptr, %left_end_bound_ptr, %right_start_bound_ptr, %right_end_bound_ptr
1683
+ EXPAND BOUND_U64_INTERSECT_START %out_start_bound_ptr, %left_start_bound_ptr, %right_start_bound_ptr
1684
+ EXPAND BOUND_U64_INTERSECT_END %out_end_bound_ptr, %left_end_bound_ptr, %right_end_bound_ptr
1685
+ [END_MACRO]
1686
+
1687
+ [MACRO] BOUND_USIZE_INTERSECT_START %dst_bound_ptr, %left_bound_ptr, %right_bound_ptr
1688
+ EXPAND BOUND_U64_INTERSECT_START %dst_bound_ptr, %left_bound_ptr, %right_bound_ptr
1689
+ [END_MACRO]
1690
+
1691
+ [MACRO] BOUND_USIZE_INTERSECT_END %dst_bound_ptr, %left_bound_ptr, %right_bound_ptr
1692
+ EXPAND BOUND_U64_INTERSECT_END %dst_bound_ptr, %left_bound_ptr, %right_bound_ptr
1693
+ [END_MACRO]
1694
+
1695
+ [MACRO] BOUND_USIZE_INTERSECT_RANGE %out_start_bound_ptr, %out_end_bound_ptr, %left_start_bound_ptr, %left_end_bound_ptr, %right_start_bound_ptr, %right_end_bound_ptr
1696
+ EXPAND BOUND_U64_INTERSECT_RANGE %out_start_bound_ptr, %out_end_bound_ptr, %left_start_bound_ptr, %left_end_bound_ptr, %right_start_bound_ptr, %right_end_bound_ptr
1697
+ [END_MACRO]
1698
+
1699
+ [MACRO] RANGE_FROM_U64_DEFAULT %range_ptr
1700
+ store %range_ptr+RangeFromU64_start, 0 as u64
1701
+ [END_MACRO]
1702
+
1703
+ [MACRO] RANGE_TO_U64_DEFAULT %range_ptr
1704
+ store %range_ptr+RangeToU64_end, 0 as u64
1705
+ [END_MACRO]
1706
+
1707
+ [MACRO] RANGE_TO_INCLUSIVE_U64_DEFAULT %range_ptr
1708
+ store %range_ptr+RangeToInclusiveU64_end, 0 as u64
1709
+ [END_MACRO]
1710
+
1711
+ [MACRO] RANGE_INCLUSIVE_U64_DEFAULT %range_ptr
1712
+ store %range_ptr+RangeInclusiveU64_start, 0 as u64
1713
+ store %range_ptr+RangeInclusiveU64_end, 0 as u64
1714
+ store %range_ptr+RangeInclusiveU64_exhausted, 0 as u64
1715
+ [END_MACRO]
1716
+
1717
+ [MACRO] RANGE_USIZE_NEW %range_ptr, %start, %end
1718
+ EXPAND RANGE_U64_NEW %range_ptr, %start, %end
1719
+ [END_MACRO]
1720
+
1721
+ [MACRO] RANGE_USIZE_START %out_start, %range_ptr
1722
+ EXPAND RANGE_U64_START %out_start, %range_ptr
1723
+ [END_MACRO]
1724
+
1725
+ [MACRO] RANGE_USIZE_END %out_end, %range_ptr
1726
+ EXPAND RANGE_U64_END %out_end, %range_ptr
1727
+ [END_MACRO]
1728
+
1729
+ [MACRO] RANGE_USIZE_CONTAINS %out_bool, %range_ptr, %item
1730
+ EXPAND RANGE_U64_CONTAINS %out_bool, %range_ptr, %item
1731
+ [END_MACRO]
1732
+
1733
+ [MACRO] RANGE_USIZE_IS_EMPTY %out_bool, %range_ptr
1734
+ EXPAND RANGE_U64_IS_EMPTY %out_bool, %range_ptr
1735
+ [END_MACRO]
1736
+
1737
+ [MACRO] RANGE_USIZE_LEN %out_len, %range_ptr
1738
+ EXPAND RANGE_U64_LEN %out_len, %range_ptr
1739
+ [END_MACRO]
1740
+
1741
+ [MACRO] RANGE_USIZE_NEXT %out_ok, %out_value, %range_ptr
1742
+ EXPAND RANGE_U64_NEXT %out_ok, %out_value, %range_ptr
1743
+ [END_MACRO]
1744
+
1745
+ [MACRO] RANGE_USIZE_NEXT_BACK %out_ok, %out_value, %range_ptr
1746
+ EXPAND RANGE_U64_NEXT_BACK %out_ok, %out_value, %range_ptr
1747
+ [END_MACRO]
1748
+
1749
+ [MACRO] RANGE_USIZE_NTH %out_ok, %out_value, %range_ptr, %nth
1750
+ EXPAND RANGE_U64_NTH %out_ok, %out_value, %range_ptr, %nth
1751
+ [END_MACRO]
1752
+
1753
+ [MACRO] RANGE_USIZE_COUNT %out_count, %range_ptr
1754
+ EXPAND RANGE_U64_COUNT %out_count, %range_ptr
1755
+ [END_MACRO]
1756
+
1757
+ [MACRO] RANGE_USIZE_TRY_GET_SLICE %out_ok, %out_slice, %base_slice, %range_ptr
1758
+ EXPAND RANGE_U64_TRY_GET_SLICE %out_ok, %out_slice, %base_slice, %range_ptr
1759
+ [END_MACRO]
1760
+
1761
+ [MACRO] RANGE_USIZE_DEFAULT %range_ptr
1762
+ EXPAND RANGE_U64_DEFAULT %range_ptr
1763
+ [END_MACRO]
1764
+
1765
+ [MACRO] RANGE_FROM_USIZE_NEW %range_ptr, %start
1766
+ EXPAND RANGE_FROM_U64_NEW %range_ptr, %start
1767
+ [END_MACRO]
1768
+
1769
+ [MACRO] RANGE_FROM_USIZE_START %out_start, %range_ptr
1770
+ EXPAND RANGE_FROM_U64_START %out_start, %range_ptr
1771
+ [END_MACRO]
1772
+
1773
+ [MACRO] RANGE_FROM_USIZE_CONTAINS %out_bool, %range_ptr, %item
1774
+ EXPAND RANGE_FROM_U64_CONTAINS %out_bool, %range_ptr, %item
1775
+ [END_MACRO]
1776
+
1777
+ [MACRO] RANGE_FROM_USIZE_TRY_GET_SLICE %out_ok, %out_slice, %base_slice, %range_ptr
1778
+ EXPAND RANGE_FROM_U64_TRY_GET_SLICE %out_ok, %out_slice, %base_slice, %range_ptr
1779
+ [END_MACRO]
1780
+
1781
+ [MACRO] RANGE_TO_USIZE_NEW %range_ptr, %end
1782
+ EXPAND RANGE_TO_U64_NEW %range_ptr, %end
1783
+ [END_MACRO]
1784
+
1785
+ [MACRO] RANGE_TO_USIZE_END %out_end, %range_ptr
1786
+ EXPAND RANGE_TO_U64_END %out_end, %range_ptr
1787
+ [END_MACRO]
1788
+
1789
+ [MACRO] RANGE_TO_USIZE_CONTAINS %out_bool, %range_ptr, %item
1790
+ EXPAND RANGE_TO_U64_CONTAINS %out_bool, %range_ptr, %item
1791
+ [END_MACRO]
1792
+
1793
+ [MACRO] RANGE_TO_USIZE_TRY_GET_SLICE %out_ok, %out_slice, %base_slice, %range_ptr
1794
+ EXPAND RANGE_TO_U64_TRY_GET_SLICE %out_ok, %out_slice, %base_slice, %range_ptr
1795
+ [END_MACRO]
1796
+
1797
+ [MACRO] RANGE_INCLUSIVE_USIZE_NEW %range_ptr, %start, %end
1798
+ EXPAND RANGE_INCLUSIVE_U64_NEW %range_ptr, %start, %end
1799
+ [END_MACRO]
1800
+
1801
+ [MACRO] RANGE_INCLUSIVE_USIZE_SET_EXHAUSTED %range_ptr, %exhausted
1802
+ EXPAND RANGE_INCLUSIVE_U64_SET_EXHAUSTED %range_ptr, %exhausted
1803
+ [END_MACRO]
1804
+
1805
+ [MACRO] RANGE_INCLUSIVE_USIZE_START %out_start, %range_ptr
1806
+ EXPAND RANGE_INCLUSIVE_U64_START %out_start, %range_ptr
1807
+ [END_MACRO]
1808
+
1809
+ [MACRO] RANGE_INCLUSIVE_USIZE_END %out_end, %range_ptr
1810
+ EXPAND RANGE_INCLUSIVE_U64_END %out_end, %range_ptr
1811
+ [END_MACRO]
1812
+
1813
+ [MACRO] RANGE_INCLUSIVE_USIZE_INTO_INNER %out_start, %out_end, %range_ptr
1814
+ EXPAND RANGE_INCLUSIVE_U64_INTO_INNER %out_start, %out_end, %range_ptr
1815
+ [END_MACRO]
1816
+
1817
+ [MACRO] RANGE_INCLUSIVE_USIZE_CONTAINS %out_bool, %range_ptr, %item
1818
+ EXPAND RANGE_INCLUSIVE_U64_CONTAINS %out_bool, %range_ptr, %item
1819
+ [END_MACRO]
1820
+
1821
+ [MACRO] RANGE_INCLUSIVE_USIZE_IS_EMPTY %out_bool, %range_ptr
1822
+ EXPAND RANGE_INCLUSIVE_U64_IS_EMPTY %out_bool, %range_ptr
1823
+ [END_MACRO]
1824
+
1825
+ [MACRO] RANGE_INCLUSIVE_USIZE_LEN %out_len, %range_ptr
1826
+ EXPAND RANGE_INCLUSIVE_U64_LEN %out_len, %range_ptr
1827
+ [END_MACRO]
1828
+
1829
+ [MACRO] RANGE_INCLUSIVE_USIZE_NEXT %out_ok, %out_value, %range_ptr
1830
+ EXPAND RANGE_INCLUSIVE_U64_NEXT %out_ok, %out_value, %range_ptr
1831
+ [END_MACRO]
1832
+
1833
+ [MACRO] RANGE_INCLUSIVE_USIZE_NEXT_BACK %out_ok, %out_value, %range_ptr
1834
+ EXPAND RANGE_INCLUSIVE_U64_NEXT_BACK %out_ok, %out_value, %range_ptr
1835
+ [END_MACRO]
1836
+
1837
+ [MACRO] RANGE_INCLUSIVE_USIZE_COUNT %out_count, %range_ptr
1838
+ EXPAND RANGE_INCLUSIVE_U64_COUNT %out_count, %range_ptr
1839
+ [END_MACRO]
1840
+
1841
+ [MACRO] RANGE_INCLUSIVE_USIZE_TRY_GET_SLICE %out_ok, %out_slice, %base_slice, %range_ptr
1842
+ EXPAND RANGE_INCLUSIVE_U64_TRY_GET_SLICE %out_ok, %out_slice, %base_slice, %range_ptr
1843
+ [END_MACRO]
1844
+
1845
+ [MACRO] RANGE_TO_INCLUSIVE_USIZE_NEW %range_ptr, %end
1846
+ EXPAND RANGE_TO_INCLUSIVE_U64_NEW %range_ptr, %end
1847
+ [END_MACRO]
1848
+
1849
+ [MACRO] RANGE_TO_INCLUSIVE_USIZE_END %out_end, %range_ptr
1850
+ EXPAND RANGE_TO_INCLUSIVE_U64_END %out_end, %range_ptr
1851
+ [END_MACRO]
1852
+
1853
+ [MACRO] RANGE_TO_INCLUSIVE_USIZE_CONTAINS %out_bool, %range_ptr, %item
1854
+ EXPAND RANGE_TO_INCLUSIVE_U64_CONTAINS %out_bool, %range_ptr, %item
1855
+ [END_MACRO]
1856
+
1857
+ [MACRO] RANGE_TO_INCLUSIVE_USIZE_TRY_GET_SLICE %out_ok, %out_slice, %base_slice, %range_ptr
1858
+ EXPAND RANGE_TO_INCLUSIVE_U64_TRY_GET_SLICE %out_ok, %out_slice, %base_slice, %range_ptr
1859
+ [END_MACRO]
1860
+
1861
+ [MACRO] RANGE_FULL_CONTAINS_USIZE %out_bool, %item
1862
+ EXPAND RANGE_FULL_CONTAINS_U64 %out_bool, %item
1863
+ [END_MACRO]
1864
+
1865
+ [MACRO] RANGE_INCLUSIVE_USIZE_DEFAULT %range_ptr
1866
+ EXPAND RANGE_INCLUSIVE_U64_DEFAULT %range_ptr
1867
+ [END_MACRO]
1868
+
1869
+ [MACRO] RANGE_FROM_USIZE_DEFAULT %range_ptr
1870
+ EXPAND RANGE_FROM_U64_DEFAULT %range_ptr
1871
+ [END_MACRO]
1872
+
1873
+ [MACRO] RANGE_TO_USIZE_DEFAULT %range_ptr
1874
+ EXPAND RANGE_TO_U64_DEFAULT %range_ptr
1875
+ [END_MACRO]
1876
+
1877
+ [MACRO] RANGE_TO_INCLUSIVE_USIZE_DEFAULT %range_ptr
1878
+ EXPAND RANGE_TO_INCLUSIVE_U64_DEFAULT %range_ptr
1879
+ [END_MACRO]
1880
+
1881
+
1882
+ [MACRO] RANGE_USIZE_FULL_DEFAULT %range_ptr
1883
+ EXPAND RANGE_FULL_DEFAULT %range_ptr
1884
+ [END_MACRO]