;
; jidctint.asm - accurate integer IDCT (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
; inverse DCT (Discrete Cosine Transform). The following code is based
; directly on the IJG's original jidctint.c; see the jidctint.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+3)

%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_idct_islow_mmx)

EXTN(jconst_idct_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)
PB_CENTERJSAMP  times 8 db  CENTERJSAMPLE

        alignz  16

; --------------------------------------------------------------------------
        SECTION SEG_TEXT
        BITS    32
;
; Perform dequantization and inverse DCT on one block of coefficients.
;
; GLOBAL(void)
; jsimd_idct_islow_mmx (void *dct_table, JCOEFPTR coef_block,
;                       JSAMPARRAY output_buf, JDIMENSION output_col)
;

%define dct_table(b)    (b)+8           ; jpeg_component_info *compptr
%define coef_block(b)   (b)+12          ; JCOEFPTR coef_block
%define output_buf(b)   (b)+16          ; JSAMPARRAY output_buf
%define output_col(b)   (b)+20          ; JDIMENSION output_col

%define original_ebp    ebp+0
%define wk(i)           ebp-(WK_NUM-(i))*SIZEOF_MMWORD  ; mmword wk[WK_NUM]
%define WK_NUM          12
%define workspace       wk(0)-DCTSIZE2*SIZEOF_JCOEF
                                        ; JCOEF workspace[DCTSIZE2]

        align   16
        global  EXTN(jsimd_idct_islow_mmx)

