Aktív témák

  • P.H.

    senior tag

    Under investigation: K8 utasítássorrend

    ad 1:

    @rewrite:
    xor eax,eax
    sub ecx,01h
    js @finished
    mov dl,[ebx+ecx]
    add eax,[edi+ecx*04h]
    mov ebp,[esi+edx*04h]
    cmovz eax,ebp
    test dl,dl
    cmovz ebp,eax
    mov [ebx+ecx*04h],ebp
    jmp @rewrite

    ad 2:
    @rewrite:
    xor eax,eax
    sub ecx,01h
    mov dl,[ebx+ecx]
    js @finished
    add eax,[edi+ecx*04h]
    mov ebp,[esi+edx*04h]
    cmovz eax,ebp
    test dl,dl
    cmovz ebp,eax
    mov [ebx+ecx*04h],ebp
    jmp @rewrite

    ECX = 2 853 960 bemeneti értékkel az első ciklus lefutása 25M clock (~9 clock/pixel), a 2. ciklusé 30M clock (~10-11 clock/pixel). Az első cmovz általi átírás sosem fut le, a másodiké 90%-ban.

    Ennek ellentmod, hogy a

    test eax,eax
    cmp eax,[eax-04h]

    kód abban az esetben, ha EAX = 0, védelmi hibával leáll, tehát a cmovcc függ mindhárom bemeneti értékétől.

    A referencia x86 kód 32M órajel:

    @rewrite:
    xor eax,eax
    sub ecx,01h
    mov dl,[ebx+ecx]
    js @finished
    add eax,[edi+ecx*04h]
    mov ebp,[esi+edx*04h]
    jz @store
    test dl,dl
    xchg ebp,eax
    jz @store
    mov ebp,eax
    @store:
    mov [ebx+ecx*04h],ebp
    jmp @rewrite
    @finished:

    [ 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