;
; jidctint.asm - accurate integer IDCT (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
; 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) PRIVATE

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) PRIVATE

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