EXTN(jsimd_idct_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, [workspace]
        push    ebx
;       push    ecx             ; need not be preserved
;       push    edx             ; need not be preserved
        push    esi
        push    edi

        get_GOT ebx             ; get GOT address

        ; ---- Pass 1: process columns from input, store into work array.

;       mov     eax, [original_ebp]
        mov     edx, POINTER [dct_table(eax)]           ; quantptr
        mov     esi, JCOEFPTR [coef_block(eax)]         ; inptr
        lea     edi, [workspace]                        ; JCOEF *wsptr
        mov     ecx, DCTSIZE/4                          ; ctr
        alignx  16,7
.columnloop:
%ifndef NO_ZERO_COLUMN_TEST_ISLOW_MMX
        mov     eax, DWORD [DWBLOCK(1,0,esi,SIZEOF_JCOEF)]
        or      eax, DWORD [DWBLOCK(2,0,esi,SIZEOF_JCOEF)]
        jnz     short .columnDCT

        movq    mm0, MMWORD [MMBLOCK(1,0,esi,SIZEOF_JCOEF)]
        movq    mm1, MMWORD [MMBLOCK(2,0,esi,SIZEOF_JCOEF)]
        por     mm0, MMWORD [MMBLOCK(3,0,esi,SIZEOF_JCOEF)]
        por     mm1, MMWORD [MMBLOCK(4,0,esi,SIZEOF_JCOEF)]
        por     mm0, MMWORD [MMBLOCK(5,0,esi,SIZEOF_JCOEF)]
        por     mm1, MMWORD [MMBLOCK(6,0,esi,SIZEOF_JCOEF)]
        por     mm0, MMWORD [MMBLOCK(7,0,esi,SIZEOF_JCOEF)]
        por     mm1,mm0
        packsswb mm1,mm1
        movd    eax,mm1
        test    eax,eax
        jnz     short .columnDCT

        ; -- AC terms all zero

        movq    mm0, MMWORD [MMBLOCK(0,0,esi,SIZEOF_JCOEF)]
        pmullw  mm0, MMWORD [MMBLOCK(0,0,edx,SIZEOF_ISLOW_MULT_TYPE)]

        psllw   mm0,PASS1_BITS

        movq      mm2,mm0               ; mm0=in0=(00 01 02 03)
        punpcklwd mm0,mm0               ; mm0=(00 00 01 01)
        punpckhwd mm2,mm2               ; mm2=(02 02 03 03)

        movq      mm1,mm0
        punpckldq mm0,mm0               ; mm0=(00 00 00 00)
        punpckhdq mm1,mm1               ; mm1=(01 01 01 01)
        movq      mm3,mm2
        punpckldq mm2,mm2               ; mm2=(02 02 02 02)
        punpckhdq mm3,mm3               ; mm3=(03 03 03 03)

        movq    MMWORD [MMBLOCK(0,0,edi,SIZEOF_JCOEF)], mm0
        movq    MMWORD [MMBLOCK(0,1,edi,SIZEOF_JCOEF)], mm0
        movq    MMWORD [MMBLOCK(1,0,edi,SIZEOF_JCOEF)], mm1
        movq    MMWORD [MMBLOCK(1,1,edi,SIZEOF_JCOEF)], mm1
        movq    MMWORD [MMBLOCK(2,0,edi,SIZEOF_JCOEF)], mm2
        movq    MMWORD [MMBLOCK(2,1,edi,SIZEOF_JCOEF)], mm2
        movq    MMWORD [MMBLOCK(3,0,edi,SIZEOF_JCOEF)], mm3
        movq    MMWORD [MMBLOCK(3,1,edi,SIZEOF_JCOEF)], mm3
        jmp     near .nextcolumn
        alignx  16,7
%endif
.columnDCT:

        ; -- Even part

        movq    mm0, MMWORD [MMBLOCK(0,0,esi,SIZEOF_JCOEF)]
        movq    mm1, MMWORD [MMBLOCK(2,0,esi,SIZEOF_JCOEF)]
        pmullw  mm0, MMWORD [MMBLOCK(0,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
        pmullw  mm1, MMWORD [MMBLOCK(2,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
        movq    mm2, MMWORD [MMBLOCK(4,0,esi,SIZEOF_JCOEF)]
        movq    mm3, MMWORD [MMBLOCK(6,0,esi,SIZEOF_JCOEF)]
        pmullw  mm2, MMWORD [MMBLOCK(4,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
        pmullw  mm3, MMWORD [MMBLOCK(6,0,edx,SIZEOF_ISLOW_MULT_TYPE)]

        ; (Original)
        ; z1 = (z2 + z3) * 0.541196100;
        ; tmp2 = z1 + z3 * -1.847759065;
        ; tmp3 = z1 + z2 * 0.765366865;
        ;
        ; (This implementation)
        ; tmp2 = z2 * 0.541196100 + z3 * (0.541196100 - 1.847759065);
        ; tmp3 = z2 * (0.541196100 + 0.765366865) + z3 * 0.541196100;

        movq      mm4,mm1               ; mm1=in2=z2
        movq      mm5,mm1
        punpcklwd mm4,mm3               ; mm3=in6=z3
        punpckhwd mm5,mm3
        movq      mm1,mm4
        movq      mm3,mm5
        pmaddwd   mm4,[GOTOFF(ebx,PW_F130_F054)]        ; mm4=tmp3L
        pmaddwd   mm5,[GOTOFF(ebx,PW_F130_F054)]        ; mm5=tmp3H
        pmaddwd   mm1,[GOTOFF(ebx,PW_F054_MF130)]       ; mm1=tmp2L
        pmaddwd   mm3,[GOTOFF(ebx,PW_F054_MF130)]       ; mm3=tmp2H

        movq      mm6,mm0
        paddw     mm0,mm2               ; mm0=in0+in4
        psubw     mm6,mm2               ; mm6=in0-in4

        pxor      mm7,mm7
        pxor      mm2,mm2
        punpcklwd mm7,mm0               ; mm7=tmp0L
        punpckhwd mm2,mm0               ; mm2=tmp0H
        psrad     mm7,(16-CONST_BITS)   ; psrad mm7,16 & pslld mm7,CONST_BITS
        psrad     mm2,(16-CONST_BITS)   ; psrad mm2,16 & pslld mm2,CONST_BITS

        movq    mm0,mm7
        paddd   mm7,mm4                 ; mm7=tmp10L
        psubd   mm0,mm4                 ; mm0=tmp13L
        movq    mm4,mm2
        paddd   mm2,mm5                 ; mm2=tmp10H
        psubd   mm4,mm5                 ; mm4=tmp13H

        movq    MMWORD [wk(0)], mm7     ; wk(0)=tmp10L
        movq    MMWORD [wk(1)], mm2     ; wk(1)=tmp10H
        movq    MMWORD [wk(2)], mm0     ; wk(2)=tmp13L
        movq    MMWORD [wk(3)], mm4     ; wk(3)=tmp13H

        pxor      mm5,mm5
        pxor      mm7,mm7
        punpcklwd mm5,mm6               ; mm5=tmp1L
        punpckhwd mm7,mm6               ; mm7=tmp1H
        psrad     mm5,(16-CONST_BITS)   ; psrad mm5,16 & pslld mm5,CONST_BITS
        psrad     mm7,(16-CONST_BITS)   ; psrad mm7,16 & pslld mm7,CONST_BITS

        movq    mm2,mm5
        paddd   mm5,mm1                 ; mm5=tmp11L
        psubd   mm2,mm1                 ; mm2=tmp12L
        movq    mm0,mm7
        paddd   mm7,mm3                 ; mm7=tmp11H
        psubd   mm0,mm3                 ; mm0=tmp12H

        movq    MMWORD [wk(4)], mm5     ; wk(4)=tmp11L
        movq    MMWORD [wk(5)], mm7     ; wk(5)=tmp11H
        movq    MMWORD [wk(6)], mm2     ; wk(6)=tmp12L
        movq    MMWORD [wk(7)], mm0     ; wk(7)=tmp12H

        ; -- Odd part

        movq    mm4, MMWORD [MMBLOCK(1,0,esi,SIZEOF_JCOEF)]
        movq    mm6, MMWORD [MMBLOCK(3,0,esi,SIZEOF_JCOEF)]
        pmullw  mm4, MMWORD [MMBLOCK(1,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
        pmullw  mm6, MMWORD [MMBLOCK(3,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
        movq    mm1, MMWORD [MMBLOCK(5,0,esi,SIZEOF_JCOEF)]
        movq    mm3, MMWORD [MMBLOCK(7,0,esi,SIZEOF_JCOEF)]
        pmullw  mm1, MMWORD [MMBLOCK(5,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
        pmullw  mm3, MMWORD [MMBLOCK(7,0,edx,SIZEOF_ISLOW_MULT_TYPE)]

        movq    mm5,mm6
        movq    mm7,mm4
        paddw   mm5,mm3                 ; mm5=z3
        paddw   mm7,mm1                 ; mm7=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      mm2,mm5
        movq      mm0,mm5
        punpcklwd mm2,mm7
        punpckhwd mm0,mm7
        movq      mm5,mm2
        movq      mm7,mm0
        pmaddwd   mm2,[GOTOFF(ebx,PW_MF078_F117)]       ; mm2=z3L
        pmaddwd   mm0,[GOTOFF(ebx,PW_MF078_F117)]       ; mm0=z3H
        pmaddwd   mm5,[GOTOFF(ebx,PW_F117_F078)]        ; mm5=z4L
        pmaddwd   mm7,[GOTOFF(ebx,PW_F117_F078)]        ; mm7=z4H

        movq    MMWORD [wk(10)], mm2    ; wk(10)=z3L
        movq    MMWORD [wk(11)], mm0    ; wk(11)=z3H

        ; (Original)
        ; z1 = tmp0 + tmp3;  z2 = tmp1 + tmp2;
        ; tmp0 = tmp0 * 0.298631336;  tmp1 = tmp1 * 2.053119869;
        ; tmp2 = tmp2 * 3.072711026;  tmp3 = tmp3 * 1.501321110;
        ; z1 = z1 * -0.899976223;  z2 = z2 * -2.562915447;
        ; tmp0 += z1 + z3;  tmp1 += z2 + z4;
        ; tmp2 += z2 + z3;  tmp3 += z1 + z4;
        ;
        ; (This implementation)
        ; tmp0 = tmp0 * (0.298631336 - 0.899976223) + tmp3 * -0.899976223;
        ; tmp1 = tmp1 * (2.053119869 - 2.562915447) + tmp2 * -2.562915447;
        ; tmp2 = tmp1 * -2.562915447 + tmp2 * (3.072711026 - 2.562915447);
        ; tmp3 = tmp0 * -0.899976223 + tmp3 * (1.501321110 - 0.899976223);
        ; tmp0 += z3;  tmp1 += z4;
        ; tmp2 += z3;  tmp3 += z4;

        movq      mm2,mm3
        movq      mm0,mm3
        punpcklwd mm2,mm4
        punpckhwd mm0,mm4
        movq      mm3,mm2
        movq      mm4,mm0
        pmaddwd   mm2,[GOTOFF(ebx,PW_MF060_MF089)]      ; mm2=tmp0L
        pmaddwd   mm0,[GOTOFF(ebx,PW_MF060_MF089)]      ; mm0=tmp0H
        pmaddwd   mm3,[GOTOFF(ebx,PW_MF089_F060)]       ; mm3=tmp3L
        pmaddwd   mm4,[GOTOFF(ebx,PW_MF089_F060)]       ; mm4=tmp3H

        paddd   mm2, MMWORD [wk(10)]    ; mm2=tmp0L
        paddd   mm0, MMWORD [wk(11)]    ; mm0=tmp0H
        paddd   mm3,mm5                 ; mm3=tmp3L
        paddd   mm4,mm7                 ; mm4=tmp3H

        movq    MMWORD [wk(8)], mm2     ; wk(8)=tmp0L
        movq    MMWORD [wk(9)], mm0     ; wk(9)=tmp0H

        movq      mm2,mm1
        movq      mm0,mm1
        punpcklwd mm2,mm6
        punpckhwd mm0,mm6
        movq      mm1,mm2
        movq      mm6,mm0
        pmaddwd   mm2,[GOTOFF(ebx,PW_MF050_MF256)]      ; mm2=tmp1L
        pmaddwd   mm0,[GOTOFF(ebx,PW_MF050_MF256)]      ; mm0=tmp1H
        pmaddwd   mm1,[GOTOFF(ebx,PW_MF256_F050)]       ; mm1=tmp2L
        pmaddwd   mm6,[GOTOFF(ebx,PW_MF256_F050)]       ; mm6=tmp2H

        paddd   mm2,mm5                 ; mm2=tmp1L
        paddd   mm0,mm7                 ; mm0=tmp1H
        paddd   mm1, MMWORD [wk(10)]    ; mm1=tmp2L
        paddd   mm6, MMWORD [wk(11)]    ; mm6=tmp2H

        movq    MMWORD [wk(10)], mm2    ; wk(10)=tmp1L
        movq    MMWORD [wk(11)], mm0    ; wk(11)=tmp1H

        ; -- Final output stage

        movq    mm5, MMWORD [wk(0)]     ; mm5=tmp10L
        movq    mm7, MMWORD [wk(1)]     ; mm7=tmp10H

        movq    mm2,mm5
        movq    mm0,mm7
        paddd   mm5,mm3                 ; mm5=data0L
        paddd   mm7,mm4                 ; mm7=data0H
        psubd   mm2,mm3                 ; mm2=data7L
        psubd   mm0,mm4                 ; mm0=data7H

        movq    mm3,[GOTOFF(ebx,PD_DESCALE_P1)] ; mm3=[PD_DESCALE_P1]

        paddd   mm5,mm3
        paddd   mm7,mm3
        psrad   mm5,DESCALE_P1
        psrad   mm7,DESCALE_P1
        paddd   mm2,mm3
        paddd   mm0,mm3
        psrad   mm2,DESCALE_P1
        psrad   mm0,DESCALE_P1

        packssdw  mm5,mm7               ; mm5=data0=(00 01 02 03)
        packssdw  mm2,mm0               ; mm2=data7=(70 71 72 73)

        movq    mm4, MMWORD [wk(4)]     ; mm4=tmp11L
        movq    mm3, MMWORD [wk(5)]     ; mm3=tmp11H

        movq    mm7,mm4
        movq    mm0,mm3
        paddd   mm4,mm1                 ; mm4=data1L
        paddd   mm3,mm6                 ; mm3=data1H
        psubd   mm7,mm1                 ; mm7=data6L
        psubd   mm0,mm6                 ; mm0=data6H

        movq    mm1,[GOTOFF(ebx,PD_DESCALE_P1)] ; mm1=[PD_DESCALE_P1]

        paddd   mm4,mm1
        paddd   mm3,mm1
        psrad   mm4,DESCALE_P1
        psrad   mm3,DESCALE_P1
        paddd   mm7,mm1
        paddd   mm0,mm1
        psrad   mm7,DESCALE_P1
        psrad   mm0,DESCALE_P1

        packssdw  mm4,mm3               ; mm4=data1=(10 11 12 13)
        packssdw  mm7,mm0               ; mm7=data6=(60 61 62 63)

        movq      mm6,mm5               ; transpose coefficients(phase 1)
        punpcklwd mm5,mm4               ; mm5=(00 10 01 11)
        punpckhwd mm6,mm4               ; mm6=(02 12 03 13)
        movq      mm1,mm7               ; transpose coefficients(phase 1)
        punpcklwd mm7,mm2               ; mm7=(60 70 61 71)
        punpckhwd mm1,mm2               ; mm1=(62 72 63 73)

        movq    mm3, MMWORD [wk(6)]     ; mm3=tmp12L
        movq    mm0, MMWORD [wk(7)]     ; mm0=tmp12H
        movq    mm4, MMWORD [wk(10)]    ; mm4=tmp1L
        movq    mm2, MMWORD [wk(11)]    ; mm2=tmp1H

        movq    MMWORD [wk(0)], mm5     ; wk(0)=(00 10 01 11)
        movq    MMWORD [wk(1)], mm6     ; wk(1)=(02 12 03 13)
        movq    MMWORD [wk(4)], mm7     ; wk(4)=(60 70 61 71)
        movq    MMWORD [wk(5)], mm1     ; wk(5)=(62 72 63 73)

        movq    mm5,mm3
        movq    mm6,mm0
        paddd   mm3,mm4                 ; mm3=data2L
        paddd   mm0,mm2                 ; mm0=data2H
        psubd   mm5,mm4                 ; mm5=data5L
        psubd   mm6,mm2                 ; mm6=data5H

        movq    mm7,[GOTOFF(ebx,PD_DESCALE_P1)] ; mm7=[PD_DESCALE_P1]

        paddd   mm3,mm7
        paddd   mm0,mm7
        psrad   mm3,DESCALE_P1
        psrad   mm0,DESCALE_P1
        paddd   mm5,mm7
        paddd   mm6,mm7
        psrad   mm5,DESCALE_P1
        psrad   mm6,DESCALE_P1

        packssdw  mm3,mm0               ; mm3=data2=(20 21 22 23)
        packssdw  mm5,mm6               ; mm5=data5=(50 51 52 53)

        movq    mm1, MMWORD [wk(2)]     ; mm1=tmp13L
        movq    mm4, MMWORD [wk(3)]     ; mm4=tmp13H
        movq    mm2, MMWORD [wk(8)]     ; mm2=tmp0L
        movq    mm7, MMWORD [wk(9)]     ; mm7=tmp0H

        movq    mm0,mm1
        movq    mm6,mm4
        paddd   mm1,mm2                 ; mm1=data3L
        paddd   mm4,mm7                 ; mm4=data3H
        psubd   mm0,mm2                 ; mm0=data4L
        psubd   mm6,mm7                 ; mm6=data4H

        movq    mm2,[GOTOFF(ebx,PD_DESCALE_P1)] ; mm2=[PD_DESCALE_P1]

        paddd   mm1,mm2
        paddd   mm4,mm2
        psrad   mm1,DESCALE_P1
        psrad   mm4,DESCALE_P1
        paddd   mm0,mm2
        paddd   mm6,mm2
        psrad   mm0,DESCALE_P1
        psrad   mm6,DESCALE_P1

        packssdw  mm1,mm4               ; mm1=data3=(30 31 32 33)
        packssdw  mm0,mm6               ; mm0=data4=(40 41 42 43)

        movq    mm7, MMWORD [wk(0)]     ; mm7=(00 10 01 11)
        movq    mm2, MMWORD [wk(1)]     ; mm2=(02 12 03 13)

        movq      mm4,mm3               ; transpose coefficients(phase 1)
        punpcklwd mm3,mm1               ; mm3=(20 30 21 31)
        punpckhwd mm4,mm1               ; mm4=(22 32 23 33)
        movq      mm6,mm0               ; transpose coefficients(phase 1)
        punpcklwd mm0,mm5               ; mm0=(40 50 41 51)
        punpckhwd mm6,mm5               ; mm6=(42 52 43 53)

        movq      mm1,mm7               ; transpose coefficients(phase 2)
        punpckldq mm7,mm3               ; mm7=(00 10 20 30)
        punpckhdq mm1,mm3               ; mm1=(01 11 21 31)
        movq      mm5,mm2               ; transpose coefficients(phase 2)
        punpckldq mm2,mm4               ; mm2=(02 12 22 32)
        punpckhdq mm5,mm4               ; mm5=(03 13 23 33)

        movq    mm3, MMWORD [wk(4)]     ; mm3=(60 70 61 71)
        movq    mm4, MMWORD [wk(5)]     ; mm4=(62 72 63 73)

        movq    MMWORD [MMBLOCK(0,0,edi,SIZEOF_JCOEF)], mm7
        movq    MMWORD [MMBLOCK(1,0,edi,SIZEOF_JCOEF)], mm1
        movq    MMWORD [MMBLOCK(2,0,edi,SIZEOF_JCOEF)], mm2
        movq    MMWORD [MMBLOCK(3,0,edi,SIZEOF_JCOEF)], mm5

        movq      mm7,mm0               ; transpose coefficients(phase 2)
        punpckldq mm0,mm3               ; mm0=(40 50 60 70)
        punpckhdq mm7,mm3               ; mm7=(41 51 61 71)
        movq      mm1,mm6               ; transpose coefficients(phase 2)
        punpckldq mm6,mm4               ; mm6=(42 52 62 72)
        punpckhdq mm1,mm4               ; mm1=(43 53 63 73)

        movq    MMWORD [MMBLOCK(0,1,edi,SIZEOF_JCOEF)], mm0
        movq    MMWORD [MMBLOCK(1,1,edi,SIZEOF_JCOEF)], mm7
        movq    MMWORD [MMBLOCK(2,1,edi,SIZEOF_JCOEF)], mm6
        movq    MMWORD [MMBLOCK(3,1,edi,SIZEOF_JCOEF)], mm1

.nextcolumn:
        add     esi, byte 4*SIZEOF_JCOEF                ; coef_block
        add     edx, byte 4*SIZEOF_ISLOW_MULT_TYPE      ; quantptr
        add     edi, byte 4*DCTSIZE*SIZEOF_JCOEF        ; wsptr
        dec     ecx                                     ; ctr
        jnz     near .columnloop

        ; ---- Pass 2: process rows from work array, store into output array.

        mov     eax, [original_ebp]
        lea     esi, [workspace]                        ; JCOEF *wsptr
        mov     edi, JSAMPARRAY [output_buf(eax)]       ; (JSAMPROW *)
        mov     eax, JDIMENSION [output_col(eax)]
        mov     ecx, DCTSIZE/4                          ; ctr
        alignx  16,7
.rowloop:

        ; -- Even part

        movq    mm0, MMWORD [MMBLOCK(0,0,esi,SIZEOF_JCOEF)]
        movq    mm1, MMWORD [MMBLOCK(2,0,esi,SIZEOF_JCOEF)]
        movq    mm2, MMWORD [MMBLOCK(4,0,esi,SIZEOF_JCOEF)]
        movq    mm3, MMWORD [MMBLOCK(6,0,esi,SIZEOF_JCOEF)]

        ; (Original)
        ; z1 = (z2 + z3) * 0.541196100;
        ; tmp2 = z1 + z3 * -1.847759065;
        ; tmp3 = z1 + z2 * 0.765366865;
        ;
        ; (This implementation)
        ; tmp2 = z2 * 0.541196100 + z3 * (0.541196100 - 1.847759065);
        ; tmp3 = z2 * (0.541196100 + 0.765366865) + z3 * 0.541196100;

        movq      mm4,mm1               ; mm1=in2=z2
        movq      mm5,mm1
        punpcklwd mm4,mm3               ; mm3=in6=z3
        punpckhwd mm5,mm3
        movq      mm1,mm4
        movq      mm3,mm5
        pmaddwd   mm4,[GOTOFF(ebx,PW_F130_F054)]        ; mm4=tmp3L
        pmaddwd   mm5,[GOTOFF(ebx,PW_F130_F054)]        ; mm5=tmp3H
        pmaddwd   mm1,[GOTOFF(ebx,PW_F054_MF130)]       ; mm1=tmp2L
        pmaddwd   mm3,[GOTOFF(ebx,PW_F054_MF130)]       ; mm3=tmp2H

        movq      mm6,mm0
        paddw     mm0,mm2               ; mm0=in0+in4
        psubw     mm6,mm2               ; mm6=in0-in4

        pxor      mm7,mm7
        pxor      mm2,mm2
        punpcklwd mm7,mm0               ; mm7=tmp0L
        punpckhwd mm2,mm0               ; mm2=tmp0H
        psrad     mm7,(16-CONST_BITS)   ; psrad mm7,16 & pslld mm7,CONST_BITS
        psrad     mm2,(16-CONST_BITS)   ; psrad mm2,16 & pslld mm2,CONST_BITS

        movq    mm0,mm7
        paddd   mm7,mm4                 ; mm7=tmp10L
        psubd   mm0,mm4                 ; mm0=tmp13L
        movq    mm4,mm2
        paddd   mm2,mm5                 ; mm2=tmp10H
        psubd   mm4,mm5                 ; mm4=tmp13H

        movq    MMWORD [wk(0)], mm7     ; wk(0)=tmp10L
        movq    MMWORD [wk(1)], mm2     ; wk(1)=tmp10H
        movq    MMWORD [wk(2)], mm0     ; wk(2)=tmp13L
        movq    MMWORD [wk(3)], mm4     ; wk(3)=tmp13H

        pxor      mm5,mm5
        pxor      mm7,mm7
        punpcklwd mm5,mm6               ; mm5=tmp1L
        punpckhwd mm7,mm6               ; mm7=tmp1H
        psrad     mm5,(16-CONST_BITS)   ; psrad mm5,16 & pslld mm5,CONST_BITS
        psrad     mm7,(16-CONST_BITS)   ; psrad mm7,16 & pslld mm7,CONST_BITS

        movq    mm2,mm5
        paddd   mm5,mm1                 ; mm5=tmp11L
        psubd   mm2,mm1                 ; mm2=tmp12L
        movq    mm0,mm7
        paddd   mm7,mm3                 ; mm7=tmp11H
        psubd   mm0,mm3                 ; mm0=tmp12H

        movq    MMWORD [wk(4)], mm5     ; wk(4)=tmp11L
        movq    MMWORD [wk(5)], mm7     ; wk(5)=tmp11H
        movq    MMWORD [wk(6)], mm2     ; wk(6)=tmp12L
        movq    MMWORD [wk(7)], mm0     ; wk(7)=tmp12H

        ; -- Odd part

        movq    mm4, MMWORD [MMBLOCK(1,0,esi,SIZEOF_JCOEF)]
        movq    mm6, MMWORD [MMBLOCK(3,0,esi,SIZEOF_JCOEF)]
        movq    mm1, MMWORD [MMBLOCK(5,0,esi,SIZEOF_JCOEF)]
        movq    mm3, MMWORD [MMBLOCK(7,0,esi,SIZEOF_JCOEF)]

        movq    mm5,mm6
        movq    mm7,mm4
        paddw   mm5,mm3                 ; mm5=z3
        paddw   mm7,mm1                 ; mm7=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      mm2,mm5
        movq      mm0,mm5
        punpcklwd mm2,mm7
        punpckhwd mm0,mm7
        movq      mm5,mm2
        movq      mm7,mm0
        pmaddwd   mm2,[GOTOFF(ebx,PW_MF078_F117)]       ; mm2=z3L
        pmaddwd   mm0,[GOTOFF(ebx,PW_MF078_F117)]       ; mm0=z3H
        pmaddwd   mm5,[GOTOFF(ebx,PW_F117_F078)]        ; mm5=z4L
        pmaddwd   mm7,[GOTOFF(ebx,PW_F117_F078)]        ; mm7=z4H

        movq    MMWORD [wk(10)], mm2    ; wk(10)=z3L
        movq    MMWORD [wk(11)], mm0    ; wk(11)=z3H

        ; (Original)
        ; z1 = tmp0 + tmp3;  z2 = tmp1 + tmp2;
        ; tmp0 = tmp0 * 0.298631336;  tmp1 = tmp1 * 2.053119869;
        ; tmp2 = tmp2 * 3.072711026;  tmp3 = tmp3 * 1.501321110;
        ; z1 = z1 * -0.899976223;  z2 = z2 * -2.562915447;
        ; tmp0 += z1 + z3;  tmp1 += z2 + z4;
        ; tmp2 += z2 + z3;  tmp3 += z1 + z4;
        ;
        ; (This implementation)
        ; tmp0 = tmp0 * (0.298631336 - 0.899976223) + tmp3 * -0.899976223;
        ; tmp1 = tmp1 * (2.053119869 - 2.562915447) + tmp2 * -2.562915447;
        ; tmp2 = tmp1 * -2.562915447 + tmp2 * (3.072711026 - 2.562915447);
        ; tmp3 = tmp0 * -0.899976223 + tmp3 * (1.501321110 - 0.899976223);
        ; tmp0 += z3;  tmp1 += z4;
        ; tmp2 += z3;  tmp3 += z4;

        movq      mm2,mm3
        movq      mm0,mm3
        punpcklwd mm2,mm4
        punpckhwd mm0,mm4
        movq      mm3,mm2
        movq      mm4,mm0
        pmaddwd   mm2,[GOTOFF(ebx,PW_MF060_MF089)]      ; mm2=tmp0L
        pmaddwd   mm0,[GOTOFF(ebx,PW_MF060_MF089)]      ; mm0=tmp0H
        pmaddwd   mm3,[GOTOFF(ebx,PW_MF089_F060)]       ; mm3=tmp3L
        pmaddwd   mm4,[GOTOFF(ebx,PW_MF089_F060)]       ; mm4=tmp3H

        paddd   mm2, MMWORD [wk(10)]    ; mm2=tmp0L
        paddd   mm0, MMWORD [wk(11)]    ; mm0=tmp0H
        paddd   mm3,mm5                 ; mm3=tmp3L
        paddd   mm4,mm7                 ; mm4=tmp3H

        movq    MMWORD [wk(8)], mm2     ; wk(8)=tmp0L
        movq    MMWORD [wk(9)], mm0     ; wk(9)=tmp0H

        movq      mm2,mm1
        movq      mm0,mm1
        punpcklwd mm2,mm6
        punpckhwd mm0,mm6
        movq      mm1,mm2
        movq      mm6,mm0
        pmaddwd   mm2,[GOTOFF(ebx,PW_MF050_MF256)]      ; mm2=tmp1L
        pmaddwd   mm0,[GOTOFF(ebx,PW_MF050_MF256)]      ; mm0=tmp1H
        pmaddwd   mm1,[GOTOFF(ebx,PW_MF256_F050)]       ; mm1=tmp2L
        pmaddwd   mm6,[GOTOFF(ebx,PW_MF256_F050)]       ; mm6=tmp2H

        paddd   mm2,mm5                 ; mm2=tmp1L
        paddd   mm0,mm7                 ; mm0=tmp1H
        paddd   mm1, MMWORD [wk(10)]    ; mm1=tmp2L
        paddd   mm6, MMWORD [wk(11)]    ; mm6=tmp2H

        movq    MMWORD [wk(10)], mm2    ; wk(10)=tmp1L
        movq    MMWORD [wk(11)], mm0    ; wk(11)=tmp1H

        ; -- Final output stage

        movq    mm5, MMWORD [wk(0)]     ; mm5=tmp10L
        movq    mm7, MMWORD [wk(1)]     ; mm7=tmp10H

        movq    mm2,mm5
        movq    mm0,mm7
        paddd   mm5,mm3                 ; mm5=data0L
        paddd   mm7,mm4                 ; mm7=data0H
        psubd   mm2,mm3                 ; mm2=data7L
        psubd   mm0,mm4                 ; mm0=data7H

        movq    mm3,[GOTOFF(ebx,PD_DESCALE_P2)] ; mm3=[PD_DESCALE_P2]

        paddd   mm5,mm3
        paddd   mm7,mm3
        psrad   mm5,DESCALE_P2
        psrad   mm7,DESCALE_P2
        paddd   mm2,mm3
        paddd   mm0,mm3
        psrad   mm2,DESCALE_P2
        psrad   mm0,DESCALE_P2

        packssdw  mm5,mm7               ; mm5=data0=(00 10 20 30)
        packssdw  mm2,mm0               ; mm2=data7=(07 17 27 37)

        movq    mm4, MMWORD [wk(4)]     ; mm4=tmp11L
        movq    mm3, MMWORD [wk(5)]     ; mm3=tmp11H

        movq    mm7,mm4
        movq    mm0,mm3
        paddd   mm4,mm1                 ; mm4=data1L
        paddd   mm3,mm6                 ; mm3=data1H
        psubd   mm7,mm1                 ; mm7=data6L
        psubd   mm0,mm6                 ; mm0=data6H

        movq    mm1,[GOTOFF(ebx,PD_DESCALE_P2)] ; mm1=[PD_DESCALE_P2]

        paddd   mm4,mm1
        paddd   mm3,mm1
        psrad   mm4,DESCALE_P2
        psrad   mm3,DESCALE_P2
        paddd   mm7,mm1
        paddd   mm0,mm1
        psrad   mm7,DESCALE_P2
        psrad   mm0,DESCALE_P2

        packssdw  mm4,mm3               ; mm4=data1=(01 11 21 31)
        packssdw  mm7,mm0               ; mm7=data6=(06 16 26 36)

        packsswb  mm5,mm7               ; mm5=(00 10 20 30 06 16 26 36)
        packsswb  mm4,mm2               ; mm4=(01 11 21 31 07 17 27 37)

        movq    mm6, MMWORD [wk(6)]     ; mm6=tmp12L
        movq    mm1, MMWORD [wk(7)]     ; mm1=tmp12H
        movq    mm3, MMWORD [wk(10)]    ; mm3=tmp1L
        movq    mm0, MMWORD [wk(11)]    ; mm0=tmp1H

        movq    MMWORD [wk(0)], mm5     ; wk(0)=(00 10 20 30 06 16 26 36)
        movq    MMWORD [wk(1)], mm4     ; wk(1)=(01 11 21 31 07 17 27 37)

        movq    mm7,mm6
        movq    mm2,mm1
        paddd   mm6,mm3                 ; mm6=data2L
        paddd   mm1,mm0                 ; mm1=data2H
        psubd   mm7,mm3                 ; mm7=data5L
        psubd   mm2,mm0                 ; mm2=data5H

        movq    mm5,[GOTOFF(ebx,PD_DESCALE_P2)] ; mm5=[PD_DESCALE_P2]

        paddd   mm6,mm5
        paddd   mm1,mm5
        psrad   mm6,DESCALE_P2
        psrad   mm1,DESCALE_P2
        paddd   mm7,mm5
        paddd   mm2,mm5
        psrad   mm7,DESCALE_P2
        psrad   mm2,DESCALE_P2

        packssdw  mm6,mm1               ; mm6=data2=(02 12 22 32)
        packssdw  mm7,mm2               ; mm7=data5=(05 15 25 35)

        movq    mm4, MMWORD [wk(2)]     ; mm4=tmp13L
        movq    mm3, MMWORD [wk(3)]     ; mm3=tmp13H
        movq    mm0, MMWORD [wk(8)]     ; mm0=tmp0L
        movq    mm5, MMWORD [wk(9)]     ; mm5=tmp0H

        movq    mm1,mm4
        movq    mm2,mm3
        paddd   mm4,mm0                 ; mm4=data3L
        paddd   mm3,mm5                 ; mm3=data3H
        psubd   mm1,mm0                 ; mm1=data4L
        psubd   mm2,mm5                 ; mm2=data4H

        movq    mm0,[GOTOFF(ebx,PD_DESCALE_P2)] ; mm0=[PD_DESCALE_P2]

        paddd   mm4,mm0
        paddd   mm3,mm0
        psrad   mm4,DESCALE_P2
        psrad   mm3,DESCALE_P2
        paddd   mm1,mm0
        paddd   mm2,mm0
        psrad   mm1,DESCALE_P2
        psrad   mm2,DESCALE_P2

        movq      mm5,[GOTOFF(ebx,PB_CENTERJSAMP)]      ; mm5=[PB_CENTERJSAMP]

        packssdw  mm4,mm3               ; mm4=data3=(03 13 23 33)
        packssdw  mm1,mm2               ; mm1=data4=(04 14 24 34)

        movq      mm0, MMWORD [wk(0)]   ; mm0=(00 10 20 30 06 16 26 36)
        movq      mm3, MMWORD [wk(1)]   ; mm3=(01 11 21 31 07 17 27 37)

        packsswb  mm6,mm1               ; mm6=(02 12 22 32 04 14 24 34)
        packsswb  mm4,mm7               ; mm4=(03 13 23 33 05 15 25 35)

        paddb     mm0,mm5
        paddb     mm3,mm5
        paddb     mm6,mm5
        paddb     mm4,mm5

        movq      mm2,mm0               ; transpose coefficients(phase 1)
        punpcklbw mm0,mm3               ; mm0=(00 01 10 11 20 21 30 31)
        punpckhbw mm2,mm3               ; mm2=(06 07 16 17 26 27 36 37)
        movq      mm1,mm6               ; transpose coefficients(phase 1)
        punpcklbw mm6,mm4               ; mm6=(02 03 12 13 22 23 32 33)
        punpckhbw mm1,mm4               ; mm1=(04 05 14 15 24 25 34 35)

        movq      mm7,mm0               ; transpose coefficients(phase 2)
        punpcklwd mm0,mm6               ; mm0=(00 01 02 03 10 11 12 13)
        punpckhwd mm7,mm6               ; mm7=(20 21 22 23 30 31 32 33)
        movq      mm5,mm1               ; transpose coefficients(phase 2)
        punpcklwd mm1,mm2               ; mm1=(04 05 06 07 14 15 16 17)
        punpckhwd mm5,mm2               ; mm5=(24 25 26 27 34 35 36 37)

        movq      mm3,mm0               ; transpose coefficients(phase 3)
        punpckldq mm0,mm1               ; mm0=(00 01 02 03 04 05 06 07)
        punpckhdq mm3,mm1               ; mm3=(10 11 12 13 14 15 16 17)
        movq      mm4,mm7               ; transpose coefficients(phase 3)
        punpckldq mm7,mm5               ; mm7=(20 21 22 23 24 25 26 27)
        punpckhdq mm4,mm5               ; mm4=(30 31 32 33 34 35 36 37)

        pushpic ebx                     ; save GOT address

        mov     edx, JSAMPROW [edi+0*SIZEOF_JSAMPROW]
        mov     ebx, JSAMPROW [edi+1*SIZEOF_JSAMPROW]
        movq    MMWORD [edx+eax*SIZEOF_JSAMPLE], mm0
        movq    MMWORD [ebx+eax*SIZEOF_JSAMPLE], mm3
        mov     edx, JSAMPROW [edi+2*SIZEOF_JSAMPROW]
        mov     ebx, JSAMPROW [edi+3*SIZEOF_JSAMPROW]
        movq    MMWORD [edx+eax*SIZEOF_JSAMPLE], mm7
        movq    MMWORD [ebx+eax*SIZEOF_JSAMPLE], mm4

        poppic  ebx                     ; restore GOT address

        add     esi, byte 4*SIZEOF_JCOEF        ; wsptr
        add     edi, byte 4*SIZEOF_JSAMPROW
        dec     ecx                             ; ctr
        jnz     near .rowloop

        emms            ; empty MMX state

        pop     edi
        pop     esi
;       pop     edx             ; need not be preserved
;       pop     ecx             ; need not be preserved
        pop     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
