Hirdetés

Hirdetés

Aktív témák

  • P.H.

    senior tag

    SSE2-kód AMD-re egy kicsit kevesebb utasítással, kis utasítássorrend-módosítással (körvonalazódik, hogy VectorPath célszerűen feltételes ugrás után vagy ugrás céljaként rendezendő)

    K8 Opteron: 517M clock (-10%), átlagosan 1.3 IPC

    @copyarraySSE:
    movd xmm0,[eax+04h]
    @zoomvertSSE:
    mov [esp],edi
    xor ebx,ebx
    mov esi,[esp+_STRROWS]
    and edi,-64
    sub edx,[esp+_STRLEFT]
    movd ebp,mm7
    pshufd xmm0,xmm0,00000000b
    movd ecx,mm6
    lea edi,[edi+40h]
    mov esi,[esi]
    cmovge edx,ebx
    movaps xmm1,[edi]
    @sourceLEFT:
    mov bl,[esi]
    add esi,02h
    add edx,ebx
    jle @sourceLEFT
    mov bl,[esi-01h]
    jmp @initpixelSSE
    @newpixelSSE:
    movzx edx,word ptr [esi]
    add esi,02h
    movzx ebx,dh
    @initpixelSSE:
    movaps xmm3,xmm0
    shl ebx,04h
    add dl,01h
    add ebx,[esp+_STRCOLORS]
    mulps xmm3,[ebx]
    @prevHpixelSSE:
    sub dl,01h
    jz @newpixelSSE
    pshufd xmm2,[ecx+00h],10010101b
    movaps xmm4,xmm3
    mov ebx,[ecx+00h]
    @pixelSSE:
    mulps xmm4,xmm2
    sub ebx,01h
    @1pixelSSE:
    addps xmm1,xmm4
    jz @nextHpixelSSE
    movaps [edi],xmm1
    js @stepHelementSSE
    add edi,10h
    movaps xmm4,xmm3
    sub ebx,01h
    movaps xmm1,[edi]
    jnz @1pixelSSE
    @nextHpixelSSE:
    pshufd xmm2,xmm2,11111111b
    cmp ebx,[ecx+08h]
    jnz @pixelSSE
    not ebx
    @stepHelementSSE:
    add ebp,ebx
    lea ecx,[ecx+10h]
    jnz @prevHpixelSSE
    mov edi,[esp]
    xor edx,edx
    @moreVrowsSSE:
    add [eax+00h],ebx
    jg @cvtROW
    jl @stepVelementSSE
    add ebp,[eax+08h]
    movd xmm0,ebp
    jnz @zoomvertSSE
    @stepVelementSSE:
    add dword ptr [esp+_STRROWS],04h
    add [esp+_VSIZE],ebx
    lea eax,[eax+10h]
    jnz @copyarraySSE
    sub eax,10h
    mov [eax+00h],ebx
    @cvtROW:
    mov esi,edi
    mov ebp,[esp+_INCREASE]
    and esi,-64
    sub edi,ebp
    @cvtRGB:
    add esi,40h
    cvtps2dq xmm1,[esi+00h]
    cvtps2dq xmm2,[esi+10h]
    cvtps2dq xmm3,[esi+20h]
    cvtps2dq xmm4,[esi+30h]
    movaps [esi+00h],xmm5
    packssdw xmm1,xmm2
    movaps [esi+10h],xmm5
    packssdw xmm3,xmm4
    movaps [esi+20h],xmm5
    packuswb xmm1,xmm3
    movaps [esi+30h],xmm5
    movups [edi+ebp],xmm1
    add ebp,10h
    js @cvtRGB
    cmp dword ptr [eax+00h],01h
    jz @moreVrowsSSE
    divss xmm0,xmm0
    jg @zoomvertSSE

    [ Szerkesztve ]

    Arguing on the Internet is like running in the Special Olympics. Even if you win, you are still ... ˙˙˙ Real Eyes Realize Real Lies ˙˙˙

Aktív témák