;
; jidctfst.asm - fast 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 fast, not so accurate integer implementation of
; the inverse DCT (Discrete Cosine Transform). The following code is
; based directly on the IJG's original jidctfst.c; see the jidctfst.c
; for more details.
;
; [TAB8]

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

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

%define CONST_BITS      8       ; 14 is also OK.
%define PASS1_BITS      2

%if IFAST_SCALE_BITS != PASS1_BITS
%error "'IFAST_SCALE_BITS' must be equal to 'PASS1_BITS'."
%endif

%if CONST_BITS == 8
F_1_082 equ     277             ; FIX(1.082392200)
F_1_414 equ     362             ; FIX(1.414213562)
F_1_847 equ     473             ; FIX(1.847759065)
F_2_613 equ     669             ; FIX(2.613125930)
F_1_613 equ     (F_2_613 - 256) ; FIX(2.613125930) - FIX(1)
%else
; NASM cannot do compile-time arithmetic on floating-point constants.
%define DESCALE(x,n)  (((x)+(1<<((n)-1)))>>(n))
F_1_082 equ     DESCALE(1162209775,30-CONST_BITS)       ; FIX(1.082392200)
F_1_414 equ     DESCALE(1518500249,30-CONST_BITS)       ; FIX(1.414213562)
F_1_847 equ     DESCALE(1984016188,30-CONST_BITS)       ; FIX(1.847759065)
F_2_613 equ     DESCALE(2805822602,30-CONST_BITS)       ; FIX(2.613125930)
F_1_613 equ     (F_2_613 - (1 << CONST_BITS))   ; FIX(2.613125930) - FIX(1)
%endif

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

; PRE_MULTIPLY_SCALE_BITS <= 2 (to avoid overflow)
; CONST_BITS + CONST_SHIFT + PRE_MULTIPLY_SCALE_BITS == 16 (for pmulhw)

%define PRE_MULTIPLY_SCALE_BITS   2
%define CONST_SHIFT     (16 - PRE_MULTIPLY_SCALE_BITS - CONST_BITS)

        alignz  16
        global  EXTN(jconst_idct_ifast_mmx)

EXTN(jconst_idct_ifast_mmx):

PW_F1414        times 4 dw  F_1_414 << CONST_SHIFT
PW_F1847        times 4 dw  F_1_847 << CONST_SHIFT
PW_MF1613       times 4 dw -F_1_613 << CONST_SHIFT
PW_F1082        times 4 dw  F_1_082 << CONST_SHIFT
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_ifast_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          2
%define workspace       wk(0)-DCTSIZE2*SIZEOF_JCOEF
                                        ; JCOEF workspace[DCTSIZE2]

        align   16
        global  EXTN(jsimd_idct_ifast_mmx)

