;
; jfdctint.asm - accurate integer FDCT (MMX)
;
; Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
;
; Based on the x86 SIMD extension for IJG JPEG library
; Copyright (C) 1999-2006, MIYASAKA Masaru.
; For conditions of distribution and use, see copyright notice in jsimdext.inc
;
; This file should be assembled with NASM (Netwide Assembler),
; can *not* be assembled with Microsoft's MASM or any compatible
; assembler (including Borland's Turbo Assembler).
; NASM is available from http://nasm.sourceforge.net/ or
; http://sourceforge.net/project/showfiles.php?group_id=6208
;
; This file contains a slow-but-accurate integer implementation of the
; forward DCT (Discrete Cosine Transform). The following code is based
; directly on the IJG's original jfdctint.c; see the jfdctint.c for
; more details.
;
; [TAB8]

%include "jsimdext.inc"
%include "jdct.inc"

; --------------------------------------------------------------------------

%define CONST_BITS      13
%define PASS1_BITS      2

%define DESCALE_P1      (CONST_BITS-PASS1_BITS)
%define DESCALE_P2      (CONST_BITS+PASS1_BITS)

%if CONST_BITS == 13
F_0_298 equ      2446           ; FIX(0.298631336)
F_0_390 equ      3196           ; FIX(0.390180644)
F_0_541 equ      4433           ; FIX(0.541196100)
F_0_765 equ      6270           ; FIX(0.765366865)
F_0_899 equ      7373           ; FIX(0.899976223)
F_1_175 equ      9633           ; FIX(1.175875602)
F_1_501 equ     12299           ; FIX(1.501321110)
F_1_847 equ     15137           ; FIX(1.847759065)
F_1_961 equ     16069           ; FIX(1.961570560)
F_2_053 equ     16819           ; FIX(2.053119869)
F_2_562 equ     20995           ; FIX(2.562915447)
F_3_072 equ     25172           ; FIX(3.072711026)
%else
; NASM cannot do compile-time arithmetic on floating-point constants.
%define DESCALE(x,n)  (((x)+(1<<((n)-1)))>>(n))
F_0_298 equ     DESCALE( 320652955,30-CONST_BITS)       ; FIX(0.298631336)
F_0_390 equ     DESCALE( 418953276,30-CONST_BITS)       ; FIX(0.390180644)
F_0_541 equ     DESCALE( 581104887,30-CONST_BITS)       ; FIX(0.541196100)
F_0_765 equ     DESCALE( 821806413,30-CONST_BITS)       ; FIX(0.765366865)
F_0_899 equ     DESCALE( 966342111,30-CONST_BITS)       ; FIX(0.899976223)
F_1_175 equ     DESCALE(1262586813,30-CONST_BITS)       ; FIX(1.175875602)
F_1_501 equ     DESCALE(1612031267,30-CONST_BITS)       ; FIX(1.501321110)
F_1_847 equ     DESCALE(1984016188,30-CONST_BITS)       ; FIX(1.847759065)
F_1_961 equ     DESCALE(2106220350,30-CONST_BITS)       ; FIX(1.961570560)
F_2_053 equ     DESCALE(2204520673,30-CONST_BITS)       ; FIX(2.053119869)
F_2_562 equ     DESCALE(2751909506,30-CONST_BITS)       ; FIX(2.562915447)
F_3_072 equ     DESCALE(3299298341,30-CONST_BITS)       ; FIX(3.072711026)
%endif

; --------------------------------------------------------------------------
        SECTION SEG_CONST

        alignz  16
        global  EXTN(jconst_fdct_islow_mmx) PRIVATE

EXTN(jconst_fdct_islow_mmx):

PW_F130_F054    times 2 dw  (F_0_541+F_0_765), F_0_541
PW_F054_MF130   times 2 dw  F_0_541, (F_0_541-F_1_847)
PW_MF078_F117   times 2 dw  (F_1_175-F_1_961), F_1_175
PW_F117_F078    times 2 dw  F_1_175, (F_1_175-F_0_390)
PW_MF060_MF089  times 2 dw  (F_0_298-F_0_899),-F_0_899
PW_MF089_F060   times 2 dw -F_0_899, (F_1_501-F_0_899)
PW_MF050_MF256  times 2 dw  (F_2_053-F_2_562),-F_2_562
PW_MF256_F050   times 2 dw -F_2_562, (F_3_072-F_2_562)
PD_DESCALE_P1   times 2 dd  1 << (DESCALE_P1-1)
PD_DESCALE_P2   times 2 dd  1 << (DESCALE_P2-1)
PW_DESCALE_P2X  times 4 dw  1 << (PASS1_BITS-1)

        alignz  16

; --------------------------------------------------------------------------
        SECTION SEG_TEXT
        BITS    32
;
; Perform the forward DCT on one block of samples.
;
; GLOBAL(void)
; jsimd_fdct_islow_mmx (DCTELEM *data)
;

%define data(b)         (b)+8           ; DCTELEM *data

%define original_ebp    ebp+0
%define wk(i)           ebp-(WK_NUM-(i))*SIZEOF_MMWORD  ; mmword wk[WK_NUM]
%define WK_NUM          2

        align   16
        global  EXTN(jsimd_fdct_islow_mmx) PRIVATE

EXTN(jsimd_fdct_islow_mmx):
        push    ebp
        mov     eax,esp                         ; eax = original ebp
        sub     esp, byte 4
        and     esp, byte (-SIZEOF_MMWORD)      ; align to 64 bits
        mov     [esp],eax
        mov     ebp,esp                         ; ebp = aligned ebp
        lea     esp, [wk(0)]
        pushpic ebx
;       push    ecx             ; need not be preserved
;       push    edx             ; need not be preserved
;       push    esi             ; unused
;       push    edi             ; unused

        get_GOT ebx             ; get GOT address

        ; ---- Pass 1: process rows.

        mov     edx, POINTER [data(eax)]        ; (DCTELEM *)
        mov     ecx, DCTSIZE/4
        alignx  16,7
.rowloop:

        movq    mm0, MMWORD [MMBLOCK(2,0,edx,SIZEOF_DCTELEM)]
        movq    mm1, MMWORD [MMBLOCK(3,0,edx,SIZEOF_DCTELEM)]
        movq    mm2, MMWORD [MMBLOCK(2,1,edx,SIZEOF_DCTELEM)]
        movq    mm3, MMWORD [MMBLOCK(3,1,edx,SIZEOF_DCTELEM)]

        ; mm0=(20 21 22 23), mm2=(24 25 26 27)
        ; mm1=(30 31 32 33), mm3=(34 35 36 37)

        movq      mm4,mm0               ; transpose coefficients(phase 1)
        punpcklwd mm0,mm1               ; mm0=(20 30 21 31)
        punpckhwd mm4,mm1               ; mm4=(22 32 23 33)
        movq      mm5,mm2               ; transpose coefficients(phase 1)
        punpcklwd mm2,mm3               ; mm2=(24 34 25 35)
        punpckhwd mm5,mm3               ; mm5=(26 36 27 37)

        movq    mm6, MMWORD [MMBLOCK(0,0,edx,SIZEOF_DCTELEM)]
        movq    mm7, MMWORD [MMBLOCK(1,0,edx,SIZEOF_DCTELEM)]
        movq    mm1, MMWORD [MMBLOCK(0,1,edx,SIZEOF_DCTELEM)]
        movq    mm3, MMWORD [MMBLOCK(1,1,edx,SIZEOF_DCTELEM)]

        ; mm6=(00 01 02 03), mm1=(04 05 06 07)
        ; mm7=(10 11 12 13), mm3=(14 15 16 17)

        movq    MMWORD [wk(0)], mm4     ; wk(0)=(22 32 23 33)
        movq    MMWORD [wk(1)], mm2     ; wk(1)=(24 34 25 35)

        movq      mm4,mm6               ; transpose coefficients(phase 1)
        punpcklwd mm6,mm7               ; mm6=(00 10 01 11)
        punpckhwd mm4,mm7               ; mm4=(02 12 03 13)
        movq      mm2,mm1               ; transpose coefficients(phase 1)
        punpcklwd mm1,mm3               ; mm1=(04 14 05 15)
        punpckhwd mm2,mm3               ; mm2=(06 16 07 17)

        movq      mm7,mm6               ; transpose coefficients(phase 2)
        punpckldq mm6,mm0               ; mm6=(00 10 20 30)=data0
        punpckhdq mm7,mm0               ; mm7=(01 11 21 31)=data1
        movq      mm3,mm2               ; transpose coefficients(phase 2)
        punpckldq mm2,mm5               ; mm2=(06 16 26 36)=data6
        punpckhdq mm3,mm5               ; mm3=(07 17 27 37)=data7

        movq    mm0,mm7
        movq    mm5,mm6
        psubw   mm7,mm2                 ; mm7=data1-data6=tmp6
        psubw   mm6,mm3                 ; mm6=data0-data7=tmp7
        paddw   mm0,mm2                 ; mm0=data1+data6=tmp1
        paddw   mm5,mm3                 ; mm5=data0+data7=tmp0

        movq    mm2, MMWORD [wk(0)]     ; mm2=(22 32 23 33)
        movq    mm3, MMWORD [wk(1)]     ; mm3=(24 34 25 35)
        movq    MMWORD [wk(0)], mm7     ; wk(0)=tmp6
        movq    MMWORD [wk(1)], mm6     ; wk(1)=tmp7

        movq      mm7,mm4               ; transpose coefficients(phase 2)
        punpckldq mm4,mm2               ; mm4=(02 12 22 32)=data2
        punpckhdq mm7,mm2               ; mm7=(03 13 23 33)=data3
        movq      mm6,mm1               ; transpose coefficients(phase 2)
        punpckldq mm1,mm3               ; mm1=(04 14 24 34)=data4
        punpckhdq mm6,mm3               ; mm6=(05 15 25 35)=data5

        movq    mm2,mm7
        movq    mm3,mm4
        paddw   mm7,mm1                 ; mm7=data3+data4=tmp3
        paddw   mm4,mm6                 ; mm4=data2+data5=tmp2
        psubw   mm2,mm1                 ; mm2=data3-data4=tmp4
        psubw   mm3,mm6                 ; mm3=data2-data5=tmp5

        ; -- Even part

        movq    mm1,mm5
        movq    mm6,mm0
        paddw   mm5,mm7                 ; mm5=tmp10
        paddw   mm0,mm4                 ; mm0=tmp11
        psubw   mm1,mm7                 ; mm1=tmp13
        psubw   mm6,mm4                 ; mm6=tmp12

        movq    mm7,mm5
        paddw   mm5,mm0                 ; mm5=tmp10+tmp11
        psubw   mm7,mm0                 ; mm7=tmp10-tmp11

        psllw   mm5,PASS1_BITS          ; mm5=data0
        psllw   mm7,PASS1_BITS          ; mm7=data4

        movq    MMWORD [MMBLOCK(0,0,edx,SIZEOF_DCTELEM)], mm5
        movq    MMWORD [MMBLOCK(0,1,edx,SIZEOF_DCTELEM)], mm7

        ; (Original)
        ; z1 = (tmp12 + tmp13) * 0.541196100;
        ; data2 = z1 + tmp13 * 0.765366865;
        ; data6 = z1 + tmp12 * -1.847759065;
        ;
        ; (This implementation)
        ; data2 = tmp13 * (0.541196100 + 0.765366865) + tmp12 * 0.541196100;
        ; data6 = tmp13 * 0.541196100 + tmp12 * (0.541196100 - 1.847759065);

        movq      mm4,mm1               ; mm1=tmp13
        movq      mm0,mm1
        punpcklwd mm4,mm6               ; mm6=tmp12
        punpckhwd mm0,mm6
        movq      mm1,mm4
        movq      mm6,mm0
        pmaddwd   mm4,[GOTOFF(ebx,PW_F130_F054)]        ; mm4=data2L
        pmaddwd   mm0,[GOTOFF(ebx,PW_F130_F054)]        ; mm0=data2H
        pmaddwd   mm1,[GOTOFF(ebx,PW_F054_MF130)]       ; mm1=data6L
        pmaddwd   mm6,[GOTOFF(ebx,PW_F054_MF130)]       ; mm6=data6H

        paddd   mm4,[GOTOFF(ebx,PD_DESCALE_P1)]
        paddd   mm0,[GOTOFF(ebx,PD_DESCALE_P1)]
        psrad   mm4,DESCALE_P1
        psrad   mm0,DESCALE_P1
        paddd   mm1,[GOTOFF(ebx,PD_DESCALE_P1)]
        paddd   mm6,[GOTOFF(ebx,PD_DESCALE_P1)]
        psrad   mm1,DESCALE_P1
        psrad   mm6,DESCALE_P1

        packssdw  mm4,mm0               ; mm4=data2
        packssdw  mm1,mm6               ; mm1=data6

        movq    MMWORD [MMBLOCK(2,0,edx,SIZEOF_DCTELEM)], mm4
        movq    MMWORD [MMBLOCK(2,1,edx,SIZEOF_DCTELEM)], mm1

        ; -- Odd part

        movq    mm5, MMWORD [wk(0)]     ; mm5=tmp6
        movq    mm7, MMWORD [wk(1)]     ; mm7=tmp7

        movq    mm0,mm2                 ; mm2=tmp4
        movq    mm6,mm3                 ; mm3=tmp5
        paddw   mm0,mm5                 ; mm0=z3
        paddw   mm6,mm7                 ; mm6=z4

        ; (Original)
        ; z5 = (z3 + z4) * 1.175875602;
        ; z3 = z3 * -1.961570560;  z4 = z4 * -0.390180644;
        ; z3 += z5;  z4 += z5;
        ;
        ; (This implementation)
        ; z3 = z3 * (1.175875602 - 1.961570560) + z4 * 1.175875602;
        ; z4 = z3 * 1.175875602 + z4 * (1.175875602 - 0.390180644);

        movq      mm4,mm0
        movq      mm1,mm0
        punpcklwd mm4,mm6
        punpckhwd mm1,mm6
        movq      mm0,mm4
        movq      mm6,mm1
        pmaddwd   mm4,[GOTOFF(ebx,PW_MF078_F117)]       ; mm4=z3L
        pmaddwd   mm1,[GOTOFF(ebx,PW_MF078_F117)]       ; mm1=z3H
        pmaddwd   mm0,[GOTOFF(ebx,PW_F117_F078)]        ; mm0=z4L
        pmaddwd   mm6,[GOTOFF(ebx,PW_F117_F078)]        ; mm6=z4H

        movq    MMWORD [wk(0)], mm4     ; wk(0)=z3L
        movq    MMWORD [wk(1)], mm1     ; wk(1)=z3H

        ; (Original)
        ; z1 = tmp4 + tmp7;  z2 = tmp5 + tmp6;
        ; tmp4 = tmp4 * 0.298631336;  tmp5 = tmp5 * 2.053119869;
        ; tmp6 = tmp6 * 3.072711026;  tmp7 = tmp7 * 1.501321110;
        ; z1 = z1 * -0.899976223;  z2 = z2 * -2.562915447;
        ; data7 = tmp4 + z1 + z3;  data5 = tmp5 + z2 + z4;
        ; data3 = tmp6 + z2 + z3;  data1 = tmp7 + z1 + z4;
        ;
        ; (This implementation)
        ; tmp4 = tmp4 * (0.298631336 - 0.899976223) + tmp7 * -0.899976223;
        ; tmp5 = tmp5 * (2.053119869 - 2.562915447) + tmp6 * -2.562915447;
        ; tmp6 = tmp5 * -2.562915447 + tmp6 * (3.072711026 - 2.562915447);
        ; tmp7 = tmp4 * -0.899976223 + tmp7 * (1.501321110 - 0.899976223);
        ; data7 = tmp4 + z3;  data5 = tmp5 + z4;
        ; data3 = tmp6 + z3;  data1 = tmp7 + z4;

        movq      mm4,mm2
        movq      mm1,mm2
        punpcklwd mm4,mm7
        punpckhwd mm1,mm7
        movq      mm2,mm4
        movq      mm7,mm1
        pmaddwd   mm4,[GOTOFF(ebx,PW_MF060_MF089)]      ; mm4=tmp4L
        pmaddwd   mm1,[GOTOFF(ebx,PW_MF060_MF089)]      ; mm1=tmp4H
        pmaddwd   mm2,[GOTOFF(ebx,PW_MF089_F060)]       ; mm2=tmp7L
        pmaddwd   mm7,[GOTOFF(ebx,PW_MF089_F060)]       ; mm7=tmp7H

        paddd   mm4, MMWORD [wk(0)]     ; mm4=data7L
        paddd   mm1, MMWORD [wk(1)]     ; mm1=data7H
        paddd   mm2,mm0                 ; mm2=data1L
        paddd   mm7,mm6                 ; mm7=data1H

        paddd   mm4,[GOTOFF(ebx,PD_DESCALE_P1)]
        paddd   mm1,[GOTOFF(ebx,PD_DESCALE_P1)]
        psrad   mm4,DESCALE_P1
        psrad   mm1,DESCALE_P1
        paddd   mm2,[GOTOFF(ebx,PD_DESCALE_P1)]
        paddd   mm7,[GOTOFF(ebx,PD_DESCALE_P1)]
        psrad   mm2,DESCALE_P1
        psrad   mm7,DESCALE_P1

        packssdw  mm4,mm1               ; mm4=data7
        packssdw  mm2,mm7               ; mm2=data1

        movq    MMWORD [MMBLOCK(3,1,edx,SIZEOF_DCTELEM)], mm4
        movq    MMWORD [MMBLOCK(1,0,edx,SIZEOF_DCTELEM)], mm2

        movq      mm1,mm3
        movq      mm7,mm3
        punpcklwd mm1,mm5
        punpckhwd mm7,mm5
        movq      mm3,mm1
        movq      mm5,mm7
        pmaddwd   mm1,[GOTOFF(ebx,PW_MF050_MF256)]      ; mm1=tmp5L
        pmaddwd   mm7,[GOTOFF(ebx,PW_MF050_MF256)]      ; mm7=tmp5H
        pmaddwd   mm3,[GOTOFF(ebx,PW_MF256_F050)]       ; mm3=tmp6L
        pmaddwd   mm5,[GOTOFF(ebx,PW_MF256_F050)]       ; mm5=tmp6H

        paddd   mm1,mm0                 ; mm1=data5L
        paddd   mm7,mm6                 ; mm7=data5H
        paddd   mm3, MMWORD [wk(0)]     ; mm3=data3L
        paddd   mm5, MMWORD [wk(1)]     ; mm5=data3H

        paddd   mm1,[GOTOFF(ebx,PD_DESCALE_P1)]
        paddd   mm7,[GOTOFF(ebx,PD_DESCALE_P1)]
        psrad   mm1,DESCALE_P1
        psrad   mm7,DESCALE_P1
        paddd   mm3,[GOTOFF(ebx,PD_DESCALE_P1)]
        paddd   mm5,[GOTOFF(ebx,PD_DESCALE_P1)]
        psrad   mm3,DESCALE_P1
        psrad   mm5,DESCALE_P1

        packssdw  mm1,mm7               ; mm1=data5
        packssdw  mm3,mm5               ; mm3=data3

        movq    MMWORD [MMBLOCK(1,1,edx,SIZEOF_DCTELEM)], mm1
        movq    MMWORD [MMBLOCK(3,0,edx,SIZEOF_DCTELEM)], mm3

        add     edx, byte 4*DCTSIZE*SIZEOF_DCTELEM
        dec     ecx
        jnz     near .rowloop

        ; ---- Pass 2: process columns.

        mov     edx, POINTER [data(eax)]        ; (DCTELEM *)
        mov     ecx, DCTSIZE/4
        alignx  16,7
.columnloop:

        movq    mm0, MMWORD [MMBLOCK(2,0,edx,SIZEOF_DCTELEM)]
        movq    mm1, MMWORD [MMBLOCK(3,0,edx,SIZEOF_DCTELEM)]
        movq    mm2, MMWORD [MMBLOCK(6,0,edx,SIZEOF_DCTELEM)]
        movq    mm3, MMWORD [MMBLOCK(7,0,edx,SIZEOF_DCTELEM)]

        ; mm0=(02 12 22 32), mm2=(42 52 62 72)
        ; mm1=(03 13 23 33), mm3=(43 53 63 73)

        movq      mm4,mm0               ; transpose coefficients(phase 1)
        punpcklwd mm0,mm1               ; mm0=(02 03 12 13)
        punpckhwd mm4,mm1               ; mm4=(22 23 32 33)
        movq      mm5,mm2               ; transpose coefficients(phase 1)
        punpcklwd mm2,mm3               ; mm2=(42 43 52 53)
        punpckhwd mm5,mm3               ; mm5=(62 63 72 73)

        movq    mm6, MMWORD [MMBLOCK(0,0,edx,SIZEOF_DCTELEM)]
        movq    mm7, MMWORD [MMBLOCK(1,0,edx,SIZEOF_DCTELEM)]
        movq    mm1, MMWORD [MMBLOCK(4,0,edx,SIZEOF_DCTELEM)]
        movq    mm3, MMWORD [MMBLOCK(5,0,edx,SIZEOF_DCTELEM)]

        ; mm6=(00 10 20 30), mm1=(40 50 60 70)
        ; mm7=(01 11 21 31), mm3=(41 51 61 71)

        movq    MMWORD [wk(0)], mm4     ; wk(0)=(22 23 32 33)
        movq    MMWORD [wk(1)], mm2     ; wk(1)=(42 43 52 53)

        movq      mm4,mm6               ; transpose coefficients(phase 1)
        punpcklwd mm6,mm7               ; mm6=(00 01 10 11)
        punpckhwd mm4,mm7               ; mm4=(20 21 30 31)
        movq      mm2,mm1               ; transpose coefficients(phase 1)
        punpcklwd mm1,mm3               ; mm1=(40 41 50 51)
        punpckhwd mm2,mm3               ; mm2=(60 61 70 71)

        movq      mm7,mm6               ; transpose coefficients(phase 2)
        punpckldq mm6,mm0               ; mm6=(00 01 02 03)=data0
        punpckhdq mm7,mm0               ; mm7=(10 11 12 13)=data1
        movq      mm3,mm2               ; transpose coefficients(phase 2)
        punpckldq mm2,mm5               ; mm2=(60 61 62 63)=data6
        punpckhdq mm3,mm5               ; mm3=(70 71 72 73)=data7

        movq    mm0,mm7
        movq    mm5,mm6
        psubw   mm7,mm2                 ; mm7=data1-data6=tmp6
        psubw   mm6,mm3                 ; mm6=data0-data7=tmp7
        paddw   mm0,mm2                 ; mm0=data1+data6=tmp1
        paddw   mm5,mm3                 ; mm5=data0+data7=tmp0

        movq    mm2, MMWORD [wk(0)]     ; mm2=(22 23 32 33)
        movq    mm3, MMWORD [wk(1)]     ; mm3=(42 43 52 53)
        movq    MMWORD [wk(0)], mm7     ; wk(0)=tmp6
        movq    MMWORD [wk(1)], mm6     ; wk(1)=tmp7

        movq      mm7,mm4               ; transpose coefficients(phase 2)
        punpckldq mm4,mm2               ; mm4=(20 21 22 23)=data2
        punpckhdq mm7,mm2               ; mm7=(30 31 32 33)=data3
        movq      mm6,mm1               ; transpose coefficients(phase 2)
        punpckldq mm1,mm3               ; mm1=(40 41 42 43)=data4
        punpckhdq mm6,mm3               ; mm6=(50 51 52 53)=data5

        movq    mm2,mm7
        movq    mm3,mm4
        paddw   mm7,mm1                 ; mm7=data3+data4=tmp3
        paddw   mm4,mm6                 ; mm4=data2+data5=tmp2
        psubw   mm2,mm1                 ; mm2=data3-data4=tmp4
        psubw   mm3,mm6                 ; mm3=data2-data5=tmp5

        ; -- Even part

        movq    mm1,mm5
        movq    mm6,mm0
        paddw   mm5,mm7                 ; mm5=tmp10
        paddw   mm0,mm4                 ; mm0=tmp11
        psubw   mm1,mm7                 ; mm1=tmp13
        psubw   mm6,mm4                 ; mm6=tmp12

        movq    mm7,mm5
        paddw   mm5,mm0                 ; mm5=tmp10+tmp11
        psubw   mm7,mm0                 ; mm7=tmp10-tmp11

        paddw   mm5,[GOTOFF(ebx,PW_DESCALE_P2X)]
        paddw   mm7,[GOTOFF(ebx,PW_DESCALE_P2X)]
        psraw   mm5,PASS1_BITS          ; mm5=data0
        psraw   mm7,PASS1_BITS          ; mm7=data4

        movq    MMWORD [MMBLOCK(0,0,edx,SIZEOF_DCTELEM)], mm5
        movq    MMWORD [MMBLOCK(4,0,edx,SIZEOF_DCTELEM)], mm7

        ; (Original)
        ; z1 = (tmp12 + tmp13) * 0.541196100;
        ; data2 = z1 + tmp13 * 0.765366865;
        ; data6 = z1 + tmp12 * -1.847759065;
        ;
        ; (This implementation)
        ; data2 = tmp13 * (0.541196100 + 0.765366865) + tmp12 * 0.541196100;
        ; data6 = tmp13 * 0.541196100 + tmp12 * (0.541196100 - 1.847759065);

        movq      mm4,mm1               ; mm1=tmp13
        movq      mm0,mm1
        punpcklwd mm4,mm6               ; mm6=tmp12
        punpckhwd mm0,mm6
        movq      mm1,mm4
        movq      mm6,mm0
        pmaddwd   mm4,[GOTOFF(ebx,PW_F130_F054)]        ; mm4=data2L
        pmaddwd   mm0,[GOTOFF(ebx,PW_F130_F054)]        ; mm0=data2H
        pmaddwd   mm1,[GOTOFF(ebx,PW_F054_MF130)]       ; mm1=data6L
        pmaddwd   mm6,[GOTOFF(ebx,PW_F054_MF130)]       ; mm6=data6H

        paddd   mm4,[GOTOFF(ebx,PD_DESCALE_P2)]
        paddd   mm0,[GOTOFF(ebx,PD_DESCALE_P2)]
        psrad   mm4,DESCALE_P2
        psrad   mm0,DESCALE_P2
        paddd   mm1,[GOTOFF(ebx,PD_DESCALE_P2)]
        paddd   mm6,[GOTOFF(ebx,PD_DESCALE_P2)]
        psrad   mm1,DESCALE_P2
        psrad   mm6,DESCALE_P2

        packssdw  mm4,mm0               ; mm4=data2
        packssdw  mm1,mm6               ; mm1=data6

        movq    MMWORD [MMBLOCK(2,0,edx,SIZEOF_DCTELEM)], mm4
        movq    MMWORD [MMBLOCK(6,0,edx,SIZEOF_DCTELEM)], mm1

        ; -- Odd part

        movq    mm5, MMWORD [wk(0)]     ; mm5=tmp6
        movq    mm7, MMWORD [wk(1)]     ; mm7=tmp7

        movq    mm0,mm2                 ; mm2=tmp4
        movq    mm6,mm3                 ; mm3=tmp5
        paddw   mm0,mm5                 ; mm0=z3
        paddw   mm6,mm7                 ; mm6=z4

        ; (Original)
        ; z5 = (z3 + z4) * 1.175875602;
        ; z3 = z3 * -1.961570560;  z4 = z4 * -0.390180644;
        ; z3 += z5;  z4 += z5;
        ;
        ; (This implementation)
        ; z3 = z3 * (1.175875602 - 1.961570560) + z4 * 1.175875602;
        ; z4 = z3 * 1.175875602 + z4 * (1.175875602 - 0.390180644);

        movq      mm4,mm0
        movq      mm1,mm0
        punpcklwd mm4,mm6
        punpckhwd mm1,mm6
        movq      mm0,mm4
        movq      mm6,mm1
        pmaddwd   mm4,[GOTOFF(ebx,PW_MF078_F117)]       ; mm4=z3L
        pmaddwd   mm1,[GOTOFF(ebx,PW_MF078_F117)]       ; mm1=z3H
        pmaddwd   mm0,[GOTOFF(ebx,PW_F117_F078)]        ; mm0=z4L
        pmaddwd   mm6,[GOTOFF(ebx,PW_F117_F078)]        ; mm6=z4H

        movq    MMWORD [wk(0)], mm4     ; wk(0)=z3L
        movq    MMWORD [wk(1)], mm1     ; wk(1)=z3H

        ; (Original)
        ; z1 = tmp4 + tmp7;  z2 = tmp5 + tmp6;
        ; tmp4 = tmp4 * 0.298631336;  tmp5 = tmp5 * 2.053119869;
        ; tmp6 = tmp6 * 3.072711026;  tmp7 = tmp7 * 1.501321110;
        ; z1 = z1 * -0.899976223;  z2 = z2 * -2.562915447;
        ; data7 = tmp4 + z1 + z3;  data5 = tmp5 + z2 + z4;
        ; data3 = tmp6 + z2 + z3;  data1 = tmp7 + z1 + z4;
        ;
        ; (This implementation)
        ; tmp4 = tmp4 * (0.298631336 - 0.899976223) + tmp7 * -0.899976223;
        ; tmp5 = tmp5 * (2.053119869 - 2.562915447) + tmp6 * -2.562915447;
        ; tmp6 = tmp5 * -2.562915447 + tmp6 * (3.072711026 - 2.562915447);
        ; tmp7 = tmp4 * -0.899976223 + tmp7 * (1.501321110 - 0.899976223);
        ; data7 = tmp4 + z3;  data5 = tmp5 + z4;
        ; data3 = tmp6 + z3;  data1 = tmp7 + z4;

        movq      mm4,mm2
        movq      mm1,mm2
        punpcklwd mm4,mm7
        punpckhwd mm1,mm7
        movq      mm2,mm4
        movq      mm7,mm1
        pmaddwd   mm4,[GOTOFF(ebx,PW_MF060_MF089)]      ; mm4=tmp4L
        pmaddwd   mm1,[GOTOFF(ebx,PW_MF060_MF089)]      ; mm1=tmp4H
        pmaddwd   mm2,[GOTOFF(ebx,PW_MF089_F060)]       ; mm2=tmp7L
        pmaddwd   mm7,[GOTOFF(ebx,PW_MF089_F060)]       ; mm7=tmp7H

        paddd   mm4, MMWORD [wk(0)]     ; mm4=data7L
        paddd   mm1, MMWORD [wk(1)]     ; mm1=data7H
        paddd   mm2,mm0                 ; mm2=data1L
        paddd   mm7,mm6                 ; mm7=data1H

        paddd   mm4,[GOTOFF(ebx,PD_DESCALE_P2)]
        paddd   mm1,[GOTOFF(ebx,PD_DESCALE_P2)]
        psrad   mm4,DESCALE_P2
        psrad   mm1,DESCALE_P2
        paddd   mm2,[GOTOFF(ebx,PD_DESCALE_P2)]
        paddd   mm7,[GOTOFF(ebx,PD_DESCALE_P2)]
        psrad   mm2,DESCALE_P2
        psrad   mm7,DESCALE_P2

        packssdw  mm4,mm1               ; mm4=data7
        packssdw  mm2,mm7               ; mm2=data1

        movq    MMWORD [MMBLOCK(7,0,edx,SIZEOF_DCTELEM)], mm4
        movq    MMWORD [MMBLOCK(1,0,edx,SIZEOF_DCTELEM)], mm2

        movq      mm1,mm3
        movq      mm7,mm3
        punpcklwd mm1,mm5
        punpckhwd mm7,mm5
        movq      mm3,mm1
        movq      mm5,mm7
        pmaddwd   mm1,[GOTOFF(ebx,PW_MF050_MF256)]      ; mm1=tmp5L
        pmaddwd   mm7,[GOTOFF(ebx,PW_MF050_MF256)]      ; mm7=tmp5H
        pmaddwd   mm3,[GOTOFF(ebx,PW_MF256_F050)]       ; mm3=tmp6L
        pmaddwd   mm5,[GOTOFF(ebx,PW_MF256_F050)]       ; mm5=tmp6H

        paddd   mm1,mm0                 ; mm1=data5L
        paddd   mm7,mm6                 ; mm7=data5H
        paddd   mm3, MMWORD [wk(0)]     ; mm3=data3L
        paddd   mm5, MMWORD [wk(1)]     ; mm5=data3H

        paddd   mm1,[GOTOFF(ebx,PD_DESCALE_P2)]
        paddd   mm7,[GOTOFF(ebx,PD_DESCALE_P2)]
        psrad   mm1,DESCALE_P2
        psrad   mm7,DESCALE_P2
        paddd   mm3,[GOTOFF(ebx,PD_DESCALE_P2)]
        paddd   mm5,[GOTOFF(ebx,PD_DESCALE_P2)]
        psrad   mm3,DESCALE_P2
        psrad   mm5,DESCALE_P2

        packssdw  mm1,mm7               ; mm1=data5
        packssdw  mm3,mm5               ; mm3=data3

        movq    MMWORD [MMBLOCK(5,0,edx,SIZEOF_DCTELEM)], mm1
        movq    MMWORD [MMBLOCK(3,0,edx,SIZEOF_DCTELEM)], mm3

        add     edx, byte 4*SIZEOF_DCTELEM
        dec     ecx
        jnz     near .columnloop

        emms            ; empty MMX state

;       pop     edi             ; unused
;       pop     esi             ; unused
;       pop     edx             ; need not be preserved
;       pop     ecx             ; need not be preserved
        poppic  ebx
        mov     esp,ebp         ; esp <- aligned ebp
        pop     esp             ; esp <- original ebp
        pop     ebp
        ret

; For some reason, the OS X linker does not honor the request to align the
; segment unless we do this.
        align   16
