;
; jiss2red-64.asm - reduced-size IDCT (64-bit SSE2)
;
; Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
; Copyright 2009 D. R. Commander
;
; 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_sse2)

EXTN(jconst_idct_red_sse2):

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

	alignz	16

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

; r10 = void * dct_table
; 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_4x4_sse2)

EXTN(jsimd_idct_4x4_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_4X4_SSE2
	mov	eax, DWORD [DWBLOCK(1,0,rsi,SIZEOF_JCOEF)]
	or	eax, DWORD [DWBLOCK(2,0,rsi,SIZEOF_JCOEF)]
	jnz	short .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(5,0,rsi,SIZEOF_JCOEF)]
	por	xmm0, XMMWORD [XMMBLOCK(6,0,rsi,SIZEOF_JCOEF)]
	por	xmm1, XMMWORD [XMMBLOCK(7,0,rsi,SIZEOF_JCOEF)]
	por	xmm0,xmm1
	packsswb xmm0,xmm0
	packsswb xmm0,xmm0
	movd	eax,xmm0
	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)]

	psllw	xmm0,PASS1_BITS

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

	pshufd	xmm1,xmm0,0x50	; xmm1=[col0 col1]=(00 00 00 00 01 01 01 01)
	pshufd	xmm0,xmm0,0xFA	; xmm0=[col2 col3]=(02 02 02 02 03 03 03 03)
	pshufd	xmm6,xmm3,0x50	; xmm6=[col4 col5]=(04 04 04 04 05 05 05 05)
	pshufd	xmm3,xmm3,0xFA	; xmm3=[col6 col7]=(06 06 06 06 07 07 07 07)

	jmp	near .column_end
