;
; jimmxint.asm - accurate integer IDCT (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 slow-but-accurate integer implementation of the
; inverse DCT (Discrete Cosine Transform). The following code is based
; directly on the IJG's original jidctint.c; see the jidctint.c for
; more details.
;
; [TAB8]

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

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

%define CONST_BITS	13
%define PASS1_BITS	2

%define DESCALE_P1	(CONST_BITS-PASS1_BITS)
%define DESCALE_P2	(CONST_BITS+PASS1_BITS+3)

%if CONST_BITS == 13
F_0_298	equ	 2446		; FIX(0.298631336)
F_0_390	equ	 3196		; FIX(0.390180644)
F_0_541	equ	 4433		; FIX(0.541196100)
F_0_765	equ	 6270		; FIX(0.765366865)
F_0_899	equ	 7373		; FIX(0.899976223)
F_1_175	equ	 9633		; FIX(1.175875602)
F_1_501	equ	12299		; FIX(1.501321110)
F_1_847	equ	15137		; FIX(1.847759065)
F_1_961	equ	16069		; FIX(1.961570560)
F_2_053	equ	16819		; FIX(2.053119869)
F_2_562	equ	20995		; FIX(2.562915447)
F_3_072	equ	25172		; FIX(3.072711026)
%else
; NASM cannot do compile-time arithmetic on floating-point constants.
%define DESCALE(x,n)  (((x)+(1<<((n)-1)))>>(n))
F_0_298	equ	DESCALE( 320652955,30-CONST_BITS)	; FIX(0.298631336)
F_0_390	equ	DESCALE( 418953276,30-CONST_BITS)	; FIX(0.390180644)
F_0_541	equ	DESCALE( 581104887,30-CONST_BITS)	; FIX(0.541196100)
F_0_765	equ	DESCALE( 821806413,30-CONST_BITS)	; FIX(0.765366865)
F_0_899	equ	DESCALE( 966342111,30-CONST_BITS)	; FIX(0.899976223)
F_1_175	equ	DESCALE(1262586813,30-CONST_BITS)	; FIX(1.175875602)
F_1_501	equ	DESCALE(1612031267,30-CONST_BITS)	; FIX(1.501321110)
F_1_847	equ	DESCALE(1984016188,30-CONST_BITS)	; FIX(1.847759065)
F_1_961	equ	DESCALE(2106220350,30-CONST_BITS)	; FIX(1.961570560)
F_2_053	equ	DESCALE(2204520673,30-CONST_BITS)	; FIX(2.053119869)
F_2_562	equ	DESCALE(2751909506,30-CONST_BITS)	; FIX(2.562915447)
F_3_072	equ	DESCALE(3299298341,30-CONST_BITS)	; FIX(3.072711026)
%endif

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

	alignz	16
	global	EXTN(jconst_idct_islow_mmx)

EXTN(jconst_idct_islow_mmx):

PW_F130_F054	times 2 dw  (F_0_541+F_0_765), F_0_541
PW_F054_MF130	times 2 dw  F_0_541, (F_0_541-F_1_847)
PW_MF078_F117	times 2 dw  (F_1_175-F_1_961), F_1_175
PW_F117_F078	times 2 dw  F_1_175, (F_1_175-F_0_390)
PW_MF060_MF089	times 2 dw  (F_0_298-F_0_899),-F_0_899
PW_MF089_F060	times 2 dw -F_0_899, (F_1_501-F_0_899)
PW_MF050_MF256	times 2 dw  (F_2_053-F_2_562),-F_2_562
PW_MF256_F050	times 2 dw -F_2_562, (F_3_072-F_2_562)
PD_DESCALE_P1	times 2 dd  1 << (DESCALE_P1-1)
PD_DESCALE_P2	times 2 dd  1 << (DESCALE_P2-1)
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_islow_mmx (void * dct_table, JCOEFPTR coef_block,
;                       JSAMPARRAY output_buf, JDIMENSION output_col)
;

%define dct_table(b)	(b)+8			; jpeg_component_info * compptr
%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_MMWORD	; mmword wk[WK_NUM]
%define WK_NUM		12
%define workspace	wk(0)-DCTSIZE2*SIZEOF_JCOEF
					; JCOEF workspace[DCTSIZE2]

	align	16
	global	EXTN(jsimd_idct_islow_mmx)

EXTN(jsimd_idct_islow_mmx):
	push	ebp
	mov	eax,esp				; eax = original ebp
	sub	esp, byte 4
	and	esp, byte (-SIZEOF_MMWORD)	; align to 64 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]			; JCOEF * wsptr
	mov	ecx, DCTSIZE/4				; ctr
	alignx	16,7
