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

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

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