%endif
.columnDCT:

	; -- Odd part

	movdqa	xmm0, XMMWORD [XMMBLOCK(1,0,rsi,SIZEOF_JCOEF)]
	movdqa	xmm1, XMMWORD [XMMBLOCK(3,0,rsi,SIZEOF_JCOEF)]
	pmullw	xmm0, XMMWORD [XMMBLOCK(1,0,rdx,SIZEOF_ISLOW_MULT_TYPE)]
	pmullw	xmm1, XMMWORD [XMMBLOCK(3,0,rdx,SIZEOF_ISLOW_MULT_TYPE)]
	movdqa	xmm2, XMMWORD [XMMBLOCK(5,0,rsi,SIZEOF_JCOEF)]
	movdqa	xmm3, XMMWORD [XMMBLOCK(7,0,rsi,SIZEOF_JCOEF)]
	pmullw	xmm2, XMMWORD [XMMBLOCK(5,0,rdx,SIZEOF_ISLOW_MULT_TYPE)]
	pmullw	xmm3, XMMWORD [XMMBLOCK(7,0,rdx,SIZEOF_ISLOW_MULT_TYPE)]

	movdqa    xmm4,xmm0
	movdqa    xmm5,xmm0
	punpcklwd xmm4,xmm1
	punpckhwd xmm5,xmm1
	movdqa    xmm0,xmm4
	movdqa    xmm1,xmm5
	pmaddwd   xmm4,[rel PW_F256_F089]	; xmm4=(tmp2L)
	pmaddwd   xmm5,[rel PW_F256_F089]	; xmm5=(tmp2H)
	pmaddwd   xmm0,[rel PW_F106_MF217]	; xmm0=(tmp0L)
	pmaddwd   xmm1,[rel PW_F106_MF217]	; xmm1=(tmp0H)

	movdqa    xmm6,xmm2
	movdqa    xmm7,xmm2
	punpcklwd xmm6,xmm3
	punpckhwd xmm7,xmm3
	movdqa    xmm2,xmm6
	movdqa    xmm3,xmm7
	pmaddwd   xmm6,[rel PW_MF060_MF050]	; xmm6=(tmp2L)
	pmaddwd   xmm7,[rel PW_MF060_MF050]	; xmm7=(tmp2H)
	pmaddwd   xmm2,[rel PW_F145_MF021]	; xmm2=(tmp0L)
	pmaddwd   xmm3,[rel PW_F145_MF021]	; xmm3=(tmp0H)

	paddd	xmm6,xmm4		; xmm6=tmp2L
	paddd	xmm7,xmm5		; xmm7=tmp2H
	paddd	xmm2,xmm0		; xmm2=tmp0L
	paddd	xmm3,xmm1		; xmm3=tmp0H

	movdqa	XMMWORD [wk(0)], xmm2	; wk(0)=tmp0L
	movdqa	XMMWORD [wk(1)], xmm3	; wk(1)=tmp0H

	; -- Even part

	movdqa	xmm4, XMMWORD [XMMBLOCK(0,0,rsi,SIZEOF_JCOEF)]
	movdqa	xmm5, XMMWORD [XMMBLOCK(2,0,rsi,SIZEOF_JCOEF)]
	movdqa	xmm0, XMMWORD [XMMBLOCK(6,0,rsi,SIZEOF_JCOEF)]
	pmullw	xmm4, XMMWORD [XMMBLOCK(0,0,rdx,SIZEOF_ISLOW_MULT_TYPE)]
	pmullw	xmm5, XMMWORD [XMMBLOCK(2,0,rdx,SIZEOF_ISLOW_MULT_TYPE)]
	pmullw	xmm0, XMMWORD [XMMBLOCK(6,0,rdx,SIZEOF_ISLOW_MULT_TYPE)]

	pxor      xmm1,xmm1
	pxor      xmm2,xmm2
	punpcklwd xmm1,xmm4		; xmm1=tmp0L
	punpckhwd xmm2,xmm4		; xmm2=tmp0H
	psrad     xmm1,(16-CONST_BITS-1) ; psrad xmm1,16 & pslld xmm1,CONST_BITS+1
	psrad     xmm2,(16-CONST_BITS-1) ; psrad xmm2,16 & pslld xmm2,CONST_BITS+1

	movdqa    xmm3,xmm5		; xmm5=in2=z2
	punpcklwd xmm5,xmm0		; xmm0=in6=z3
	punpckhwd xmm3,xmm0
	pmaddwd   xmm5,[rel PW_F184_MF076]	; xmm5=tmp2L
	pmaddwd   xmm3,[rel PW_F184_MF076]	; xmm3=tmp2H

	movdqa	xmm4,xmm1
	movdqa	xmm0,xmm2
	paddd	xmm1,xmm5		; xmm1=tmp10L
	paddd	xmm2,xmm3		; xmm2=tmp10H
	psubd	xmm4,xmm5		; xmm4=tmp12L
	psubd	xmm0,xmm3		; xmm0=tmp12H

	; -- Final output stage

	movdqa	xmm5,xmm1
	movdqa	xmm3,xmm2
	paddd	xmm1,xmm6		; xmm1=data0L
	paddd	xmm2,xmm7		; xmm2=data0H
	psubd	xmm5,xmm6		; xmm5=data3L
	psubd	xmm3,xmm7		; xmm3=data3H

	movdqa	xmm6,[rel PD_DESCALE_P1_4]	; xmm6=[rel PD_DESCALE_P1_4]

	paddd	xmm1,xmm6
	paddd	xmm2,xmm6
	psrad	xmm1,DESCALE_P1_4
	psrad	xmm2,DESCALE_P1_4
	paddd	xmm5,xmm6
	paddd	xmm3,xmm6
	psrad	xmm5,DESCALE_P1_4
	psrad	xmm3,DESCALE_P1_4

	packssdw  xmm1,xmm2		; xmm1=data0=(00 01 02 03 04 05 06 07)
	packssdw  xmm5,xmm3		; xmm5=data3=(30 31 32 33 34 35 36 37)

	movdqa	xmm7, XMMWORD [wk(0)]	; xmm7=tmp0L
	movdqa	xmm6, XMMWORD [wk(1)]	; xmm6=tmp0H

	movdqa	xmm2,xmm4
	movdqa	xmm3,xmm0
	paddd	xmm4,xmm7		; xmm4=data1L
	paddd	xmm0,xmm6		; xmm0=data1H
	psubd	xmm2,xmm7		; xmm2=data2L
	psubd	xmm3,xmm6		; xmm3=data2H

	movdqa	xmm7,[rel PD_DESCALE_P1_4]	; xmm7=[rel PD_DESCALE_P1_4]

	paddd	xmm4,xmm7
	paddd	xmm0,xmm7
	psrad	xmm4,DESCALE_P1_4
	psrad	xmm0,DESCALE_P1_4
	paddd	xmm2,xmm7
	paddd	xmm3,xmm7
	psrad	xmm2,DESCALE_P1_4
	psrad	xmm3,DESCALE_P1_4

	packssdw  xmm4,xmm0		; xmm4=data1=(10 11 12 13 14 15 16 17)
	packssdw  xmm2,xmm3		; xmm2=data2=(20 21 22 23 24 25 26 27)

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

	movdqa    xmm0,xmm1	; transpose coefficients(phase 2)
	punpckldq xmm1,xmm2	; xmm1=[col0 col1]=(00 10 20 30 01 11 21 31)
	punpckhdq xmm0,xmm2	; xmm0=[col2 col3]=(02 12 22 32 03 13 23 33)
	movdqa    xmm3,xmm6	; transpose coefficients(phase 2)
	punpckldq xmm6,xmm7	; xmm6=[col4 col5]=(04 14 24 34 05 15 25 35)
	punpckhdq xmm3,xmm7	; xmm3=[col6 col7]=(06 16 26 36 07 17 27 37)
