;
; jidctfst.asm - fast integer IDCT (SSE2)
;
; 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_sse2)

EXTN(jconst_idct_ifast_sse2):

PW_F1414        times 8 dw  F_1_414 << CONST_SHIFT
PW_F1847        times 8 dw  F_1_847 << CONST_SHIFT
PW_MF1613       times 8 dw -F_1_613 << CONST_SHIFT
PW_F1082        times 8 dw  F_1_082 << CONST_SHIFT
PB_CENTERJSAMP  times 16 db CENTERJSAMPLE

        alignz  16

; --------------------------------------------------------------------------
        SECTION SEG_TEXT
        BITS    32
;
; Perform dequantization and inverse DCT on one block of coefficients.
;
; GLOBAL(void)
; jsimd_idct_ifast_sse2 (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_XMMWORD ; xmmword wk[WK_NUM]
%define WK_NUM          2

        align   16
        global  EXTN(jsimd_idct_ifast_sse2)

EXTN(jsimd_idct_ifast_sse2):
        push    ebp
        mov     eax,esp                         ; eax = original ebp
        sub     esp, byte 4
        and     esp, byte (-SIZEOF_XMMWORD)     ; align to 128 bits
        mov     [esp],eax
        mov     ebp,esp                         ; ebp = aligned ebp
        lea     esp, [wk(0)]
        pushpic ebx
;       push    ecx             ; unused
;       push    edx             ; need not be preserved
        push    esi
        push    edi

        get_GOT ebx             ; get GOT address

        ; ---- Pass 1: process columns from input.

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

%ifndef NO_ZERO_COLUMN_TEST_IFAST_SSE2
        mov     eax, DWORD [DWBLOCK(1,0,esi,SIZEOF_JCOEF)]
        or      eax, DWORD [DWBLOCK(2,0,esi,SIZEOF_JCOEF)]
        jnz     near .columnDCT

        movdqa  xmm0, XMMWORD [XMMBLOCK(1,0,esi,SIZEOF_JCOEF)]
        movdqa  xmm1, XMMWORD [XMMBLOCK(2,0,esi,SIZEOF_JCOEF)]
        por     xmm0, XMMWORD [XMMBLOCK(3,0,esi,SIZEOF_JCOEF)]
        por     xmm1, XMMWORD [XMMBLOCK(4,0,esi,SIZEOF_JCOEF)]
        por     xmm0, XMMWORD [XMMBLOCK(5,0,esi,SIZEOF_JCOEF)]
        por     xmm1, XMMWORD [XMMBLOCK(6,0,esi,SIZEOF_JCOEF)]
        por     xmm0, XMMWORD [XMMBLOCK(7,0,esi,SIZEOF_JCOEF)]
        por     xmm1,xmm0
        packsswb xmm1,xmm1
        packsswb xmm1,xmm1
        movd    eax,xmm1
        test    eax,eax
        jnz     short .columnDCT

        ; -- AC terms all zero

        movdqa  xmm0, XMMWORD [XMMBLOCK(0,0,esi,SIZEOF_JCOEF)]
        pmullw  xmm0, XMMWORD [XMMBLOCK(0,0,edx,SIZEOF_ISLOW_MULT_TYPE)]

        movdqa    xmm7,xmm0             ; xmm0=in0=(00 01 02 03 04 05 06 07)
        punpcklwd xmm0,xmm0             ; xmm0=(00 00 01 01 02 02 03 03)
        punpckhwd xmm7,xmm7             ; xmm7=(04 04 05 05 06 06 07 07)

        pshufd  xmm6,xmm0,0x00          ; xmm6=col0=(00 00 00 00 00 00 00 00)
        pshufd  xmm2,xmm0,0x55          ; xmm2=col1=(01 01 01 01 01 01 01 01)
        pshufd  xmm5,xmm0,0xAA          ; xmm5=col2=(02 02 02 02 02 02 02 02)
        pshufd  xmm0,xmm0,0xFF          ; xmm0=col3=(03 03 03 03 03 03 03 03)
        pshufd  xmm1,xmm7,0x00          ; xmm1=col4=(04 04 04 04 04 04 04 04)
        pshufd  xmm4,xmm7,0x55          ; xmm4=col5=(05 05 05 05 05 05 05 05)
        pshufd  xmm3,xmm7,0xAA          ; xmm3=col6=(06 06 06 06 06 06 06 06)
        pshufd  xmm7,xmm7,0xFF          ; xmm7=col7=(07 07 07 07 07 07 07 07)

        movdqa  XMMWORD [wk(0)], xmm2   ; wk(0)=col1
        movdqa  XMMWORD [wk(1)], xmm0   ; wk(1)=col3
        jmp     near .column_end
        alignx  16,7
%endif
.columnDCT:

        ; -- Even part

        movdqa  xmm0, XMMWORD [XMMBLOCK(0,0,esi,SIZEOF_JCOEF)]
        movdqa  xmm1, XMMWORD [XMMBLOCK(2,0,esi,SIZEOF_JCOEF)]
        pmullw  xmm0, XMMWORD [XMMBLOCK(0,0,edx,SIZEOF_IFAST_MULT_TYPE)]
        pmullw  xmm1, XMMWORD [XMMBLOCK(2,0,edx,SIZEOF_IFAST_MULT_TYPE)]
        movdqa  xmm2, XMMWORD [XMMBLOCK(4,0,esi,SIZEOF_JCOEF)]
        movdqa  xmm3, XMMWORD [XMMBLOCK(6,0,esi,SIZEOF_JCOEF)]
        pmullw  xmm2, XMMWORD [XMMBLOCK(4,0,edx,SIZEOF_IFAST_MULT_TYPE)]
        pmullw  xmm3, XMMWORD [XMMBLOCK(6,0,edx,SIZEOF_IFAST_MULT_TYPE)]

        movdqa  xmm4,xmm0
        movdqa  xmm5,xmm1
        psubw   xmm0,xmm2               ; xmm0=tmp11
        psubw   xmm1,xmm3
        paddw   xmm4,xmm2               ; xmm4=tmp10
        paddw   xmm5,xmm3               ; xmm5=tmp13

        psllw   xmm1,PRE_MULTIPLY_SCALE_BITS
        pmulhw  xmm1,[GOTOFF(ebx,PW_F1414)]
        psubw   xmm1,xmm5               ; xmm1=tmp12

        movdqa  xmm6,xmm4
        movdqa  xmm7,xmm0
        psubw   xmm4,xmm5               ; xmm4=tmp3
        psubw   xmm0,xmm1               ; xmm0=tmp2
        paddw   xmm6,xmm5               ; xmm6=tmp0
        paddw   xmm7,xmm1               ; xmm7=tmp1

        movdqa  XMMWORD [wk(1)], xmm4   ; wk(1)=tmp3
        movdqa  XMMWORD [wk(0)], xmm0   ; wk(0)=tmp2

        ; -- Odd part

        movdqa  xmm2, XMMWORD [XMMBLOCK(1,0,esi,SIZEOF_JCOEF)]
        movdqa  xmm3, XMMWORD [XMMBLOCK(3,0,esi,SIZEOF_JCOEF)]
        pmullw  xmm2, XMMWORD [XMMBLOCK(1,0,edx,SIZEOF_IFAST_MULT_TYPE)]
        pmullw  xmm3, XMMWORD [XMMBLOCK(3,0,edx,SIZEOF_IFAST_MULT_TYPE)]
        movdqa  xmm5, XMMWORD [XMMBLOCK(5,0,esi,SIZEOF_JCOEF)]
        movdqa  xmm1, XMMWORD [XMMBLOCK(7,0,esi,SIZEOF_JCOEF)]
        pmullw  xmm5, XMMWORD [XMMBLOCK(5,0,edx,SIZEOF_IFAST_MULT_TYPE)]
        pmullw  xmm1, XMMWORD [XMMBLOCK(7,0,edx,SIZEOF_IFAST_MULT_TYPE)]

        movdqa  xmm4,xmm2
        movdqa  xmm0,xmm5
        psubw   xmm2,xmm1               ; xmm2=z12
        psubw   xmm5,xmm3               ; xmm5=z10
        paddw   xmm4,xmm1               ; xmm4=z11
        paddw   xmm0,xmm3               ; xmm0=z13

        movdqa  xmm1,xmm5               ; xmm1=z10(unscaled)
        psllw   xmm2,PRE_MULTIPLY_SCALE_BITS
        psllw   xmm5,PRE_MULTIPLY_SCALE_BITS

        movdqa  xmm3,xmm4
        psubw   xmm4,xmm0
        paddw   xmm3,xmm0               ; xmm3=tmp7

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

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

        movdqa  xmm0,xmm5
        paddw   xmm5,xmm2
        pmulhw  xmm5,[GOTOFF(ebx,PW_F1847)]     ; xmm5=z5
        pmulhw  xmm0,[GOTOFF(ebx,PW_MF1613)]
        pmulhw  xmm2,[GOTOFF(ebx,PW_F1082)]
        psubw   xmm0,xmm1
        psubw   xmm2,xmm5               ; xmm2=tmp10
        paddw   xmm0,xmm5               ; xmm0=tmp12

        ; -- Final output stage

        psubw   xmm0,xmm3               ; xmm0=tmp6
        movdqa  xmm1,xmm6
        movdqa  xmm5,xmm7
        paddw   xmm6,xmm3               ; xmm6=data0=(00 01 02 03 04 05 06 07)
        paddw   xmm7,xmm0               ; xmm7=data1=(10 11 12 13 14 15 16 17)
        psubw   xmm1,xmm3               ; xmm1=data7=(70 71 72 73 74 75 76 77)
        psubw   xmm5,xmm0               ; xmm5=data6=(60 61 62 63 64 65 66 67)
        psubw   xmm4,xmm0               ; xmm4=tmp5

        movdqa    xmm3,xmm6             ; transpose coefficients(phase 1)
        punpcklwd xmm6,xmm7             ; xmm6=(00 10 01 11 02 12 03 13)
        punpckhwd xmm3,xmm7             ; xmm3=(04 14 05 15 06 16 07 17)
        movdqa    xmm0,xmm5             ; transpose coefficients(phase 1)
        punpcklwd xmm5,xmm1             ; xmm5=(60 70 61 71 62 72 63 73)
        punpckhwd xmm0,xmm1             ; xmm0=(64 74 65 75 66 76 67 77)

        movdqa  xmm7, XMMWORD [wk(0)]   ; xmm7=tmp2
        movdqa  xmm1, XMMWORD [wk(1)]   ; xmm1=tmp3

        movdqa  XMMWORD [wk(0)], xmm5   ; wk(0)=(60 70 61 71 62 72 63 73)
        movdqa  XMMWORD [wk(1)], xmm0   ; wk(1)=(64 74 65 75 66 76 67 77)

        paddw   xmm2,xmm4               ; xmm2=tmp4
        movdqa  xmm5,xmm7
        movdqa  xmm0,xmm1
        paddw   xmm7,xmm4               ; xmm7=data2=(20 21 22 23 24 25 26 27)
        paddw   xmm1,xmm2               ; xmm1=data4=(40 41 42 43 44 45 46 47)
        psubw   xmm5,xmm4               ; xmm5=data5=(50 51 52 53 54 55 56 57)
        psubw   xmm0,xmm2               ; xmm0=data3=(30 31 32 33 34 35 36 37)

        movdqa    xmm4,xmm7             ; transpose coefficients(phase 1)
        punpcklwd xmm7,xmm0             ; xmm7=(20 30 21 31 22 32 23 33)
        punpckhwd xmm4,xmm0             ; xmm4=(24 34 25 35 26 36 27 37)
        movdqa    xmm2,xmm1             ; transpose coefficients(phase 1)
        punpcklwd xmm1,xmm5             ; xmm1=(40 50 41 51 42 52 43 53)
        punpckhwd xmm2,xmm5             ; xmm2=(44 54 45 55 46 56 47 57)

        movdqa    xmm0,xmm3             ; transpose coefficients(phase 2)
        punpckldq xmm3,xmm4             ; xmm3=(04 14 24 34 05 15 25 35)
        punpckhdq xmm0,xmm4             ; xmm0=(06 16 26 36 07 17 27 37)
        movdqa    xmm5,xmm6             ; transpose coefficients(phase 2)
        punpckldq xmm6,xmm7             ; xmm6=(00 10 20 30 01 11 21 31)
        punpckhdq xmm5,xmm7             ; xmm5=(02 12 22 32 03 13 23 33)

        movdqa  xmm4, XMMWORD [wk(0)]   ; xmm4=(60 70 61 71 62 72 63 73)
        movdqa  xmm7, XMMWORD [wk(1)]   ; xmm7=(64 74 65 75 66 76 67 77)

        movdqa  XMMWORD [wk(0)], xmm3   ; wk(0)=(04 14 24 34 05 15 25 35)
        movdqa  XMMWORD [wk(1)], xmm0   ; wk(1)=(06 16 26 36 07 17 27 37)

        movdqa    xmm3,xmm1             ; transpose coefficients(phase 2)
        punpckldq xmm1,xmm4             ; xmm1=(40 50 60 70 41 51 61 71)
        punpckhdq xmm3,xmm4             ; xmm3=(42 52 62 72 43 53 63 73)
        movdqa    xmm0,xmm2             ; transpose coefficients(phase 2)
        punpckldq xmm2,xmm7             ; xmm2=(44 54 64 74 45 55 65 75)
        punpckhdq xmm0,xmm7             ; xmm0=(46 56 66 76 47 57 67 77)

        movdqa     xmm4,xmm6            ; transpose coefficients(phase 3)
        punpcklqdq xmm6,xmm1            ; xmm6=col0=(00 10 20 30 40 50 60 70)
        punpckhqdq xmm4,xmm1            ; xmm4=col1=(01 11 21 31 41 51 61 71)
        movdqa     xmm7,xmm5            ; transpose coefficients(phase 3)
        punpcklqdq xmm5,xmm3            ; xmm5=col2=(02 12 22 32 42 52 62 72)
        punpckhqdq xmm7,xmm3            ; xmm7=col3=(03 13 23 33 43 53 63 73)

        movdqa  xmm1, XMMWORD [wk(0)]   ; xmm1=(04 14 24 34 05 15 25 35)
        movdqa  xmm3, XMMWORD [wk(1)]   ; xmm3=(06 16 26 36 07 17 27 37)

        movdqa  XMMWORD [wk(0)], xmm4   ; wk(0)=col1
        movdqa  XMMWORD [wk(1)], xmm7   ; wk(1)=col3

        movdqa     xmm4,xmm1            ; transpose coefficients(phase 3)
        punpcklqdq xmm1,xmm2            ; xmm1=col4=(04 14 24 34 44 54 64 74)
        punpckhqdq xmm4,xmm2            ; xmm4=col5=(05 15 25 35 45 55 65 75)
        movdqa     xmm7,xmm3            ; transpose coefficients(phase 3)
        punpcklqdq xmm3,xmm0            ; xmm3=col6=(06 16 26 36 46 56 66 76)
        punpckhqdq xmm7,xmm0            ; xmm7=col7=(07 17 27 37 47 57 67 77)
.column_end:

        ; -- Prefetch the next coefficient block

        prefetchnta [esi + DCTSIZE2*SIZEOF_JCOEF + 0*32]
        prefetchnta [esi + DCTSIZE2*SIZEOF_JCOEF + 1*32]
        prefetchnta [esi + DCTSIZE2*SIZEOF_JCOEF + 2*32]
        prefetchnta [esi + DCTSIZE2*SIZEOF_JCOEF + 3*32]

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

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

        ; -- Even part

        ; xmm6=col0, xmm5=col2, xmm1=col4, xmm3=col6

        movdqa  xmm2,xmm6
        movdqa  xmm0,xmm5
        psubw   xmm6,xmm1               ; xmm6=tmp11
        psubw   xmm5,xmm3
        paddw   xmm2,xmm1               ; xmm2=tmp10
        paddw   xmm0,xmm3               ; xmm0=tmp13

        psllw   xmm5,PRE_MULTIPLY_SCALE_BITS
        pmulhw  xmm5,[GOTOFF(ebx,PW_F1414)]
        psubw   xmm5,xmm0               ; xmm5=tmp12

        movdqa  xmm1,xmm2
        movdqa  xmm3,xmm6
        psubw   xmm2,xmm0               ; xmm2=tmp3
        psubw   xmm6,xmm5               ; xmm6=tmp2
        paddw   xmm1,xmm0               ; xmm1=tmp0
        paddw   xmm3,xmm5               ; xmm3=tmp1

        movdqa  xmm0, XMMWORD [wk(0)]   ; xmm0=col1
        movdqa  xmm5, XMMWORD [wk(1)]   ; xmm5=col3

        movdqa  XMMWORD [wk(0)], xmm2   ; wk(0)=tmp3
        movdqa  XMMWORD [wk(1)], xmm6   ; wk(1)=tmp2

        ; -- Odd part

        ; xmm0=col1, xmm5=col3, xmm4=col5, xmm7=col7

        movdqa  xmm2,xmm0
        movdqa  xmm6,xmm4
        psubw   xmm0,xmm7               ; xmm0=z12
        psubw   xmm4,xmm5               ; xmm4=z10
        paddw   xmm2,xmm7               ; xmm2=z11
        paddw   xmm6,xmm5               ; xmm6=z13

        movdqa  xmm7,xmm4               ; xmm7=z10(unscaled)
        psllw   xmm0,PRE_MULTIPLY_SCALE_BITS
        psllw   xmm4,PRE_MULTIPLY_SCALE_BITS

        movdqa  xmm5,xmm2
        psubw   xmm2,xmm6
        paddw   xmm5,xmm6               ; xmm5=tmp7

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

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

        movdqa  xmm6,xmm4
        paddw   xmm4,xmm0
        pmulhw  xmm4,[GOTOFF(ebx,PW_F1847)]     ; xmm4=z5
        pmulhw  xmm6,[GOTOFF(ebx,PW_MF1613)]
        pmulhw  xmm0,[GOTOFF(ebx,PW_F1082)]
        psubw   xmm6,xmm7
        psubw   xmm0,xmm4               ; xmm0=tmp10
        paddw   xmm6,xmm4               ; xmm6=tmp12

        ; -- Final output stage

        psubw   xmm6,xmm5               ; xmm6=tmp6
        movdqa  xmm7,xmm1
        movdqa  xmm4,xmm3
        paddw   xmm1,xmm5               ; xmm1=data0=(00 10 20 30 40 50 60 70)
        paddw   xmm3,xmm6               ; xmm3=data1=(01 11 21 31 41 51 61 71)
        psraw   xmm1,(PASS1_BITS+3)     ; descale
        psraw   xmm3,(PASS1_BITS+3)     ; descale
        psubw   xmm7,xmm5               ; xmm7=data7=(07 17 27 37 47 57 67 77)
        psubw   xmm4,xmm6               ; xmm4=data6=(06 16 26 36 46 56 66 76)
        psraw   xmm7,(PASS1_BITS+3)     ; descale
        psraw   xmm4,(PASS1_BITS+3)     ; descale
        psubw   xmm2,xmm6               ; xmm2=tmp5

        packsswb  xmm1,xmm4     ; xmm1=(00 10 20 30 40 50 60 70 06 16 26 36 46 56 66 76)
        packsswb  xmm3,xmm7     ; xmm3=(01 11 21 31 41 51 61 71 07 17 27 37 47 57 67 77)

        movdqa  xmm5, XMMWORD [wk(1)]   ; xmm5=tmp2
        movdqa  xmm6, XMMWORD [wk(0)]   ; xmm6=tmp3

        paddw   xmm0,xmm2               ; xmm0=tmp4
        movdqa  xmm4,xmm5
        movdqa  xmm7,xmm6
        paddw   xmm5,xmm2               ; xmm5=data2=(02 12 22 32 42 52 62 72)
        paddw   xmm6,xmm0               ; xmm6=data4=(04 14 24 34 44 54 64 74)
        psraw   xmm5,(PASS1_BITS+3)     ; descale
        psraw   xmm6,(PASS1_BITS+3)     ; descale
        psubw   xmm4,xmm2               ; xmm4=data5=(05 15 25 35 45 55 65 75)
        psubw   xmm7,xmm0               ; xmm7=data3=(03 13 23 33 43 53 63 73)
        psraw   xmm4,(PASS1_BITS+3)     ; descale
        psraw   xmm7,(PASS1_BITS+3)     ; descale

        movdqa    xmm2,[GOTOFF(ebx,PB_CENTERJSAMP)]     ; xmm2=[PB_CENTERJSAMP]

        packsswb  xmm5,xmm6     ; xmm5=(02 12 22 32 42 52 62 72 04 14 24 34 44 54 64 74)
        packsswb  xmm7,xmm4     ; xmm7=(03 13 23 33 43 53 63 73 05 15 25 35 45 55 65 75)

        paddb     xmm1,xmm2
        paddb     xmm3,xmm2
        paddb     xmm5,xmm2
        paddb     xmm7,xmm2

        movdqa    xmm0,xmm1     ; transpose coefficients(phase 1)
        punpcklbw xmm1,xmm3     ; xmm1=(00 01 10 11 20 21 30 31 40 41 50 51 60 61 70 71)
        punpckhbw xmm0,xmm3     ; xmm0=(06 07 16 17 26 27 36 37 46 47 56 57 66 67 76 77)
        movdqa    xmm6,xmm5     ; transpose coefficients(phase 1)
        punpcklbw xmm5,xmm7     ; xmm5=(02 03 12 13 22 23 32 33 42 43 52 53 62 63 72 73)
        punpckhbw xmm6,xmm7     ; xmm6=(04 05 14 15 24 25 34 35 44 45 54 55 64 65 74 75)

        movdqa    xmm4,xmm1     ; transpose coefficients(phase 2)
        punpcklwd xmm1,xmm5     ; xmm1=(00 01 02 03 10 11 12 13 20 21 22 23 30 31 32 33)
        punpckhwd xmm4,xmm5     ; xmm4=(40 41 42 43 50 51 52 53 60 61 62 63 70 71 72 73)
        movdqa    xmm2,xmm6     ; transpose coefficients(phase 2)
        punpcklwd xmm6,xmm0     ; xmm6=(04 05 06 07 14 15 16 17 24 25 26 27 34 35 36 37)
        punpckhwd xmm2,xmm0     ; xmm2=(44 45 46 47 54 55 56 57 64 65 66 67 74 75 76 77)

        movdqa    xmm3,xmm1     ; transpose coefficients(phase 3)
        punpckldq xmm1,xmm6     ; xmm1=(00 01 02 03 04 05 06 07 10 11 12 13 14 15 16 17)
        punpckhdq xmm3,xmm6     ; xmm3=(20 21 22 23 24 25 26 27 30 31 32 33 34 35 36 37)
        movdqa    xmm7,xmm4     ; transpose coefficients(phase 3)
        punpckldq xmm4,xmm2     ; xmm4=(40 41 42 43 44 45 46 47 50 51 52 53 54 55 56 57)
        punpckhdq xmm7,xmm2     ; xmm7=(60 61 62 63 64 65 66 67 70 71 72 73 74 75 76 77)

        pshufd  xmm5,xmm1,0x4E  ; xmm5=(10 11 12 13 14 15 16 17 00 01 02 03 04 05 06 07)
        pshufd  xmm0,xmm3,0x4E  ; xmm0=(30 31 32 33 34 35 36 37 20 21 22 23 24 25 26 27)
        pshufd  xmm6,xmm4,0x4E  ; xmm6=(50 51 52 53 54 55 56 57 40 41 42 43 44 45 46 47)
        pshufd  xmm2,xmm7,0x4E  ; xmm2=(70 71 72 73 74 75 76 77 60 61 62 63 64 65 66 67)

        mov     edx, JSAMPROW [edi+0*SIZEOF_JSAMPROW]
        mov     esi, JSAMPROW [edi+2*SIZEOF_JSAMPROW]
        movq    XMM_MMWORD [edx+eax*SIZEOF_JSAMPLE], xmm1
        movq    XMM_MMWORD [esi+eax*SIZEOF_JSAMPLE], xmm3
        mov     edx, JSAMPROW [edi+4*SIZEOF_JSAMPROW]
        mov     esi, JSAMPROW [edi+6*SIZEOF_JSAMPROW]
        movq    XMM_MMWORD [edx+eax*SIZEOF_JSAMPLE], xmm4
        movq    XMM_MMWORD [esi+eax*SIZEOF_JSAMPLE], xmm7

        mov     edx, JSAMPROW [edi+1*SIZEOF_JSAMPROW]
        mov     esi, JSAMPROW [edi+3*SIZEOF_JSAMPROW]
        movq    XMM_MMWORD [edx+eax*SIZEOF_JSAMPLE], xmm5
        movq    XMM_MMWORD [esi+eax*SIZEOF_JSAMPLE], xmm0
        mov     edx, JSAMPROW [edi+5*SIZEOF_JSAMPROW]
        mov     esi, JSAMPROW [edi+7*SIZEOF_JSAMPROW]
        movq    XMM_MMWORD [edx+eax*SIZEOF_JSAMPLE], xmm6
        movq    XMM_MMWORD [esi+eax*SIZEOF_JSAMPLE], xmm2

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