;
; jisseflt.asm - floating-point IDCT (SSE & MMX)
;
; 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 a floating-point implementation of the inverse DCT
; (Discrete Cosine Transform). The following code is based directly on
; the IJG's original jidctflt.c; see the jidctflt.c for more details.
;
; [TAB8]

%include "jsimdext.inc"
%include "jdct.inc"

; --------------------------------------------------------------------------

%macro	unpcklps2 2	; %1=(0 1 2 3) / %2=(4 5 6 7) => %1=(0 1 4 5)
	shufps	%1,%2,0x44
%endmacro

%macro	unpckhps2 2	; %1=(0 1 2 3) / %2=(4 5 6 7) => %1=(2 3 6 7)
	shufps	%1,%2,0xEE
%endmacro

; --------------------------------------------------------------------------
	SECTION	SEG_CONST

	alignz	16
	global	EXTN(jconst_idct_float_sse)

EXTN(jconst_idct_float_sse):

PD_1_414	times 4 dd  1.414213562373095048801689
PD_1_847	times 4 dd  1.847759065022573512256366
PD_1_082	times 4 dd  1.082392200292393968799446
PD_M2_613	times 4 dd -2.613125929752753055713286
PD_0_125	times 4 dd  0.125	; 1/8
PB_CENTERJSAMP	times 8 db  CENTERJSAMPLE

	alignz	16

; --------------------------------------------------------------------------
	SECTION	SEG_TEXT
	BITS	32
