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

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) PRIVATE

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) PRIVATE

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
