Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Chezzz 1.0.1 - problem solved - for David Rasmussen

Author: Filip Tvrzsky

Date: 13:08:35 02/05/03

Go up one level in this thread


On February 05, 2003 at 14:25:48, David Rasmussen wrote:

>The problem with the normal version of Chezzz is that it uses this:
>
>INLINE int PopCount(BitBoard a)
>{
>    static const __int64 C55 = 0x5555555555555555;
>    static const __int64 C33 = 0x3333333333333333;
>    static const __int64 C0F = 0x0F0F0F0F0F0F0F0F;
>
>    __asm {
>        movd            mm0, word ptr a;
>        punpckldq       mm0, word ptr a + 4;
>        movq            mm1, mm0;
>        psrld           mm0, 1;
>        pand            mm0, [C55];
>        psubd           mm1, mm0;
>        movq            mm0, mm1;
>        psrld           mm1, 2;
>        pand            mm0, [C33];
>        pand            mm1, [C33];
>        paddd           mm0, mm1;
>        movq            mm1, mm0;
>        psrld           mm0, 4;
>        paddd           mm0, mm1;
>        pand            mm0, [C0F];
>        pxor            mm1, mm1;
>        psadbw mm0, mm1;
>        movd            eax, mm0;
>        emms;
>    }
>}
>
>I know it doesn't work on very old processors, but I don't understand why it
>doesn't work on Celeron, even the old Celeron. It has MMX, I think?
>Any ideas?
>
>/David

The PSADBW instruction isn't component of the original MMX instruction set! It
is available only in the SSE set (Intel Pentium III and better) or 3DNow! and
MMX extensions set (AMD Athlon & Duron).
Filip



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.