24 :
"0" (n1),
"1" (n0),
"rm" (d));
34 if (x <= 0x0000FFFF) {
39 if (x <= 0x00FFFFFF) {
44 if (x <= 0x0FFFFFFF) {
49 if (x <= 0x3FFFFFFF) {
95 return divl(b * (n1 % d0) + n0, d0) + b * (n1 / d0);
106 return n - (q - 1) * d < d ? q - 1 : q;
115 return n - d *
udiv64(n, d);
132 return n - d *
sdiv64(n, d);
137long long __divdi3(
long long n,
long long d);
138long long __moddi3(
long long n,
long long d);
139unsigned long long __udivdi3(
unsigned long long n,
unsigned long long d);
140unsigned long long __umoddi3(
unsigned long long n,
unsigned long long d);
141unsigned long long __udivmoddi4(
unsigned long long n,
unsigned long long d,
unsigned long long *rem);
174unsigned long long __udivdi3(
unsigned long long n,
unsigned long long d)
186unsigned long long __umoddi3(
unsigned long long n,
unsigned long long d)
200unsigned long long __udivmoddi4(
unsigned long long n,
unsigned long long d,
unsigned long long *rem)
static uint64_t udiv64(uint64_t n, uint64_t d)
Divides the unsigned 64-bit n by the unsigned 64-bit d, and returns the quotient.
static uint64_t umod64(uint64_t n, uint64_t d)
Divides the unsigned 64-bit n by the unsigned 64-bit d, and returns the remainder.
static int64_t smod64(int64_t n, int64_t d)
Divides the signed 64-bit n by the signed 64-bit d, and returns the remainder.
long long __moddi3(long long n, long long d)
Computes the remainder of two signed 64-bit integers.
unsigned long long __udivdi3(unsigned long long n, unsigned long long d)
Divides two unsigned 64-bit integers.
unsigned long long __umoddi3(unsigned long long n, unsigned long long d)
Computes the remainder of two unsigned 64-bit integers.
static int64_t sdiv64(int64_t n, int64_t d)
Divides the signed 64-bit n by the signed 64-bit d, and returns the quotient.
static uint32_t divl(uint64_t n, uint32_t d)
Divides the 64-bit n by the 32-bit d with the x86 DIVL instruction, and returns the 32-bit quotient.
static int nlz(uint32_t x)
Returns the number of leading zero bits in x, which must not be 0.
unsigned long long __udivmoddi4(unsigned long long n, unsigned long long d, unsigned long long *rem)
Divides two unsigned 64-bit integers, giving both the quotient and the remainder.
long long __divdi3(long long n, long long d)
Divides two signed 64-bit integers.
signed long long int int64_t
unsigned long long int uint64_t