.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, store into output array.

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

	; -- Even part

	pxor      xmm4,xmm4
	punpcklwd xmm4,xmm1		; xmm4=tmp0
	psrad     xmm4,(16-CONST_BITS-1) ; psrad xmm4,16 & pslld xmm4,CONST_BITS+1

	; -- Odd part

	punpckhwd xmm1,xmm0
	punpckhwd xmm6,xmm3
	movdqa    xmm5,xmm1
	movdqa    xmm2,xmm6
	pmaddwd   xmm1,[rel PW_F256_F089]	; xmm1=(tmp2)
	pmaddwd   xmm6,[rel PW_MF060_MF050]	; xmm6=(tmp2)
	pmaddwd   xmm5,[rel PW_F106_MF217]	; xmm5=(tmp0)
	pmaddwd   xmm2,[rel PW_F145_MF021]	; xmm2=(tmp0)

	paddd     xmm6,xmm1		; xmm6=tmp2
	paddd     xmm2,xmm5		; xmm2=tmp0

	; -- Even part

	punpcklwd xmm0,xmm3
	pmaddwd   xmm0,[rel PW_F184_MF076]	; xmm0=tmp2

	movdqa    xmm7,xmm4
	paddd     xmm4,xmm0		; xmm4=tmp10
	psubd     xmm7,xmm0		; xmm7=tmp12

	; -- Final output stage

	movdqa	xmm1,[rel PD_DESCALE_P2_4]	; xmm1=[rel PD_DESCALE_P2_4]

	movdqa	xmm5,xmm4
	movdqa	xmm3,xmm7
	paddd	xmm4,xmm6		; xmm4=data0=(00 10 20 30)
	paddd	xmm7,xmm2		; xmm7=data1=(01 11 21 31)
	psubd	xmm5,xmm6		; xmm5=data3=(03 13 23 33)
	psubd	xmm3,xmm2		; xmm3=data2=(02 12 22 32)

	paddd	xmm4,xmm1
	paddd	xmm7,xmm1
	psrad	xmm4,DESCALE_P2_4
	psrad	xmm7,DESCALE_P2_4
	paddd	xmm5,xmm1
	paddd	xmm3,xmm1
	psrad	xmm5,DESCALE_P2_4
	psrad	xmm3,DESCALE_P2_4

	packssdw  xmm4,xmm3		; xmm4=(00 10 20 30 02 12 22 32)
	packssdw  xmm7,xmm5		; xmm7=(01 11 21 31 03 13 23 33)

	movdqa    xmm0,xmm4		; transpose coefficients(phase 1)
	punpcklwd xmm4,xmm7		; xmm4=(00 01 10 11 20 21 30 31)
	punpckhwd xmm0,xmm7		; xmm0=(02 03 12 13 22 23 32 33)

	movdqa    xmm6,xmm4		; transpose coefficients(phase 2)
	punpckldq xmm4,xmm0		; xmm4=(00 01 02 03 10 11 12 13)
	punpckhdq xmm6,xmm0		; xmm6=(20 21 22 23 30 31 32 33)

	packsswb  xmm4,xmm6		; xmm4=(00 01 02 03 10 11 12 13 20 ..)
	paddb     xmm4,[rel PB_CENTERJSAMP]

	pshufd    xmm2,xmm4,0x39	; xmm2=(10 11 12 13 20 21 22 23 30 ..)
	pshufd    xmm1,xmm4,0x4E	; xmm1=(20 21 22 23 30 31 32 33 00 ..)
	pshufd    xmm3,xmm4,0x93	; xmm3=(30 31 32 33 00 01 02 03 10 ..)

	mov	rdx, JSAMPROW [rdi+0*SIZEOF_JSAMPROW]
	mov	rsi, JSAMPROW [rdi+1*SIZEOF_JSAMPROW]
	movd	XMM_DWORD [rdx+rax*SIZEOF_JSAMPLE], xmm4
	movd	XMM_DWORD [rsi+rax*SIZEOF_JSAMPLE], xmm2
	mov	rdx, JSAMPROW [rdi+2*SIZEOF_JSAMPROW]
	mov	rsi, JSAMPROW [rdi+3*SIZEOF_JSAMPROW]
	movd	XMM_DWORD [rdx+rax*SIZEOF_JSAMPLE], xmm1
	movd	XMM_DWORD [rsi+rax*SIZEOF_JSAMPLE], xmm3

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


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

