Aktív témák
-
P.H.
senior tag
SSE1 line algoritmus azonos stílusú vonalak láncolt listájára + 1st gen. Nerburst és K10 port elemzés:
(»port latency (uops) subunit« formában)K10-en kb. 10%-kal gyorsabb, mint az x87-es megvalósítás, Prescott-on a sebességnövekedés több, mint kétszeres az x87-hez képest.
K10-en 1.6 IPC mérhető (kb. 30000 vonalas tesztadaton 10,5M órajel), Netburst-re visszaszámolva (ugyanazon a tesztadaton 26M órajel) 0.65 IPC.mov ecx,[esi+_DATA1] // p2 2 (1) load p012 3 (1) AGU
pushad // -vector- -vector-
xorps xmm0,xmm0 // p1 2 (1) mmxalu p34 2 (1) FA/M
lea edi,[esi+DATA2] // p0/1 d (1) alu p012 3 (1) AGU
pcmpeqw xmm7,xmm7 // p1 2 (1) mmxalu p34 2 (1) FA/M
cvtpi2ps xmm3,[edi-...+_TOPLEFT] // p1+2 10 (4) mmx+load 7 (2)
xorps xmm1,xmm1 // p1 2 (1) mmxalu p34 2 (1) FA/M
mov esi,[esi+...DEST] // p2 2 (1) load p012 3 (1) AGU
pslld xmm7,1Fh // p1 2 (1) mmxshf p34 3 (1) FA/M
cvtpi2ps xmm2,[edi-...+_RIGHTBOTTOM] // p1+2 10 (4) mmx+load 7 (2)
xorps xmm5,xmm5 // p1 2 (1) mmxalu p34 2 (1) FA/M
shufps xmm3,xmm2,01000000b // p1 4 (1) mmxshf p34 3 (1) FA/M
sub edi,ecx // p0/1 d (1) alu p012 1 (1) ALU
xorps xmm6,xmm6 // p1 2 (1) mmxalu p34 2 (1) FA/M
shufps xmm3,xmm3,11011000b // p1 4 (1) mmxshf p34 3 (1) FA/M
@nxline:
test ebx,ebx // p0/1 d (1) alu p012 1 (1) ALU
jz @return // p0 2 (1) alu p012 1 (1) ALU
mov eax,[ebx+TRECORD.REF] // p2 2 (1) load p012 3 (1) AGU
pcmpeqw xmm2,xmm2 // p1 2 (1) mmxalu p34 2 (1) FA/M
mov ecx,[ebx+TRECORD.SELF] // p2 2 (1) load p012 3 (1) AGU
mov ebp,[eax+THEADER.YCOOR] // p2 2 (1) load p012 3 (1) AGU
pcmpeqw xmm4,xmm4 // p1 2 (1) mmxalu p34 2 (1) FA/M
mov edx,[ecx+THEADER.YCOOR] // p2 2 (1) load p012 3 (1) AGU
psrld xmm2,01h // p1 2 (1) mmxshf p34 3 (1) FA/M
mov eax,[eax+THEADER.XCOOR] // p2 2 (1) load p012 3 (1) AGU
mov ecx,[ecx+THEADER.XCOOR] // p2 2 (1) load p012 3 (1) AGU
sub ebp,edx // p0/1 d (1) alu p012 1 (1) ALU
movaps xmm6,xmm2 // p0 6 (1) mov p345 3 (1) FANY
sub eax,ecx // p0/1 d (1) alu p012 1 (1) ALU
pslld xmm4,25 // p1 2 (1) mmxshf p34 3 (1) FA/M
cvtsi2ss xmm1,ebp // p1 10 (3) fpmmx 14 (3)
mov ebx,[ebx+TRECORD.NX] // p2 2 (1) load p012 3 (1) AGU
cvtsi2ss xmm0,eax // p1 10 (3) fpmmx 14 (3)
andps xmm6,xmm1 // p1 2 (1) mmxalu p34 2 (1) FA/M
andps xmm2,xmm0 // p1 2 (1) mmxalu p34 2 (1) FA/M
psrld xmm4,02h // p1 2 (1) mmxshf p34 3 (1) FA/M
comiss xmm6,xmm2 // p1 6 (2) fpadd p3 (1) FADD
mov [esp+_EBX],ebx // p0+3 2 (3) alu+store p012 3 (1) AGU
cmovbe ebp,eax // 6 (3) p012 1 (1) ALU
cvtsi2ss xmm6,edx // p1 10 (3) fpmmx 14 (3)
setbe al // p1 5 (3) alu p012 1 (1) ALU
jae @inlineMOVEX // p0 2 (1) alu p012 1 (1) ALU
movaps xmm2,xmm0 // p0 6 (1) mov p345 3 (1) FANY
movaps xmm0,xmm1 // p0 6 (1) mov p345 3 (1) FANY
movaps xmm1,xmm2 // p0 6 (1) mov p345 3 (1) FANY
@inlineMOVEX:
test ebp,ebp // p0/1 d (1) alu p012 1 (1) ALU
cvtsi2ss xmm5,ecx // p1 10 (3) fpmmx 14 (3)
jz @nxline // p0 2 (1) alu p012 1 (1) ALU
divss xmm0,xmm1 // p1 23 (1) fpdiv p4 16 (1) FMUL
mov ebx,[esp+_ECX] // p2 2 (1) load p012 3 (1) AGU
shufps xmm4,xmm0,00000000b // p1 4 (1) mmxshf p34 3 (1) FA/M
jns @inlineSETDIR // p0 2 (1) alu p012 1 (1) ALU
neg ebp // p0 d (1) alu p012 1 (1) ALU
xorps xmm4,xmm7 // p1 2 (1) mmxalu p34 2 (1) FA/M
@inlineSETDIR:
test al,al // p0/1 d (1) alu p012 1 (1) ALU
mov al,[edi+ebx-_ADDER+_DRAWCOLOR] // p2 2 (1) load p012 3 (1) AGU
shufps xmm5,xmm6,00000000h // p1 4 (1) mmxshf p34 3 (1) FA/M
jnz @setpixel // p0 2 (1) alu p012 1 (1) ALU
shufps xmm4,xmm4,00001010b // p1 4 (1) mmxshf p34 3 (1) FA/M
@setpixel:
movaps xmm2,xmm3 // p0 6 (1) mov p345 3 (1) FANY
imul edx,[edi+ebx-_ADDER+_DX] // p1+2 15 (4) fpmul+load p0 6 (1) ALU0+AGU
cmpltps xmm2,xmm5 // p1 4 (1) fpadd p3 (1) FADD
add edx,ecx // p0/1 d (1) alu p012 1 (1) ALU
addps xmm5,xmm4 // p1 4 (1) fpadd p3 4 (1) FADD
movmskps ecx,xmm2 // p1 6 (2) fp p34 3 (1) FA/M
movhlps xmm0,xmm5 // p1 4 (1) mmxshf
cmp cl,05h // p0/1 d (1) alu p012 1 (1) ALU
cvtss2si ecx,xmm5 // p1 8 (2) fp p3+5 8 (2) FADD+FMISC
jnz @continueLINE // p0 2 (1) alu p012 1 (1) ALU
@round:
add edx,[edi+ebx] // p1+2 d (2) alu+load p012 4 (2) ALU+AGU
add ebx,04h // p0/1 d (1) alu p012 1 (1) ALU
mov [esi+edx],al // p0+3 2 (3) store p012 3 (1) AGU
js @round // p0 2 (1) alu p012 1 (1) ALU
mov ebx,[esp+_ECX] // p2 2 (1) load p012 3 (1) AGU
@continueLINE:
sub ebp,01h // p01 d (1) alu p012 1 (1) ALU
cvtss2si edx,xmm0 // p1 8 (2) fp p3+5 8 (2) FADD+FMISC
jge @setpixel // p0 2 (1) alu p012 1 (1) ALU
mov ebx,[esp+_EBX] // p2 2 (1) load p012 3 (1) AGU
jmp @nxline // p1 0 (1) alu p012 1 (2) ALU
@return:
popad // -vector- -vector-[ Szerkesztve ]
Arguing on the Internet is like running in the Special Olympics. Even if you win, you are still ... ˙˙˙ Real Eyes Realize Real Lies ˙˙˙