Author: Matthias Gemuh
Date: 10:16:00 01/22/02
Go up one level in this thread
Great Thanks! I will start experimenting right now. Regards, Matthias. On January 22, 2002 at 12:30:46, Georg v. Zimmermann wrote: >Hey Matthias, > >I am honored but we must give credit where credit is due. :) That firstSquare() >came from the Corbit wizzard. > >Below is the _asm for popCount taken from Beowulf. About lastSquare() I dont >know if something faster than whats in Crafty is possible, but I am just a guy >who knows nothing about _asm and a little bit about chess algorithms. > >#ifdef MMX_POPCOUNT >#include "amd3dx.h" > >/* Athlon MMX optimized popcount function, based on AMD's Athlon > optimization manuals */ > >FORCEINLINE int Count(BITBOARD v) >{ > static const __int64 C55 = 0x5555555555555555; > static const __int64 C33 = 0x3333333333333333; > static const __int64 C0F = 0x0F0F0F0F0F0F0F0F; > > __asm { > movd mm0, word ptr v; > punpckldq mm0, word ptr v + 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; > } >} >#else >FORCEINLINE int Count(BITBOARD a) >{ >/* I think Dann stole this code from Crafty */ > __asm { > mov ecx, dword ptr a > xor eax, eax > test ecx, ecx > jz l1 > l0: > lea edx, [ecx - 1] > inc eax > and ecx, edx > jnz l0 > l1: > mov ecx, dword ptr a + 4 > test ecx, ecx > jz l3 > l2: > lea edx, [ecx - 1] > inc eax > and ecx, edx > jnz l2 > l3: > } >} >#endif > > >Good luck ! > > >On January 22, 2002 at 04:30:04, Matthias Gemuh wrote: > >> >>Hi Georg, >>I tried your firstSquare() with Borland C++ Builder 5, and it works! >>I did not "inline" it anyway. Can you, please, post your lastSquare() here >>or send it to me? >>I don't know Assembler, but would like to see how my program performs with >>firstSquare(), lastSquare() and BitCount() coded in Asm. I don't have >>BitCount() yet, but it should count the bits in a 64-Bit integer. >>Every other thing in my program will remain in C/C++. >> >>Thanks, >>Matthias.
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.