mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-02-16 02:26:54 +00:00
[MINOR] tools: add a fast div64_32 function
We'll need to divide 64 bits by 32 bits with new frequency counters. Gcc does not know when it can safely do that, but the way we build our operations let us be sure. So let's provide an optimised version for that purpose.
This commit is contained in:
parent
7a20aa6e6b
commit
f0d9eecc52
@ -364,6 +364,23 @@ static inline unsigned int mul32hi(unsigned int a, unsigned int b)
|
||||
return ((unsigned long long)a * b) >> 32;
|
||||
}
|
||||
|
||||
/* gcc does not know when it can safely divide 64 bits by 32 bits. Use this
|
||||
* function when you know for sure that the result fits in 32 bits, because
|
||||
* it is optimal on x86 and on 64bit processors.
|
||||
*/
|
||||
static inline unsigned int div64_32(unsigned long long o1, unsigned int o2)
|
||||
{
|
||||
unsigned int result;
|
||||
#ifdef __i386__
|
||||
asm("divl %2"
|
||||
: "=a" (result)
|
||||
: "A"(o1), "rm"(o2));
|
||||
#else
|
||||
result = o1 / o2;
|
||||
#endif
|
||||
return result;
|
||||
}
|
||||
|
||||
/* copies at most <n> characters from <src> and always terminates with '\0' */
|
||||
char *my_strndup(const char *src, int n);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user