]>
Commit | Line | Data |
---|---|---|
5c8fa7ad JR |
1 | add __divmoddi4 builtin |
2 | ||
3 | GCC 11 will generate it in code | |
4 | ||
5 | void foo(unsigned char *u8Second, unsigned int *u32Nanosecond, long long timeSpec) | |
6 | { | |
7 | long long i64Div; | |
8 | int i32Div; | |
9 | int i32Rem; | |
10 | i64Div = timeSpec; | |
11 | i32Rem = (int)(i64Div % 1000000000); | |
12 | i64Div /= 1000000000; | |
13 | *u32Nanosecond = i32Rem; | |
14 | i32Rem = (int)(i64Div % 60); | |
15 | *u8Second = i32Rem; | |
16 | } | |
17 | ||
18 | ||
19 | Upstream-Status: Pending | |
20 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | |
21 | ||
22 | --- a/src/VBox/Runtime/common/math/gcc/divdi3.c | |
23 | +++ b/src/VBox/Runtime/common/math/gcc/divdi3.c | |
24 | @@ -68,3 +68,12 @@ __divdi3(a, b) | |
25 | uq = - uq; | |
26 | return uq; | |
27 | } | |
28 | + | |
29 | +quad_t | |
30 | +__divmoddi4(quad_t a, quad_t b, quad_t* rem) | |
31 | +{ | |
32 | + quad_t d = __divdi3(a,b); | |
33 | + *rem = a - (d*b); | |
34 | + return d; | |
35 | +} | |
36 | + |