;
; jidctred.asm - reduced-size 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 inverse-DCT routines that produce reduced-size
; output: either 4x4 or 2x2 pixels from an 8x8 DCT block.
; The following code is based directly on the IJG's original jidctred.c;
; see the jidctred.c for more details.
;
; [TAB8]

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

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

%define CONST_BITS      13
%define PASS1_BITS      2

%define DESCALE_P1_4    (CONST_BITS-PASS1_BITS+1)
%define DESCALE_P2_4    (CONST_BITS+PASS1_BITS+3+1)
%define DESCALE_P1_2    (CONST_BITS-PASS1_BITS+2)
%define DESCALE_P2_2    (CONST_BITS+PASS1_BITS+3+2)

%if CONST_BITS == 13
F_0_211 equ      1730           ; FIX(0.211164243)
F_0_509 equ      4176           ; FIX(0.509795579)
F_0_601 equ      4926           ; FIX(0.601344887)
F_0_720 equ      5906           ; FIX(0.720959822)
F_0_765 equ      6270           ; FIX(0.765366865)
F_0_850 equ      6967           ; FIX(0.850430095)
F_0_899 equ      7373           ; FIX(0.899976223)
F_1_061 equ      8697           ; FIX(1.061594337)
F_1_272 equ     10426           ; FIX(1.272758580)
F_1_451 equ     11893           ; FIX(1.451774981)
F_1_847 equ     15137           ; FIX(1.847759065)
F_2_172 equ     17799           ; FIX(2.172734803)
F_2_562 equ     20995           ; FIX(2.562915447)
F_3_624 equ     29692           ; FIX(3.624509785)
%else
; NASM cannot do compile-time arithmetic on floating-point constants.
%define DESCALE(x,n)  (((x)+(1<<((n)-1)))>>(n))
F_0_211 equ     DESCALE( 226735879,30-CONST_BITS)       ; FIX(0.211164243)
F_0_509 equ     DESCALE( 547388834,30-CONST_BITS)       ; FIX(0.509795579)
F_0_601 equ     DESCALE( 645689155,30-CONST_BITS)       ; FIX(0.601344887)
F_0_720 equ     DESCALE( 774124714,30-CONST_BITS)       ; FIX(0.720959822)
F_0_765 equ     DESCALE( 821806413,30-CONST_BITS)       ; FIX(0.765366865)
F_0_850 equ     DESCALE( 913142361,30-CONST_BITS)       ; FIX(0.850430095)
F_0_899 equ     DESCALE( 966342111,30-CONST_BITS)       ; FIX(0.899976223)
F_1_061 equ     DESCALE(1139878239,30-CONST_BITS)       ; FIX(1.061594337)
F_1_272 equ     DESCALE(1366614119,30-CONST_BITS)       ; FIX(1.272758580)
F_1_451 equ     DESCALE(1558831516,30-CONST_BITS)       ; FIX(1.451774981)
F_1_847 equ     DESCALE(1984016188,30-CONST_BITS)       ; FIX(1.847759065)
F_2_172 equ     DESCALE(2332956230,30-CONST_BITS)       ; FIX(2.172734803)
F_2_562 equ     DESCALE(2751909506,30-CONST_BITS)       ; FIX(2.562915447)
F_3_624 equ     DESCALE(3891787747,30-CONST_BITS)       ; FIX(3.624509785)
%endif

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

        alignz  16
        global  EXTN(jconst_idct_red_mmx)

EXTN(jconst_idct_red_mmx):

PW_F184_MF076   times 2 dw  F_1_847,-F_0_765
PW_F256_F089    times 2 dw  F_2_562, F_0_899
PW_F106_MF217   times 2 dw  F_1_061,-F_2_172
PW_MF060_MF050  times 2 dw -F_0_601,-F_0_509
PW_F145_MF021   times 2 dw  F_1_451,-F_0_211
PW_F362_MF127   times 2 dw  F_3_624,-F_1_272
PW_F085_MF072   times 2 dw  F_0_850,-F_0_720
PD_DESCALE_P1_4 times 2 dd  1 << (DESCALE_P1_4-1)
PD_DESCALE_P2_4 times 2 dd  1 << (DESCALE_P2_4-1)
PD_DESCALE_P1_2 times 2 dd  1 << (DESCALE_P1_2-1)
PD_DESCALE_P2_2 times 2 dd  1 << (DESCALE_P2_2-1)
PB_CENTERJSAMP  times 8 db  CENTERJSAMPLE

        alignz  16

