;
; jfdctint.asm - accurate integer FDCT (MMX)
;
; Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
;
; Based on
; 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)

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)

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
