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

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

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