; --------------------------------------------------------------------------
        SECTION SEG_TEXT
        BITS    32
;
; Perform dequantization and inverse DCT on one block of coefficients,
; producing a reduced-size 4x4 output block.
;
; GLOBAL(void)
; jsimd_idct_4x4_mmx (void *dct_table, JCOEFPTR coef_block,
;                     JSAMPARRAY output_buf, JDIMENSION output_col)
;

%define dct_table(b)    (b)+8           ; void *dct_table
%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_4x4_mmx)

EXTN(jsimd_idct_4x4_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]
        pushpic 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_4X4_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(5,0,esi,SIZEOF_JCOEF)]
        por     mm0, MMWORD [MMBLOCK(6,0,esi,SIZEOF_JCOEF)]
        por     mm1, MMWORD [MMBLOCK(7,0,esi,SIZEOF_JCOEF)]
        por     mm0,mm1
        packsswb mm0,mm0
        movd    eax,mm0
        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(1,0,edi,SIZEOF_JCOEF)], mm1
        movq    MMWORD [MMBLOCK(2,0,edi,SIZEOF_JCOEF)], mm2
        movq    MMWORD [MMBLOCK(3,0,edi,SIZEOF_JCOEF)], mm3
        jmp     near .nextcolumn
        alignx  16,7
