[CFT]: ClangBSD is selfhosting, we need testers now
areilly at bigpond.net.au
Tue Apr 27 04:50:56 UTC 2010
On Sun, Apr 25, 2010 at 12:06:49PM +0200, Alexander Best wrote:
> i was able to pinpoint the
> exact function which is causing the problem:
> it's snd_xbytes().
This is an odd-looking function. Its purpose is to compute the
size of a target buffer for a block of audio samples that might
be sample-rate-converted or format changed. It has a loop to
compute the gcd of the second two arguments (from, to), so that
it can divide by that common factor so that it can then do v *
(to/x) / (from/x). It's not immediately obvious to me why it
bothers to find the gcd, since the division by the original
from should work anyway, as it's using a 64-bit numerator...
The only difference that I can see when this is compiled with cc
vs clang on my amd64 system is that the latter uses a divq in
the loop and the former uses a divl. I haven't figured out why,
yet. Hmm. If the same division logic is being used in the i386
version of clang, then it's possible that this is resulting in
a call to an extended precision divide subroutine, which could
slow things down a bit.
More information about the freebsd-current