; r10 = void * dct_table
; r11 = JCOEFPTR coef_block
; r12 = JSAMPARRAY output_buf
; r13 = JDIMENSION output_col

	align	16
	global	EXTN(jsimd_idct_2x2_sse2)

EXTN(jsimd_idct_2x2_sse2):
	push	rbp
	mov	rax,rsp
	mov	rbp,rsp
	collect_args
	push	rbx

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

	mov	rdx, r10	; quantptr
	mov	rsi, r11		; 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

	movdqa	xmm0, XMMWORD [XMMBLOCK(1,0,rsi,SIZEOF_JCOEF)]
	movdqa	xmm1, XMMWORD [XMMBLOCK(3,0,rsi,SIZEOF_JCOEF)]
	pmullw	xmm0, XMMWORD [XMMBLOCK(1,0,rdx,SIZEOF_ISLOW_MULT_TYPE)]
	pmullw	xmm1, XMMWORD [XMMBLOCK(3,0,rdx,SIZEOF_ISLOW_MULT_TYPE)]
	movdqa	xmm2, XMMWORD [XMMBLOCK(5,0,rsi,SIZEOF_JCOEF)]
	movdqa	xmm3, XMMWORD [XMMBLOCK(7,0,rsi,SIZEOF_JCOEF)]
	pmullw	xmm2, XMMWORD [XMMBLOCK(5,0,rdx,SIZEOF_ISLOW_MULT_TYPE)]
	pmullw	xmm3, XMMWORD [XMMBLOCK(7,0,rdx,SIZEOF_ISLOW_MULT_TYPE)]

	; xmm0=(10 11 ** 13 ** 15 ** 17), xmm1=(30 31 ** 33 ** 35 ** 37)
	; xmm2=(50 51 ** 53 ** 55 ** 57), xmm3=(70 71 ** 73 ** 75 ** 77)

	pcmpeqd   xmm7,xmm7
	pslld     xmm7,WORD_BIT		; xmm7={0x0000 0xFFFF 0x0000 0xFFFF ..}

	movdqa    xmm4,xmm0		; xmm4=(10 11 ** 13 ** 15 ** 17)
	movdqa    xmm5,xmm2		; xmm5=(50 51 ** 53 ** 55 ** 57)
	punpcklwd xmm4,xmm1		; xmm4=(10 30 11 31 ** ** 13 33)
	punpcklwd xmm5,xmm3		; xmm5=(50 70 51 71 ** ** 53 73)
	pmaddwd   xmm4,[rel PW_F362_MF127]
	pmaddwd   xmm5,[rel PW_F085_MF072]

	psrld	xmm0,WORD_BIT		; xmm0=(11 -- 13 -- 15 -- 17 --)
	pand	xmm1,xmm7		; xmm1=(-- 31 -- 33 -- 35 -- 37)
	psrld	xmm2,WORD_BIT		; xmm2=(51 -- 53 -- 55 -- 57 --)
	pand	xmm3,xmm7		; xmm3=(-- 71 -- 73 -- 75 -- 77)
	por	xmm0,xmm1		; xmm0=(11 31 13 33 15 35 17 37)
	por	xmm2,xmm3		; xmm2=(51 71 53 73 55 75 57 77)
	pmaddwd	xmm0,[rel PW_F362_MF127]
	pmaddwd	xmm2,[rel PW_F085_MF072]

	paddd	xmm4,xmm5		; xmm4=tmp0[col0 col1 **** col3]
	paddd	xmm0,xmm2		; xmm0=tmp0[col1 col3 col5 col7]

	; -- Even part

	movdqa	xmm6, XMMWORD [XMMBLOCK(0,0,rsi,SIZEOF_JCOEF)]
	pmullw	xmm6, XMMWORD [XMMBLOCK(0,0,rdx,SIZEOF_ISLOW_MULT_TYPE)]

	; xmm6=(00 01 ** 03 ** 05 ** 07)

	movdqa	xmm1,xmm6		; xmm1=(00 01 ** 03 ** 05 ** 07)
	pslld	xmm6,WORD_BIT		; xmm6=(-- 00 -- ** -- ** -- **)
	pand	xmm1,xmm7		; xmm1=(-- 01 -- 03 -- 05 -- 07)
	psrad	xmm6,(WORD_BIT-CONST_BITS-2) ; xmm6=tmp10[col0 **** **** ****]
	psrad	xmm1,(WORD_BIT-CONST_BITS-2) ; xmm1=tmp10[col1 col3 col5 col7]

	; -- Final output stage

	movdqa	xmm3,xmm6
	movdqa	xmm5,xmm1
	paddd	xmm6,xmm4	; xmm6=data0[col0 **** **** ****]=(A0 ** ** **)
	paddd	xmm1,xmm0	; xmm1=data0[col1 col3 col5 col7]=(A1 A3 A5 A7)
	psubd	xmm3,xmm4	; xmm3=data1[col0 **** **** ****]=(B0 ** ** **)
	psubd	xmm5,xmm0	; xmm5=data1[col1 col3 col5 col7]=(B1 B3 B5 B7)

	movdqa	xmm2,[rel PD_DESCALE_P1_2]	; xmm2=[rel PD_DESCALE_P1_2]

	punpckldq  xmm6,xmm3		; xmm6=(A0 B0 ** **)

	movdqa     xmm7,xmm1
	punpcklqdq xmm1,xmm5		; xmm1=(A1 A3 B1 B3)
	punpckhqdq xmm7,xmm5		; xmm7=(A5 A7 B5 B7)

	paddd	xmm6,xmm2
	psrad	xmm6,DESCALE_P1_2

	paddd	xmm1,xmm2
	paddd	xmm7,xmm2
	psrad	xmm1,DESCALE_P1_2
	psrad	xmm7,DESCALE_P1_2

	; -- 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, store into output array.

	mov	rdi, r12	; (JSAMPROW *)
	mov	rax, r13

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

	; -- Odd part

	packssdw  xmm1,xmm1		; xmm1=(A1 A3 B1 B3 A1 A3 B1 B3)
	packssdw  xmm7,xmm7		; xmm7=(A5 A7 B5 B7 A5 A7 B5 B7)
	pmaddwd   xmm1,[rel PW_F362_MF127]
	pmaddwd   xmm7,[rel PW_F085_MF072]

	paddd     xmm1,xmm7		; xmm1=tmp0[row0 row1 row0 row1]

	; -- Even part

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

	; -- Final output stage

	movdqa    xmm4,xmm6
	paddd     xmm6,xmm1	; xmm6=data0[row0 row1 **** ****]=(C0 C1 ** **)
	psubd     xmm4,xmm1	; xmm4=data1[row0 row1 **** ****]=(D0 D1 ** **)

	punpckldq xmm6,xmm4	; xmm6=(C0 D0 C1 D1)

	paddd     xmm6,[rel PD_DESCALE_P2_2]
	psrad     xmm6,DESCALE_P2_2

	packssdw  xmm6,xmm6		; xmm6=(C0 D0 C1 D1 C0 D0 C1 D1)
	packsswb  xmm6,xmm6		; xmm6=(C0 D0 C1 D1 C0 D0 C1 D1 ..)
	paddb     xmm6,[rel PB_CENTERJSAMP]

	pextrw	ebx,xmm6,0x00		; ebx=(C0 D0 -- --)
	pextrw	ecx,xmm6,0x01		; ecx=(C1 D1 -- --)

	mov	rdx, JSAMPROW [rdi+0*SIZEOF_JSAMPROW]
	mov	rsi, JSAMPROW [rdi+1*SIZEOF_JSAMPROW]
	mov	WORD [rdx+rax*SIZEOF_JSAMPLE], bx
	mov	WORD [rsi+rax*SIZEOF_JSAMPLE], cx

	pop	rbx
	uncollect_args
	pop	rbp
	ret

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