%endif
.columnDCT:

        ; -- Odd part

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

        movq      mm4,mm0
        movq      mm5,mm0
        punpcklwd mm4,mm1
        punpckhwd mm5,mm1
        movq      mm0,mm4
        movq      mm1,mm5
        pmaddwd   mm4,[GOTOFF(ebx,PW_F256_F089)]        ; mm4=(tmp2L)
        pmaddwd   mm5,[GOTOFF(ebx,PW_F256_F089)]        ; mm5=(tmp2H)
        pmaddwd   mm0,[GOTOFF(ebx,PW_F106_MF217)]       ; mm0=(tmp0L)
        pmaddwd   mm1,[GOTOFF(ebx,PW_F106_MF217)]       ; mm1=(tmp0H)

        movq      mm6,mm2
        movq      mm7,mm2
        punpcklwd mm6,mm3
        punpckhwd mm7,mm3
        movq      mm2,mm6
        movq      mm3,mm7
        pmaddwd   mm6,[GOTOFF(ebx,PW_MF060_MF050)]      ; mm6=(tmp2L)
        pmaddwd   mm7,[GOTOFF(ebx,PW_MF060_MF050)]      ; mm7=(tmp2H)
        pmaddwd   mm2,[GOTOFF(ebx,PW_F145_MF021)]       ; mm2=(tmp0L)
        pmaddwd   mm3,[GOTOFF(ebx,PW_F145_MF021)]       ; mm3=(tmp0H)

        paddd   mm6,mm4                 ; mm6=tmp2L
        paddd   mm7,mm5                 ; mm7=tmp2H
        paddd   mm2,mm0                 ; mm2=tmp0L
        paddd   mm3,mm1                 ; mm3=tmp0H

        movq    MMWORD [wk(0)], mm2     ; wk(0)=tmp0L
        movq    MMWORD [wk(1)], mm3     ; wk(1)=tmp0H

        ; -- Even part

        movq    mm4, MMWORD [MMBLOCK(0,0,esi,SIZEOF_JCOEF)]
        movq    mm5, MMWORD [MMBLOCK(2,0,esi,SIZEOF_JCOEF)]
        movq    mm0, MMWORD [MMBLOCK(6,0,esi,SIZEOF_JCOEF)]
        pmullw  mm4, MMWORD [MMBLOCK(0,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
        pmullw  mm5, MMWORD [MMBLOCK(2,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
        pmullw  mm0, MMWORD [MMBLOCK(6,0,edx,SIZEOF_ISLOW_MULT_TYPE)]

        pxor      mm1,mm1
        pxor      mm2,mm2
        punpcklwd mm1,mm4               ; mm1=tmp0L
        punpckhwd mm2,mm4               ; mm2=tmp0H
        psrad     mm1,(16-CONST_BITS-1) ; psrad mm1,16 & pslld mm1,CONST_BITS+1
        psrad     mm2,(16-CONST_BITS-1) ; psrad mm2,16 & pslld mm2,CONST_BITS+1

        movq      mm3,mm5               ; mm5=in2=z2
        punpcklwd mm5,mm0               ; mm0=in6=z3
        punpckhwd mm3,mm0
        pmaddwd   mm5,[GOTOFF(ebx,PW_F184_MF076)]       ; mm5=tmp2L
        pmaddwd   mm3,[GOTOFF(ebx,PW_F184_MF076)]       ; mm3=tmp2H

        movq    mm4,mm1
        movq    mm0,mm2
        paddd   mm1,mm5                 ; mm1=tmp10L
        paddd   mm2,mm3                 ; mm2=tmp10H
        psubd   mm4,mm5                 ; mm4=tmp12L
        psubd   mm0,mm3                 ; mm0=tmp12H

        ; -- Final output stage

        movq    mm5,mm1
        movq    mm3,mm2
        paddd   mm1,mm6                 ; mm1=data0L
        paddd   mm2,mm7                 ; mm2=data0H
        psubd   mm5,mm6                 ; mm5=data3L
        psubd   mm3,mm7                 ; mm3=data3H

        movq    mm6,[GOTOFF(ebx,PD_DESCALE_P1_4)]       ; mm6=[PD_DESCALE_P1_4]

        paddd   mm1,mm6
        paddd   mm2,mm6
        psrad   mm1,DESCALE_P1_4
        psrad   mm2,DESCALE_P1_4
        paddd   mm5,mm6
        paddd   mm3,mm6
        psrad   mm5,DESCALE_P1_4
        psrad   mm3,DESCALE_P1_4

        packssdw  mm1,mm2               ; mm1=data0=(00 01 02 03)
        packssdw  mm5,mm3               ; mm5=data3=(30 31 32 33)

        movq    mm7, MMWORD [wk(0)]     ; mm7=tmp0L
        movq    mm6, MMWORD [wk(1)]     ; mm6=tmp0H

        movq    mm2,mm4
        movq    mm3,mm0
        paddd   mm4,mm7                 ; mm4=data1L
        paddd   mm0,mm6                 ; mm0=data1H
        psubd   mm2,mm7                 ; mm2=data2L
        psubd   mm3,mm6                 ; mm3=data2H

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

        paddd   mm4,mm7
        paddd   mm0,mm7
        psrad   mm4,DESCALE_P1_4
        psrad   mm0,DESCALE_P1_4
        paddd   mm2,mm7
        paddd   mm3,mm7
        psrad   mm2,DESCALE_P1_4
        psrad   mm3,DESCALE_P1_4

        packssdw  mm4,mm0               ; mm4=data1=(10 11 12 13)
        packssdw  mm2,mm3               ; mm2=data2=(20 21 22 23)

        movq      mm6,mm1               ; transpose coefficients(phase 1)
        punpcklwd mm1,mm4               ; mm1=(00 10 01 11)
        punpckhwd mm6,mm4               ; mm6=(02 12 03 13)
        movq      mm7,mm2               ; transpose coefficients(phase 1)
        punpcklwd mm2,mm5               ; mm2=(20 30 21 31)
        punpckhwd mm7,mm5               ; mm7=(22 32 23 33)

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

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

.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)]

        ; -- Odd part

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

        movq      mm4,mm0
        movq      mm5,mm0
        punpcklwd mm4,mm1
        punpckhwd mm5,mm1
        movq      mm0,mm4
        movq      mm1,mm5
        pmaddwd   mm4,[GOTOFF(ebx,PW_F256_F089)]        ; mm4=(tmp2L)
        pmaddwd   mm5,[GOTOFF(ebx,PW_F256_F089)]        ; mm5=(tmp2H)
        pmaddwd   mm0,[GOTOFF(ebx,PW_F106_MF217)]       ; mm0=(tmp0L)
        pmaddwd   mm1,[GOTOFF(ebx,PW_F106_MF217)]       ; mm1=(tmp0H)

        movq      mm6,mm2
        movq      mm7,mm2
        punpcklwd mm6,mm3
        punpckhwd mm7,mm3
        movq      mm2,mm6
        movq      mm3,mm7
        pmaddwd   mm6,[GOTOFF(ebx,PW_MF060_MF050)]      ; mm6=(tmp2L)
        pmaddwd   mm7,[GOTOFF(ebx,PW_MF060_MF050)]      ; mm7=(tmp2H)
        pmaddwd   mm2,[GOTOFF(ebx,PW_F145_MF021)]       ; mm2=(tmp0L)
        pmaddwd   mm3,[GOTOFF(ebx,PW_F145_MF021)]       ; mm3=(tmp0H)

        paddd   mm6,mm4                 ; mm6=tmp2L
        paddd   mm7,mm5                 ; mm7=tmp2H
        paddd   mm2,mm0                 ; mm2=tmp0L
        paddd   mm3,mm1                 ; mm3=tmp0H

        movq    MMWORD [wk(0)], mm2     ; wk(0)=tmp0L
        movq    MMWORD [wk(1)], mm3     ; wk(1)=tmp0H

        ; -- Even part

        movq    mm4, MMWORD [MMBLOCK(0,0,esi,SIZEOF_JCOEF)]
        movq    mm5, MMWORD [MMBLOCK(2,0,esi,SIZEOF_JCOEF)]
        movq    mm0, MMWORD [MMBLOCK(6,0,esi,SIZEOF_JCOEF)]

        pxor      mm1,mm1
        pxor      mm2,mm2
        punpcklwd mm1,mm4               ; mm1=tmp0L
        punpckhwd mm2,mm4               ; mm2=tmp0H
        psrad     mm1,(16-CONST_BITS-1) ; psrad mm1,16 & pslld mm1,CONST_BITS+1
        psrad     mm2,(16-CONST_BITS-1) ; psrad mm2,16 & pslld mm2,CONST_BITS+1

        movq      mm3,mm5               ; mm5=in2=z2
        punpcklwd mm5,mm0               ; mm0=in6=z3
        punpckhwd mm3,mm0
        pmaddwd   mm5,[GOTOFF(ebx,PW_F184_MF076)]       ; mm5=tmp2L
        pmaddwd   mm3,[GOTOFF(ebx,PW_F184_MF076)]       ; mm3=tmp2H

        movq    mm4,mm1
        movq    mm0,mm2
        paddd   mm1,mm5                 ; mm1=tmp10L
        paddd   mm2,mm3                 ; mm2=tmp10H
        psubd   mm4,mm5                 ; mm4=tmp12L
        psubd   mm0,mm3                 ; mm0=tmp12H

        ; -- Final output stage

        movq    mm5,mm1
        movq    mm3,mm2
        paddd   mm1,mm6                 ; mm1=data0L
        paddd   mm2,mm7                 ; mm2=data0H
        psubd   mm5,mm6                 ; mm5=data3L
        psubd   mm3,mm7                 ; mm3=data3H

        movq    mm6,[GOTOFF(ebx,PD_DESCALE_P2_4)]       ; mm6=[PD_DESCALE_P2_4]

        paddd   mm1,mm6
        paddd   mm2,mm6
        psrad   mm1,DESCALE_P2_4
        psrad   mm2,DESCALE_P2_4
        paddd   mm5,mm6
        paddd   mm3,mm6
        psrad   mm5,DESCALE_P2_4
        psrad   mm3,DESCALE_P2_4

        packssdw  mm1,mm2               ; mm1=data0=(00 10 20 30)
        packssdw  mm5,mm3               ; mm5=data3=(03 13 23 33)

        movq    mm7, MMWORD [wk(0)]     ; mm7=tmp0L
        movq    mm6, MMWORD [wk(1)]     ; mm6=tmp0H

        movq    mm2,mm4
        movq    mm3,mm0
        paddd   mm4,mm7                 ; mm4=data1L
        paddd   mm0,mm6                 ; mm0=data1H
        psubd   mm2,mm7                 ; mm2=data2L
        psubd   mm3,mm6                 ; mm3=data2H

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

        paddd   mm4,mm7
        paddd   mm0,mm7
        psrad   mm4,DESCALE_P2_4
        psrad   mm0,DESCALE_P2_4
        paddd   mm2,mm7
        paddd   mm3,mm7
        psrad   mm2,DESCALE_P2_4
        psrad   mm3,DESCALE_P2_4

        packssdw  mm4,mm0               ; mm4=data1=(01 11 21 31)
        packssdw  mm2,mm3               ; mm2=data2=(02 12 22 32)

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

        packsswb  mm1,mm2               ; mm1=(00 10 20 30 02 12 22 32)
        packsswb  mm4,mm5               ; mm4=(01 11 21 31 03 13 23 33)
        paddb     mm1,mm6
        paddb     mm4,mm6

        movq      mm7,mm1               ; transpose coefficients(phase 1)
        punpcklbw mm1,mm4               ; mm1=(00 01 10 11 20 21 30 31)
        punpckhbw mm7,mm4               ; mm7=(02 03 12 13 22 23 32 33)

        movq      mm0,mm1               ; transpose coefficients(phase 2)
        punpcklwd mm1,mm7               ; mm1=(00 01 02 03 10 11 12 13)
        punpckhwd mm0,mm7               ; mm0=(20 21 22 23 30 31 32 33)

        mov     edx, JSAMPROW [edi+0*SIZEOF_JSAMPROW]
        mov     esi, JSAMPROW [edi+2*SIZEOF_JSAMPROW]
        movd    DWORD [edx+eax*SIZEOF_JSAMPLE], mm1
        movd    DWORD [esi+eax*SIZEOF_JSAMPLE], mm0

        psrlq   mm1,4*BYTE_BIT
        psrlq   mm0,4*BYTE_BIT

        mov     edx, JSAMPROW [edi+1*SIZEOF_JSAMPROW]
        mov     esi, JSAMPROW [edi+3*SIZEOF_JSAMPROW]
        movd    DWORD [edx+eax*SIZEOF_JSAMPLE], mm1
        movd    DWORD [esi+eax*SIZEOF_JSAMPLE], mm0

        emms            ; empty MMX state

        pop     edi
        pop     esi
;       pop     edx             ; need not be preserved
;       pop     ecx             ; need not be preserved
        poppic  ebx
        mov     esp,ebp         ; esp <- aligned ebp
        pop     esp             ; esp <- original ebp
        pop     ebp
        ret


; --------------------------------------------------------------------------
;
; Perform dequantization and inverse DCT on one block of coefficients,
; producing a reduced-size 2x2 output block.
;
; GLOBAL(void)
; jsimd_idct_2x2_mmx (void *dct_table, JCOEFPTR coef_block,
;                     JSAMPARRAY output_buf, JDIMENSION output_col)
;

%define dct_table(b)    (b)+8           ; void *dct_table
%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

        align   16
        global  EXTN(jsimd_idct_2x2_mmx)

EXTN(jsimd_idct_2x2_mmx):
        push    ebp
        mov     ebp,esp
        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.

        mov     edx, POINTER [dct_table(ebp)]           ; quantptr
        mov     esi, JCOEFPTR [coef_block(ebp)]         ; inptr

        ; | input:                  | result:        |
        ; | 00 01 ** 03 ** 05 ** 07 |                |
        ; | 10 11 ** 13 ** 15 ** 17 |                |
        ; | ** ** ** ** ** ** ** ** |                |
        ; | 30 31 ** 33 ** 35 ** 37 | A0 A1 A3 A5 A7 |
        ; | ** ** ** ** ** ** ** ** | B0 B1 B3 B5 B7 |
        ; | 50 51 ** 53 ** 55 ** 57 |                |
        ; | ** ** ** ** ** ** ** ** |                |
        ; | 70 71 ** 73 ** 75 ** 77 |                |

        ; -- Odd part

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

        ; mm0=(10 11 ** 13), mm1=(30 31 ** 33)
        ; mm2=(50 51 ** 53), mm3=(70 71 ** 73)

        pcmpeqd   mm7,mm7
        pslld     mm7,WORD_BIT          ; mm7={0x0000 0xFFFF 0x0000 0xFFFF}

        movq      mm4,mm0               ; mm4=(10 11 ** 13)
        movq      mm5,mm2               ; mm5=(50 51 ** 53)
        punpcklwd mm4,mm1               ; mm4=(10 30 11 31)
        punpcklwd mm5,mm3               ; mm5=(50 70 51 71)
        pmaddwd   mm4,[GOTOFF(ebx,PW_F362_MF127)]
        pmaddwd   mm5,[GOTOFF(ebx,PW_F085_MF072)]

        psrld   mm0,WORD_BIT            ; mm0=(11 -- 13 --)
        pand    mm1,mm7                 ; mm1=(-- 31 -- 33)
        psrld   mm2,WORD_BIT            ; mm2=(51 -- 53 --)
        pand    mm3,mm7                 ; mm3=(-- 71 -- 73)
        por     mm0,mm1                 ; mm0=(11 31 13 33)
        por     mm2,mm3                 ; mm2=(51 71 53 73)
        pmaddwd mm0,[GOTOFF(ebx,PW_F362_MF127)]
        pmaddwd mm2,[GOTOFF(ebx,PW_F085_MF072)]

        paddd   mm4,mm5                 ; mm4=tmp0[col0 col1]

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

        ; mm6=(** 15 ** 17), mm1=(** 35 ** 37)
        ; mm3=(** 55 ** 57), mm5=(** 75 ** 77)

        psrld   mm6,WORD_BIT            ; mm6=(15 -- 17 --)
        pand    mm1,mm7                 ; mm1=(-- 35 -- 37)
        psrld   mm3,WORD_BIT            ; mm3=(55 -- 57 --)
        pand    mm5,mm7                 ; mm5=(-- 75 -- 77)
        por     mm6,mm1                 ; mm6=(15 35 17 37)
        por     mm3,mm5                 ; mm3=(55 75 57 77)
        pmaddwd mm6,[GOTOFF(ebx,PW_F362_MF127)]
        pmaddwd mm3,[GOTOFF(ebx,PW_F085_MF072)]

        paddd   mm0,mm2                 ; mm0=tmp0[col1 col3]
        paddd   mm6,mm3                 ; mm6=tmp0[col5 col7]

        ; -- Even part

        movq    mm1, MMWORD [MMBLOCK(0,0,esi,SIZEOF_JCOEF)]
        movq    mm5, MMWORD [MMBLOCK(0,1,esi,SIZEOF_JCOEF)]
        pmullw  mm1, MMWORD [MMBLOCK(0,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
        pmullw  mm5, MMWORD [MMBLOCK(0,1,edx,SIZEOF_ISLOW_MULT_TYPE)]

        ; mm1=(00 01 ** 03), mm5=(** 05 ** 07)

        movq    mm2,mm1                         ; mm2=(00 01 ** 03)
        pslld   mm1,WORD_BIT                    ; mm1=(-- 00 -- **)
        psrad   mm1,(WORD_BIT-CONST_BITS-2)     ; mm1=tmp10[col0 ****]

        pand    mm2,mm7                         ; mm2=(-- 01 -- 03)
        pand    mm5,mm7                         ; mm5=(-- 05 -- 07)
        psrad   mm2,(WORD_BIT-CONST_BITS-2)     ; mm2=tmp10[col1 col3]
        psrad   mm5,(WORD_BIT-CONST_BITS-2)     ; mm5=tmp10[col5 col7]

        ; -- Final output stage

        movq      mm3,mm1
        paddd     mm1,mm4               ; mm1=data0[col0 ****]=(A0 **)
        psubd     mm3,mm4               ; mm3=data1[col0 ****]=(B0 **)
        punpckldq mm1,mm3               ; mm1=(A0 B0)

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

        movq    mm4,mm2
        movq    mm3,mm5
        paddd   mm2,mm0                 ; mm2=data0[col1 col3]=(A1 A3)
        paddd   mm5,mm6                 ; mm5=data0[col5 col7]=(A5 A7)
        psubd   mm4,mm0                 ; mm4=data1[col1 col3]=(B1 B3)
        psubd   mm3,mm6                 ; mm3=data1[col5 col7]=(B5 B7)

        paddd   mm1,mm7
        psrad   mm1,DESCALE_P1_2

        paddd   mm2,mm7
        paddd   mm5,mm7
        psrad   mm2,DESCALE_P1_2
        psrad   mm5,DESCALE_P1_2
        paddd   mm4,mm7
        paddd   mm3,mm7
        psrad   mm4,DESCALE_P1_2
        psrad   mm3,DESCALE_P1_2

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

        mov     edi, JSAMPARRAY [output_buf(ebp)]       ; (JSAMPROW *)
        mov     eax, JDIMENSION [output_col(ebp)]

        ; | input:| result:|
        ; | A0 B0 |        |
        ; | A1 B1 | C0 C1  |
        ; | A3 B3 | D0 D1  |
        ; | A5 B5 |        |
        ; | A7 B7 |        |

        ; -- Odd part

        packssdw  mm2,mm4               ; mm2=(A1 A3 B1 B3)
        packssdw  mm5,mm3               ; mm5=(A5 A7 B5 B7)
        pmaddwd   mm2,[GOTOFF(ebx,PW_F362_MF127)]
        pmaddwd   mm5,[GOTOFF(ebx,PW_F085_MF072)]

        paddd     mm2,mm5               ; mm2=tmp0[row0 row1]

        ; -- Even part

        pslld     mm1,(CONST_BITS+2)    ; mm1=tmp10[row0 row1]

        ; -- Final output stage

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

        movq      mm6,mm1
        paddd     mm1,mm2               ; mm1=data0[row0 row1]=(C0 C1)
        psubd     mm6,mm2               ; mm6=data1[row0 row1]=(D0 D1)

        paddd     mm1,mm0
        paddd     mm6,mm0
        psrad     mm1,DESCALE_P2_2
        psrad     mm6,DESCALE_P2_2

        movq      mm7,mm1               ; transpose coefficients
        punpckldq mm1,mm6               ; mm1=(C0 D0)
        punpckhdq mm7,mm6               ; mm7=(C1 D1)

        packssdw  mm1,mm7               ; mm1=(C0 D0 C1 D1)
        packsswb  mm1,mm1               ; mm1=(C0 D0 C1 D1 C0 D0 C1 D1)
        paddb     mm1,[GOTOFF(ebx,PB_CENTERJSAMP)]

        movd    ecx,mm1
        movd    ebx,mm1                 ; ebx=(C0 D0 C1 D1)
        shr     ecx,2*BYTE_BIT          ; ecx=(C1 D1 -- --)

        mov     edx, JSAMPROW [edi+0*SIZEOF_JSAMPROW]
        mov     esi, JSAMPROW [edi+1*SIZEOF_JSAMPROW]
        mov     WORD [edx+eax*SIZEOF_JSAMPLE], bx
        mov     WORD [esi+eax*SIZEOF_JSAMPLE], cx

        emms            ; empty MMX state

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