.columnloop:
%ifndef NO_ZERO_COLUMN_TEST_ISLOW_MMX
	mov	eax, DWORD [DWBLOCK(1,0,esi,SIZEOF_JCOEF)]
	or	eax, DWORD [DWBLOCK(2,0,esi,SIZEOF_JCOEF)]
	jnz	short .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)]
	pmullw	mm0, MMWORD [MMBLOCK(0,0,edx,SIZEOF_ISLOW_MULT_TYPE)]

	psllw	mm0,PASS1_BITS

	movq      mm2,mm0		; mm0=in0=(00 01 02 03)
	punpcklwd mm0,mm0		; mm0=(00 00 01 01)
	punpckhwd mm2,mm2		; mm2=(02 02 03 03)

	movq      mm1,mm0
	punpckldq mm0,mm0		; mm0=(00 00 00 00)
	punpckhdq mm1,mm1		; mm1=(01 01 01 01)
	movq      mm3,mm2
	punpckldq mm2,mm2		; mm2=(02 02 02 02)
	punpckhdq mm3,mm3		; mm3=(03 03 03 03)

	movq	MMWORD [MMBLOCK(0,0,edi,SIZEOF_JCOEF)], mm0
	movq	MMWORD [MMBLOCK(0,1,edi,SIZEOF_JCOEF)], mm0
	movq	MMWORD [MMBLOCK(1,0,edi,SIZEOF_JCOEF)], mm1
	movq	MMWORD [MMBLOCK(1,1,edi,SIZEOF_JCOEF)], mm1
	movq	MMWORD [MMBLOCK(2,0,edi,SIZEOF_JCOEF)], mm2
	movq	MMWORD [MMBLOCK(2,1,edi,SIZEOF_JCOEF)], mm2
	movq	MMWORD [MMBLOCK(3,0,edi,SIZEOF_JCOEF)], mm3
	movq	MMWORD [MMBLOCK(3,1,edi,SIZEOF_JCOEF)], mm3
	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)]
	pmullw	mm0, MMWORD [MMBLOCK(0,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
	pmullw	mm1, MMWORD [MMBLOCK(2,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
	movq	mm2, MMWORD [MMBLOCK(4,0,esi,SIZEOF_JCOEF)]
	movq	mm3, MMWORD [MMBLOCK(6,0,esi,SIZEOF_JCOEF)]
	pmullw	mm2, MMWORD [MMBLOCK(4,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
	pmullw	mm3, MMWORD [MMBLOCK(6,0,edx,SIZEOF_ISLOW_MULT_TYPE)]

	; (Original)
	; z1 = (z2 + z3) * 0.541196100;
	; tmp2 = z1 + z3 * -1.847759065;
	; tmp3 = z1 + z2 * 0.765366865;
	;
	; (This implementation)
	; tmp2 = z2 * 0.541196100 + z3 * (0.541196100 - 1.847759065);
	; tmp3 = z2 * (0.541196100 + 0.765366865) + z3 * 0.541196100;

	movq      mm4,mm1		; mm1=in2=z2
	movq      mm5,mm1
	punpcklwd mm4,mm3		; mm3=in6=z3
	punpckhwd mm5,mm3
	movq      mm1,mm4
	movq      mm3,mm5
	pmaddwd   mm4,[GOTOFF(ebx,PW_F130_F054)]	; mm4=tmp3L
	pmaddwd   mm5,[GOTOFF(ebx,PW_F130_F054)]	; mm5=tmp3H
	pmaddwd   mm1,[GOTOFF(ebx,PW_F054_MF130)]	; mm1=tmp2L
	pmaddwd   mm3,[GOTOFF(ebx,PW_F054_MF130)]	; mm3=tmp2H

	movq      mm6,mm0
	paddw     mm0,mm2		; mm0=in0+in4
	psubw     mm6,mm2		; mm6=in0-in4

	pxor      mm7,mm7
	pxor      mm2,mm2
	punpcklwd mm7,mm0		; mm7=tmp0L
	punpckhwd mm2,mm0		; mm2=tmp0H
	psrad     mm7,(16-CONST_BITS)	; psrad mm7,16 & pslld mm7,CONST_BITS
	psrad     mm2,(16-CONST_BITS)	; psrad mm2,16 & pslld mm2,CONST_BITS

	movq	mm0,mm7
	paddd	mm7,mm4			; mm7=tmp10L
	psubd	mm0,mm4			; mm0=tmp13L
	movq	mm4,mm2
	paddd	mm2,mm5			; mm2=tmp10H
	psubd	mm4,mm5			; mm4=tmp13H

	movq	MMWORD [wk(0)], mm7	; wk(0)=tmp10L
	movq	MMWORD [wk(1)], mm2	; wk(1)=tmp10H
	movq	MMWORD [wk(2)], mm0	; wk(2)=tmp13L
	movq	MMWORD [wk(3)], mm4	; wk(3)=tmp13H

	pxor      mm5,mm5
	pxor      mm7,mm7
	punpcklwd mm5,mm6		; mm5=tmp1L
	punpckhwd mm7,mm6		; mm7=tmp1H
	psrad     mm5,(16-CONST_BITS)	; psrad mm5,16 & pslld mm5,CONST_BITS
	psrad     mm7,(16-CONST_BITS)	; psrad mm7,16 & pslld mm7,CONST_BITS

	movq	mm2,mm5
	paddd	mm5,mm1			; mm5=tmp11L
	psubd	mm2,mm1			; mm2=tmp12L
	movq	mm0,mm7
	paddd	mm7,mm3			; mm7=tmp11H
	psubd	mm0,mm3			; mm0=tmp12H

	movq	MMWORD [wk(4)], mm5	; wk(4)=tmp11L
	movq	MMWORD [wk(5)], mm7	; wk(5)=tmp11H
	movq	MMWORD [wk(6)], mm2	; wk(6)=tmp12L
	movq	MMWORD [wk(7)], mm0	; wk(7)=tmp12H

	; -- Odd part

	movq	mm4, MMWORD [MMBLOCK(1,0,esi,SIZEOF_JCOEF)]
	movq	mm6, MMWORD [MMBLOCK(3,0,esi,SIZEOF_JCOEF)]
	pmullw	mm4, MMWORD [MMBLOCK(1,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
	pmullw	mm6, MMWORD [MMBLOCK(3,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
	movq	mm1, MMWORD [MMBLOCK(5,0,esi,SIZEOF_JCOEF)]
	movq	mm3, MMWORD [MMBLOCK(7,0,esi,SIZEOF_JCOEF)]
	pmullw	mm1, MMWORD [MMBLOCK(5,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
	pmullw	mm3, MMWORD [MMBLOCK(7,0,edx,SIZEOF_ISLOW_MULT_TYPE)]

	movq	mm5,mm6
	movq	mm7,mm4
	paddw	mm5,mm3			; mm5=z3
	paddw	mm7,mm1			; mm7=z4

	; (Original)
	; z5 = (z3 + z4) * 1.175875602;
	; z3 = z3 * -1.961570560;  z4 = z4 * -0.390180644;
	; z3 += z5;  z4 += z5;
	;
	; (This implementation)
	; z3 = z3 * (1.175875602 - 1.961570560) + z4 * 1.175875602;
	; z4 = z3 * 1.175875602 + z4 * (1.175875602 - 0.390180644);

	movq      mm2,mm5
	movq      mm0,mm5
	punpcklwd mm2,mm7
	punpckhwd mm0,mm7
	movq      mm5,mm2
	movq      mm7,mm0
	pmaddwd   mm2,[GOTOFF(ebx,PW_MF078_F117)]	; mm2=z3L
	pmaddwd   mm0,[GOTOFF(ebx,PW_MF078_F117)]	; mm0=z3H
	pmaddwd   mm5,[GOTOFF(ebx,PW_F117_F078)]	; mm5=z4L
	pmaddwd   mm7,[GOTOFF(ebx,PW_F117_F078)]	; mm7=z4H

	movq	MMWORD [wk(10)], mm2	; wk(10)=z3L
	movq	MMWORD [wk(11)], mm0	; wk(11)=z3H

	; (Original)
	; z1 = tmp0 + tmp3;  z2 = tmp1 + tmp2;
	; tmp0 = tmp0 * 0.298631336;  tmp1 = tmp1 * 2.053119869;
	; tmp2 = tmp2 * 3.072711026;  tmp3 = tmp3 * 1.501321110;
	; z1 = z1 * -0.899976223;  z2 = z2 * -2.562915447;
	; tmp0 += z1 + z3;  tmp1 += z2 + z4;
	; tmp2 += z2 + z3;  tmp3 += z1 + z4;
	;
	; (This implementation)
	; tmp0 = tmp0 * (0.298631336 - 0.899976223) + tmp3 * -0.899976223;
	; tmp1 = tmp1 * (2.053119869 - 2.562915447) + tmp2 * -2.562915447;
	; tmp2 = tmp1 * -2.562915447 + tmp2 * (3.072711026 - 2.562915447);
	; tmp3 = tmp0 * -0.899976223 + tmp3 * (1.501321110 - 0.899976223);
	; tmp0 += z3;  tmp1 += z4;
	; tmp2 += z3;  tmp3 += z4;

	movq      mm2,mm3
	movq      mm0,mm3
	punpcklwd mm2,mm4
	punpckhwd mm0,mm4
	movq      mm3,mm2
	movq      mm4,mm0
	pmaddwd   mm2,[GOTOFF(ebx,PW_MF060_MF089)]	; mm2=tmp0L
	pmaddwd   mm0,[GOTOFF(ebx,PW_MF060_MF089)]	; mm0=tmp0H
	pmaddwd   mm3,[GOTOFF(ebx,PW_MF089_F060)]	; mm3=tmp3L
	pmaddwd   mm4,[GOTOFF(ebx,PW_MF089_F060)]	; mm4=tmp3H

	paddd	mm2, MMWORD [wk(10)]	; mm2=tmp0L
	paddd	mm0, MMWORD [wk(11)]	; mm0=tmp0H
	paddd	mm3,mm5			; mm3=tmp3L
	paddd	mm4,mm7			; mm4=tmp3H

	movq	MMWORD [wk(8)], mm2	; wk(8)=tmp0L
	movq	MMWORD [wk(9)], mm0	; wk(9)=tmp0H

	movq      mm2,mm1
	movq      mm0,mm1
	punpcklwd mm2,mm6
	punpckhwd mm0,mm6
	movq      mm1,mm2
	movq      mm6,mm0
	pmaddwd   mm2,[GOTOFF(ebx,PW_MF050_MF256)]	; mm2=tmp1L
	pmaddwd   mm0,[GOTOFF(ebx,PW_MF050_MF256)]	; mm0=tmp1H
	pmaddwd   mm1,[GOTOFF(ebx,PW_MF256_F050)]	; mm1=tmp2L
	pmaddwd   mm6,[GOTOFF(ebx,PW_MF256_F050)]	; mm6=tmp2H

	paddd	mm2,mm5			; mm2=tmp1L
	paddd	mm0,mm7			; mm0=tmp1H
	paddd	mm1, MMWORD [wk(10)]	; mm1=tmp2L
	paddd	mm6, MMWORD [wk(11)]	; mm6=tmp2H

	movq	MMWORD [wk(10)], mm2	; wk(10)=tmp1L
	movq	MMWORD [wk(11)], mm0	; wk(11)=tmp1H

	; -- Final output stage

	movq	mm5, MMWORD [wk(0)]	; mm5=tmp10L
	movq	mm7, MMWORD [wk(1)]	; mm7=tmp10H

	movq	mm2,mm5
	movq	mm0,mm7
	paddd	mm5,mm3			; mm5=data0L
	paddd	mm7,mm4			; mm7=data0H
	psubd	mm2,mm3			; mm2=data7L
	psubd	mm0,mm4			; mm0=data7H

	movq	mm3,[GOTOFF(ebx,PD_DESCALE_P1)]	; mm3=[PD_DESCALE_P1]

	paddd	mm5,mm3
	paddd	mm7,mm3
	psrad	mm5,DESCALE_P1
	psrad	mm7,DESCALE_P1
	paddd	mm2,mm3
	paddd	mm0,mm3
	psrad	mm2,DESCALE_P1
	psrad	mm0,DESCALE_P1

	packssdw  mm5,mm7		; mm5=data0=(00 01 02 03)
	packssdw  mm2,mm0		; mm2=data7=(70 71 72 73)

	movq	mm4, MMWORD [wk(4)]	; mm4=tmp11L
	movq	mm3, MMWORD [wk(5)]	; mm3=tmp11H

	movq	mm7,mm4
	movq	mm0,mm3
	paddd	mm4,mm1			; mm4=data1L
	paddd	mm3,mm6			; mm3=data1H
	psubd	mm7,mm1			; mm7=data6L
	psubd	mm0,mm6			; mm0=data6H

	movq	mm1,[GOTOFF(ebx,PD_DESCALE_P1)]	; mm1=[PD_DESCALE_P1]

	paddd	mm4,mm1
	paddd	mm3,mm1
	psrad	mm4,DESCALE_P1
	psrad	mm3,DESCALE_P1
	paddd	mm7,mm1
	paddd	mm0,mm1
	psrad	mm7,DESCALE_P1
	psrad	mm0,DESCALE_P1

	packssdw  mm4,mm3		; mm4=data1=(10 11 12 13)
	packssdw  mm7,mm0		; mm7=data6=(60 61 62 63)

	movq      mm6,mm5		; transpose coefficients(phase 1)
	punpcklwd mm5,mm4		; mm5=(00 10 01 11)
	punpckhwd mm6,mm4		; mm6=(02 12 03 13)
	movq      mm1,mm7		; transpose coefficients(phase 1)
	punpcklwd mm7,mm2		; mm7=(60 70 61 71)
	punpckhwd mm1,mm2		; mm1=(62 72 63 73)

	movq	mm3, MMWORD [wk(6)]	; mm3=tmp12L
	movq	mm0, MMWORD [wk(7)]	; mm0=tmp12H
	movq	mm4, MMWORD [wk(10)]	; mm4=tmp1L
	movq	mm2, MMWORD [wk(11)]	; mm2=tmp1H

	movq	MMWORD [wk(0)], mm5	; wk(0)=(00 10 01 11)
	movq	MMWORD [wk(1)], mm6	; wk(1)=(02 12 03 13)
	movq	MMWORD [wk(4)], mm7	; wk(4)=(60 70 61 71)
	movq	MMWORD [wk(5)], mm1	; wk(5)=(62 72 63 73)

	movq	mm5,mm3
	movq	mm6,mm0
	paddd	mm3,mm4			; mm3=data2L
	paddd	mm0,mm2			; mm0=data2H
	psubd	mm5,mm4			; mm5=data5L
	psubd	mm6,mm2			; mm6=data5H

	movq	mm7,[GOTOFF(ebx,PD_DESCALE_P1)]	; mm7=[PD_DESCALE_P1]

	paddd	mm3,mm7
	paddd	mm0,mm7
	psrad	mm3,DESCALE_P1
	psrad	mm0,DESCALE_P1
	paddd	mm5,mm7
	paddd	mm6,mm7
	psrad	mm5,DESCALE_P1
	psrad	mm6,DESCALE_P1

	packssdw  mm3,mm0		; mm3=data2=(20 21 22 23)
	packssdw  mm5,mm6		; mm5=data5=(50 51 52 53)

	movq	mm1, MMWORD [wk(2)]	; mm1=tmp13L
	movq	mm4, MMWORD [wk(3)]	; mm4=tmp13H
	movq	mm2, MMWORD [wk(8)]	; mm2=tmp0L
	movq	mm7, MMWORD [wk(9)]	; mm7=tmp0H

	movq	mm0,mm1
	movq	mm6,mm4
	paddd	mm1,mm2			; mm1=data3L
	paddd	mm4,mm7			; mm4=data3H
	psubd	mm0,mm2			; mm0=data4L
	psubd	mm6,mm7			; mm6=data4H

	movq	mm2,[GOTOFF(ebx,PD_DESCALE_P1)]	; mm2=[PD_DESCALE_P1]

	paddd	mm1,mm2
	paddd	mm4,mm2
	psrad	mm1,DESCALE_P1
	psrad	mm4,DESCALE_P1
	paddd	mm0,mm2
	paddd	mm6,mm2
	psrad	mm0,DESCALE_P1
	psrad	mm6,DESCALE_P1

	packssdw  mm1,mm4		; mm1=data3=(30 31 32 33)
	packssdw  mm0,mm6		; mm0=data4=(40 41 42 43)

	movq	mm7, MMWORD [wk(0)]	; mm7=(00 10 01 11)
	movq	mm2, MMWORD [wk(1)]	; mm2=(02 12 03 13)

	movq      mm4,mm3		; transpose coefficients(phase 1)
	punpcklwd mm3,mm1		; mm3=(20 30 21 31)
	punpckhwd mm4,mm1		; mm4=(22 32 23 33)
	movq      mm6,mm0		; transpose coefficients(phase 1)
	punpcklwd mm0,mm5		; mm0=(40 50 41 51)
	punpckhwd mm6,mm5		; mm6=(42 52 43 53)

	movq      mm1,mm7		; transpose coefficients(phase 2)
	punpckldq mm7,mm3		; mm7=(00 10 20 30)
	punpckhdq mm1,mm3		; mm1=(01 11 21 31)
	movq      mm5,mm2		; transpose coefficients(phase 2)
	punpckldq mm2,mm4		; mm2=(02 12 22 32)
	punpckhdq mm5,mm4		; mm5=(03 13 23 33)

	movq	mm3, MMWORD [wk(4)]	; mm3=(60 70 61 71)
	movq	mm4, MMWORD [wk(5)]	; mm4=(62 72 63 73)

	movq	MMWORD [MMBLOCK(0,0,edi,SIZEOF_JCOEF)], mm7
	movq	MMWORD [MMBLOCK(1,0,edi,SIZEOF_JCOEF)], mm1
	movq	MMWORD [MMBLOCK(2,0,edi,SIZEOF_JCOEF)], mm2
	movq	MMWORD [MMBLOCK(3,0,edi,SIZEOF_JCOEF)], mm5

	movq      mm7,mm0		; transpose coefficients(phase 2)
	punpckldq mm0,mm3		; mm0=(40 50 60 70)
	punpckhdq mm7,mm3		; mm7=(41 51 61 71)
	movq      mm1,mm6		; transpose coefficients(phase 2)
	punpckldq mm6,mm4		; mm6=(42 52 62 72)
	punpckhdq mm1,mm4		; mm1=(43 53 63 73)

	movq	MMWORD [MMBLOCK(0,1,edi,SIZEOF_JCOEF)], mm0
	movq	MMWORD [MMBLOCK(1,1,edi,SIZEOF_JCOEF)], mm7
	movq	MMWORD [MMBLOCK(2,1,edi,SIZEOF_JCOEF)], mm6
	movq	MMWORD [MMBLOCK(3,1,edi,SIZEOF_JCOEF)], mm1

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

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

	mov	eax, [original_ebp]
	lea	esi, [workspace]			; JCOEF * 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

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

	; (Original)
	; z1 = (z2 + z3) * 0.541196100;
	; tmp2 = z1 + z3 * -1.847759065;
	; tmp3 = z1 + z2 * 0.765366865;
	;
	; (This implementation)
	; tmp2 = z2 * 0.541196100 + z3 * (0.541196100 - 1.847759065);
	; tmp3 = z2 * (0.541196100 + 0.765366865) + z3 * 0.541196100;

	movq      mm4,mm1		; mm1=in2=z2
	movq      mm5,mm1
	punpcklwd mm4,mm3		; mm3=in6=z3
	punpckhwd mm5,mm3
	movq      mm1,mm4
	movq      mm3,mm5
	pmaddwd   mm4,[GOTOFF(ebx,PW_F130_F054)]	; mm4=tmp3L
	pmaddwd   mm5,[GOTOFF(ebx,PW_F130_F054)]	; mm5=tmp3H
	pmaddwd   mm1,[GOTOFF(ebx,PW_F054_MF130)]	; mm1=tmp2L
	pmaddwd   mm3,[GOTOFF(ebx,PW_F054_MF130)]	; mm3=tmp2H

	movq      mm6,mm0
	paddw     mm0,mm2		; mm0=in0+in4
	psubw     mm6,mm2		; mm6=in0-in4

	pxor      mm7,mm7
	pxor      mm2,mm2
	punpcklwd mm7,mm0		; mm7=tmp0L
	punpckhwd mm2,mm0		; mm2=tmp0H
	psrad     mm7,(16-CONST_BITS)	; psrad mm7,16 & pslld mm7,CONST_BITS
	psrad     mm2,(16-CONST_BITS)	; psrad mm2,16 & pslld mm2,CONST_BITS

	movq	mm0,mm7
	paddd	mm7,mm4			; mm7=tmp10L
	psubd	mm0,mm4			; mm0=tmp13L
	movq	mm4,mm2
	paddd	mm2,mm5			; mm2=tmp10H
	psubd	mm4,mm5			; mm4=tmp13H

	movq	MMWORD [wk(0)], mm7	; wk(0)=tmp10L
	movq	MMWORD [wk(1)], mm2	; wk(1)=tmp10H
	movq	MMWORD [wk(2)], mm0	; wk(2)=tmp13L
	movq	MMWORD [wk(3)], mm4	; wk(3)=tmp13H

	pxor      mm5,mm5
	pxor      mm7,mm7
	punpcklwd mm5,mm6		; mm5=tmp1L
	punpckhwd mm7,mm6		; mm7=tmp1H
	psrad     mm5,(16-CONST_BITS)	; psrad mm5,16 & pslld mm5,CONST_BITS
	psrad     mm7,(16-CONST_BITS)	; psrad mm7,16 & pslld mm7,CONST_BITS

	movq	mm2,mm5
	paddd	mm5,mm1			; mm5=tmp11L
	psubd	mm2,mm1			; mm2=tmp12L
	movq	mm0,mm7
	paddd	mm7,mm3			; mm7=tmp11H
	psubd	mm0,mm3			; mm0=tmp12H

	movq	MMWORD [wk(4)], mm5	; wk(4)=tmp11L
	movq	MMWORD [wk(5)], mm7	; wk(5)=tmp11H
	movq	MMWORD [wk(6)], mm2	; wk(6)=tmp12L
	movq	MMWORD [wk(7)], mm0	; wk(7)=tmp12H

	; -- Odd part

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

	movq	mm5,mm6
	movq	mm7,mm4
	paddw	mm5,mm3			; mm5=z3
	paddw	mm7,mm1			; mm7=z4

	; (Original)
	; z5 = (z3 + z4) * 1.175875602;
	; z3 = z3 * -1.961570560;  z4 = z4 * -0.390180644;
	; z3 += z5;  z4 += z5;
	;
	; (This implementation)
	; z3 = z3 * (1.175875602 - 1.961570560) + z4 * 1.175875602;
	; z4 = z3 * 1.175875602 + z4 * (1.175875602 - 0.390180644);

	movq      mm2,mm5
	movq      mm0,mm5
	punpcklwd mm2,mm7
	punpckhwd mm0,mm7
	movq      mm5,mm2
	movq      mm7,mm0
	pmaddwd   mm2,[GOTOFF(ebx,PW_MF078_F117)]	; mm2=z3L
	pmaddwd   mm0,[GOTOFF(ebx,PW_MF078_F117)]	; mm0=z3H
	pmaddwd   mm5,[GOTOFF(ebx,PW_F117_F078)]	; mm5=z4L
	pmaddwd   mm7,[GOTOFF(ebx,PW_F117_F078)]	; mm7=z4H

	movq	MMWORD [wk(10)], mm2	; wk(10)=z3L
	movq	MMWORD [wk(11)], mm0	; wk(11)=z3H

	; (Original)
	; z1 = tmp0 + tmp3;  z2 = tmp1 + tmp2;
	; tmp0 = tmp0 * 0.298631336;  tmp1 = tmp1 * 2.053119869;
	; tmp2 = tmp2 * 3.072711026;  tmp3 = tmp3 * 1.501321110;
	; z1 = z1 * -0.899976223;  z2 = z2 * -2.562915447;
	; tmp0 += z1 + z3;  tmp1 += z2 + z4;
	; tmp2 += z2 + z3;  tmp3 += z1 + z4;
	;
	; (This implementation)
	; tmp0 = tmp0 * (0.298631336 - 0.899976223) + tmp3 * -0.899976223;
	; tmp1 = tmp1 * (2.053119869 - 2.562915447) + tmp2 * -2.562915447;
	; tmp2 = tmp1 * -2.562915447 + tmp2 * (3.072711026 - 2.562915447);
	; tmp3 = tmp0 * -0.899976223 + tmp3 * (1.501321110 - 0.899976223);
	; tmp0 += z3;  tmp1 += z4;
	; tmp2 += z3;  tmp3 += z4;

	movq      mm2,mm3
	movq      mm0,mm3
	punpcklwd mm2,mm4
	punpckhwd mm0,mm4
	movq      mm3,mm2
	movq      mm4,mm0
	pmaddwd   mm2,[GOTOFF(ebx,PW_MF060_MF089)]	; mm2=tmp0L
	pmaddwd   mm0,[GOTOFF(ebx,PW_MF060_MF089)]	; mm0=tmp0H
	pmaddwd   mm3,[GOTOFF(ebx,PW_MF089_F060)]	; mm3=tmp3L
	pmaddwd   mm4,[GOTOFF(ebx,PW_MF089_F060)]	; mm4=tmp3H

	paddd	mm2, MMWORD [wk(10)]	; mm2=tmp0L
	paddd	mm0, MMWORD [wk(11)]	; mm0=tmp0H
	paddd	mm3,mm5			; mm3=tmp3L
	paddd	mm4,mm7			; mm4=tmp3H

	movq	MMWORD [wk(8)], mm2	; wk(8)=tmp0L
	movq	MMWORD [wk(9)], mm0	; wk(9)=tmp0H

	movq      mm2,mm1
	movq      mm0,mm1
	punpcklwd mm2,mm6
	punpckhwd mm0,mm6
	movq      mm1,mm2
	movq      mm6,mm0
	pmaddwd   mm2,[GOTOFF(ebx,PW_MF050_MF256)]	; mm2=tmp1L
	pmaddwd   mm0,[GOTOFF(ebx,PW_MF050_MF256)]	; mm0=tmp1H
	pmaddwd   mm1,[GOTOFF(ebx,PW_MF256_F050)]	; mm1=tmp2L
	pmaddwd   mm6,[GOTOFF(ebx,PW_MF256_F050)]	; mm6=tmp2H

	paddd	mm2,mm5			; mm2=tmp1L
	paddd	mm0,mm7			; mm0=tmp1H
	paddd	mm1, MMWORD [wk(10)]	; mm1=tmp2L
	paddd	mm6, MMWORD [wk(11)]	; mm6=tmp2H

	movq	MMWORD [wk(10)], mm2	; wk(10)=tmp1L
	movq	MMWORD [wk(11)], mm0	; wk(11)=tmp1H

	; -- Final output stage

	movq	mm5, MMWORD [wk(0)]	; mm5=tmp10L
	movq	mm7, MMWORD [wk(1)]	; mm7=tmp10H

	movq	mm2,mm5
	movq	mm0,mm7
	paddd	mm5,mm3			; mm5=data0L
	paddd	mm7,mm4			; mm7=data0H
	psubd	mm2,mm3			; mm2=data7L
	psubd	mm0,mm4			; mm0=data7H

	movq	mm3,[GOTOFF(ebx,PD_DESCALE_P2)]	; mm3=[PD_DESCALE_P2]

	paddd	mm5,mm3
	paddd	mm7,mm3
	psrad	mm5,DESCALE_P2
	psrad	mm7,DESCALE_P2
	paddd	mm2,mm3
	paddd	mm0,mm3
	psrad	mm2,DESCALE_P2
	psrad	mm0,DESCALE_P2

	packssdw  mm5,mm7		; mm5=data0=(00 10 20 30)
	packssdw  mm2,mm0		; mm2=data7=(07 17 27 37)

	movq	mm4, MMWORD [wk(4)]	; mm4=tmp11L
	movq	mm3, MMWORD [wk(5)]	; mm3=tmp11H

	movq	mm7,mm4
	movq	mm0,mm3
	paddd	mm4,mm1			; mm4=data1L
	paddd	mm3,mm6			; mm3=data1H
	psubd	mm7,mm1			; mm7=data6L
	psubd	mm0,mm6			; mm0=data6H

	movq	mm1,[GOTOFF(ebx,PD_DESCALE_P2)]	; mm1=[PD_DESCALE_P2]

	paddd	mm4,mm1
	paddd	mm3,mm1
	psrad	mm4,DESCALE_P2
	psrad	mm3,DESCALE_P2
	paddd	mm7,mm1
	paddd	mm0,mm1
	psrad	mm7,DESCALE_P2
	psrad	mm0,DESCALE_P2

	packssdw  mm4,mm3		; mm4=data1=(01 11 21 31)
	packssdw  mm7,mm0		; mm7=data6=(06 16 26 36)

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

	movq	mm6, MMWORD [wk(6)]	; mm6=tmp12L
	movq	mm1, MMWORD [wk(7)]	; mm1=tmp12H
	movq	mm3, MMWORD [wk(10)]	; mm3=tmp1L
	movq	mm0, MMWORD [wk(11)]	; mm0=tmp1H

	movq	MMWORD [wk(0)], mm5	; wk(0)=(00 10 20 30 06 16 26 36)
	movq	MMWORD [wk(1)], mm4	; wk(1)=(01 11 21 31 07 17 27 37)

	movq	mm7,mm6
	movq	mm2,mm1
	paddd	mm6,mm3			; mm6=data2L
	paddd	mm1,mm0			; mm1=data2H
	psubd	mm7,mm3			; mm7=data5L
	psubd	mm2,mm0			; mm2=data5H

	movq	mm5,[GOTOFF(ebx,PD_DESCALE_P2)]	; mm5=[PD_DESCALE_P2]

	paddd	mm6,mm5
	paddd	mm1,mm5
	psrad	mm6,DESCALE_P2
	psrad	mm1,DESCALE_P2
	paddd	mm7,mm5
	paddd	mm2,mm5
	psrad	mm7,DESCALE_P2
	psrad	mm2,DESCALE_P2

	packssdw  mm6,mm1		; mm6=data2=(02 12 22 32)
	packssdw  mm7,mm2		; mm7=data5=(05 15 25 35)

	movq	mm4, MMWORD [wk(2)]	; mm4=tmp13L
	movq	mm3, MMWORD [wk(3)]	; mm3=tmp13H
	movq	mm0, MMWORD [wk(8)]	; mm0=tmp0L
	movq	mm5, MMWORD [wk(9)]	; mm5=tmp0H

	movq	mm1,mm4
	movq	mm2,mm3
	paddd	mm4,mm0			; mm4=data3L
	paddd	mm3,mm5			; mm3=data3H
	psubd	mm1,mm0			; mm1=data4L
	psubd	mm2,mm5			; mm2=data4H

	movq	mm0,[GOTOFF(ebx,PD_DESCALE_P2)]	; mm0=[PD_DESCALE_P2]

	paddd	mm4,mm0
	paddd	mm3,mm0
	psrad	mm4,DESCALE_P2
	psrad	mm3,DESCALE_P2
	paddd	mm1,mm0
	paddd	mm2,mm0
	psrad	mm1,DESCALE_P2
	psrad	mm2,DESCALE_P2

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

	packssdw  mm4,mm3		; mm4=data3=(03 13 23 33)
	packssdw  mm1,mm2		; mm1=data4=(04 14 24 34)

	movq      mm0, MMWORD [wk(0)]	; mm0=(00 10 20 30 06 16 26 36)
	movq      mm3, MMWORD [wk(1)]	; mm3=(01 11 21 31 07 17 27 37)

	packsswb  mm6,mm1		; mm6=(02 12 22 32 04 14 24 34)
	packsswb  mm4,mm7		; mm4=(03 13 23 33 05 15 25 35)

	paddb     mm0,mm5
	paddb     mm3,mm5
	paddb     mm6,mm5
	paddb     mm4,mm5

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

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

	movq      mm3,mm0		; transpose coefficients(phase 3)
	punpckldq mm0,mm1		; mm0=(00 01 02 03 04 05 06 07)
	punpckhdq mm3,mm1		; mm3=(10 11 12 13 14 15 16 17)
	movq      mm4,mm7		; transpose coefficients(phase 3)
	punpckldq mm7,mm5		; mm7=(20 21 22 23 24 25 26 27)
	punpckhdq mm4,mm5		; 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], mm3
	mov	edx, JSAMPROW [edi+2*SIZEOF_JSAMPROW]
	mov	ebx, JSAMPROW [edi+3*SIZEOF_JSAMPROW]
	movq	MMWORD [edx+eax*SIZEOF_JSAMPLE], mm7
	movq	MMWORD [ebx+eax*SIZEOF_JSAMPLE], mm4

	poppic	ebx			; restore GOT address

	add	esi, byte 4*SIZEOF_JCOEF	; 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
