Author: Gerd Isenberg
Date: 15:03:51 09/13/02
Go up one level in this thread
On September 13, 2002 at 17:29:30, Sune Fischer wrote: >On September 13, 2002 at 16:43:36, Gerd Isenberg wrote: > >>On September 13, 2002 at 15:57:51, Sune Fischer wrote: >> >>>On September 13, 2002 at 14:36:21, Gerd Isenberg wrote: >>> >>>>On September 13, 2002 at 04:07:55, Sune Fischer wrote: >>>> >>>>>On September 12, 2002 at 21:19:08, Gerd Isenberg wrote: >>>>> >>>>>>Hi all, >>>>>> >>>>>>My first MMX-Routine (MSC inline asm) that gains considerable performance! >>>>> >>>>>Wow, that's great. How much faster do think it is? >>>>> >>>> >>>>A loop of 100,000,000 * 2 calls with the two sample pathes take (XP2.1): >>>> >>>>C-Version with inlined shift 80 seconds >>>>shlightly improved mmx version 56 seconds >>>>10fold unrolled boolean mmx 35 seconds >>>> >>>>I find with paddb a nice replacement for left shift one (board right) with no >>>>need to mask for byte-wraps. >>> >>>I notice you do a lookup into the table scBBOfBit. >>>I found that doing the shift on the fly was a tiny bit faster, I imagine with >>>MMX that the gain would be even larger, have you tried it? >>> >>>-S. >> >>Ahh, not yet. But can you tell me an easy way to get a 0x00...0001 inside a mmx >>register? You have to do a read a bitboard via memory. Therefore the lookup >>saves the shift, but otherwise it's more cache friendly. > >A shot in the dark perhaps, how about: > > static BitBoard one=0x0000000000000001; > ... > movq mm1, [one] > mov eax, [from] > mov edx, [to] > psllq mm1, eax // invalid opcode > psllq mm2, edx // invalid opcode > ... > >-S. > > > 1/64 the memory :) > >-S. > > >>Gerd may be this one? mov eax, 1 ; initial distance := 1 but consider later inc eax movd mm0, [path] punpckldq mm0, [path+4] movd mm1, eax movd mm3, [from] movd mm4, [to] movq mm2, mm1 psllq mm1, mm3 psllq mm2, mm4 Gerd
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.