;
; Perform dequantization and inverse DCT on one block of coefficients.
;
; GLOBAL(void)
; jsimd_idct_float_sse (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
%define workspace	wk(0)-DCTSIZE2*SIZEOF_FAST_FLOAT
					; FAST_FLOAT workspace[DCTSIZE2]

	align	16
	global	EXTN(jsimd_idct_float_sse)

EXTN(jsimd_idct_float_sse):
	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, [workspace]
	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, store into work array.

;	mov	eax, [original_ebp]
	mov	edx, POINTER [dct_table(eax)]	; quantptr
	mov	esi, JCOEFPTR [coef_block(eax)]		; inptr
	lea	edi, [workspace]			; FAST_FLOAT * wsptr
	mov	ecx, DCTSIZE/4				; ctr
	alignx	16,7
.columnloop:
%ifndef NO_ZERO_COLUMN_TEST_FLOAT_SSE
	mov	eax, DWORD [DWBLOCK(1,0,esi,SIZEOF_JCOEF)]
	or	eax, DWORD [DWBLOCK(2,0,esi,SIZEOF_JCOEF)]
	jnz	near .columnDCT

	movq	mm0, MMWORD [MMBLOCK(1,0,esi,SIZEOF_JCOEF)]
	movq	mm1, MMWORD [MMBLOCK(2,0,esi,SIZEOF_JCOEF)]
	por	mm0, MMWORD [MMBLOCK(3,0,esi,SIZEOF_JCOEF)]
	por	mm1, MMWORD [MMBLOCK(4,0,esi,SIZEOF_JCOEF)]
	por	mm0, MMWORD [MMBLOCK(5,0,esi,SIZEOF_JCOEF)]
	por	mm1, MMWORD [MMBLOCK(6,0,esi,SIZEOF_JCOEF)]
	por	mm0, MMWORD [MMBLOCK(7,0,esi,SIZEOF_JCOEF)]
	por	mm1,mm0
	packsswb mm1,mm1
	movd	eax,mm1
	test	eax,eax
	jnz	short .columnDCT

	; -- AC terms all zero

	movq      mm0, MMWORD [MMBLOCK(0,0,esi,SIZEOF_JCOEF)]

	punpckhwd mm1,mm0			; mm1=(** 02 ** 03)
	punpcklwd mm0,mm0			; mm0=(00 00 01 01)
	psrad     mm1,(DWORD_BIT-WORD_BIT)	; mm1=in0H=(02 03)
	psrad     mm0,(DWORD_BIT-WORD_BIT)	; mm0=in0L=(00 01)
	cvtpi2ps  xmm3,mm1			; xmm3=(02 03 ** **)
	cvtpi2ps  xmm0,mm0			; xmm0=(00 01 ** **)
	movlhps   xmm0,xmm3			; xmm0=in0=(00 01 02 03)

	mulps	xmm0, XMMWORD [XMMBLOCK(0,0,edx,SIZEOF_FLOAT_MULT_TYPE)]

	movaps	xmm1,xmm0
	movaps	xmm2,xmm0
	movaps	xmm3,xmm0

	shufps	xmm0,xmm0,0x00			; xmm0=(00 00 00 00)
	shufps	xmm1,xmm1,0x55			; xmm1=(01 01 01 01)
	shufps	xmm2,xmm2,0xAA			; xmm2=(02 02 02 02)
	shufps	xmm3,xmm3,0xFF			; xmm3=(03 03 03 03)

	movaps	XMMWORD [XMMBLOCK(0,0,edi,SIZEOF_FAST_FLOAT)], xmm0
	movaps	XMMWORD [XMMBLOCK(0,1,edi,SIZEOF_FAST_FLOAT)], xmm0
	movaps	XMMWORD [XMMBLOCK(1,0,edi,SIZEOF_FAST_FLOAT)], xmm1
	movaps	XMMWORD [XMMBLOCK(1,1,edi,SIZEOF_FAST_FLOAT)], xmm1
	movaps	XMMWORD [XMMBLOCK(2,0,edi,SIZEOF_FAST_FLOAT)], xmm2
	movaps	XMMWORD [XMMBLOCK(2,1,edi,SIZEOF_FAST_FLOAT)], xmm2
	movaps	XMMWORD [XMMBLOCK(3,0,edi,SIZEOF_FAST_FLOAT)], xmm3
	movaps	XMMWORD [XMMBLOCK(3,1,edi,SIZEOF_FAST_FLOAT)], xmm3
	jmp	near .nextcolumn
	alignx	16,7
%endif
.columnDCT:

	; -- Even part

	movq      mm0, MMWORD [MMBLOCK(0,0,esi,SIZEOF_JCOEF)]
	movq      mm1, MMWORD [MMBLOCK(2,0,esi,SIZEOF_JCOEF)]
	movq      mm2, MMWORD [MMBLOCK(4,0,esi,SIZEOF_JCOEF)]
	movq      mm3, MMWORD [MMBLOCK(6,0,esi,SIZEOF_JCOEF)]

	punpckhwd mm4,mm0			; mm4=(** 02 ** 03)
	punpcklwd mm0,mm0			; mm0=(00 00 01 01)
	punpckhwd mm5,mm1			; mm5=(** 22 ** 23)
	punpcklwd mm1,mm1			; mm1=(20 20 21 21)

	psrad     mm4,(DWORD_BIT-WORD_BIT)	; mm4=in0H=(02 03)
	psrad     mm0,(DWORD_BIT-WORD_BIT)	; mm0=in0L=(00 01)
	cvtpi2ps  xmm4,mm4			; xmm4=(02 03 ** **)
	cvtpi2ps  xmm0,mm0			; xmm0=(00 01 ** **)
	psrad     mm5,(DWORD_BIT-WORD_BIT)	; mm5=in2H=(22 23)
	psrad     mm1,(DWORD_BIT-WORD_BIT)	; mm1=in2L=(20 21)
	cvtpi2ps  xmm5,mm5			; xmm5=(22 23 ** **)
	cvtpi2ps  xmm1,mm1			; xmm1=(20 21 ** **)

	punpckhwd mm6,mm2			; mm6=(** 42 ** 43)
	punpcklwd mm2,mm2			; mm2=(40 40 41 41)
	punpckhwd mm7,mm3			; mm7=(** 62 ** 63)
	punpcklwd mm3,mm3			; mm3=(60 60 61 61)

	psrad     mm6,(DWORD_BIT-WORD_BIT)	; mm6=in4H=(42 43)
	psrad     mm2,(DWORD_BIT-WORD_BIT)	; mm2=in4L=(40 41)
	cvtpi2ps  xmm6,mm6			; xmm6=(42 43 ** **)
	cvtpi2ps  xmm2,mm2			; xmm2=(40 41 ** **)
	psrad     mm7,(DWORD_BIT-WORD_BIT)	; mm7=in6H=(62 63)
	psrad     mm3,(DWORD_BIT-WORD_BIT)	; mm3=in6L=(60 61)
	cvtpi2ps  xmm7,mm7			; xmm7=(62 63 ** **)
	cvtpi2ps  xmm3,mm3			; xmm3=(60 61 ** **)

	movlhps   xmm0,xmm4			; xmm0=in0=(00 01 02 03)
	movlhps   xmm1,xmm5			; xmm1=in2=(20 21 22 23)
	mulps     xmm0, XMMWORD [XMMBLOCK(0,0,edx,SIZEOF_FLOAT_MULT_TYPE)]
	mulps     xmm1, XMMWORD [XMMBLOCK(2,0,edx,SIZEOF_FLOAT_MULT_TYPE)]

	movlhps   xmm2,xmm6			; xmm2=in4=(40 41 42 43)
	movlhps   xmm3,xmm7			; xmm3=in6=(60 61 62 63)
	mulps     xmm2, XMMWORD [XMMBLOCK(4,0,edx,SIZEOF_FLOAT_MULT_TYPE)]
	mulps     xmm3, XMMWORD [XMMBLOCK(6,0,edx,SIZEOF_FLOAT_MULT_TYPE)]

	movaps	xmm4,xmm0
	movaps	xmm5,xmm1
	subps	xmm0,xmm2		; xmm0=tmp11
	subps	xmm1,xmm3
	addps	xmm4,xmm2		; xmm4=tmp10
	addps	xmm5,xmm3		; xmm5=tmp13

	mulps	xmm1,[GOTOFF(ebx,PD_1_414)]
	subps	xmm1,xmm5		; xmm1=tmp12

	movaps	xmm6,xmm4
	movaps	xmm7,xmm0
	subps	xmm4,xmm5		; xmm4=tmp3
	subps	xmm0,xmm1		; xmm0=tmp2
	addps	xmm6,xmm5		; xmm6=tmp0
	addps	xmm7,xmm1		; xmm7=tmp1

	movaps	XMMWORD [wk(1)], xmm4	; tmp3
	movaps	XMMWORD [wk(0)], xmm0	; tmp2

	; -- Odd part

	movq      mm4, MMWORD [MMBLOCK(1,0,esi,SIZEOF_JCOEF)]
	movq      mm0, MMWORD [MMBLOCK(3,0,esi,SIZEOF_JCOEF)]
	movq      mm5, MMWORD [MMBLOCK(5,0,esi,SIZEOF_JCOEF)]
	movq      mm1, MMWORD [MMBLOCK(7,0,esi,SIZEOF_JCOEF)]

	punpckhwd mm6,mm4			; mm6=(** 12 ** 13)
	punpcklwd mm4,mm4			; mm4=(10 10 11 11)
	punpckhwd mm2,mm0			; mm2=(** 32 ** 33)
	punpcklwd mm0,mm0			; mm0=(30 30 31 31)

	psrad     mm6,(DWORD_BIT-WORD_BIT)	; mm6=in1H=(12 13)
	psrad     mm4,(DWORD_BIT-WORD_BIT)	; mm4=in1L=(10 11)
	cvtpi2ps  xmm4,mm6			; xmm4=(12 13 ** **)
	cvtpi2ps  xmm2,mm4			; xmm2=(10 11 ** **)
	psrad     mm2,(DWORD_BIT-WORD_BIT)	; mm2=in3H=(32 33)
	psrad     mm0,(DWORD_BIT-WORD_BIT)	; mm0=in3L=(30 31)
	cvtpi2ps  xmm0,mm2			; xmm0=(32 33 ** **)
	cvtpi2ps  xmm3,mm0			; xmm3=(30 31 ** **)

	punpckhwd mm7,mm5			; mm7=(** 52 ** 53)
	punpcklwd mm5,mm5			; mm5=(50 50 51 51)
	punpckhwd mm3,mm1			; mm3=(** 72 ** 73)
	punpcklwd mm1,mm1			; mm1=(70 70 71 71)

	movlhps   xmm2,xmm4			; xmm2=in1=(10 11 12 13)
	movlhps   xmm3,xmm0			; xmm3=in3=(30 31 32 33)

	psrad     mm7,(DWORD_BIT-WORD_BIT)	; mm7=in5H=(52 53)
	psrad     mm5,(DWORD_BIT-WORD_BIT)	; mm5=in5L=(50 51)
	cvtpi2ps  xmm4,mm7			; xmm4=(52 53 ** **)
	cvtpi2ps  xmm5,mm5			; xmm5=(50 51 ** **)
	psrad     mm3,(DWORD_BIT-WORD_BIT)	; mm3=in7H=(72 73)
	psrad     mm1,(DWORD_BIT-WORD_BIT)	; mm1=in7L=(70 71)
	cvtpi2ps  xmm0,mm3			; xmm0=(72 73 ** **)
	cvtpi2ps  xmm1,mm1			; xmm1=(70 71 ** **)

	mulps     xmm2, XMMWORD [XMMBLOCK(1,0,edx,SIZEOF_FLOAT_MULT_TYPE)]
	mulps     xmm3, XMMWORD [XMMBLOCK(3,0,edx,SIZEOF_FLOAT_MULT_TYPE)]

	movlhps   xmm5,xmm4			; xmm5=in5=(50 51 52 53)
	movlhps   xmm1,xmm0			; xmm1=in7=(70 71 72 73)
	mulps     xmm5, XMMWORD [XMMBLOCK(5,0,edx,SIZEOF_FLOAT_MULT_TYPE)]
	mulps     xmm1, XMMWORD [XMMBLOCK(7,0,edx,SIZEOF_FLOAT_MULT_TYPE)]

	movaps	xmm4,xmm2
	movaps	xmm0,xmm5
	addps	xmm2,xmm1		; xmm2=z11
	addps	xmm5,xmm3		; xmm5=z13
	subps	xmm4,xmm1		; xmm4=z12
	subps	xmm0,xmm3		; xmm0=z10

	movaps	xmm1,xmm2
	subps	xmm2,xmm5
	addps	xmm1,xmm5		; xmm1=tmp7

	mulps	xmm2,[GOTOFF(ebx,PD_1_414)]	; xmm2=tmp11

	movaps	xmm3,xmm0
	addps	xmm0,xmm4
	mulps	xmm0,[GOTOFF(ebx,PD_1_847)]	; xmm0=z5
	mulps	xmm3,[GOTOFF(ebx,PD_M2_613)]	; xmm3=(z10 * -2.613125930)
	mulps	xmm4,[GOTOFF(ebx,PD_1_082)]	; xmm4=(z12 * 1.082392200)
	addps	xmm3,xmm0		; xmm3=tmp12
	subps	xmm4,xmm0		; xmm4=tmp10

	; -- Final output stage

	subps	xmm3,xmm1		; xmm3=tmp6
	movaps	xmm5,xmm6
	movaps	xmm0,xmm7
	addps	xmm6,xmm1		; xmm6=data0=(00 01 02 03)
	addps	xmm7,xmm3		; xmm7=data1=(10 11 12 13)
	subps	xmm5,xmm1		; xmm5=data7=(70 71 72 73)
	subps	xmm0,xmm3		; xmm0=data6=(60 61 62 63)
	subps	xmm2,xmm3		; xmm2=tmp5

	movaps    xmm1,xmm6		; transpose coefficients(phase 1)
	unpcklps  xmm6,xmm7		; xmm6=(00 10 01 11)
	unpckhps  xmm1,xmm7		; xmm1=(02 12 03 13)
	movaps    xmm3,xmm0		; transpose coefficients(phase 1)
	unpcklps  xmm0,xmm5		; xmm0=(60 70 61 71)
	unpckhps  xmm3,xmm5		; xmm3=(62 72 63 73)

	movaps	xmm7, XMMWORD [wk(0)]	; xmm7=tmp2
	movaps	xmm5, XMMWORD [wk(1)]	; xmm5=tmp3

	movaps	XMMWORD [wk(0)], xmm0	; wk(0)=(60 70 61 71)
	movaps	XMMWORD [wk(1)], xmm3	; wk(1)=(62 72 63 73)

	addps	xmm4,xmm2		; xmm4=tmp4
	movaps	xmm0,xmm7
	movaps	xmm3,xmm5
	addps	xmm7,xmm2		; xmm7=data2=(20 21 22 23)
	addps	xmm5,xmm4		; xmm5=data4=(40 41 42 43)
	subps	xmm0,xmm2		; xmm0=data5=(50 51 52 53)
	subps	xmm3,xmm4		; xmm3=data3=(30 31 32 33)

	movaps    xmm2,xmm7		; transpose coefficients(phase 1)
	unpcklps  xmm7,xmm3		; xmm7=(20 30 21 31)
	unpckhps  xmm2,xmm3		; xmm2=(22 32 23 33)
	movaps    xmm4,xmm5		; transpose coefficients(phase 1)
	unpcklps  xmm5,xmm0		; xmm5=(40 50 41 51)
	unpckhps  xmm4,xmm0		; xmm4=(42 52 43 53)

	movaps    xmm3,xmm6		; transpose coefficients(phase 2)
	unpcklps2 xmm6,xmm7		; xmm6=(00 10 20 30)
	unpckhps2 xmm3,xmm7		; xmm3=(01 11 21 31)
	movaps    xmm0,xmm1		; transpose coefficients(phase 2)
	unpcklps2 xmm1,xmm2		; xmm1=(02 12 22 32)
	unpckhps2 xmm0,xmm2		; xmm0=(03 13 23 33)

	movaps	xmm7, XMMWORD [wk(0)]	; xmm7=(60 70 61 71)
	movaps	xmm2, XMMWORD [wk(1)]	; xmm2=(62 72 63 73)

	movaps	XMMWORD [XMMBLOCK(0,0,edi,SIZEOF_FAST_FLOAT)], xmm6
	movaps	XMMWORD [XMMBLOCK(1,0,edi,SIZEOF_FAST_FLOAT)], xmm3
	movaps	XMMWORD [XMMBLOCK(2,0,edi,SIZEOF_FAST_FLOAT)], xmm1
	movaps	XMMWORD [XMMBLOCK(3,0,edi,SIZEOF_FAST_FLOAT)], xmm0

	movaps    xmm6,xmm5		; transpose coefficients(phase 2)
	unpcklps2 xmm5,xmm7		; xmm5=(40 50 60 70)
	unpckhps2 xmm6,xmm7		; xmm6=(41 51 61 71)
	movaps    xmm3,xmm4		; transpose coefficients(phase 2)
	unpcklps2 xmm4,xmm2		; xmm4=(42 52 62 72)
	unpckhps2 xmm3,xmm2		; xmm3=(43 53 63 73)

	movaps	XMMWORD [XMMBLOCK(0,1,edi,SIZEOF_FAST_FLOAT)], xmm5
	movaps	XMMWORD [XMMBLOCK(1,1,edi,SIZEOF_FAST_FLOAT)], xmm6
	movaps	XMMWORD [XMMBLOCK(2,1,edi,SIZEOF_FAST_FLOAT)], xmm4
	movaps	XMMWORD [XMMBLOCK(3,1,edi,SIZEOF_FAST_FLOAT)], xmm3

.nextcolumn:
	add	esi, byte 4*SIZEOF_JCOEF		; coef_block
	add	edx, byte 4*SIZEOF_FLOAT_MULT_TYPE	; quantptr
	add	edi,      4*DCTSIZE*SIZEOF_FAST_FLOAT	; wsptr
	dec	ecx					; ctr
	jnz	near .columnloop

	; -- Prefetch the next coefficient block

	prefetchnta [esi + (DCTSIZE2-8)*SIZEOF_JCOEF + 0*32]
	prefetchnta [esi + (DCTSIZE2-8)*SIZEOF_JCOEF + 1*32]
	prefetchnta [esi + (DCTSIZE2-8)*SIZEOF_JCOEF + 2*32]
	prefetchnta [esi + (DCTSIZE2-8)*SIZEOF_JCOEF + 3*32]

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

	mov	eax, [original_ebp]
	lea	esi, [workspace]			; FAST_FLOAT * wsptr
	mov	edi, JSAMPARRAY [output_buf(eax)]	; (JSAMPROW *)
	mov	eax, JDIMENSION [output_col(eax)]
	mov	ecx, DCTSIZE/4				; ctr
	alignx	16,7
.rowloop:

	; -- Even part

	movaps	xmm0, XMMWORD [XMMBLOCK(0,0,esi,SIZEOF_FAST_FLOAT)]
	movaps	xmm1, XMMWORD [XMMBLOCK(2,0,esi,SIZEOF_FAST_FLOAT)]
	movaps	xmm2, XMMWORD [XMMBLOCK(4,0,esi,SIZEOF_FAST_FLOAT)]
	movaps	xmm3, XMMWORD [XMMBLOCK(6,0,esi,SIZEOF_FAST_FLOAT)]

	movaps	xmm4,xmm0
	movaps	xmm5,xmm1
	subps	xmm0,xmm2		; xmm0=tmp11
	subps	xmm1,xmm3
	addps	xmm4,xmm2		; xmm4=tmp10
	addps	xmm5,xmm3		; xmm5=tmp13

	mulps	xmm1,[GOTOFF(ebx,PD_1_414)]
	subps	xmm1,xmm5		; xmm1=tmp12

	movaps	xmm6,xmm4
	movaps	xmm7,xmm0
	subps	xmm4,xmm5		; xmm4=tmp3
	subps	xmm0,xmm1		; xmm0=tmp2
	addps	xmm6,xmm5		; xmm6=tmp0
	addps	xmm7,xmm1		; xmm7=tmp1

	movaps	XMMWORD [wk(1)], xmm4	; tmp3
	movaps	XMMWORD [wk(0)], xmm0	; tmp2

	; -- Odd part

	movaps	xmm2, XMMWORD [XMMBLOCK(1,0,esi,SIZEOF_FAST_FLOAT)]
	movaps	xmm3, XMMWORD [XMMBLOCK(3,0,esi,SIZEOF_FAST_FLOAT)]
	movaps	xmm5, XMMWORD [XMMBLOCK(5,0,esi,SIZEOF_FAST_FLOAT)]
	movaps	xmm1, XMMWORD [XMMBLOCK(7,0,esi,SIZEOF_FAST_FLOAT)]

	movaps	xmm4,xmm2
	movaps	xmm0,xmm5
	addps	xmm2,xmm1		; xmm2=z11
	addps	xmm5,xmm3		; xmm5=z13
	subps	xmm4,xmm1		; xmm4=z12
	subps	xmm0,xmm3		; xmm0=z10

	movaps	xmm1,xmm2
	subps	xmm2,xmm5
	addps	xmm1,xmm5		; xmm1=tmp7

	mulps	xmm2,[GOTOFF(ebx,PD_1_414)]	; xmm2=tmp11

	movaps	xmm3,xmm0
	addps	xmm0,xmm4
	mulps	xmm0,[GOTOFF(ebx,PD_1_847)]	; xmm0=z5
	mulps	xmm3,[GOTOFF(ebx,PD_M2_613)]	; xmm3=(z10 * -2.613125930)
	mulps	xmm4,[GOTOFF(ebx,PD_1_082)]	; xmm4=(z12 * 1.082392200)
	addps	xmm3,xmm0		; xmm3=tmp12
	subps	xmm4,xmm0		; xmm4=tmp10

	; -- Final output stage

	subps	xmm3,xmm1		; xmm3=tmp6
	movaps	xmm5,xmm6
	movaps	xmm0,xmm7
	addps	xmm6,xmm1		; xmm6=data0=(00 10 20 30)
	addps	xmm7,xmm3		; xmm7=data1=(01 11 21 31)
	subps	xmm5,xmm1		; xmm5=data7=(07 17 27 37)
	subps	xmm0,xmm3		; xmm0=data6=(06 16 26 36)
	subps	xmm2,xmm3		; xmm2=tmp5

	movaps	xmm1,[GOTOFF(ebx,PD_0_125)]	; xmm1=[PD_0_125]

	mulps	xmm6,xmm1		; descale(1/8)
	mulps	xmm7,xmm1		; descale(1/8)
	mulps	xmm5,xmm1		; descale(1/8)
	mulps	xmm0,xmm1		; descale(1/8)

	movhlps   xmm3,xmm6
	movhlps   xmm1,xmm7
	cvtps2pi  mm0,xmm6		; round to int32, mm0=data0L=(00 10)
	cvtps2pi  mm1,xmm7		; round to int32, mm1=data1L=(01 11)
	cvtps2pi  mm2,xmm3		; round to int32, mm2=data0H=(20 30)
	cvtps2pi  mm3,xmm1		; round to int32, mm3=data1H=(21 31)
	packssdw  mm0,mm2		; mm0=data0=(00 10 20 30)
	packssdw  mm1,mm3		; mm1=data1=(01 11 21 31)

	movhlps   xmm6,xmm5
	movhlps   xmm7,xmm0
	cvtps2pi  mm4,xmm5		; round to int32, mm4=data7L=(07 17)
	cvtps2pi  mm5,xmm0		; round to int32, mm5=data6L=(06 16)
	cvtps2pi  mm6,xmm6		; round to int32, mm6=data7H=(27 37)
	cvtps2pi  mm7,xmm7		; round to int32, mm7=data6H=(26 36)
	packssdw  mm4,mm6		; mm4=data7=(07 17 27 37)
	packssdw  mm5,mm7		; mm5=data6=(06 16 26 36)

	packsswb  mm0,mm5		; mm0=(00 10 20 30 06 16 26 36)
	packsswb  mm1,mm4		; mm1=(01 11 21 31 07 17 27 37)

	movaps	xmm3, XMMWORD [wk(0)]	; xmm3=tmp2
	movaps	xmm1, XMMWORD [wk(1)]	; xmm1=tmp3

	movaps	xmm6,[GOTOFF(ebx,PD_0_125)]	; xmm6=[PD_0_125]

	addps	xmm4,xmm2		; xmm4=tmp4
	movaps	xmm5,xmm3
	movaps	xmm0,xmm1
	addps	xmm3,xmm2		; xmm3=data2=(02 12 22 32)
	addps	xmm1,xmm4		; xmm1=data4=(04 14 24 34)
	subps	xmm5,xmm2		; xmm5=data5=(05 15 25 35)
	subps	xmm0,xmm4		; xmm0=data3=(03 13 23 33)

	mulps	xmm3,xmm6		; descale(1/8)
	mulps	xmm1,xmm6		; descale(1/8)
	mulps	xmm5,xmm6		; descale(1/8)
	mulps	xmm0,xmm6		; descale(1/8)

	movhlps   xmm7,xmm3
	movhlps   xmm2,xmm1
	cvtps2pi  mm2,xmm3		; round to int32, mm2=data2L=(02 12)
	cvtps2pi  mm3,xmm1		; round to int32, mm3=data4L=(04 14)
	cvtps2pi  mm6,xmm7		; round to int32, mm6=data2H=(22 32)
	cvtps2pi  mm7,xmm2		; round to int32, mm7=data4H=(24 34)
	packssdw  mm2,mm6		; mm2=data2=(02 12 22 32)
	packssdw  mm3,mm7		; mm3=data4=(04 14 24 34)

	movhlps   xmm4,xmm5
	movhlps   xmm6,xmm0
	cvtps2pi  mm5,xmm5		; round to int32, mm5=data5L=(05 15)
	cvtps2pi  mm4,xmm0		; round to int32, mm4=data3L=(03 13)
	cvtps2pi  mm6,xmm4		; round to int32, mm6=data5H=(25 35)
	cvtps2pi  mm7,xmm6		; round to int32, mm7=data3H=(23 33)
	packssdw  mm5,mm6		; mm5=data5=(05 15 25 35)
	packssdw  mm4,mm7		; mm4=data3=(03 13 23 33)

	movq      mm6,[GOTOFF(ebx,PB_CENTERJSAMP)]	; mm6=[PB_CENTERJSAMP]

	packsswb  mm2,mm3		; mm2=(02 12 22 32 04 14 24 34)
	packsswb  mm4,mm5		; mm4=(03 13 23 33 05 15 25 35)

	paddb     mm0,mm6
	paddb     mm1,mm6
	paddb     mm2,mm6
	paddb     mm4,mm6

	movq      mm7,mm0		; transpose coefficients(phase 1)
	punpcklbw mm0,mm1		; mm0=(00 01 10 11 20 21 30 31)
	punpckhbw mm7,mm1		; mm7=(06 07 16 17 26 27 36 37)
	movq      mm3,mm2		; transpose coefficients(phase 1)
	punpcklbw mm2,mm4		; mm2=(02 03 12 13 22 23 32 33)
	punpckhbw mm3,mm4		; mm3=(04 05 14 15 24 25 34 35)

	movq      mm5,mm0		; transpose coefficients(phase 2)
	punpcklwd mm0,mm2		; mm0=(00 01 02 03 10 11 12 13)
	punpckhwd mm5,mm2		; mm5=(20 21 22 23 30 31 32 33)
	movq      mm6,mm3		; transpose coefficients(phase 2)
	punpcklwd mm3,mm7		; mm3=(04 05 06 07 14 15 16 17)
	punpckhwd mm6,mm7		; mm6=(24 25 26 27 34 35 36 37)

	movq      mm1,mm0		; transpose coefficients(phase 3)
	punpckldq mm0,mm3		; mm0=(00 01 02 03 04 05 06 07)
	punpckhdq mm1,mm3		; mm1=(10 11 12 13 14 15 16 17)
	movq      mm4,mm5		; transpose coefficients(phase 3)
	punpckldq mm5,mm6		; mm5=(20 21 22 23 24 25 26 27)
	punpckhdq mm4,mm6		; mm4=(30 31 32 33 34 35 36 37)

	pushpic	ebx			; save GOT address

	mov	edx, JSAMPROW [edi+0*SIZEOF_JSAMPROW]
	mov	ebx, JSAMPROW [edi+1*SIZEOF_JSAMPROW]
	movq	MMWORD [edx+eax*SIZEOF_JSAMPLE], mm0
	movq	MMWORD [ebx+eax*SIZEOF_JSAMPLE], mm1
	mov	edx, JSAMPROW [edi+2*SIZEOF_JSAMPROW]
	mov	ebx, JSAMPROW [edi+3*SIZEOF_JSAMPROW]
	movq	MMWORD [edx+eax*SIZEOF_JSAMPLE], mm5
	movq	MMWORD [ebx+eax*SIZEOF_JSAMPLE], mm4

	poppic	ebx			; restore GOT address

	add	esi, byte 4*SIZEOF_FAST_FLOAT	; wsptr
	add	edi, byte 4*SIZEOF_JSAMPROW
	dec	ecx				; ctr
	jnz	near .rowloop

	emms		; empty MMX state

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