Author: Gerd Isenberg
Date: 15:35:59 06/11/02
Go up one level in this thread
90 degree rotation with PMOVMSKB (AMD mmx-Extension) “PMOVMSKB reg32, mmreg” performs the following operations: reg32 [31:8 ] =0 reg32 [7 ] ==mmreg [63 ] reg32 [6 ] ==mmreg [55 ] reg32 [5 ] ==mmreg [47 ] reg32 [4 ] ==mmreg [39 ] reg32 [3 ] ==mmreg [31 ] reg32 [2 ] ==mmreg [23 ] reg32 [1 ] ==mmreg [15 ] reg32 [0 ] ==mmreg [7 ] no idea whether it is fast (i fear not, because of vector path instruction) ;input mm7, output mm7 pmovmskb edx, mm7 ; get bit 7 from every byte psllq mm7, 1 ; and shift bit i -> i+1 shl edx, 8 pmovmskb eax, mm7 ; get bit 6 from every byte psllq mm7, 1 or edx, eax shl edx, 8 pmovmskb eax, mm7 ; get bit 5 from every byte psllq mm7, 1 or edx, eax shl edx, 8 pmovmskb eax, mm7 ; get bit 4 from every byte psllq mm7, 1 or edx, eax movd mm6, edx ; rotated high board pmovmskb edx, mm7 ; get bit 3 from every byte psllq mm7, 1 shl edx, 8 pmovmskb eax, mm7 ; get bit 2 from every byte psllq mm7, 1 or edx, eax shl edx, 8 pmovmskb eax, mm7 ; get bit 1 from every byte psllq mm7, 1 or edx, eax shl edx, 8 pmovmskb eax, mm7 ; get bit 0 from every byte or edx, eax movd mm7, edx ; rotated low board punpckldq mm7, mm6 ; mm7 is now the rotated one may be PMOVMSKB is more interesting to get consecutive bits from one file. 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.