EXTN(jsimd_idct_ifast_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_IFAST_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_IFAST_MULT_TYPE)]

        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_IFAST_MULT_TYPE)]
        pmullw  mm1, MMWORD [MMBLOCK(2,0,edx,SIZEOF_IFAST_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_IFAST_MULT_TYPE)]
        pmullw  mm3, MMWORD [MMBLOCK(6,0,edx,SIZEOF_IFAST_MULT_TYPE)]

        movq    mm4,mm0
        movq    mm5,mm1
        psubw   mm0,mm2                 ; mm0=tmp11
        psubw   mm1,mm3
        paddw   mm4,mm2                 ; mm4=tmp10
        paddw   mm5,mm3                 ; mm5=tmp13

        psllw   mm1,PRE_MULTIPLY_SCALE_BITS
        pmulhw  mm1,[GOTOFF(ebx,PW_F1414)]
        psubw   mm1,mm5                 ; mm1=tmp12

        movq    mm6,mm4
        movq    mm7,mm0
        psubw   mm4,mm5                 ; mm4=tmp3
        psubw   mm0,mm1                 ; mm0=tmp2
        paddw   mm6,mm5                 ; mm6=tmp0
        paddw   mm7,mm1                 ; mm7=tmp1

        movq    MMWORD [wk(1)], mm4     ; wk(1)=tmp3
        movq    MMWORD [wk(0)], mm0     ; wk(0)=tmp2

        ; -- Odd part

        movq    mm2, MMWORD [MMBLOCK(1,0,esi,SIZEOF_JCOEF)]
        movq    mm3, MMWORD [MMBLOCK(3,0,esi,SIZEOF_JCOEF)]
        pmullw  mm2, MMWORD [MMBLOCK(1,0,edx,SIZEOF_IFAST_MULT_TYPE)]
        pmullw  mm3, MMWORD [MMBLOCK(3,0,edx,SIZEOF_IFAST_MULT_TYPE)]
        movq    mm5, MMWORD [MMBLOCK(5,0,esi,SIZEOF_JCOEF)]
        movq    mm1, MMWORD [MMBLOCK(7,0,esi,SIZEOF_JCOEF)]
        pmullw  mm5, MMWORD [MMBLOCK(5,0,edx,SIZEOF_IFAST_MULT_TYPE)]
        pmullw  mm1, MMWORD [MMBLOCK(7,0,edx,SIZEOF_IFAST_MULT_TYPE)]

        movq    mm4,mm2
        movq    mm0,mm5
        psubw   mm2,mm1                 ; mm2=z12
        psubw   mm5,mm3                 ; mm5=z10
        paddw   mm4,mm1                 ; mm4=z11
        paddw   mm0,mm3                 ; mm0=z13

        movq    mm1,mm5                 ; mm1=z10(unscaled)
        psllw   mm2,PRE_MULTIPLY_SCALE_BITS
        psllw   mm5,PRE_MULTIPLY_SCALE_BITS

        movq    mm3,mm4
        psubw   mm4,mm0
        paddw   mm3,mm0                 ; mm3=tmp7

        psllw   mm4,PRE_MULTIPLY_SCALE_BITS
        pmulhw  mm4,[GOTOFF(ebx,PW_F1414)]      ; mm4=tmp11

        ; To avoid overflow...
        ;
        ; (Original)
        ; tmp12 = -2.613125930 * z10 + z5;
        ;
        ; (This implementation)
        ; tmp12 = (-1.613125930 - 1) * z10 + z5;
        ;       = -1.613125930 * z10 - z10 + z5;

        movq    mm0,mm5
        paddw   mm5,mm2
        pmulhw  mm5,[GOTOFF(ebx,PW_F1847)]      ; mm5=z5
        pmulhw  mm0,[GOTOFF(ebx,PW_MF1613)]
        pmulhw  mm2,[GOTOFF(ebx,PW_F1082)]
        psubw   mm0,mm1
        psubw   mm2,mm5                 ; mm2=tmp10
        paddw   mm0,mm5                 ; mm0=tmp12

        ; -- Final output stage

        psubw   mm0,mm3                 ; mm0=tmp6
        movq    mm1,mm6
        movq    mm5,mm7
        paddw   mm6,mm3                 ; mm6=data0=(00 01 02 03)
        paddw   mm7,mm0                 ; mm7=data1=(10 11 12 13)
        psubw   mm1,mm3                 ; mm1=data7=(70 71 72 73)
        psubw   mm5,mm0                 ; mm5=data6=(60 61 62 63)
        psubw   mm4,mm0                 ; mm4=tmp5

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

        movq    mm7, MMWORD [wk(0)]     ; mm7=tmp2
        movq    mm1, MMWORD [wk(1)]     ; mm1=tmp3

        movq    MMWORD [wk(0)], mm5     ; wk(0)=(60 70 61 71)
        movq    MMWORD [wk(1)], mm0     ; wk(1)=(62 72 63 73)

        paddw   mm2,mm4                 ; mm2=tmp4
        movq    mm5,mm7
        movq    mm0,mm1
        paddw   mm7,mm4                 ; mm7=data2=(20 21 22 23)
        paddw   mm1,mm2                 ; mm1=data4=(40 41 42 43)
        psubw   mm5,mm4                 ; mm5=data5=(50 51 52 53)
        psubw   mm0,mm2                 ; mm0=data3=(30 31 32 33)

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

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

        movq    mm7, MMWORD [wk(0)]     ; mm7=(60 70 61 71)
        movq    mm4, MMWORD [wk(1)]     ; mm4=(62 72 63 73)

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

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

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

