Re: [PATCH] 2.6 workaround for Athlon/Opteron prefetch errata

Jamie Lokier
2003-09-11T17:33:59Z

Andi Kleen wrote:
> > if ((addr & 3) == 0)
> > return 0;
>
> Maybe. But gcc generates quite good code (binary decision tree) code for
> the switch() statement already so I don't think it is worth it to go
> through complications just to avoid that.
>
> The decoder looks big in C, but when you take a look at its hot path in
> assembly it is quite fast.

I wonder. No part of the signal path looks especially slow, and yet
as a whole it isn't that fast. The odd percentage slowdown here and
there is quite bothersome.

GCC generates a decision tree. You realise that about half of the
branches in that tree will be mispredicted?

-- Jamie