;
; jidctfst.asm - fast integer IDCT (SSE2)
;
; Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
; Copyright (C) 2016, D. R. Commander.
;
; 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 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.

%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      32
    GLOBAL_DATA(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      32

; --------------------------------------------------------------------------
    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       32
    GLOBAL_FUNCTION(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       32
