Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: How to reverse a Reverse BitBoard!

Author: Sander de Zoete

Date: 14:48:29 01/21/03

Go up one level in this thread


Dan,

Thanks for the code, I found the following algorithm on the internet to
reverse the board. My P3-laptop does not support SSE, so I have to walk right
over to my P4: Meanwhile, here is what I'm working on.

BITBOARD RevBoard(BITBOARD bb) // MMX
{
    static const __int64 C55 = 0x5555555555555555;
    static const __int64 C33 = 0x3333333333333333;
    static const __int64 C0F = 0x0F0F0F0F0F0F0F0F;
    asm {
        //  Load Bitboard into MMX
        movq        mm0,    qword ptr bb
        //  1.  x = [(x shl 1) and C55] or [(x and C55) shr 1]
        movq        mm1,    mm0
		psllq       mm0,    1
        pand        mm0,    C55
        pand        mm1,    C55
        psrlq       mm1,    1
        por         mm0,    mm1
        //  2.  x = [(x shl 2) and C33] or [(x and C33) shr 2]
        movq        mm1,    mm0
		psllq       mm0,    2
        pand        mm0,    C33
        pand        mm1,    C33
        psrlq       mm1,    2
        por         mm0,    mm1
        //  3.  x = [(x shl 4) and C0F] or [(x and C0F) shr 4]
        movq        mm1,    mm0
		psllq       mm0,    4
        pand        mm0,    C0F
        pand        mm1,    C0F
        psrlq       mm1,    4
        por         mm0,    mm1
        //  4.  x = (x shlw 8) or (x shrw 8) 0123456789ABCDEF
        movq        mm1,    mm0
		psllq       mm0,    8
        pand        mm0,    C0F
        pand        mm1,    C0F
        psrlq       mm1,    8
        por         mm0,    mm1
        //  5.  x = x pshufw 00011011b (not supported on P3)
        pshufw      mm0,    00011011b

        //  Unload bitboard from MMX
        movq        mm1,    mm0
        psrlq       mm1,    32
        movd        eax,    mm0
        movd        edx,    mm1
        }
}

pshufw, is not supported on this PC.

Sander.



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.