;
; jiss2red.asm - reduced-size 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 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	32
;
; 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)
;

%define dct_table(b)	(b)+8			; void * dct_table
%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_4x4_sse2) PRIVATE

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

	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
	alignx	16,7
%endif
.columnDCT:

	; -- Odd part

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

	movdqa    xmm4,xmm0
	movdqa    xmm5,xmm0
	punpcklwd xmm4,xmm1
	punpckhwd xmm5,xmm1
	movdqa    xmm0,xmm4
	movdqa    xmm1,xmm5
	pmaddwd   xmm4,[GOTOFF(ebx,PW_F256_F089)]	; xmm4=(tmp2L)
	pmaddwd   xmm5,[GOTOFF(ebx,PW_F256_F089)]	; xmm5=(tmp2H)
	pmaddwd   xmm0,[GOTOFF(ebx,PW_F106_MF217)]	; xmm0=(tmp0L)
	pmaddwd   xmm1,[GOTOFF(ebx,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,[GOTOFF(ebx,PW_MF060_MF050)]	; xmm6=(tmp2L)
	pmaddwd   xmm7,[GOTOFF(ebx,PW_MF060_MF050)]	; xmm7=(tmp2H)
	pmaddwd   xmm2,[GOTOFF(ebx,PW_F145_MF021)]	; xmm2=(tmp0L)
	pmaddwd   xmm3,[GOTOFF(ebx,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,esi,SIZEOF_JCOEF)]
	movdqa	xmm5, XMMWORD [XMMBLOCK(2,0,esi,SIZEOF_JCOEF)]
	movdqa	xmm0, XMMWORD [XMMBLOCK(6,0,esi,SIZEOF_JCOEF)]
	pmullw	xmm4, XMMWORD [XMMBLOCK(0,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
	pmullw	xmm5, XMMWORD [XMMBLOCK(2,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
	pmullw	xmm0, XMMWORD [XMMBLOCK(6,0,edx,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,[GOTOFF(ebx,PW_F184_MF076)]	; xmm5=tmp2L
	pmaddwd   xmm3,[GOTOFF(ebx,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,[GOTOFF(ebx,PD_DESCALE_P1_4)]	; xmm6=[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,[GOTOFF(ebx,PD_DESCALE_P1_4)]	; xmm7=[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 [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, store into output array.

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

	; -- 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,[GOTOFF(ebx,PW_F256_F089)]	; xmm1=(tmp2)
	pmaddwd   xmm6,[GOTOFF(ebx,PW_MF060_MF050)]	; xmm6=(tmp2)
	pmaddwd   xmm5,[GOTOFF(ebx,PW_F106_MF217)]	; xmm5=(tmp0)
	pmaddwd   xmm2,[GOTOFF(ebx,PW_F145_MF021)]	; xmm2=(tmp0)

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

	; -- Even part

	punpcklwd xmm0,xmm3
	pmaddwd   xmm0,[GOTOFF(ebx,PW_F184_MF076)]	; xmm0=tmp2

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

	; -- Final output stage

	movdqa	xmm1,[GOTOFF(ebx,PD_DESCALE_P2_4)]	; xmm1=[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,[GOTOFF(ebx,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	edx, JSAMPROW [edi+0*SIZEOF_JSAMPROW]
	mov	esi, JSAMPROW [edi+1*SIZEOF_JSAMPROW]
	movd	XMM_DWORD [edx+eax*SIZEOF_JSAMPLE], xmm4
	movd	XMM_DWORD [esi+eax*SIZEOF_JSAMPLE], xmm2
	mov	edx, JSAMPROW [edi+2*SIZEOF_JSAMPROW]
	mov	esi, JSAMPROW [edi+3*SIZEOF_JSAMPROW]
	movd	XMM_DWORD [edx+eax*SIZEOF_JSAMPLE], xmm1
	movd	XMM_DWORD [esi+eax*SIZEOF_JSAMPLE], xmm3

	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


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

%define dct_table(b)	(b)+8			; void * dct_table
%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

	align	16
	global	EXTN(jsimd_idct_2x2_sse2) PRIVATE

EXTN(jsimd_idct_2x2_sse2):
	push	ebp
	mov	ebp,esp
	push	ebx
;	push	ecx		; need not be preserved
;	push	edx		; need not be preserved
	push	esi
	push	edi

	get_GOT	ebx		; get GOT address

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

	mov	edx, POINTER [dct_table(ebp)]	; quantptr
	mov	esi, JCOEFPTR [coef_block(ebp)]		; 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,esi,SIZEOF_JCOEF)]
	movdqa	xmm1, XMMWORD [XMMBLOCK(3,0,esi,SIZEOF_JCOEF)]
	pmullw	xmm0, XMMWORD [XMMBLOCK(1,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
	pmullw	xmm1, XMMWORD [XMMBLOCK(3,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
	movdqa	xmm2, XMMWORD [XMMBLOCK(5,0,esi,SIZEOF_JCOEF)]
	movdqa	xmm3, XMMWORD [XMMBLOCK(7,0,esi,SIZEOF_JCOEF)]
	pmullw	xmm2, XMMWORD [XMMBLOCK(5,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
	pmullw	xmm3, XMMWORD [XMMBLOCK(7,0,edx,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,[GOTOFF(ebx,PW_F362_MF127)]
	pmaddwd   xmm5,[GOTOFF(ebx,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,[GOTOFF(ebx,PW_F362_MF127)]
	pmaddwd	xmm2,[GOTOFF(ebx,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,esi,SIZEOF_JCOEF)]
	pmullw	xmm6, XMMWORD [XMMBLOCK(0,0,edx,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,[GOTOFF(ebx,PD_DESCALE_P1_2)]	; xmm2=[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 [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, store into output array.

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

	; | 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,[GOTOFF(ebx,PW_F362_MF127)]
	pmaddwd   xmm7,[GOTOFF(ebx,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,[GOTOFF(ebx,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,[GOTOFF(ebx,PB_CENTERJSAMP)]

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

	mov	edx, JSAMPROW [edi+0*SIZEOF_JSAMPROW]
	mov	esi, JSAMPROW [edi+1*SIZEOF_JSAMPROW]
	mov	WORD [edx+eax*SIZEOF_JSAMPLE], bx
	mov	WORD [esi+eax*SIZEOF_JSAMPLE], cx

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