;
; jidctfst.asm - fast integer IDCT (64-bit SSE2)
;
; Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
; Copyright (C) 2009, 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.
;
; [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) PRIVATE

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

; r10 = jpeg_component_info *compptr
; r11 = JCOEFPTR coef_block
; r12 = JSAMPARRAY output_buf
; r13 = JDIMENSION output_col

%define original_rbp    rbp+0
%define wk(i)           rbp-(WK_NUM-(i))*SIZEOF_XMMWORD ; xmmword wk[WK_NUM]
%define WK_NUM          2

        align   16
        global  EXTN(jsimd_idct_ifast_sse2) PRIVATE

EXTN(jsimd_idct_ifast_sse2):
        push    rbp
        mov     rax,rsp                         ; rax = original rbp
        sub     rsp, byte 4
        and     rsp, byte (-SIZEOF_XMMWORD)     ; align to 128 bits
        mov     [rsp],rax
        mov     rbp,rsp                         ; rbp = aligned rbp
        lea     rsp, [wk(0)]
        collect_args

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

        mov     rdx, r10                ; quantptr
        mov     rsi, r11                ; inptr

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

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

        ; -- AC terms all zero

        movdqa  xmm0, XMMWORD [XMMBLOCK(0,0,rsi,SIZEOF_JCOEF)]
        pmullw  xmm0, XMMWORD [XMMBLOCK(0,0,rdx,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
%endif
.columnDCT:

        ; -- Even part

        movdqa  xmm0, XMMWORD [XMMBLOCK(0,0,rsi,SIZEOF_JCOEF)]
        movdqa  xmm1, XMMWORD [XMMBLOCK(2,0,rsi,SIZEOF_JCOEF)]
        pmullw  xmm0, XMMWORD [XMMBLOCK(0,0,rdx,SIZEOF_IFAST_MULT_TYPE)]
        pmullw  xmm1, XMMWORD [XMMBLOCK(2,0,rdx,SIZEOF_IFAST_MULT_TYPE)]
        movdqa  xmm2, XMMWORD [XMMBLOCK(4,0,rsi,SIZEOF_JCOEF)]
        movdqa  xmm3, XMMWORD [XMMBLOCK(6,0,rsi,SIZEOF_JCOEF)]
        pmullw  xmm2, XMMWORD [XMMBLOCK(4,0,rdx,SIZEOF_IFAST_MULT_TYPE)]
        pmullw  xmm3, XMMWORD [XMMBLOCK(6,0,rdx,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,[rel 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,rsi,SIZEOF_JCOEF)]
        movdqa  xmm3, XMMWORD [XMMBLOCK(3,0,rsi,SIZEOF_JCOEF)]
        pmullw  xmm2, XMMWORD [XMMBLOCK(1,0,rdx,SIZEOF_IFAST_MULT_TYPE)]
        pmullw  xmm3, XMMWORD [XMMBLOCK(3,0,rdx,SIZEOF_IFAST_MULT_TYPE)]
        movdqa  xmm5, XMMWORD [XMMBLOCK(5,0,rsi,SIZEOF_JCOEF)]
        movdqa  xmm1, XMMWORD [XMMBLOCK(7,0,rsi,SIZEOF_JCOEF)]
        pmullw  xmm5, XMMWORD [XMMBLOCK(5,0,rdx,SIZEOF_IFAST_MULT_TYPE)]
        pmullw  xmm1, XMMWORD [XMMBLOCK(7,0,rdx,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,[rel 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,[rel PW_F1847]     ; xmm5=z5
        pmulhw  xmm0,[rel PW_MF1613]
        pmulhw  xmm2,[rel 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 [rsi + DCTSIZE2*SIZEOF_JCOEF + 0*32]
        prefetchnta [rsi + DCTSIZE2*SIZEOF_JCOEF + 1*32]
        prefetchnta [rsi + DCTSIZE2*SIZEOF_JCOEF + 2*32]
        prefetchnta [rsi + DCTSIZE2*SIZEOF_JCOEF + 3*32]

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

        mov     rax, [original_rbp]
        mov     rdi, r12        ; (JSAMPROW *)
        mov     eax, r13d

        ; -- 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,[rel 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,[rel 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,[rel PW_F1847]     ; xmm4=z5
        pmulhw  xmm6,[rel PW_MF1613]
        pmulhw  xmm0,[rel 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,[rel PB_CENTERJSAMP]     ; xmm2=[rel 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     rdx, JSAMPROW [rdi+0*SIZEOF_JSAMPROW]
        mov     rsi, JSAMPROW [rdi+2*SIZEOF_JSAMPROW]
        movq    XMM_MMWORD [rdx+rax*SIZEOF_JSAMPLE], xmm1
        movq    XMM_MMWORD [rsi+rax*SIZEOF_JSAMPLE], xmm3
        mov     rdx, JSAMPROW [rdi+4*SIZEOF_JSAMPROW]
        mov     rsi, JSAMPROW [rdi+6*SIZEOF_JSAMPROW]
        movq    XMM_MMWORD [rdx+rax*SIZEOF_JSAMPLE], xmm4
        movq    XMM_MMWORD [rsi+rax*SIZEOF_JSAMPLE], xmm7

        mov     rdx, JSAMPROW [rdi+1*SIZEOF_JSAMPROW]
        mov     rsi, JSAMPROW [rdi+3*SIZEOF_JSAMPROW]
        movq    XMM_MMWORD [rdx+rax*SIZEOF_JSAMPLE], xmm5
        movq    XMM_MMWORD [rsi+rax*SIZEOF_JSAMPLE], xmm0
        mov     rdx, JSAMPROW [rdi+5*SIZEOF_JSAMPROW]
        mov     rsi, JSAMPROW [rdi+7*SIZEOF_JSAMPROW]
        movq    XMM_MMWORD [rdx+rax*SIZEOF_JSAMPLE], xmm6
        movq    XMM_MMWORD [rsi+rax*SIZEOF_JSAMPLE], xmm2

        uncollect_args
        mov     rsp,rbp         ; rsp <- aligned rbp
        pop     rsp             ; rsp <- original rbp
        pop     rbp
        ret
        ret

; For some reason, the OS X linker does not honor the request to align the
; segment unless we do this.
        align   16
