SSE Befehl zum aufsummieren der 32Bit Werte in einem 128Bit Register



  • Hi,
    wie der Titel schon sagt suche ich einen SSE Befehl zum aufsummieren von vier 32Bit single precision Werten in einem 128Bit Register. Falls ein solcher Befehl nicht existiert, gibt es eine performantere Methode als mit extractps die Werte rauszuziehen und einzeln aufzusummieren?



  • SSE3:

    ;xmm0 = 4xFloat
    haddps xmm0,xmm0
    haddps xmm0,xmm0
    

    SSE2:

    pshufd xmm1,xmm0,01110y
    addps xmm0,xmm1
    pshufd xmm1,xmm0,1
    addss xmm0,xmm1
    

    SSE1: denk dir was aus 🙂


  • Mod

    movhlps xmm1,xmm0
    ;movlhps xmm1,xmm0  ; ggf. falls xmm1 uninitialisiert ist
    addps xmm0,xmm1
    shufps xmm1,xmm0,1
    addss xmm0,xmm1
    

Log in to reply