du_int __umoddi3(du_int a, du_int b) { du_int r; __udivmoddi4(a, b, &r); return r; }
// --------------------------------------------------------------------------- uint64_t __umoddi3(uint64_t num, uint64_t den) { uint64_t v; __udivmoddi4(num, den, &v); return v; }
UDWtype __umoddi3 (UDWtype u, UDWtype v) { UDWtype w; __udivmoddi4 (u, v, &w); return w; }
UDItype __umoddi36432 (UDItype u, USItype v) { UDItype w; __udivmoddi4 (u, v, &w); return w; }
COMPILER_RT_ABI di_int __divdi3(di_int a, di_int b) { const int bits_in_dword_m1 = (int)(sizeof(di_int) * CHAR_BIT) - 1; di_int s_a = a >> bits_in_dword_m1; /* s_a = a < 0 ? -1 : 0 */ di_int s_b = b >> bits_in_dword_m1; /* s_b = b < 0 ? -1 : 0 */ a = (a ^ s_a) - s_a; /* negate if s_a == -1 */ b = (b ^ s_b) - s_b; /* negate if s_b == -1 */ s_a ^= s_b; /*sign of quotient */ return (__udivmoddi4(a, b, (du_int*)0) ^ s_a) - s_a; /* negate if s_a == -1 */ }
INT64 __divdi3(INT64 a, INT64 b) { const int bits_in_dword_m1 = (int)(sizeof(INT64) * CHAR_BIT) - 1; INT64 s_a = a >> bits_in_dword_m1; // s_a = a < 0 ? -1 : 0 INT64 s_b = b >> bits_in_dword_m1; // s_b = b < 0 ? -1 : 0 a = (a ^ s_a) - s_a; // negate if s_a == -1 b = (b ^ s_b) - s_b; // negate if s_b == -1 s_a ^= s_b; // sign of quotient return (__udivmoddi4(a, b, (UINT64*)0) ^ s_a) - s_a; // negate if s_a == -1 }
COMPILER_RT_ABI di_int __remdi3(di_int a, di_int b) { const int bits_in_dword_m1 = (int)(sizeof(di_int) * CHAR_BIT) - 1; di_int s_a = a >> bits_in_dword_m1; /* s_a = a < 0 ? -1 : 0 */ di_int s_b = b >> bits_in_dword_m1; /* s_b = b < 0 ? -1 : 0 */ a = (a ^ s_a) - s_a; /* negate if s_a == -1 */ b = (b ^ s_b) - s_b; /* negate if s_b == -1 */ du_int rem; __udivmoddi4(a, b, &rem); return (rem ^ s_a) - s_a; /* negate if s_a == -1 */ }
COMPILER_RT_ABI di_int __moddi3(di_int a, di_int b) { const int bits_in_dword_m1 = (int)(sizeof(di_int) * CHAR_BIT) - 1; di_int s = b >> bits_in_dword_m1; /* s = b < 0 ? -1 : 0 */ b = (b ^ s) - s; /* negate if s == -1 */ s = a >> bits_in_dword_m1; /* s = a < 0 ? -1 : 0 */ a = (a ^ s) - s; /* negate if s == -1 */ di_int r; __udivmoddi4(a, b, (du_int*)&r); return (r ^ s) - s; /* negate if s == -1 */ }
DItype __moddi36432 (DItype u, SItype v) { _Bool c = 0; DItype w, _v=v; if (u < 0) { c = !c; u = -u; } if (v < 0) _v = -_v; __udivmoddi4 (u, _v, (UDItype *) &w); if (c) w = -w; return w; }
DWtype __moddi3 (DWtype u, DWtype v) { _Bool c = 0; DWtype w; if (u < 0) { c = !c; u = -u; } if (v < 0) v = -v; __udivmoddi4 (u, v, (UDWtype *) &w); if (c) w = -w; return w; }
int64_t __divdi3(int64_t num, int64_t den) { int minus = 0; int64_t v; if (num < 0) { num = -num; minus = 1; } if (den < 0) { den = -den; minus ^= 1; } v = __udivmoddi4(num, den, NULL); if (minus) v = -v; return v; }
int64_t __moddi3(int64_t num, int64_t den) { int minus = 0; int64_t v; if (num < 0) { num = -num; minus = 1; } if (den < 0) { den = -den; minus ^= 1; } (void)__udivmoddi4(num, den, (uint64_t *) & v); if (minus) v = -v; return v; }
DItype __divdi36432 (DItype u, SItype v) { _Bool c = 0; DItype w, _v=v; if (u < 0) { c = !c; u = -u; } if (v < 0) { c = !c; _v = -_v; } w = __udivmoddi4 (u, _v, NULL); if (c) w = -w; return w; }
DWtype __divdi3 (DWtype u, DWtype v) { _Bool c = 0; DWtype w; if (u < 0) { c = !c; u = -u; } if (v < 0) { c = !c; v = -v; } w = __udivmoddi4 (u, v, NULL); if (c) w = -w; return w; }
/* * 64-bit signed integer modulo. */ signed long long __moddi3(signed long long num, signed long long den) { signed int minus = 0; signed long long v; if (num < 0) { num = -num; minus = 1; } if (den < 0) { den = -den; minus ^= 1; } (void)__udivmoddi4(num, den, (unsigned long long *) & v); if (minus) v = -v; return v; }
/* * 64-bit signed integer divide. */ signed long long __divdi3(signed long long num, signed long long den) { signed int minus = 0; signed long long v; if (num < 0) { num = -num; minus = 1; } if (den < 0) { den = -den; minus ^= 1; } v = __udivmoddi4(num, den, 0); if (minus) v = -v; return v; }
__libgcc int64_t __divmoddi4(int64_t num, int64_t den, int64 *rem_p) { int minus = 0; int64_t v; if ( num < 0 ) { num = -num; minus = 1; } if ( den < 0 ) { den = -den; minus ^= 1; } v = __udivmoddi4(num, den, (uint64_t *)rem_p); if ( minus ) { v = -v; if ( rem_p ) *rem_p = -(*rem_p); } return v; }
extern "C" int64_t __wrap___divmoddi4(int64_t u, int64_t v, int64_t* rp) { int32_t c1 = 0, c2 = 0; int64_t uu = u, vv = v; int64_t w; int64_t r; if (uu < 0) { c1 = ~c1, c2 = ~c2, uu = -uu; } if (vv < 0) { c1 = ~c1, vv = -vv; } w = __udivmoddi4(uu, vv, (uint64_t*)&r); if (c1) w = -w; if (c2) r = -r; *rp = r; return w; }
UDWtype __udivdi3 (UDWtype u, UDWtype v) { return __udivmoddi4 (u, v, NULL); }
uint64 __udivdi3(uint64 num, uint64 den) { return __udivmoddi4(num, den, 0); }
uint64_t __udivdi3(uint64_t num, uint64_t den) { return __udivmoddi4(num, den, NULL); }
UDItype __udivdi36432 (UDItype u, USItype v) { return __udivmoddi4 (u, v, NULL); }
UINT64 __udivdi3(UINT64 a, UINT64 b) { return __udivmoddi4(a, b, 0); }
COMPILER_RT_ABI du_int __udivdi3(du_int a, du_int b) { return __udivmoddi4(a, b, 0); }
uint64_t __udivdi3(uint64_t num, uint64_t den) { return __udivmoddi4(num, den, (uint64_t *)0); }