@salang/sa 0.1.2 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/sa.js +19 -1
- package/package.json +8 -7
- package/sa_std/alloc/layout.sal +12 -0
- package/sa_std/alloc/prelude.sa +1 -0
- package/sa_std/alloc/prelude.sal +1 -0
- package/sa_std/alloc/string.sa +3 -0
- package/sa_std/alloc/vec.sa +684 -0
- package/sa_std/alloc/vec.sal +4 -0
- package/sa_std/any.sa +130 -0
- package/sa_std/any.sal +23 -0
- package/sa_std/array.sa +1876 -0
- package/sa_std/ascii.sa +2 -0
- package/sa_std/ascii.sal +1 -0
- package/sa_std/async.sla +116 -0
- package/sa_std/binary_heap.sa +3003 -0
- package/sa_std/binary_heap.sal +7 -0
- package/sa_std/borrow.sa +171 -0
- package/sa_std/borrow.sal +13 -0
- package/sa_std/btree_map.sa +2210 -0
- package/sa_std/btree_map.sal +11 -0
- package/sa_std/btree_set.sa +1072 -0
- package/sa_std/btree_set.sal +6 -0
- package/sa_std/char.sa +1309 -0
- package/sa_std/char.sal +50 -0
- package/sa_std/cmp.sa +554 -0
- package/sa_std/cmp.sal +14 -0
- package/sa_std/collections/binary_heap.sa +1 -0
- package/sa_std/collections/btree_map.sa +1 -0
- package/sa_std/collections/btree_set.sa +1 -0
- package/sa_std/collections/hashmap.sa +1 -0
- package/sa_std/collections/hashset.sa +1 -0
- package/sa_std/collections/linked_list.sa +1120 -0
- package/sa_std/collections/linked_list.sal +10 -0
- package/sa_std/collections/prelude.sa +7 -0
- package/sa_std/collections/prelude.sal +1 -0
- package/sa_std/collections/vec_deque.sa +1 -0
- package/sa_std/collections.sal +13 -0
- package/sa_std/convert.sa +1115 -0
- package/sa_std/convert.sal +24 -0
- package/sa_std/core/arc.sa +233 -0
- package/sa_std/core/arc.sal +4 -0
- package/sa_std/core/ascii.sa +784 -0
- package/sa_std/core/ascii.sal +34 -0
- package/sa_std/core/bit.sa +41 -0
- package/sa_std/core/box.sa +1 -0
- package/sa_std/core/box.sal +2 -0
- package/sa_std/core/cell.sa +108 -0
- package/sa_std/core/cell.sal +5 -0
- package/sa_std/core/cleanup.sa +26 -0
- package/sa_std/core/control.sa +20 -0
- package/sa_std/core/derive.sa +60 -0
- package/sa_std/core/derive.sal +1 -0
- package/sa_std/core/dispatch.sa +7 -0
- package/sa_std/core/dispatch.sal +5 -0
- package/sa_std/core/future.sa +777 -0
- package/sa_std/core/future.sal +73 -0
- package/sa_std/core/hash.sa +48 -0
- package/sa_std/core/iter.sa +2805 -0
- package/sa_std/core/iter.sal +4 -0
- package/sa_std/core/loop.sa +60 -0
- package/sa_std/core/mem.sa +220 -0
- package/sa_std/core/option.sa +825 -0
- package/sa_std/core/option.sal +11 -0
- package/sa_std/core/panic.sa +23 -0
- package/sa_std/core/panic.sal +12 -0
- package/sa_std/core/prelude.sa +18 -0
- package/sa_std/core/prelude.sal +18 -0
- package/sa_std/core/rc.sa +225 -0
- package/sa_std/core/rc.sal +4 -0
- package/sa_std/core/refcell.sa +283 -0
- package/sa_std/core/refcell.sal +13 -0
- package/sa_std/core/result.sa +708 -0
- package/sa_std/core/result.sal +6 -0
- package/sa_std/core/rust_patterns.sal +295 -0
- package/sa_std/core/sa_core.sa +84 -0
- package/sa_std/core/slice.sa +4021 -0
- package/sa_std/core/slice.sal +7 -0
- package/sa_std/core/task.sa +112 -0
- package/sa_std/core/task.sal +15 -0
- package/sa_std/core/trait_object.sa +26 -0
- package/sa_std/core/trait_object.sal +4 -0
- package/sa_std/core/waker.sa +289 -0
- package/sa_std/core/waker.sal +31 -0
- package/sa_std/core/weak.sa +2 -0
- package/sa_std/core/weak.sal +4 -0
- package/sa_std/cow.sa +3 -0
- package/sa_std/cow.sal +2 -0
- package/sa_std/cstring.sa +3 -0
- package/sa_std/cstring.sal +2 -0
- package/sa_std/default.sa +99 -0
- package/sa_std/duration.sa +3 -0
- package/sa_std/duration.sal +2 -0
- package/sa_std/encoding/json.sa +259 -0
- package/sa_std/encoding/json.sai +54 -0
- package/sa_std/encoding/json.sal +35 -0
- package/sa_std/encoding/prelude.sa +1 -0
- package/sa_std/encoding/prelude.sal +0 -0
- package/sa_std/env.sa +390 -0
- package/sa_std/env.sai +25 -0
- package/sa_std/error.sa +253 -0
- package/sa_std/error.sal +44 -0
- package/sa_std/ffi/cstring.sa +3 -0
- package/sa_std/ffi/cstring.sal +1 -0
- package/sa_std/ffi/prelude.sa +2 -0
- package/sa_std/ffi/prelude.sal +2 -0
- package/sa_std/ffi.sa +635 -0
- package/sa_std/ffi.sal +51 -0
- package/sa_std/fmt.sa +2 -0
- package/sa_std/fmt.sai +18 -0
- package/sa_std/fmt.sal +35 -0
- package/sa_std/fs.sa +1023 -0
- package/sa_std/fs.sai +127 -0
- package/sa_std/fs.sal +51 -0
- package/sa_std/future.sa +2 -0
- package/sa_std/future.sal +1 -0
- package/sa_std/hash.sa +1486 -0
- package/sa_std/hash.sal +13 -0
- package/sa_std/hashmap.sa +1962 -0
- package/sa_std/hashmap.sal +20 -0
- package/sa_std/hashset.sa +1004 -0
- package/sa_std/hashset.sal +18 -0
- package/sa_std/http2.sa +78 -0
- package/sa_std/http2.sai +26 -0
- package/sa_std/http2.sal +36 -0
- package/sa_std/instant.sa +3 -0
- package/sa_std/instant.sal +2 -0
- package/sa_std/io/buf_reader.sa +43 -0
- package/sa_std/io/buf_writer.sa +35 -0
- package/sa_std/io/bufio.sa +4 -0
- package/sa_std/io/bufio.sal +4 -0
- package/sa_std/io/prelude.sa +1 -0
- package/sa_std/io/prelude.sal +1 -0
- package/sa_std/io/print.sa +2 -0
- package/sa_std/io/print.sai +3 -0
- package/sa_std/io.sa +925 -0
- package/sa_std/io.sai +25 -0
- package/sa_std/io.sal +84 -0
- package/sa_std/iter.sa +2 -0
- package/sa_std/iter.sal +1 -0
- package/sa_std/join_handle.sa +3 -0
- package/sa_std/join_handle.sal +2 -0
- package/sa_std/libsa_async.sa +80 -0
- package/sa_std/m_async.sa +137 -0
- package/sa_std/m_async.sal +30 -0
- package/sa_std/m_async.sla +2 -0
- package/sa_std/manually_drop.sa +3 -0
- package/sa_std/manually_drop.sal +2 -0
- package/sa_std/marker/phantom_data.sa +3 -0
- package/sa_std/marker/phantom_data.sal +1 -0
- package/sa_std/marker/prelude.sa +4 -0
- package/sa_std/marker/prelude.sal +4 -0
- package/sa_std/marker.sa +220 -0
- package/sa_std/marker.sal +15 -0
- package/sa_std/math.sa +84 -0
- package/sa_std/math.sai +10 -0
- package/sa_std/mem/manually_drop.sa +3 -0
- package/sa_std/mem/manually_drop.sal +1 -0
- package/sa_std/mem/prelude.sa +2 -0
- package/sa_std/mem/prelude.sal +2 -0
- package/sa_std/mem.sa +564 -0
- package/sa_std/mem.sal +40 -0
- package/sa_std/modstate.sai +19 -0
- package/sa_std/net.sa +4227 -0
- package/sa_std/net.sai +239 -0
- package/sa_std/net.sal +159 -0
- package/sa_std/netx.sa +85 -0
- package/sa_std/netx.sai +11 -0
- package/sa_std/netx.sal +39 -0
- package/sa_std/nonzero.sa +3 -0
- package/sa_std/nonzero.sal +2 -0
- package/sa_std/num/nonzero.sa +3 -0
- package/sa_std/num/nonzero.sal +1 -0
- package/sa_std/num/prelude.sa +3 -0
- package/sa_std/num/prelude.sal +3 -0
- package/sa_std/num.sa +17302 -0
- package/sa_std/num.sai +11 -0
- package/sa_std/num.sal +341 -0
- package/sa_std/ops.sa +1884 -0
- package/sa_std/ops.sal +68 -0
- package/sa_std/option.sa +2 -0
- package/sa_std/option.sal +1 -0
- package/sa_std/os/fd.sa +96 -0
- package/sa_std/os/fd.sai +7 -0
- package/sa_std/os/fd.sal +11 -0
- package/sa_std/os/prelude.sa +2 -0
- package/sa_std/os/prelude.sal +1 -0
- package/sa_std/os/unix_ffi.sa +271 -0
- package/sa_std/panic.sa +1 -0
- package/sa_std/panic.sal +1 -0
- package/sa_std/path.sa +3170 -0
- package/sa_std/path.sal +12 -0
- package/sa_std/phantom_data.sa +3 -0
- package/sa_std/phantom_data.sal +2 -0
- package/sa_std/pin.sa +79 -0
- package/sa_std/pin.sal +5 -0
- package/sa_std/plugin_async.sa +90 -0
- package/sa_std/plugin_async.sal +29 -0
- package/sa_std/plugin_async.sla +4 -0
- package/sa_std/plugin_http_async.sa +46 -0
- package/sa_std/plugin_http_server.sa +61 -0
- package/sa_std/plugin_http_server.sla +2 -0
- package/sa_std/plugin_sqlite.sa +106 -0
- package/sa_std/plugin_sqlite.sla +2 -0
- package/sa_std/prelude.sa +60 -0
- package/sa_std/prelude.sal +55 -0
- package/sa_std/process.sa +916 -0
- package/sa_std/process.sai +57 -0
- package/sa_std/process.sal +27 -0
- package/sa_std/ptr.sa +503 -0
- package/sa_std/ptr.sal +2 -0
- package/sa_std/result.sa +2 -0
- package/sa_std/result.sal +1 -0
- package/sa_std/rust_core.sa +51 -0
- package/sa_std/rust_core.sal +26 -0
- package/sa_std/sa.mod +7 -0
- package/sa_std/sort.sa +156 -0
- package/sa_std/str.sla +13 -0
- package/sa_std/string.sa +12240 -0
- package/sa_std/string.sai +25 -0
- package/sa_std/string.sal +17 -0
- package/sa_std/string_format.sa +269 -0
- package/sa_std/sync/atomic.sa +1500 -0
- package/sa_std/sync/atomic.sal +45 -0
- package/sa_std/sync/barrier.sa +105 -0
- package/sa_std/sync/barrier.sal +7 -0
- package/sa_std/sync/condvar.sa +240 -0
- package/sa_std/sync/condvar.sal +4 -0
- package/sa_std/sync/mpsc.sa +758 -0
- package/sa_std/sync/mpsc.sal +42 -0
- package/sa_std/sync/mpsc_list.sa +255 -0
- package/sa_std/sync/mpsc_list.sal +3 -0
- package/sa_std/sync/mutex.sa +182 -0
- package/sa_std/sync/mutex.sal +7 -0
- package/sa_std/sync/once.sa +371 -0
- package/sa_std/sync/once.sal +31 -0
- package/sa_std/sync/poison.sa +36 -0
- package/sa_std/sync/poison.sal +11 -0
- package/sa_std/sync/prelude.sa +8 -0
- package/sa_std/sync/prelude.sal +7 -0
- package/sa_std/sync/rwlock.sa +369 -0
- package/sa_std/sync/rwlock.sal +13 -0
- package/sa_std/task.sa +2 -0
- package/sa_std/task.sal +1 -0
- package/sa_std/term.sa +2 -0
- package/sa_std/term.sai +10 -0
- package/sa_std/term.sal +33 -0
- package/sa_std/testing/assert.sai +4 -0
- package/sa_std/testing/mock_io.sa +174 -0
- package/sa_std/testing/mock_io.sal +5 -0
- package/sa_std/testing/prelude.sa +2 -0
- package/sa_std/testing/prelude.sal +1 -0
- package/sa_std/text/prelude.sa +1 -0
- package/sa_std/text/prelude.sal +1 -0
- package/sa_std/text/regex.sa +2 -0
- package/sa_std/text/regex.sai +9 -0
- package/sa_std/text/regex.sal +33 -0
- package/sa_std/thread/join_handle.sa +3 -0
- package/sa_std/thread/join_handle.sal +1 -0
- package/sa_std/thread/prelude.sa +4 -0
- package/sa_std/thread/prelude.sal +3 -0
- package/sa_std/thread.sa +160 -0
- package/sa_std/thread.sai +11 -0
- package/sa_std/thread.sal +4 -0
- package/sa_std/thread_local.sa +45 -0
- package/sa_std/thread_local.sai +9 -0
- package/sa_std/time/duration.sa +3 -0
- package/sa_std/time/duration.sal +1 -0
- package/sa_std/time/instant.sa +3 -0
- package/sa_std/time/instant.sal +1 -0
- package/sa_std/time/prelude.sa +4 -0
- package/sa_std/time/prelude.sal +4 -0
- package/sa_std/time.sa +850 -0
- package/sa_std/time.sai +37 -0
- package/sa_std/time.sal +35 -0
- package/sa_std/time.sla +67 -0
- package/sa_std/tls_client.sai +39 -0
- package/sa_std/vec.sa +5754 -0
- package/sa_std/vec.sal +1 -0
- package/sa_std/vec_deque.sa +4925 -0
- package/sa_std/vec_deque.sal +8 -0
- package/sa_std/vec_runtime_macros.sa +11 -0
- package/sa_std/ws_client.sai +57 -0
package/sa_std/time.sa
ADDED
|
@@ -0,0 +1,850 @@
|
|
|
1
|
+
@import "time.sal"
|
|
2
|
+
@import "time.sai"
|
|
3
|
+
@import "hash.sa"
|
|
4
|
+
|
|
5
|
+
[MACRO] TIME_NOW_NS %out_ns
|
|
6
|
+
%out_ns = call @sa_time_instant_ns()
|
|
7
|
+
[END_MACRO]
|
|
8
|
+
|
|
9
|
+
[MACRO] TIME_NOW_UNIX_S %out_secs
|
|
10
|
+
%out_secs = call @sa_time_unix_s()
|
|
11
|
+
[END_MACRO]
|
|
12
|
+
|
|
13
|
+
[MACRO] TIME_NOW_UNIX_MS %out_ms
|
|
14
|
+
%out_ms = call @sa_time_unix_ms()
|
|
15
|
+
[END_MACRO]
|
|
16
|
+
|
|
17
|
+
[MACRO] TIME_NOW_UNIX_NS %out_ns
|
|
18
|
+
%out_ns = call @sa_time_unix_ns()
|
|
19
|
+
[END_MACRO]
|
|
20
|
+
|
|
21
|
+
[MACRO] TIME_UTC_NOW %out_date
|
|
22
|
+
__time_utc_status = call @sa_time_utc_now(&%out_date)
|
|
23
|
+
!__time_utc_status
|
|
24
|
+
[END_MACRO]
|
|
25
|
+
|
|
26
|
+
[MACRO] TIME_SLEEP_NS %ns
|
|
27
|
+
__time_sleep_status = call @sa_time_sleep_ns(%ns)
|
|
28
|
+
!__time_sleep_status
|
|
29
|
+
[END_MACRO]
|
|
30
|
+
|
|
31
|
+
[MACRO] TIME_SLEEP_MS %ms
|
|
32
|
+
__time_sleep_ms_status = call @sa_time_sleep_ms(%ms)
|
|
33
|
+
!__time_sleep_ms_status
|
|
34
|
+
[END_MACRO]
|
|
35
|
+
|
|
36
|
+
[MACRO] TIME_THREAD_SLEEP_NS %ns
|
|
37
|
+
__time_thread_sleep_status = call @sa_time_sleep_ns(%ns)
|
|
38
|
+
!__time_thread_sleep_status
|
|
39
|
+
[END_MACRO]
|
|
40
|
+
|
|
41
|
+
[MACRO] TIME_DURATION_FROM_MS %out_ns, %ms
|
|
42
|
+
%out_ns = mul %ms, Time_NS_PER_MS
|
|
43
|
+
[END_MACRO]
|
|
44
|
+
|
|
45
|
+
[MACRO] TIME_DURATION_FROM_US %out_ns, %us
|
|
46
|
+
%out_ns = mul %us, Time_NS_PER_US
|
|
47
|
+
[END_MACRO]
|
|
48
|
+
|
|
49
|
+
[MACRO] TIME_DURATION_FROM_S %out_ns, %secs
|
|
50
|
+
%out_ns = mul %secs, Time_NS_PER_S
|
|
51
|
+
[END_MACRO]
|
|
52
|
+
|
|
53
|
+
[MACRO] TIME_DURATION_FROM_NS %out_ns, %ns
|
|
54
|
+
%out_ns = add %ns, 0
|
|
55
|
+
[END_MACRO]
|
|
56
|
+
|
|
57
|
+
[MACRO] TIME_DURATION_NEW %out_ns, %secs, %nanos
|
|
58
|
+
__time_new_secs_ns_%out_ns = mul %secs, Time_NS_PER_S
|
|
59
|
+
%out_ns = add __time_new_secs_ns_%out_ns, %nanos
|
|
60
|
+
!__time_new_secs_ns_%out_ns
|
|
61
|
+
[END_MACRO]
|
|
62
|
+
|
|
63
|
+
[MACRO] TIME_DURATION_FROM_SECS %out_ns, %secs
|
|
64
|
+
EXPAND TIME_DURATION_FROM_S %out_ns, %secs
|
|
65
|
+
[END_MACRO]
|
|
66
|
+
|
|
67
|
+
[MACRO] TIME_DURATION_FROM_MILLIS %out_ns, %millis
|
|
68
|
+
EXPAND TIME_DURATION_FROM_MS %out_ns, %millis
|
|
69
|
+
[END_MACRO]
|
|
70
|
+
|
|
71
|
+
[MACRO] TIME_DURATION_FROM_MICROS %out_ns, %micros
|
|
72
|
+
EXPAND TIME_DURATION_FROM_US %out_ns, %micros
|
|
73
|
+
[END_MACRO]
|
|
74
|
+
|
|
75
|
+
[MACRO] TIME_DURATION_FROM_NANOS %out_ns, %nanos
|
|
76
|
+
EXPAND TIME_DURATION_FROM_NS %out_ns, %nanos
|
|
77
|
+
[END_MACRO]
|
|
78
|
+
|
|
79
|
+
[MACRO] TIME_DURATION_FROM_MINS %out_ns, %mins
|
|
80
|
+
__time_mins_secs_%out_ns = mul %mins, Time_S_PER_MIN
|
|
81
|
+
EXPAND TIME_DURATION_FROM_S %out_ns, __time_mins_secs_%out_ns
|
|
82
|
+
!__time_mins_secs_%out_ns
|
|
83
|
+
[END_MACRO]
|
|
84
|
+
|
|
85
|
+
[MACRO] TIME_DURATION_FROM_HOURS %out_ns, %hours
|
|
86
|
+
__time_hours_secs_%out_ns = mul %hours, Time_S_PER_HOUR
|
|
87
|
+
EXPAND TIME_DURATION_FROM_S %out_ns, __time_hours_secs_%out_ns
|
|
88
|
+
!__time_hours_secs_%out_ns
|
|
89
|
+
[END_MACRO]
|
|
90
|
+
|
|
91
|
+
[MACRO] TIME_DURATION_FROM_DAYS %out_ns, %days
|
|
92
|
+
__time_days_secs_%out_ns = mul %days, Time_S_PER_DAY
|
|
93
|
+
EXPAND TIME_DURATION_FROM_S %out_ns, __time_days_secs_%out_ns
|
|
94
|
+
!__time_days_secs_%out_ns
|
|
95
|
+
[END_MACRO]
|
|
96
|
+
|
|
97
|
+
[MACRO] TIME_DURATION_FROM_WEEKS %out_ns, %weeks
|
|
98
|
+
__time_weeks_secs_%out_ns = mul %weeks, Time_S_PER_WEEK
|
|
99
|
+
EXPAND TIME_DURATION_FROM_S %out_ns, __time_weeks_secs_%out_ns
|
|
100
|
+
!__time_weeks_secs_%out_ns
|
|
101
|
+
[END_MACRO]
|
|
102
|
+
|
|
103
|
+
[MACRO] TIME_DURATION_CHECKED_FROM_NANOS %out_ok, %out_ns, %nanos
|
|
104
|
+
%out_ns = add %nanos, 0
|
|
105
|
+
%out_ok = add 0, 1
|
|
106
|
+
[END_MACRO]
|
|
107
|
+
|
|
108
|
+
[MACRO] TIME_DURATION_CHECKED_FROM_SECS %out_ok, %out_ns, %secs
|
|
109
|
+
EXPAND TIME_CHECKED_MUL_NS %out_ok, %out_ns, %secs, Time_NS_PER_S
|
|
110
|
+
[END_MACRO]
|
|
111
|
+
|
|
112
|
+
[MACRO] TIME_DURATION_CHECKED_FROM_MILLIS %out_ok, %out_ns, %millis
|
|
113
|
+
EXPAND TIME_CHECKED_MUL_NS %out_ok, %out_ns, %millis, Time_NS_PER_MS
|
|
114
|
+
[END_MACRO]
|
|
115
|
+
|
|
116
|
+
[MACRO] TIME_DURATION_CHECKED_FROM_MICROS %out_ok, %out_ns, %micros
|
|
117
|
+
EXPAND TIME_CHECKED_MUL_NS %out_ok, %out_ns, %micros, Time_NS_PER_US
|
|
118
|
+
[END_MACRO]
|
|
119
|
+
|
|
120
|
+
[MACRO] TIME_DURATION_CHECKED_FROM_MINS %out_ok, %out_ns, %mins
|
|
121
|
+
EXPAND TIME_CHECKED_MUL_NS __time_checked_mins_secs_ok_%out_ok, __time_checked_mins_secs_%out_ok, %mins, Time_S_PER_MIN
|
|
122
|
+
br __time_checked_mins_secs_ok_%out_ok -> L_TIME_CHECKED_FROM_MINS_SECS_OK_%out_ok, L_TIME_CHECKED_FROM_MINS_FAIL_%out_ok
|
|
123
|
+
|
|
124
|
+
L_TIME_CHECKED_FROM_MINS_SECS_OK_%out_ok:
|
|
125
|
+
EXPAND TIME_DURATION_CHECKED_FROM_SECS %out_ok, %out_ns, __time_checked_mins_secs_%out_ok
|
|
126
|
+
!__time_checked_mins_secs_%out_ok
|
|
127
|
+
!__time_checked_mins_secs_ok_%out_ok
|
|
128
|
+
jmp L_TIME_CHECKED_FROM_MINS_END_%out_ok
|
|
129
|
+
|
|
130
|
+
L_TIME_CHECKED_FROM_MINS_FAIL_%out_ok:
|
|
131
|
+
%out_ns = add 0, 0
|
|
132
|
+
%out_ok = add 0, 0
|
|
133
|
+
!__time_checked_mins_secs_%out_ok
|
|
134
|
+
!__time_checked_mins_secs_ok_%out_ok
|
|
135
|
+
|
|
136
|
+
L_TIME_CHECKED_FROM_MINS_END_%out_ok:
|
|
137
|
+
[END_MACRO]
|
|
138
|
+
|
|
139
|
+
[MACRO] TIME_DURATION_CHECKED_FROM_HOURS %out_ok, %out_ns, %hours
|
|
140
|
+
EXPAND TIME_CHECKED_MUL_NS __time_checked_hours_secs_ok_%out_ok, __time_checked_hours_secs_%out_ok, %hours, Time_S_PER_HOUR
|
|
141
|
+
br __time_checked_hours_secs_ok_%out_ok -> L_TIME_CHECKED_FROM_HOURS_SECS_OK_%out_ok, L_TIME_CHECKED_FROM_HOURS_FAIL_%out_ok
|
|
142
|
+
|
|
143
|
+
L_TIME_CHECKED_FROM_HOURS_SECS_OK_%out_ok:
|
|
144
|
+
EXPAND TIME_DURATION_CHECKED_FROM_SECS %out_ok, %out_ns, __time_checked_hours_secs_%out_ok
|
|
145
|
+
!__time_checked_hours_secs_%out_ok
|
|
146
|
+
!__time_checked_hours_secs_ok_%out_ok
|
|
147
|
+
jmp L_TIME_CHECKED_FROM_HOURS_END_%out_ok
|
|
148
|
+
|
|
149
|
+
L_TIME_CHECKED_FROM_HOURS_FAIL_%out_ok:
|
|
150
|
+
%out_ns = add 0, 0
|
|
151
|
+
%out_ok = add 0, 0
|
|
152
|
+
!__time_checked_hours_secs_%out_ok
|
|
153
|
+
!__time_checked_hours_secs_ok_%out_ok
|
|
154
|
+
|
|
155
|
+
L_TIME_CHECKED_FROM_HOURS_END_%out_ok:
|
|
156
|
+
[END_MACRO]
|
|
157
|
+
|
|
158
|
+
[MACRO] TIME_DURATION_CHECKED_FROM_DAYS %out_ok, %out_ns, %days
|
|
159
|
+
EXPAND TIME_CHECKED_MUL_NS __time_checked_days_secs_ok_%out_ok, __time_checked_days_secs_%out_ok, %days, Time_S_PER_DAY
|
|
160
|
+
br __time_checked_days_secs_ok_%out_ok -> L_TIME_CHECKED_FROM_DAYS_SECS_OK_%out_ok, L_TIME_CHECKED_FROM_DAYS_FAIL_%out_ok
|
|
161
|
+
|
|
162
|
+
L_TIME_CHECKED_FROM_DAYS_SECS_OK_%out_ok:
|
|
163
|
+
EXPAND TIME_DURATION_CHECKED_FROM_SECS %out_ok, %out_ns, __time_checked_days_secs_%out_ok
|
|
164
|
+
!__time_checked_days_secs_%out_ok
|
|
165
|
+
!__time_checked_days_secs_ok_%out_ok
|
|
166
|
+
jmp L_TIME_CHECKED_FROM_DAYS_END_%out_ok
|
|
167
|
+
|
|
168
|
+
L_TIME_CHECKED_FROM_DAYS_FAIL_%out_ok:
|
|
169
|
+
%out_ns = add 0, 0
|
|
170
|
+
%out_ok = add 0, 0
|
|
171
|
+
!__time_checked_days_secs_%out_ok
|
|
172
|
+
!__time_checked_days_secs_ok_%out_ok
|
|
173
|
+
|
|
174
|
+
L_TIME_CHECKED_FROM_DAYS_END_%out_ok:
|
|
175
|
+
[END_MACRO]
|
|
176
|
+
|
|
177
|
+
[MACRO] TIME_DURATION_CHECKED_FROM_WEEKS %out_ok, %out_ns, %weeks
|
|
178
|
+
EXPAND TIME_CHECKED_MUL_NS __time_checked_weeks_secs_ok_%out_ok, __time_checked_weeks_secs_%out_ok, %weeks, Time_S_PER_WEEK
|
|
179
|
+
br __time_checked_weeks_secs_ok_%out_ok -> L_TIME_CHECKED_FROM_WEEKS_SECS_OK_%out_ok, L_TIME_CHECKED_FROM_WEEKS_FAIL_%out_ok
|
|
180
|
+
|
|
181
|
+
L_TIME_CHECKED_FROM_WEEKS_SECS_OK_%out_ok:
|
|
182
|
+
EXPAND TIME_DURATION_CHECKED_FROM_SECS %out_ok, %out_ns, __time_checked_weeks_secs_%out_ok
|
|
183
|
+
!__time_checked_weeks_secs_%out_ok
|
|
184
|
+
!__time_checked_weeks_secs_ok_%out_ok
|
|
185
|
+
jmp L_TIME_CHECKED_FROM_WEEKS_END_%out_ok
|
|
186
|
+
|
|
187
|
+
L_TIME_CHECKED_FROM_WEEKS_FAIL_%out_ok:
|
|
188
|
+
%out_ns = add 0, 0
|
|
189
|
+
%out_ok = add 0, 0
|
|
190
|
+
!__time_checked_weeks_secs_%out_ok
|
|
191
|
+
!__time_checked_weeks_secs_ok_%out_ok
|
|
192
|
+
|
|
193
|
+
L_TIME_CHECKED_FROM_WEEKS_END_%out_ok:
|
|
194
|
+
[END_MACRO]
|
|
195
|
+
|
|
196
|
+
[MACRO] TIME_DURATION_CHECKED_NEW %out_ok, %out_ns, %secs, %nanos
|
|
197
|
+
EXPAND TIME_DURATION_CHECKED_FROM_SECS __time_checked_new_secs_ok_%out_ok, __time_checked_new_secs_ns_%out_ok, %secs
|
|
198
|
+
br __time_checked_new_secs_ok_%out_ok -> L_TIME_CHECKED_NEW_SECS_OK_%out_ok, L_TIME_CHECKED_NEW_FAIL_%out_ok
|
|
199
|
+
|
|
200
|
+
L_TIME_CHECKED_NEW_SECS_OK_%out_ok:
|
|
201
|
+
EXPAND TIME_CHECKED_ADD_NS %out_ok, %out_ns, __time_checked_new_secs_ns_%out_ok, %nanos
|
|
202
|
+
!__time_checked_new_secs_ns_%out_ok
|
|
203
|
+
!__time_checked_new_secs_ok_%out_ok
|
|
204
|
+
jmp L_TIME_CHECKED_NEW_END_%out_ok
|
|
205
|
+
|
|
206
|
+
L_TIME_CHECKED_NEW_FAIL_%out_ok:
|
|
207
|
+
%out_ns = add 0, 0
|
|
208
|
+
%out_ok = add 0, 0
|
|
209
|
+
!__time_checked_new_secs_ns_%out_ok
|
|
210
|
+
!__time_checked_new_secs_ok_%out_ok
|
|
211
|
+
|
|
212
|
+
L_TIME_CHECKED_NEW_END_%out_ok:
|
|
213
|
+
[END_MACRO]
|
|
214
|
+
|
|
215
|
+
[MACRO] TIME_DURATION_ZERO %out_ns
|
|
216
|
+
%out_ns = add 0, 0
|
|
217
|
+
[END_MACRO]
|
|
218
|
+
|
|
219
|
+
[MACRO] TIME_DURATION_MAX %out_ns
|
|
220
|
+
%out_ns = sub 0, 1
|
|
221
|
+
[END_MACRO]
|
|
222
|
+
|
|
223
|
+
[MACRO] TIME_DURATION_IS_ZERO %out_bool, %duration_ns
|
|
224
|
+
%out_bool = eq %duration_ns, 0
|
|
225
|
+
[END_MACRO]
|
|
226
|
+
|
|
227
|
+
[MACRO] TIME_DURATION_AS_MS %out_ms, %ns
|
|
228
|
+
%out_ms = udiv %ns, Time_NS_PER_MS
|
|
229
|
+
[END_MACRO]
|
|
230
|
+
|
|
231
|
+
[MACRO] TIME_DURATION_AS_US %out_us, %ns
|
|
232
|
+
%out_us = udiv %ns, Time_NS_PER_US
|
|
233
|
+
[END_MACRO]
|
|
234
|
+
|
|
235
|
+
[MACRO] TIME_DURATION_AS_S %out_secs, %ns
|
|
236
|
+
%out_secs = udiv %ns, Time_NS_PER_S
|
|
237
|
+
[END_MACRO]
|
|
238
|
+
|
|
239
|
+
[MACRO] TIME_DURATION_AS_NS %out_ns, %duration_ns
|
|
240
|
+
%out_ns = add %duration_ns, 0
|
|
241
|
+
[END_MACRO]
|
|
242
|
+
|
|
243
|
+
[MACRO] TIME_DURATION_AS_SECS %out_secs, %duration_ns
|
|
244
|
+
EXPAND TIME_DURATION_AS_S %out_secs, %duration_ns
|
|
245
|
+
[END_MACRO]
|
|
246
|
+
|
|
247
|
+
[MACRO] TIME_DURATION_AS_MILLIS %out_ms, %duration_ns
|
|
248
|
+
EXPAND TIME_DURATION_AS_MS %out_ms, %duration_ns
|
|
249
|
+
[END_MACRO]
|
|
250
|
+
|
|
251
|
+
[MACRO] TIME_DURATION_AS_MICROS %out_us, %duration_ns
|
|
252
|
+
EXPAND TIME_DURATION_AS_US %out_us, %duration_ns
|
|
253
|
+
[END_MACRO]
|
|
254
|
+
|
|
255
|
+
[MACRO] TIME_DURATION_AS_NANOS %out_ns, %duration_ns
|
|
256
|
+
EXPAND TIME_DURATION_AS_NS %out_ns, %duration_ns
|
|
257
|
+
[END_MACRO]
|
|
258
|
+
|
|
259
|
+
[MACRO] DEFAULT_HASHER_WRITE_DURATION %hasher, %duration_ns
|
|
260
|
+
__time_duration_hash_secs_%hasher = udiv %duration_ns, Time_NS_PER_S
|
|
261
|
+
__time_duration_hash_nanos_%hasher = urem %duration_ns, Time_NS_PER_S
|
|
262
|
+
EXPAND DEFAULT_HASHER_WRITE_U64 %hasher, __time_duration_hash_secs_%hasher
|
|
263
|
+
EXPAND DEFAULT_HASHER_WRITE_U32 %hasher, __time_duration_hash_nanos_%hasher
|
|
264
|
+
!__time_duration_hash_nanos_%hasher
|
|
265
|
+
!__time_duration_hash_secs_%hasher
|
|
266
|
+
[END_MACRO]
|
|
267
|
+
|
|
268
|
+
[MACRO] TIME_DURATION_HASH %out_hash, %duration_ns
|
|
269
|
+
__time_duration_hash_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
|
|
270
|
+
EXPAND DEFAULT_HASHER_NEW __time_duration_hash_hasher_%out_hash
|
|
271
|
+
EXPAND DEFAULT_HASHER_WRITE_DURATION __time_duration_hash_hasher_%out_hash, %duration_ns
|
|
272
|
+
EXPAND DEFAULT_HASHER_FINISH %out_hash, __time_duration_hash_hasher_%out_hash
|
|
273
|
+
[END_MACRO]
|
|
274
|
+
|
|
275
|
+
[MACRO] BUILD_HASHER_DEFAULT_HASH_ONE_DURATION %out_hash, %builder, %duration_ns
|
|
276
|
+
__build_hash_one_duration_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
|
|
277
|
+
EXPAND BUILD_HASHER_DEFAULT_BUILD __build_hash_one_duration_hasher_%out_hash, %builder
|
|
278
|
+
EXPAND DEFAULT_HASHER_WRITE_DURATION __build_hash_one_duration_hasher_%out_hash, %duration_ns
|
|
279
|
+
EXPAND DEFAULT_HASHER_FINISH %out_hash, __build_hash_one_duration_hasher_%out_hash
|
|
280
|
+
[END_MACRO]
|
|
281
|
+
|
|
282
|
+
[MACRO] RANDOM_STATE_HASH_ONE_DURATION %out_hash, %state, %duration_ns
|
|
283
|
+
__random_state_hash_one_duration_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
|
|
284
|
+
EXPAND RANDOM_STATE_BUILD __random_state_hash_one_duration_hasher_%out_hash, %state
|
|
285
|
+
EXPAND DEFAULT_HASHER_WRITE_DURATION __random_state_hash_one_duration_hasher_%out_hash, %duration_ns
|
|
286
|
+
EXPAND DEFAULT_HASHER_FINISH %out_hash, __random_state_hash_one_duration_hasher_%out_hash
|
|
287
|
+
[END_MACRO]
|
|
288
|
+
|
|
289
|
+
[MACRO] DEFAULT_HASHER_WRITE_UNIX_TIMESPEC_NS %hasher, %time_ns
|
|
290
|
+
__time_timespec_hash_secs_%hasher = udiv %time_ns, Time_NS_PER_S
|
|
291
|
+
__time_timespec_hash_nanos_%hasher = urem %time_ns, Time_NS_PER_S
|
|
292
|
+
EXPAND DEFAULT_HASHER_WRITE_I64 %hasher, __time_timespec_hash_secs_%hasher
|
|
293
|
+
EXPAND DEFAULT_HASHER_WRITE_U32 %hasher, __time_timespec_hash_nanos_%hasher
|
|
294
|
+
!__time_timespec_hash_nanos_%hasher
|
|
295
|
+
!__time_timespec_hash_secs_%hasher
|
|
296
|
+
[END_MACRO]
|
|
297
|
+
|
|
298
|
+
[MACRO] DEFAULT_HASHER_WRITE_INSTANT %hasher, %instant_ns
|
|
299
|
+
EXPAND DEFAULT_HASHER_WRITE_UNIX_TIMESPEC_NS %hasher, %instant_ns
|
|
300
|
+
[END_MACRO]
|
|
301
|
+
|
|
302
|
+
[MACRO] TIME_INSTANT_HASH %out_hash, %instant_ns
|
|
303
|
+
__time_instant_hash_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
|
|
304
|
+
EXPAND DEFAULT_HASHER_NEW __time_instant_hash_hasher_%out_hash
|
|
305
|
+
EXPAND DEFAULT_HASHER_WRITE_INSTANT __time_instant_hash_hasher_%out_hash, %instant_ns
|
|
306
|
+
EXPAND DEFAULT_HASHER_FINISH %out_hash, __time_instant_hash_hasher_%out_hash
|
|
307
|
+
[END_MACRO]
|
|
308
|
+
|
|
309
|
+
[MACRO] BUILD_HASHER_DEFAULT_HASH_ONE_INSTANT %out_hash, %builder, %instant_ns
|
|
310
|
+
__build_hash_one_instant_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
|
|
311
|
+
EXPAND BUILD_HASHER_DEFAULT_BUILD __build_hash_one_instant_hasher_%out_hash, %builder
|
|
312
|
+
EXPAND DEFAULT_HASHER_WRITE_INSTANT __build_hash_one_instant_hasher_%out_hash, %instant_ns
|
|
313
|
+
EXPAND DEFAULT_HASHER_FINISH %out_hash, __build_hash_one_instant_hasher_%out_hash
|
|
314
|
+
[END_MACRO]
|
|
315
|
+
|
|
316
|
+
[MACRO] RANDOM_STATE_HASH_ONE_INSTANT %out_hash, %state, %instant_ns
|
|
317
|
+
__random_state_hash_one_instant_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
|
|
318
|
+
EXPAND RANDOM_STATE_BUILD __random_state_hash_one_instant_hasher_%out_hash, %state
|
|
319
|
+
EXPAND DEFAULT_HASHER_WRITE_INSTANT __random_state_hash_one_instant_hasher_%out_hash, %instant_ns
|
|
320
|
+
EXPAND DEFAULT_HASHER_FINISH %out_hash, __random_state_hash_one_instant_hasher_%out_hash
|
|
321
|
+
[END_MACRO]
|
|
322
|
+
|
|
323
|
+
[MACRO] DEFAULT_HASHER_WRITE_SYSTEM_TIME %hasher, %system_ns
|
|
324
|
+
EXPAND DEFAULT_HASHER_WRITE_UNIX_TIMESPEC_NS %hasher, %system_ns
|
|
325
|
+
[END_MACRO]
|
|
326
|
+
|
|
327
|
+
[MACRO] TIME_SYSTEM_TIME_HASH %out_hash, %system_ns
|
|
328
|
+
__time_system_hash_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
|
|
329
|
+
EXPAND DEFAULT_HASHER_NEW __time_system_hash_hasher_%out_hash
|
|
330
|
+
EXPAND DEFAULT_HASHER_WRITE_SYSTEM_TIME __time_system_hash_hasher_%out_hash, %system_ns
|
|
331
|
+
EXPAND DEFAULT_HASHER_FINISH %out_hash, __time_system_hash_hasher_%out_hash
|
|
332
|
+
[END_MACRO]
|
|
333
|
+
|
|
334
|
+
[MACRO] BUILD_HASHER_DEFAULT_HASH_ONE_SYSTEM_TIME %out_hash, %builder, %system_ns
|
|
335
|
+
__build_hash_one_system_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
|
|
336
|
+
EXPAND BUILD_HASHER_DEFAULT_BUILD __build_hash_one_system_hasher_%out_hash, %builder
|
|
337
|
+
EXPAND DEFAULT_HASHER_WRITE_SYSTEM_TIME __build_hash_one_system_hasher_%out_hash, %system_ns
|
|
338
|
+
EXPAND DEFAULT_HASHER_FINISH %out_hash, __build_hash_one_system_hasher_%out_hash
|
|
339
|
+
[END_MACRO]
|
|
340
|
+
|
|
341
|
+
[MACRO] RANDOM_STATE_HASH_ONE_SYSTEM_TIME %out_hash, %state, %system_ns
|
|
342
|
+
__random_state_hash_one_system_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
|
|
343
|
+
EXPAND RANDOM_STATE_BUILD __random_state_hash_one_system_hasher_%out_hash, %state
|
|
344
|
+
EXPAND DEFAULT_HASHER_WRITE_SYSTEM_TIME __random_state_hash_one_system_hasher_%out_hash, %system_ns
|
|
345
|
+
EXPAND DEFAULT_HASHER_FINISH %out_hash, __random_state_hash_one_system_hasher_%out_hash
|
|
346
|
+
[END_MACRO]
|
|
347
|
+
|
|
348
|
+
[MACRO] TIME_DURATION_DIV_DURATION_FLOOR %out_ok, %out_ratio, %duration_ns, %rhs_ns
|
|
349
|
+
__time_div_dur_zero_%out_ok = eq %rhs_ns, 0
|
|
350
|
+
br __time_div_dur_zero_%out_ok -> L_TIME_DIV_DUR_FLOOR_ZERO_%out_ok, L_TIME_DIV_DUR_FLOOR_OK_%out_ok
|
|
351
|
+
|
|
352
|
+
L_TIME_DIV_DUR_FLOOR_OK_%out_ok:
|
|
353
|
+
%out_ratio = udiv %duration_ns, %rhs_ns
|
|
354
|
+
%out_ok = add 0, 1
|
|
355
|
+
!__time_div_dur_zero_%out_ok
|
|
356
|
+
jmp L_TIME_DIV_DUR_FLOOR_END_%out_ok
|
|
357
|
+
|
|
358
|
+
L_TIME_DIV_DUR_FLOOR_ZERO_%out_ok:
|
|
359
|
+
%out_ratio = add 0, 0
|
|
360
|
+
%out_ok = add 0, 0
|
|
361
|
+
!__time_div_dur_zero_%out_ok
|
|
362
|
+
|
|
363
|
+
L_TIME_DIV_DUR_FLOOR_END_%out_ok:
|
|
364
|
+
[END_MACRO]
|
|
365
|
+
|
|
366
|
+
[MACRO] TIME_DURATION_DIV_DURATION_CEIL %out_ok, %out_ratio, %duration_ns, %rhs_ns
|
|
367
|
+
__time_div_ceil_zero_%out_ok = eq %rhs_ns, 0
|
|
368
|
+
br __time_div_ceil_zero_%out_ok -> L_TIME_DIV_DUR_CEIL_ZERO_%out_ok, L_TIME_DIV_DUR_CEIL_COMPUTE_%out_ok
|
|
369
|
+
|
|
370
|
+
L_TIME_DIV_DUR_CEIL_COMPUTE_%out_ok:
|
|
371
|
+
__time_div_ceil_q_%out_ok = udiv %duration_ns, %rhs_ns
|
|
372
|
+
__time_div_ceil_r_%out_ok = urem %duration_ns, %rhs_ns
|
|
373
|
+
__time_div_ceil_has_rem_%out_ok = ne __time_div_ceil_r_%out_ok, 0
|
|
374
|
+
br __time_div_ceil_has_rem_%out_ok -> L_TIME_DIV_DUR_CEIL_ADD_%out_ok, L_TIME_DIV_DUR_CEIL_EXACT_%out_ok
|
|
375
|
+
|
|
376
|
+
L_TIME_DIV_DUR_CEIL_ADD_%out_ok:
|
|
377
|
+
%out_ratio = add __time_div_ceil_q_%out_ok, 1
|
|
378
|
+
%out_ok = add 0, 1
|
|
379
|
+
!__time_div_ceil_has_rem_%out_ok
|
|
380
|
+
!__time_div_ceil_r_%out_ok
|
|
381
|
+
!__time_div_ceil_q_%out_ok
|
|
382
|
+
!__time_div_ceil_zero_%out_ok
|
|
383
|
+
jmp L_TIME_DIV_DUR_CEIL_END_%out_ok
|
|
384
|
+
|
|
385
|
+
L_TIME_DIV_DUR_CEIL_EXACT_%out_ok:
|
|
386
|
+
%out_ratio = add __time_div_ceil_q_%out_ok, 0
|
|
387
|
+
%out_ok = add 0, 1
|
|
388
|
+
!__time_div_ceil_has_rem_%out_ok
|
|
389
|
+
!__time_div_ceil_r_%out_ok
|
|
390
|
+
!__time_div_ceil_q_%out_ok
|
|
391
|
+
!__time_div_ceil_zero_%out_ok
|
|
392
|
+
jmp L_TIME_DIV_DUR_CEIL_END_%out_ok
|
|
393
|
+
|
|
394
|
+
L_TIME_DIV_DUR_CEIL_ZERO_%out_ok:
|
|
395
|
+
%out_ratio = add 0, 0
|
|
396
|
+
%out_ok = add 0, 0
|
|
397
|
+
!__time_div_ceil_zero_%out_ok
|
|
398
|
+
|
|
399
|
+
L_TIME_DIV_DUR_CEIL_END_%out_ok:
|
|
400
|
+
[END_MACRO]
|
|
401
|
+
|
|
402
|
+
[MACRO] TIME_DURATION_SUBSEC_NANOS %out_ns, %duration_ns
|
|
403
|
+
%out_ns = urem %duration_ns, Time_NS_PER_S
|
|
404
|
+
[END_MACRO]
|
|
405
|
+
|
|
406
|
+
[MACRO] TIME_DURATION_SUBSEC_MICROS %out_us, %duration_ns
|
|
407
|
+
__time_subsec_ns_%out_us = urem %duration_ns, Time_NS_PER_S
|
|
408
|
+
%out_us = udiv __time_subsec_ns_%out_us, Time_NS_PER_US
|
|
409
|
+
!__time_subsec_ns_%out_us
|
|
410
|
+
[END_MACRO]
|
|
411
|
+
|
|
412
|
+
[MACRO] TIME_DURATION_SUBSEC_MILLIS %out_ms, %duration_ns
|
|
413
|
+
__time_subsec_ns_%out_ms = urem %duration_ns, Time_NS_PER_S
|
|
414
|
+
%out_ms = udiv __time_subsec_ns_%out_ms, Time_NS_PER_MS
|
|
415
|
+
!__time_subsec_ns_%out_ms
|
|
416
|
+
[END_MACRO]
|
|
417
|
+
|
|
418
|
+
[MACRO] TIME_CHECKED_ADD_NS %out_ok, %out_ns, %base_ns, %duration_ns
|
|
419
|
+
__time_add_sum_%out_ok = add %base_ns, %duration_ns
|
|
420
|
+
__time_add_overflow_%out_ok = ult __time_add_sum_%out_ok, %base_ns
|
|
421
|
+
br __time_add_overflow_%out_ok -> L_TIME_CHECKED_ADD_OVERFLOW_%out_ok, L_TIME_CHECKED_ADD_OK_%out_ok
|
|
422
|
+
|
|
423
|
+
L_TIME_CHECKED_ADD_OK_%out_ok:
|
|
424
|
+
%out_ns = add __time_add_sum_%out_ok, 0
|
|
425
|
+
%out_ok = add 0, 1
|
|
426
|
+
!__time_add_overflow_%out_ok
|
|
427
|
+
!__time_add_sum_%out_ok
|
|
428
|
+
jmp L_TIME_CHECKED_ADD_END_%out_ok
|
|
429
|
+
|
|
430
|
+
L_TIME_CHECKED_ADD_OVERFLOW_%out_ok:
|
|
431
|
+
%out_ns = add 0, 0
|
|
432
|
+
%out_ok = add 0, 0
|
|
433
|
+
!__time_add_overflow_%out_ok
|
|
434
|
+
!__time_add_sum_%out_ok
|
|
435
|
+
|
|
436
|
+
L_TIME_CHECKED_ADD_END_%out_ok:
|
|
437
|
+
[END_MACRO]
|
|
438
|
+
|
|
439
|
+
[MACRO] TIME_CHECKED_SUB_NS %out_ok, %out_ns, %base_ns, %duration_ns
|
|
440
|
+
__time_sub_ok_%out_ok = ule %duration_ns, %base_ns
|
|
441
|
+
br __time_sub_ok_%out_ok -> L_TIME_CHECKED_SUB_OK_%out_ok, L_TIME_CHECKED_SUB_UNDERFLOW_%out_ok
|
|
442
|
+
|
|
443
|
+
L_TIME_CHECKED_SUB_OK_%out_ok:
|
|
444
|
+
%out_ns = sub %base_ns, %duration_ns
|
|
445
|
+
%out_ok = add 0, 1
|
|
446
|
+
!__time_sub_ok_%out_ok
|
|
447
|
+
jmp L_TIME_CHECKED_SUB_END_%out_ok
|
|
448
|
+
|
|
449
|
+
L_TIME_CHECKED_SUB_UNDERFLOW_%out_ok:
|
|
450
|
+
%out_ns = add 0, 0
|
|
451
|
+
%out_ok = add 0, 0
|
|
452
|
+
!__time_sub_ok_%out_ok
|
|
453
|
+
|
|
454
|
+
L_TIME_CHECKED_SUB_END_%out_ok:
|
|
455
|
+
[END_MACRO]
|
|
456
|
+
|
|
457
|
+
[MACRO] TIME_SATURATING_ADD_NS %out_ns, %base_ns, %duration_ns
|
|
458
|
+
EXPAND TIME_CHECKED_ADD_NS __time_sat_add_ok_%out_ns, __time_sat_add_value_%out_ns, %base_ns, %duration_ns
|
|
459
|
+
br __time_sat_add_ok_%out_ns -> L_TIME_SAT_ADD_OK_%out_ns, L_TIME_SAT_ADD_MAX_%out_ns
|
|
460
|
+
|
|
461
|
+
L_TIME_SAT_ADD_OK_%out_ns:
|
|
462
|
+
%out_ns = add __time_sat_add_value_%out_ns, 0
|
|
463
|
+
!__time_sat_add_value_%out_ns
|
|
464
|
+
!__time_sat_add_ok_%out_ns
|
|
465
|
+
jmp L_TIME_SAT_ADD_END_%out_ns
|
|
466
|
+
|
|
467
|
+
L_TIME_SAT_ADD_MAX_%out_ns:
|
|
468
|
+
%out_ns = sub 0, 1
|
|
469
|
+
!__time_sat_add_value_%out_ns
|
|
470
|
+
!__time_sat_add_ok_%out_ns
|
|
471
|
+
|
|
472
|
+
L_TIME_SAT_ADD_END_%out_ns:
|
|
473
|
+
[END_MACRO]
|
|
474
|
+
|
|
475
|
+
[MACRO] TIME_SATURATING_SUB_NS %out_ns, %base_ns, %duration_ns
|
|
476
|
+
EXPAND TIME_CHECKED_SUB_NS __time_sat_sub_ok_%out_ns, __time_sat_sub_value_%out_ns, %base_ns, %duration_ns
|
|
477
|
+
br __time_sat_sub_ok_%out_ns -> L_TIME_SAT_SUB_OK_%out_ns, L_TIME_SAT_SUB_ZERO_%out_ns
|
|
478
|
+
|
|
479
|
+
L_TIME_SAT_SUB_OK_%out_ns:
|
|
480
|
+
%out_ns = add __time_sat_sub_value_%out_ns, 0
|
|
481
|
+
!__time_sat_sub_value_%out_ns
|
|
482
|
+
!__time_sat_sub_ok_%out_ns
|
|
483
|
+
jmp L_TIME_SAT_SUB_END_%out_ns
|
|
484
|
+
|
|
485
|
+
L_TIME_SAT_SUB_ZERO_%out_ns:
|
|
486
|
+
%out_ns = add 0, 0
|
|
487
|
+
!__time_sat_sub_value_%out_ns
|
|
488
|
+
!__time_sat_sub_ok_%out_ns
|
|
489
|
+
|
|
490
|
+
L_TIME_SAT_SUB_END_%out_ns:
|
|
491
|
+
[END_MACRO]
|
|
492
|
+
|
|
493
|
+
[MACRO] TIME_CHECKED_MUL_NS %out_ok, %out_ns, %duration_ns, %factor
|
|
494
|
+
__time_mul_zero_factor_%out_ok = eq %factor, 0
|
|
495
|
+
br __time_mul_zero_factor_%out_ok -> L_TIME_CHECKED_MUL_ZERO_FACTOR_%out_ok, L_TIME_CHECKED_MUL_COMPUTE_%out_ok
|
|
496
|
+
|
|
497
|
+
L_TIME_CHECKED_MUL_COMPUTE_%out_ok:
|
|
498
|
+
__time_mul_product_%out_ok = mul %duration_ns, %factor
|
|
499
|
+
__time_mul_roundtrip_%out_ok = udiv __time_mul_product_%out_ok, %factor
|
|
500
|
+
__time_mul_ok_%out_ok = eq __time_mul_roundtrip_%out_ok, %duration_ns
|
|
501
|
+
br __time_mul_ok_%out_ok -> L_TIME_CHECKED_MUL_OK_%out_ok, L_TIME_CHECKED_MUL_OVERFLOW_%out_ok
|
|
502
|
+
|
|
503
|
+
L_TIME_CHECKED_MUL_OK_%out_ok:
|
|
504
|
+
%out_ns = add __time_mul_product_%out_ok, 0
|
|
505
|
+
%out_ok = add 0, 1
|
|
506
|
+
!__time_mul_ok_%out_ok
|
|
507
|
+
!__time_mul_roundtrip_%out_ok
|
|
508
|
+
!__time_mul_product_%out_ok
|
|
509
|
+
!__time_mul_zero_factor_%out_ok
|
|
510
|
+
jmp L_TIME_CHECKED_MUL_END_%out_ok
|
|
511
|
+
|
|
512
|
+
L_TIME_CHECKED_MUL_OVERFLOW_%out_ok:
|
|
513
|
+
%out_ns = add 0, 0
|
|
514
|
+
%out_ok = add 0, 0
|
|
515
|
+
!__time_mul_ok_%out_ok
|
|
516
|
+
!__time_mul_roundtrip_%out_ok
|
|
517
|
+
!__time_mul_product_%out_ok
|
|
518
|
+
!__time_mul_zero_factor_%out_ok
|
|
519
|
+
jmp L_TIME_CHECKED_MUL_END_%out_ok
|
|
520
|
+
|
|
521
|
+
L_TIME_CHECKED_MUL_ZERO_FACTOR_%out_ok:
|
|
522
|
+
%out_ns = add 0, 0
|
|
523
|
+
%out_ok = add 0, 1
|
|
524
|
+
!__time_mul_zero_factor_%out_ok
|
|
525
|
+
|
|
526
|
+
L_TIME_CHECKED_MUL_END_%out_ok:
|
|
527
|
+
[END_MACRO]
|
|
528
|
+
|
|
529
|
+
[MACRO] TIME_CHECKED_DIV_NS %out_ok, %out_ns, %duration_ns, %divisor
|
|
530
|
+
__time_div_zero_%out_ok = eq %divisor, 0
|
|
531
|
+
br __time_div_zero_%out_ok -> L_TIME_CHECKED_DIV_ZERO_%out_ok, L_TIME_CHECKED_DIV_OK_%out_ok
|
|
532
|
+
|
|
533
|
+
L_TIME_CHECKED_DIV_OK_%out_ok:
|
|
534
|
+
%out_ns = udiv %duration_ns, %divisor
|
|
535
|
+
%out_ok = add 0, 1
|
|
536
|
+
!__time_div_zero_%out_ok
|
|
537
|
+
jmp L_TIME_CHECKED_DIV_END_%out_ok
|
|
538
|
+
|
|
539
|
+
L_TIME_CHECKED_DIV_ZERO_%out_ok:
|
|
540
|
+
%out_ns = add 0, 0
|
|
541
|
+
%out_ok = add 0, 0
|
|
542
|
+
!__time_div_zero_%out_ok
|
|
543
|
+
|
|
544
|
+
L_TIME_CHECKED_DIV_END_%out_ok:
|
|
545
|
+
[END_MACRO]
|
|
546
|
+
|
|
547
|
+
[MACRO] TIME_SATURATING_MUL_NS %out_ns, %duration_ns, %factor
|
|
548
|
+
EXPAND TIME_CHECKED_MUL_NS __time_sat_mul_ok_%out_ns, __time_sat_mul_value_%out_ns, %duration_ns, %factor
|
|
549
|
+
br __time_sat_mul_ok_%out_ns -> L_TIME_SAT_MUL_OK_%out_ns, L_TIME_SAT_MUL_MAX_%out_ns
|
|
550
|
+
|
|
551
|
+
L_TIME_SAT_MUL_OK_%out_ns:
|
|
552
|
+
%out_ns = add __time_sat_mul_value_%out_ns, 0
|
|
553
|
+
!__time_sat_mul_value_%out_ns
|
|
554
|
+
!__time_sat_mul_ok_%out_ns
|
|
555
|
+
jmp L_TIME_SAT_MUL_END_%out_ns
|
|
556
|
+
|
|
557
|
+
L_TIME_SAT_MUL_MAX_%out_ns:
|
|
558
|
+
%out_ns = sub 0, 1
|
|
559
|
+
!__time_sat_mul_value_%out_ns
|
|
560
|
+
!__time_sat_mul_ok_%out_ns
|
|
561
|
+
|
|
562
|
+
L_TIME_SAT_MUL_END_%out_ns:
|
|
563
|
+
[END_MACRO]
|
|
564
|
+
|
|
565
|
+
[MACRO] TIME_SATURATING_DIV_NS %out_ns, %duration_ns, %divisor
|
|
566
|
+
EXPAND TIME_CHECKED_DIV_NS __time_sat_div_ok_%out_ns, __time_sat_div_value_%out_ns, %duration_ns, %divisor
|
|
567
|
+
br __time_sat_div_ok_%out_ns -> L_TIME_SAT_DIV_OK_%out_ns, L_TIME_SAT_DIV_MAX_%out_ns
|
|
568
|
+
|
|
569
|
+
L_TIME_SAT_DIV_OK_%out_ns:
|
|
570
|
+
%out_ns = add __time_sat_div_value_%out_ns, 0
|
|
571
|
+
!__time_sat_div_value_%out_ns
|
|
572
|
+
!__time_sat_div_ok_%out_ns
|
|
573
|
+
jmp L_TIME_SAT_DIV_END_%out_ns
|
|
574
|
+
|
|
575
|
+
L_TIME_SAT_DIV_MAX_%out_ns:
|
|
576
|
+
%out_ns = sub 0, 1
|
|
577
|
+
!__time_sat_div_value_%out_ns
|
|
578
|
+
!__time_sat_div_ok_%out_ns
|
|
579
|
+
|
|
580
|
+
L_TIME_SAT_DIV_END_%out_ns:
|
|
581
|
+
[END_MACRO]
|
|
582
|
+
|
|
583
|
+
[MACRO] TIME_DURATION_CHECKED_ADD_NS %out_ok, %out_ns, %base_ns, %duration_ns
|
|
584
|
+
EXPAND TIME_CHECKED_ADD_NS %out_ok, %out_ns, %base_ns, %duration_ns
|
|
585
|
+
[END_MACRO]
|
|
586
|
+
|
|
587
|
+
[MACRO] TIME_DURATION_CHECKED_ADD %out_ok, %out_ns, %base_ns, %duration_ns
|
|
588
|
+
EXPAND TIME_DURATION_CHECKED_ADD_NS %out_ok, %out_ns, %base_ns, %duration_ns
|
|
589
|
+
[END_MACRO]
|
|
590
|
+
|
|
591
|
+
[MACRO] TIME_DURATION_CHECKED_SUB_NS %out_ok, %out_ns, %base_ns, %duration_ns
|
|
592
|
+
EXPAND TIME_CHECKED_SUB_NS %out_ok, %out_ns, %base_ns, %duration_ns
|
|
593
|
+
[END_MACRO]
|
|
594
|
+
|
|
595
|
+
[MACRO] TIME_DURATION_CHECKED_SUB %out_ok, %out_ns, %base_ns, %duration_ns
|
|
596
|
+
EXPAND TIME_DURATION_CHECKED_SUB_NS %out_ok, %out_ns, %base_ns, %duration_ns
|
|
597
|
+
[END_MACRO]
|
|
598
|
+
|
|
599
|
+
[MACRO] TIME_DURATION_CHECKED_MUL_NS %out_ok, %out_ns, %duration_ns, %factor
|
|
600
|
+
EXPAND TIME_CHECKED_MUL_NS %out_ok, %out_ns, %duration_ns, %factor
|
|
601
|
+
[END_MACRO]
|
|
602
|
+
|
|
603
|
+
[MACRO] TIME_DURATION_CHECKED_MUL %out_ok, %out_ns, %duration_ns, %factor
|
|
604
|
+
EXPAND TIME_DURATION_CHECKED_MUL_NS %out_ok, %out_ns, %duration_ns, %factor
|
|
605
|
+
[END_MACRO]
|
|
606
|
+
|
|
607
|
+
[MACRO] TIME_DURATION_CHECKED_DIV_NS %out_ok, %out_ns, %duration_ns, %divisor
|
|
608
|
+
EXPAND TIME_CHECKED_DIV_NS %out_ok, %out_ns, %duration_ns, %divisor
|
|
609
|
+
[END_MACRO]
|
|
610
|
+
|
|
611
|
+
[MACRO] TIME_DURATION_CHECKED_DIV %out_ok, %out_ns, %duration_ns, %divisor
|
|
612
|
+
EXPAND TIME_DURATION_CHECKED_DIV_NS %out_ok, %out_ns, %duration_ns, %divisor
|
|
613
|
+
[END_MACRO]
|
|
614
|
+
|
|
615
|
+
[MACRO] TIME_DURATION_SATURATING_ADD_NS %out_ns, %base_ns, %duration_ns
|
|
616
|
+
EXPAND TIME_SATURATING_ADD_NS %out_ns, %base_ns, %duration_ns
|
|
617
|
+
[END_MACRO]
|
|
618
|
+
|
|
619
|
+
[MACRO] TIME_DURATION_SATURATING_ADD %out_ns, %base_ns, %duration_ns
|
|
620
|
+
EXPAND TIME_DURATION_SATURATING_ADD_NS %out_ns, %base_ns, %duration_ns
|
|
621
|
+
[END_MACRO]
|
|
622
|
+
|
|
623
|
+
[MACRO] TIME_DURATION_SATURATING_SUB_NS %out_ns, %base_ns, %duration_ns
|
|
624
|
+
EXPAND TIME_SATURATING_SUB_NS %out_ns, %base_ns, %duration_ns
|
|
625
|
+
[END_MACRO]
|
|
626
|
+
|
|
627
|
+
[MACRO] TIME_DURATION_SATURATING_SUB %out_ns, %base_ns, %duration_ns
|
|
628
|
+
EXPAND TIME_DURATION_SATURATING_SUB_NS %out_ns, %base_ns, %duration_ns
|
|
629
|
+
[END_MACRO]
|
|
630
|
+
|
|
631
|
+
[MACRO] TIME_DURATION_SATURATING_MUL_NS %out_ns, %duration_ns, %factor
|
|
632
|
+
EXPAND TIME_SATURATING_MUL_NS %out_ns, %duration_ns, %factor
|
|
633
|
+
[END_MACRO]
|
|
634
|
+
|
|
635
|
+
[MACRO] TIME_DURATION_SATURATING_MUL %out_ns, %duration_ns, %factor
|
|
636
|
+
EXPAND TIME_DURATION_SATURATING_MUL_NS %out_ns, %duration_ns, %factor
|
|
637
|
+
[END_MACRO]
|
|
638
|
+
|
|
639
|
+
[MACRO] TIME_DURATION_SATURATING_DIV_NS %out_ns, %duration_ns, %divisor
|
|
640
|
+
EXPAND TIME_SATURATING_DIV_NS %out_ns, %duration_ns, %divisor
|
|
641
|
+
[END_MACRO]
|
|
642
|
+
|
|
643
|
+
[MACRO] TIME_DURATION_ABS_DIFF_NS %out_ns, %left_ns, %right_ns
|
|
644
|
+
__time_abs_left_ge_%out_ns = uge %left_ns, %right_ns
|
|
645
|
+
br __time_abs_left_ge_%out_ns -> L_TIME_ABS_DIFF_LEFT_%out_ns, L_TIME_ABS_DIFF_RIGHT_%out_ns
|
|
646
|
+
|
|
647
|
+
L_TIME_ABS_DIFF_LEFT_%out_ns:
|
|
648
|
+
%out_ns = sub %left_ns, %right_ns
|
|
649
|
+
!__time_abs_left_ge_%out_ns
|
|
650
|
+
jmp L_TIME_ABS_DIFF_END_%out_ns
|
|
651
|
+
|
|
652
|
+
L_TIME_ABS_DIFF_RIGHT_%out_ns:
|
|
653
|
+
%out_ns = sub %right_ns, %left_ns
|
|
654
|
+
!__time_abs_left_ge_%out_ns
|
|
655
|
+
|
|
656
|
+
L_TIME_ABS_DIFF_END_%out_ns:
|
|
657
|
+
[END_MACRO]
|
|
658
|
+
|
|
659
|
+
[MACRO] TIME_DURATION_ABS_DIFF %out_ns, %left_ns, %right_ns
|
|
660
|
+
EXPAND TIME_DURATION_ABS_DIFF_NS %out_ns, %left_ns, %right_ns
|
|
661
|
+
[END_MACRO]
|
|
662
|
+
|
|
663
|
+
[MACRO] TIME_CHECKED_DURATION_SINCE %out_ok, %out_ns, %later_ns, %earlier_ns
|
|
664
|
+
EXPAND TIME_CHECKED_SUB_NS %out_ok, %out_ns, %later_ns, %earlier_ns
|
|
665
|
+
[END_MACRO]
|
|
666
|
+
|
|
667
|
+
[MACRO] TIME_DURATION_SINCE %out_ns, %later_ns, %earlier_ns
|
|
668
|
+
EXPAND TIME_CHECKED_DURATION_SINCE __time_since_ok_%out_ns, %out_ns, %later_ns, %earlier_ns
|
|
669
|
+
!__time_since_ok_%out_ns
|
|
670
|
+
[END_MACRO]
|
|
671
|
+
|
|
672
|
+
[MACRO] TIME_INSTANT_CHECKED_ADD %out_ok, %out_instant_ns, %instant_ns, %duration_ns
|
|
673
|
+
EXPAND TIME_CHECKED_ADD_NS %out_ok, %out_instant_ns, %instant_ns, %duration_ns
|
|
674
|
+
[END_MACRO]
|
|
675
|
+
|
|
676
|
+
[MACRO] TIME_INSTANT_CHECKED_SUB %out_ok, %out_instant_ns, %instant_ns, %duration_ns
|
|
677
|
+
EXPAND TIME_CHECKED_SUB_NS %out_ok, %out_instant_ns, %instant_ns, %duration_ns
|
|
678
|
+
[END_MACRO]
|
|
679
|
+
|
|
680
|
+
[MACRO] TIME_INSTANT_CHECKED_DURATION_SINCE %out_ok, %out_ns, %later_ns, %earlier_ns
|
|
681
|
+
EXPAND TIME_CHECKED_DURATION_SINCE %out_ok, %out_ns, %later_ns, %earlier_ns
|
|
682
|
+
[END_MACRO]
|
|
683
|
+
|
|
684
|
+
[MACRO] TIME_INSTANT_DURATION_SINCE %out_ns, %later_ns, %earlier_ns
|
|
685
|
+
EXPAND TIME_DURATION_SINCE %out_ns, %later_ns, %earlier_ns
|
|
686
|
+
[END_MACRO]
|
|
687
|
+
|
|
688
|
+
[MACRO] TIME_INSTANT_ELAPSED %out_ns, %instant_ns
|
|
689
|
+
EXPAND TIME_NOW_NS __time_elapsed_now_%out_ns
|
|
690
|
+
EXPAND TIME_DURATION_SINCE %out_ns, __time_elapsed_now_%out_ns, %instant_ns
|
|
691
|
+
!__time_elapsed_now_%out_ns
|
|
692
|
+
[END_MACRO]
|
|
693
|
+
|
|
694
|
+
// Instant / SystemTime naming aliases over existing ns clocks.
|
|
695
|
+
// Instant uses monotonic TIME_NOW_NS; SystemTime uses unix epoch ns.
|
|
696
|
+
|
|
697
|
+
[MACRO] TIME_INSTANT_NOW %out_instant_ns
|
|
698
|
+
EXPAND TIME_NOW_NS %out_instant_ns
|
|
699
|
+
[END_MACRO]
|
|
700
|
+
|
|
701
|
+
[MACRO] TIME_SYSTEM_TIME_NOW %out_system_ns
|
|
702
|
+
EXPAND TIME_NOW_UNIX_NS %out_system_ns
|
|
703
|
+
[END_MACRO]
|
|
704
|
+
|
|
705
|
+
[MACRO] TIME_SYSTEM_TIME_FROM_UNIX_NS %out_system_ns, %unix_ns
|
|
706
|
+
%out_system_ns = add %unix_ns, 0
|
|
707
|
+
[END_MACRO]
|
|
708
|
+
|
|
709
|
+
[MACRO] TIME_SYSTEM_TIME_AS_UNIX_NS %out_unix_ns, %system_ns
|
|
710
|
+
%out_unix_ns = add %system_ns, 0
|
|
711
|
+
[END_MACRO]
|
|
712
|
+
|
|
713
|
+
[MACRO] TIME_SYSTEM_TIME_CHECKED_DURATION_SINCE %out_ok, %out_ns, %later_ns, %earlier_ns
|
|
714
|
+
EXPAND TIME_CHECKED_DURATION_SINCE %out_ok, %out_ns, %later_ns, %earlier_ns
|
|
715
|
+
[END_MACRO]
|
|
716
|
+
|
|
717
|
+
[MACRO] TIME_SYSTEM_TIME_DURATION_SINCE %out_ns, %later_ns, %earlier_ns
|
|
718
|
+
EXPAND TIME_DURATION_SINCE %out_ns, %later_ns, %earlier_ns
|
|
719
|
+
[END_MACRO]
|
|
720
|
+
|
|
721
|
+
[MACRO] TIME_SYSTEM_TIME_ELAPSED %out_ns, %system_ns
|
|
722
|
+
EXPAND TIME_NOW_UNIX_NS __time_system_elapsed_now_%out_ns
|
|
723
|
+
EXPAND TIME_DURATION_SINCE %out_ns, __time_system_elapsed_now_%out_ns, %system_ns
|
|
724
|
+
!__time_system_elapsed_now_%out_ns
|
|
725
|
+
[END_MACRO]
|
|
726
|
+
|
|
727
|
+
[MACRO] TIME_SYSTEM_TIME_CHECKED_ADD %out_ok, %out_system_ns, %system_ns, %duration_ns
|
|
728
|
+
EXPAND TIME_CHECKED_ADD_NS %out_ok, %out_system_ns, %system_ns, %duration_ns
|
|
729
|
+
[END_MACRO]
|
|
730
|
+
|
|
731
|
+
[MACRO] TIME_SYSTEM_TIME_CHECKED_SUB %out_ok, %out_system_ns, %system_ns, %duration_ns
|
|
732
|
+
EXPAND TIME_CHECKED_SUB_NS %out_ok, %out_system_ns, %system_ns, %duration_ns
|
|
733
|
+
[END_MACRO]
|
|
734
|
+
|
|
735
|
+
// Extra Instant/SystemTime/Duration naming aliases.
|
|
736
|
+
|
|
737
|
+
[MACRO] TIME_DURATION_DEFAULT %out_ns
|
|
738
|
+
EXPAND TIME_DURATION_ZERO %out_ns
|
|
739
|
+
[END_MACRO]
|
|
740
|
+
|
|
741
|
+
[MACRO] TIME_SYSTEM_TIME_UNIX_EPOCH %out_system_ns
|
|
742
|
+
%out_system_ns = add 0, 0
|
|
743
|
+
[END_MACRO]
|
|
744
|
+
|
|
745
|
+
[MACRO] TIME_INSTANT_SATURATING_DURATION_SINCE %out_ns, %later_ns, %earlier_ns
|
|
746
|
+
EXPAND TIME_INSTANT_DURATION_SINCE %out_ns, %later_ns, %earlier_ns
|
|
747
|
+
[END_MACRO]
|
|
748
|
+
|
|
749
|
+
// Additional Duration/Instant/SystemTime naming aliases.
|
|
750
|
+
|
|
751
|
+
[MACRO] TIME_SLEEP_DURATION_NS %duration_ns
|
|
752
|
+
EXPAND TIME_SLEEP_NS %duration_ns
|
|
753
|
+
[END_MACRO]
|
|
754
|
+
|
|
755
|
+
[MACRO] TIME_INSTANT_DEFAULT %out_instant_ns
|
|
756
|
+
%out_instant_ns = add 0, 0
|
|
757
|
+
[END_MACRO]
|
|
758
|
+
|
|
759
|
+
[MACRO] TIME_SYSTEM_TIME_DEFAULT %out_system_ns
|
|
760
|
+
EXPAND TIME_SYSTEM_TIME_UNIX_EPOCH %out_system_ns
|
|
761
|
+
[END_MACRO]
|
|
762
|
+
|
|
763
|
+
// Stable std-style aliases for Duration, Instant, and SystemTime operations.
|
|
764
|
+
[MACRO] DURATION_ZERO %out_ns
|
|
765
|
+
EXPAND TIME_DURATION_ZERO %out_ns
|
|
766
|
+
[END_MACRO]
|
|
767
|
+
|
|
768
|
+
[MACRO] DURATION_MAX %out_ns
|
|
769
|
+
EXPAND TIME_DURATION_MAX %out_ns
|
|
770
|
+
[END_MACRO]
|
|
771
|
+
|
|
772
|
+
[MACRO] DURATION_FROM_NANOS %out_ns, %nanos
|
|
773
|
+
EXPAND TIME_DURATION_FROM_NANOS %out_ns, %nanos
|
|
774
|
+
[END_MACRO]
|
|
775
|
+
|
|
776
|
+
[MACRO] DURATION_FROM_MICROS %out_ns, %micros
|
|
777
|
+
EXPAND TIME_DURATION_FROM_MICROS %out_ns, %micros
|
|
778
|
+
[END_MACRO]
|
|
779
|
+
|
|
780
|
+
[MACRO] DURATION_FROM_MILLIS %out_ns, %millis
|
|
781
|
+
EXPAND TIME_DURATION_FROM_MILLIS %out_ns, %millis
|
|
782
|
+
[END_MACRO]
|
|
783
|
+
|
|
784
|
+
[MACRO] DURATION_FROM_SECS %out_ns, %secs
|
|
785
|
+
EXPAND TIME_DURATION_FROM_SECS %out_ns, %secs
|
|
786
|
+
[END_MACRO]
|
|
787
|
+
|
|
788
|
+
[MACRO] DURATION_AS_NANOS %out_ns, %duration_ns
|
|
789
|
+
EXPAND TIME_DURATION_AS_NANOS %out_ns, %duration_ns
|
|
790
|
+
[END_MACRO]
|
|
791
|
+
|
|
792
|
+
[MACRO] DURATION_AS_MICROS %out_us, %duration_ns
|
|
793
|
+
EXPAND TIME_DURATION_AS_MICROS %out_us, %duration_ns
|
|
794
|
+
[END_MACRO]
|
|
795
|
+
|
|
796
|
+
[MACRO] DURATION_AS_MILLIS %out_ms, %duration_ns
|
|
797
|
+
EXPAND TIME_DURATION_AS_MILLIS %out_ms, %duration_ns
|
|
798
|
+
[END_MACRO]
|
|
799
|
+
|
|
800
|
+
[MACRO] DURATION_AS_SECS %out_secs, %duration_ns
|
|
801
|
+
EXPAND TIME_DURATION_AS_SECS %out_secs, %duration_ns
|
|
802
|
+
[END_MACRO]
|
|
803
|
+
|
|
804
|
+
[MACRO] DURATION_CHECKED_ADD %out_ok, %out_ns, %base_ns, %duration_ns
|
|
805
|
+
EXPAND TIME_DURATION_CHECKED_ADD %out_ok, %out_ns, %base_ns, %duration_ns
|
|
806
|
+
[END_MACRO]
|
|
807
|
+
|
|
808
|
+
[MACRO] DURATION_CHECKED_SUB %out_ok, %out_ns, %base_ns, %duration_ns
|
|
809
|
+
EXPAND TIME_DURATION_CHECKED_SUB %out_ok, %out_ns, %base_ns, %duration_ns
|
|
810
|
+
[END_MACRO]
|
|
811
|
+
|
|
812
|
+
[MACRO] DURATION_SATURATING_ADD %out_ns, %base_ns, %duration_ns
|
|
813
|
+
EXPAND TIME_DURATION_SATURATING_ADD %out_ns, %base_ns, %duration_ns
|
|
814
|
+
[END_MACRO]
|
|
815
|
+
|
|
816
|
+
[MACRO] DURATION_SATURATING_SUB %out_ns, %base_ns, %duration_ns
|
|
817
|
+
EXPAND TIME_DURATION_SATURATING_SUB %out_ns, %base_ns, %duration_ns
|
|
818
|
+
[END_MACRO]
|
|
819
|
+
|
|
820
|
+
[MACRO] DURATION_ABS_DIFF %out_ns, %left_ns, %right_ns
|
|
821
|
+
EXPAND TIME_DURATION_ABS_DIFF %out_ns, %left_ns, %right_ns
|
|
822
|
+
[END_MACRO]
|
|
823
|
+
|
|
824
|
+
[MACRO] INSTANT_NOW %out_instant_ns
|
|
825
|
+
EXPAND TIME_INSTANT_NOW %out_instant_ns
|
|
826
|
+
[END_MACRO]
|
|
827
|
+
|
|
828
|
+
[MACRO] INSTANT_DURATION_SINCE %out_ns, %later_ns, %earlier_ns
|
|
829
|
+
EXPAND TIME_INSTANT_DURATION_SINCE %out_ns, %later_ns, %earlier_ns
|
|
830
|
+
[END_MACRO]
|
|
831
|
+
|
|
832
|
+
[MACRO] INSTANT_CHECKED_DURATION_SINCE %out_ok, %out_ns, %later_ns, %earlier_ns
|
|
833
|
+
EXPAND TIME_INSTANT_CHECKED_DURATION_SINCE %out_ok, %out_ns, %later_ns, %earlier_ns
|
|
834
|
+
[END_MACRO]
|
|
835
|
+
|
|
836
|
+
[MACRO] INSTANT_ELAPSED %out_ns, %instant_ns
|
|
837
|
+
EXPAND TIME_INSTANT_ELAPSED %out_ns, %instant_ns
|
|
838
|
+
[END_MACRO]
|
|
839
|
+
|
|
840
|
+
[MACRO] SYSTEM_TIME_NOW %out_system_ns
|
|
841
|
+
EXPAND TIME_SYSTEM_TIME_NOW %out_system_ns
|
|
842
|
+
[END_MACRO]
|
|
843
|
+
|
|
844
|
+
[MACRO] SYSTEM_TIME_FROM_UNIX_NS %out_system_ns, %unix_ns
|
|
845
|
+
EXPAND TIME_SYSTEM_TIME_FROM_UNIX_NS %out_system_ns, %unix_ns
|
|
846
|
+
[END_MACRO]
|
|
847
|
+
|
|
848
|
+
[MACRO] SYSTEM_TIME_AS_UNIX_NS %out_unix_ns, %system_ns
|
|
849
|
+
EXPAND TIME_SYSTEM_TIME_AS_UNIX_NS %out_unix_ns, %system_ns
|
|
850
|
+
[END_MACRO]
|