.nextcolumn:
        add     esi, byte 4*SIZEOF_JCOEF                ; coef_block
        add     edx, byte 4*SIZEOF_IFAST_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)]

        movq    mm4,mm0
        movq    mm5,mm1
        psubw   mm0,mm2                 ; mm0=tmp11
        psubw   mm1,mm3
        paddw   mm4,mm2                 ; mm4=tmp10
        paddw   mm5,mm3                 ; mm5=tmp13

        psllw   mm1,PRE_MULTIPLY_SCALE_BITS
        pmulhw  mm1,[GOTOFF(ebx,PW_F1414)]
        psubw   mm1,mm5                 ; mm1=tmp12

        movq    mm6,mm4
        movq    mm7,mm0
        psubw   mm4,mm5                 ; mm4=tmp3
        psubw   mm0,mm1                 ; mm0=tmp2
        paddw   mm6,mm5                 ; mm6=tmp0
        paddw   mm7,mm1                 ; mm7=tmp1

        movq    MMWORD [wk(1)], mm4     ; wk(1)=tmp3
        movq    MMWORD [wk(0)], mm0     ; wk(0)=tmp2

        ; -- Odd part

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

        movq    mm4,mm2
        movq    mm0,mm5
        psubw   mm2,mm1                 ; mm2=z12
        psubw   mm5,mm3                 ; mm5=z10
        paddw   mm4,mm1                 ; mm4=z11
        paddw   mm0,mm3                 ; mm0=z13

        movq    mm1,mm5                 ; mm1=z10(unscaled)
        psllw   mm2,PRE_MULTIPLY_SCALE_BITS
        psllw   mm5,PRE_MULTIPLY_SCALE_BITS

        movq    mm3,mm4
        psubw   mm4,mm0
        paddw   mm3,mm0                 ; mm3=tmp7

        psllw   mm4,PRE_MULTIPLY_SCALE_BITS
        pmulhw  mm4,[GOTOFF(ebx,PW_F1414)]      ; mm4=tmp11

        ; To avoid overflow...
        ;
        ; (Original)
        ; tmp12 = -2.613125930 * z10 + z5;
        ;
        ; (This implementation)
        ; tmp12 = (-1.613125930 - 1) * z10 + z5;
        ;       = -1.613125930 * z10 - z10 + z5;

        movq    mm0,mm5
        paddw   mm5,mm2
        pmulhw  mm5,[GOTOFF(ebx,PW_F1847)]      ; mm5=z5
        pmulhw  mm0,[GOTOFF(ebx,PW_MF1613)]
        pmulhw  mm2,[GOTOFF(ebx,PW_F1082)]
        psubw   mm0,mm1
        psubw   mm2,mm5                 ; mm2=tmp10
        paddw   mm0,mm5                 ; mm0=tmp12

        ; -- Final output stage

        psubw   mm0,mm3                 ; mm0=tmp6
        movq    mm1,mm6
        movq    mm5,mm7
        paddw   mm6,mm3                 ; mm6=data0=(00 10 20 30)
        paddw   mm7,mm0                 ; mm7=data1=(01 11 21 31)
        psraw   mm6,(PASS1_BITS+3)      ; descale
        psraw   mm7,(PASS1_BITS+3)      ; descale
        psubw   mm1,mm3                 ; mm1=data7=(07 17 27 37)
        psubw   mm5,mm0                 ; mm5=data6=(06 16 26 36)
        psraw   mm1,(PASS1_BITS+3)      ; descale
        psraw   mm5,(PASS1_BITS+3)      ; descale
        psubw   mm4,mm0                 ; mm4=tmp5

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

        movq    mm3, MMWORD [wk(0)]     ; mm3=tmp2
        movq    mm0, MMWORD [wk(1)]     ; mm0=tmp3

        paddw   mm2,mm4                 ; mm2=tmp4
        movq    mm5,mm3
        movq    mm1,mm0
        paddw   mm3,mm4                 ; mm3=data2=(02 12 22 32)
        paddw   mm0,mm2                 ; mm0=data4=(04 14 24 34)
        psraw   mm3,(PASS1_BITS+3)      ; descale
        psraw   mm0,(PASS1_BITS+3)      ; descale
        psubw   mm5,mm4                 ; mm5=data5=(05 15 25 35)
        psubw   mm1,mm2                 ; mm1=data3=(03 13 23 33)
        psraw   mm5,(PASS1_BITS+3)      ; descale
        psraw   mm1,(PASS1_BITS+3)      ; descale

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

        packsswb  mm3,mm0               ; mm3=(02 12 22 32 04 14 24 34)
        packsswb  mm1,mm5               ; mm1=(03 13 23 33 05 15 25 35)

        paddb     mm6,mm4
        paddb     mm7,mm4
        paddb     mm3,mm4
        paddb     mm1,mm4

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

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

        movq      mm7,mm6               ; transpose coefficients(phase 3)
        punpckldq mm6,mm0               ; mm6=(00 01 02 03 04 05 06 07)
        punpckhdq mm7,mm0               ; mm7=(10 11 12 13 14 15 16 17)
        movq      mm1,mm5               ; transpose coefficients(phase 3)
        punpckldq mm5,mm4               ; mm5=(20 21 22 23 24 25 26 27)
        punpckhdq mm1,mm4               ; mm1=(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], mm6
        movq    MMWORD [ebx+eax*SIZEOF_JSAMPLE], mm7
        mov     edx, JSAMPROW [edi+2*SIZEOF_JSAMPROW]
        mov     ebx, JSAMPROW [edi+3*SIZEOF_JSAMPROW]
        movq    MMWORD [edx+eax*SIZEOF_JSAMPLE], mm5
        movq    MMWORD [ebx+eax*SIZEOF_JSAMPLE], mm1

        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
