Author: Gerd Isenberg
Date: 12:30:50 12/21/05
Go up one level in this thread
and for the record a mmx-one with a small __m64 wrapper:
struct MMX
{
MMX(const __m64 m){x = m;}
friend MMX operator& (const MMX &a, const MMX &b) {
return MMX(_mm_and_si64(a.x, b.x));}
union {
__m64 x; // this intrinsice type is wrapped here
BitBoard b;
};
};
andIntVector<MMX, 2048, a1, a2, a3>();
_TEXT SEGMENT
??$andIntVector@UMMX@@$0IAA@$1?a1@@3PAHA$1?a2@@3PAHA$1?a3@@3PAHA@@YAXXZ PROC ;
andIntVector<MMX,2048,&a1,&a2,&a3>, COMDAT
00000 33 c0 xor eax, eax
00002 b9 00 01 00 00 mov ecx, 256 ; 00000100H
00007 eb 07 8d a4 24
00 00 00 00 npad 9
$LL3@andIntVect:
00010 0f 6f 80 00 00
00 00 movq mm0, MMWORD PTR ?a1@@3PAHA[eax]
00017 0f 6f 88 00 00
00 00 movq mm1, MMWORD PTR ?a2@@3PAHA[eax]
0001e 0f db c1 pand mm0, mm1
00021 0f 7f 80 00 00
00 00 movq MMWORD PTR ?a3@@3PAHA[eax], mm0
00028 0f 6f 80 08 00
00 00 movq mm0, MMWORD PTR ?a1@@3PAHA[eax+8]
0002f 0f 6f 88 08 00
00 00 movq mm1, MMWORD PTR ?a2@@3PAHA[eax+8]
00036 0f db c1 pand mm0, mm1
00039 0f 7f 80 08 00
00 00 movq MMWORD PTR ?a3@@3PAHA[eax+8], mm0
00040 0f 6f 80 10 00
00 00 movq mm0, MMWORD PTR ?a1@@3PAHA[eax+16]
00047 0f 6f 88 10 00
00 00 movq mm1, MMWORD PTR ?a2@@3PAHA[eax+16]
0004e 0f db c1 pand mm0, mm1
00051 0f 7f 80 10 00
00 00 movq MMWORD PTR ?a3@@3PAHA[eax+16], mm0
00058 0f 6f 80 18 00
00 00 movq mm0, MMWORD PTR ?a1@@3PAHA[eax+24]
0005f 0f 6f 88 18 00
00 00 movq mm1, MMWORD PTR ?a2@@3PAHA[eax+24]
00066 0f db c1 pand mm0, mm1
00069 0f 7f 80 18 00
00 00 movq MMWORD PTR ?a3@@3PAHA[eax+24], mm0
00070 83 c0 20 add eax, 32 ; 00000020H
00073 83 e9 01 sub ecx, 1
00076 75 98 jne SHORT $LL3@andIntVect
00078 c3 ret 0
??$andIntVector@UMMX@@$0IAA@$1?a1@@3PAHA$1?a2@@3PAHA$1?a3@@3PAHA@@YAXXZ ENDP ;
andIntVector<MMX,2048,&a1,&a2,&a3>
_TEXT ENDS
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.