CVS Xserver breaks on non-SSE capable i386 machines

Nicholas Miell nmiell at gmail.com
Sun Jul 24 10:50:59 PDT 2005


On Sun, 24 Jul 2005 13:25:34 +0200, Lars Knoll wrote:

> On Sunday 24 July 2005 01:47, Krzysztof Halasa wrote:
>> Hi,
>>
>> It looks like the following change broke Xserver on non-SSE i386
>> machines (Pentium MMX and earlier, and VIA C3 which lacks cmov
>> instruction):
> 
> Hmmm... the SSE/MMX code paths should not  get used on such machines.
> And -mmmx/-msse should not enable CMOV in the compilation. I'll have a
> look at it on monday.
> 
> Cheers,
> Lars
> 
> 
The whole point of the USE_MMX/USE_SSE separation was to enable MMX
optimizations on all processors that support MMX, but on processors known
to always support both SSE and MMX (i.e. all AMD64 processors) also enable
the use of a few beneficial SSE MMX instructions.

(The assumption being that branching at runtime to determine whether or
not to use the SSE PSHUFW instruction would negate any performance
benefits of using it in the first place. fb really needs a better method
of selecting function implementations at runtime.)

Lars seems to have missed this, unconditionally enabled the use of SSE
instructions on MMX processors, and broken everything prior to the Pentium
III.

It also looks like fbHaveMMX() was broken to only return true on AMD
processors (i.e. processors with both MMX and AMD's MMX Extensions), so
the previous breakage isn't so much of a problem. This actually makes some
sense, the SSE PSHUFW instruction also happens to be an AMD MMX Extension
instruction (but testing for AMD MMX Extensions instead of SSE leaves out
all Intel processors).




More information about the xorg mailing list