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.