;
; jfmmxint.asm - accurate integer FDCT (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
; forward DCT (Discrete Cosine Transform). The following code is based
; directly on the IJG's original jfdctint.c; see the jfdctint.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)

%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_fdct_islow_mmx)

EXTN(jconst_fdct_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)
PW_DESCALE_P2X	times 4 dw  1 << (PASS1_BITS-1)

	alignz	16

; --------------------------------------------------------------------------
	SECTION	SEG_TEXT
	BITS	32
;
; Perform the forward DCT on one block of samples.
;
; GLOBAL(void)
; jsimd_fdct_islow_mmx (DCTELEM * data)
;

%define data(b)		(b)+8		; DCTELEM * data

%define original_ebp	ebp+0
%define wk(i)		ebp-(WK_NUM-(i))*SIZEOF_MMWORD	; mmword wk[WK_NUM]
%define WK_NUM		2

	align	16
	global	EXTN(jsimd_fdct_islow_mmx)

EXTN(jsimd_fdct_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, [wk(0)]
	pushpic	ebx
;	push	ecx		; need not be preserved
;	push	edx		; need not be preserved
;	push	esi		; unused
;	push	edi		; unused

	get_GOT	ebx		; get GOT address

	; ---- Pass 1: process rows.

	mov	edx, POINTER [data(eax)]	; (DCTELEM *)
	mov	ecx, DCTSIZE/4
	alignx	16,7
.rowloop:

	movq	mm0, MMWORD [MMBLOCK(2,0,edx,SIZEOF_DCTELEM)]
	movq	mm1, MMWORD [MMBLOCK(3,0,edx,SIZEOF_DCTELEM)]
	movq	mm2, MMWORD [MMBLOCK(2,1,edx,SIZEOF_DCTELEM)]
	movq	mm3, MMWORD [MMBLOCK(3,1,edx,SIZEOF_DCTELEM)]

	; mm0=(20 21 22 23), mm2=(24 25 26 27)
	; mm1=(30 31 32 33), mm3=(34 35 36 37)

	movq      mm4,mm0		; transpose coefficients(phase 1)
	punpcklwd mm0,mm1		; mm0=(20 30 21 31)
	punpckhwd mm4,mm1		; mm4=(22 32 23 33)
	movq      mm5,mm2		; transpose coefficients(phase 1)
	punpcklwd mm2,mm3		; mm2=(24 34 25 35)
	punpckhwd mm5,mm3		; mm5=(26 36 27 37)

	movq	mm6, MMWORD [MMBLOCK(0,0,edx,SIZEOF_DCTELEM)]
	movq	mm7, MMWORD [MMBLOCK(1,0,edx,SIZEOF_DCTELEM)]
	movq	mm1, MMWORD [MMBLOCK(0,1,edx,SIZEOF_DCTELEM)]
	movq	mm3, MMWORD [MMBLOCK(1,1,edx,SIZEOF_DCTELEM)]

	; mm6=(00 01 02 03), mm1=(04 05 06 07)
	; mm7=(10 11 12 13), mm3=(14 15 16 17)

	movq	MMWORD [wk(0)], mm4	; wk(0)=(22 32 23 33)
	movq	MMWORD [wk(1)], mm2	; wk(1)=(24 34 25 35)

	movq      mm4,mm6		; transpose coefficients(phase 1)
	punpcklwd mm6,mm7		; mm6=(00 10 01 11)
	punpckhwd mm4,mm7		; mm4=(02 12 03 13)
	movq      mm2,mm1		; transpose coefficients(phase 1)
	punpcklwd mm1,mm3		; mm1=(04 14 05 15)
	punpckhwd mm2,mm3		; mm2=(06 16 07 17)

	movq      mm7,mm6		; transpose coefficients(phase 2)
	punpckldq mm6,mm0		; mm6=(00 10 20 30)=data0
	punpckhdq mm7,mm0		; mm7=(01 11 21 31)=data1
	movq      mm3,mm2		; transpose coefficients(phase 2)
	punpckldq mm2,mm5		; mm2=(06 16 26 36)=data6
	punpckhdq mm3,mm5		; mm3=(07 17 27 37)=data7

	movq	mm0,mm7
	movq	mm5,mm6
	psubw	mm7,mm2			; mm7=data1-data6=tmp6
	psubw	mm6,mm3			; mm6=data0-data7=tmp7
	paddw	mm0,mm2			; mm0=data1+data6=tmp1
	paddw	mm5,mm3			; mm5=data0+data7=tmp0

	movq	mm2, MMWORD [wk(0)]	; mm2=(22 32 23 33)
	movq	mm3, MMWORD [wk(1)]	; mm3=(24 34 25 35)
	movq	MMWORD [wk(0)], mm7	; wk(0)=tmp6
	movq	MMWORD [wk(1)], mm6	; wk(1)=tmp7

	movq      mm7,mm4		; transpose coefficients(phase 2)
	punpckldq mm4,mm2		; mm4=(02 12 22 32)=data2
	punpckhdq mm7,mm2		; mm7=(03 13 23 33)=data3
	movq      mm6,mm1		; transpose coefficients(phase 2)
	punpckldq mm1,mm3		; mm1=(04 14 24 34)=data4
	punpckhdq mm6,mm3		; mm6=(05 15 25 35)=data5

	movq	mm2,mm7
	movq	mm3,mm4
	paddw	mm7,mm1			; mm7=data3+data4=tmp3
	paddw	mm4,mm6			; mm4=data2+data5=tmp2
	psubw	mm2,mm1			; mm2=data3-data4=tmp4
	psubw	mm3,mm6			; mm3=data2-data5=tmp5

	; -- Even part

	movq	mm1,mm5
	movq	mm6,mm0
	paddw	mm5,mm7			; mm5=tmp10
	paddw	mm0,mm4			; mm0=tmp11
	psubw	mm1,mm7			; mm1=tmp13
	psubw	mm6,mm4			; mm6=tmp12

	movq	mm7,mm5
	paddw	mm5,mm0			; mm5=tmp10+tmp11
	psubw	mm7,mm0			; mm7=tmp10-tmp11

	psllw	mm5,PASS1_BITS		; mm5=data0
	psllw	mm7,PASS1_BITS		; mm7=data4

	movq	MMWORD [MMBLOCK(0,0,edx,SIZEOF_DCTELEM)], mm5
	movq	MMWORD [MMBLOCK(0,1,edx,SIZEOF_DCTELEM)], mm7

	; (Original)
	; z1 = (tmp12 + tmp13) * 0.541196100;
	; data2 = z1 + tmp13 * 0.765366865;
	; data6 = z1 + tmp12 * -1.847759065;
	;
	; (This implementation)
	; data2 = tmp13 * (0.541196100 + 0.765366865) + tmp12 * 0.541196100;
	; data6 = tmp13 * 0.541196100 + tmp12 * (0.541196100 - 1.847759065);

	movq      mm4,mm1		; mm1=tmp13
	movq      mm0,mm1
	punpcklwd mm4,mm6		; mm6=tmp12
	punpckhwd mm0,mm6
	movq      mm1,mm4
	movq      mm6,mm0
	pmaddwd   mm4,[GOTOFF(ebx,PW_F130_F054)]	; mm4=data2L
	pmaddwd   mm0,[GOTOFF(ebx,PW_F130_F054)]	; mm0=data2H
	pmaddwd   mm1,[GOTOFF(ebx,PW_F054_MF130)]	; mm1=data6L
	pmaddwd   mm6,[GOTOFF(ebx,PW_F054_MF130)]	; mm6=data6H

	paddd	mm4,[GOTOFF(ebx,PD_DESCALE_P1)]
	paddd	mm0,[GOTOFF(ebx,PD_DESCALE_P1)]
	psrad	mm4,DESCALE_P1
	psrad	mm0,DESCALE_P1
	paddd	mm1,[GOTOFF(ebx,PD_DESCALE_P1)]
	paddd	mm6,[GOTOFF(ebx,PD_DESCALE_P1)]
	psrad	mm1,DESCALE_P1
	psrad	mm6,DESCALE_P1

	packssdw  mm4,mm0		; mm4=data2
	packssdw  mm1,mm6		; mm1=data6

	movq	MMWORD [MMBLOCK(2,0,edx,SIZEOF_DCTELEM)], mm4
	movq	MMWORD [MMBLOCK(2,1,edx,SIZEOF_DCTELEM)], mm1

	; -- Odd part

	movq	mm5, MMWORD [wk(0)]	; mm5=tmp6
	movq	mm7, MMWORD [wk(1)]	; mm7=tmp7

	movq	mm0,mm2			; mm2=tmp4
	movq	mm6,mm3			; mm3=tmp5
	paddw	mm0,mm5			; mm0=z3
	paddw	mm6,mm7			; mm6=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      mm4,mm0
	movq      mm1,mm0
	punpcklwd mm4,mm6
	punpckhwd mm1,mm6
	movq      mm0,mm4
	movq      mm6,mm1
	pmaddwd   mm4,[GOTOFF(ebx,PW_MF078_F117)]	; mm4=z3L
	pmaddwd   mm1,[GOTOFF(ebx,PW_MF078_F117)]	; mm1=z3H
	pmaddwd   mm0,[GOTOFF(ebx,PW_F117_F078)]	; mm0=z4L
	pmaddwd   mm6,[GOTOFF(ebx,PW_F117_F078)]	; mm6=z4H

	movq	MMWORD [wk(0)], mm4	; wk(0)=z3L
	movq	MMWORD [wk(1)], mm1	; wk(1)=z3H

	; (Original)
	; z1 = tmp4 + tmp7;  z2 = tmp5 + tmp6;
	; tmp4 = tmp4 * 0.298631336;  tmp5 = tmp5 * 2.053119869;
	; tmp6 = tmp6 * 3.072711026;  tmp7 = tmp7 * 1.501321110;
	; z1 = z1 * -0.899976223;  z2 = z2 * -2.562915447;
	; data7 = tmp4 + z1 + z3;  data5 = tmp5 + z2 + z4;
	; data3 = tmp6 + z2 + z3;  data1 = tmp7 + z1 + z4;
	;
	; (This implementation)
	; tmp4 = tmp4 * (0.298631336 - 0.899976223) + tmp7 * -0.899976223;
	; tmp5 = tmp5 * (2.053119869 - 2.562915447) + tmp6 * -2.562915447;
	; tmp6 = tmp5 * -2.562915447 + tmp6 * (3.072711026 - 2.562915447);
	; tmp7 = tmp4 * -0.899976223 + tmp7 * (1.501321110 - 0.899976223);
	; data7 = tmp4 + z3;  data5 = tmp5 + z4;
	; data3 = tmp6 + z3;  data1 = tmp7 + z4;

	movq      mm4,mm2
	movq      mm1,mm2
	punpcklwd mm4,mm7
	punpckhwd mm1,mm7
	movq      mm2,mm4
	movq      mm7,mm1
	pmaddwd   mm4,[GOTOFF(ebx,PW_MF060_MF089)]	; mm4=tmp4L
	pmaddwd   mm1,[GOTOFF(ebx,PW_MF060_MF089)]	; mm1=tmp4H
	pmaddwd   mm2,[GOTOFF(ebx,PW_MF089_F060)]	; mm2=tmp7L
	pmaddwd   mm7,[GOTOFF(ebx,PW_MF089_F060)]	; mm7=tmp7H

	paddd	mm4, MMWORD [wk(0)]	; mm4=data7L
	paddd	mm1, MMWORD [wk(1)]	; mm1=data7H
	paddd	mm2,mm0			; mm2=data1L
	paddd	mm7,mm6			; mm7=data1H

	paddd	mm4,[GOTOFF(ebx,PD_DESCALE_P1)]
	paddd	mm1,[GOTOFF(ebx,PD_DESCALE_P1)]
	psrad	mm4,DESCALE_P1
	psrad	mm1,DESCALE_P1
	paddd	mm2,[GOTOFF(ebx,PD_DESCALE_P1)]
	paddd	mm7,[GOTOFF(ebx,PD_DESCALE_P1)]
	psrad	mm2,DESCALE_P1
	psrad	mm7,DESCALE_P1

	packssdw  mm4,mm1		; mm4=data7
	packssdw  mm2,mm7		; mm2=data1

	movq	MMWORD [MMBLOCK(3,1,edx,SIZEOF_DCTELEM)], mm4
	movq	MMWORD [MMBLOCK(1,0,edx,SIZEOF_DCTELEM)], mm2

	movq      mm1,mm3
	movq      mm7,mm3
	punpcklwd mm1,mm5
	punpckhwd mm7,mm5
	movq      mm3,mm1
	movq      mm5,mm7
	pmaddwd   mm1,[GOTOFF(ebx,PW_MF050_MF256)]	; mm1=tmp5L
	pmaddwd   mm7,[GOTOFF(ebx,PW_MF050_MF256)]	; mm7=tmp5H
	pmaddwd   mm3,[GOTOFF(ebx,PW_MF256_F050)]	; mm3=tmp6L
	pmaddwd   mm5,[GOTOFF(ebx,PW_MF256_F050)]	; mm5=tmp6H

	paddd	mm1,mm0			; mm1=data5L
	paddd	mm7,mm6			; mm7=data5H
	paddd	mm3, MMWORD [wk(0)]	; mm3=data3L
	paddd	mm5, MMWORD [wk(1)]	; mm5=data3H

	paddd	mm1,[GOTOFF(ebx,PD_DESCALE_P1)]
	paddd	mm7,[GOTOFF(ebx,PD_DESCALE_P1)]
	psrad	mm1,DESCALE_P1
	psrad	mm7,DESCALE_P1
	paddd	mm3,[GOTOFF(ebx,PD_DESCALE_P1)]
	paddd	mm5,[GOTOFF(ebx,PD_DESCALE_P1)]
	psrad	mm3,DESCALE_P1
	psrad	mm5,DESCALE_P1

	packssdw  mm1,mm7		; mm1=data5
	packssdw  mm3,mm5		; mm3=data3

	movq	MMWORD [MMBLOCK(1,1,edx,SIZEOF_DCTELEM)], mm1
	movq	MMWORD [MMBLOCK(3,0,edx,SIZEOF_DCTELEM)], mm3

	add	edx, byte 4*DCTSIZE*SIZEOF_DCTELEM
	dec	ecx
	jnz	near .rowloop

	; ---- Pass 2: process columns.

	mov	edx, POINTER [data(eax)]	; (DCTELEM *)
	mov	ecx, DCTSIZE/4
	alignx	16,7
.columnloop:

	movq	mm0, MMWORD [MMBLOCK(2,0,edx,SIZEOF_DCTELEM)]
	movq	mm1, MMWORD [MMBLOCK(3,0,edx,SIZEOF_DCTELEM)]
	movq	mm2, MMWORD [MMBLOCK(6,0,edx,SIZEOF_DCTELEM)]
	movq	mm3, MMWORD [MMBLOCK(7,0,edx,SIZEOF_DCTELEM)]

	; mm0=(02 12 22 32), mm2=(42 52 62 72)
	; mm1=(03 13 23 33), mm3=(43 53 63 73)

	movq      mm4,mm0		; transpose coefficients(phase 1)
	punpcklwd mm0,mm1		; mm0=(02 03 12 13)
	punpckhwd mm4,mm1		; mm4=(22 23 32 33)
	movq      mm5,mm2		; transpose coefficients(phase 1)
	punpcklwd mm2,mm3		; mm2=(42 43 52 53)
	punpckhwd mm5,mm3		; mm5=(62 63 72 73)

	movq	mm6, MMWORD [MMBLOCK(0,0,edx,SIZEOF_DCTELEM)]
	movq	mm7, MMWORD [MMBLOCK(1,0,edx,SIZEOF_DCTELEM)]
	movq	mm1, MMWORD [MMBLOCK(4,0,edx,SIZEOF_DCTELEM)]
	movq	mm3, MMWORD [MMBLOCK(5,0,edx,SIZEOF_DCTELEM)]

	; mm6=(00 10 20 30), mm1=(40 50 60 70)
	; mm7=(01 11 21 31), mm3=(41 51 61 71)

	movq	MMWORD [wk(0)], mm4	; wk(0)=(22 23 32 33)
	movq	MMWORD [wk(1)], mm2	; wk(1)=(42 43 52 53)

	movq      mm4,mm6		; transpose coefficients(phase 1)
	punpcklwd mm6,mm7		; mm6=(00 01 10 11)
	punpckhwd mm4,mm7		; mm4=(20 21 30 31)
	movq      mm2,mm1		; transpose coefficients(phase 1)
	punpcklwd mm1,mm3		; mm1=(40 41 50 51)
	punpckhwd mm2,mm3		; mm2=(60 61 70 71)

	movq      mm7,mm6		; transpose coefficients(phase 2)
	punpckldq mm6,mm0		; mm6=(00 01 02 03)=data0
	punpckhdq mm7,mm0		; mm7=(10 11 12 13)=data1
	movq      mm3,mm2		; transpose coefficients(phase 2)
	punpckldq mm2,mm5		; mm2=(60 61 62 63)=data6
	punpckhdq mm3,mm5		; mm3=(70 71 72 73)=data7

	movq	mm0,mm7
	movq	mm5,mm6
	psubw	mm7,mm2			; mm7=data1-data6=tmp6
	psubw	mm6,mm3			; mm6=data0-data7=tmp7
	paddw	mm0,mm2			; mm0=data1+data6=tmp1
	paddw	mm5,mm3			; mm5=data0+data7=tmp0

	movq	mm2, MMWORD [wk(0)]	; mm2=(22 23 32 33)
	movq	mm3, MMWORD [wk(1)]	; mm3=(42 43 52 53)
	movq	MMWORD [wk(0)], mm7	; wk(0)=tmp6
	movq	MMWORD [wk(1)], mm6	; wk(1)=tmp7

	movq      mm7,mm4		; transpose coefficients(phase 2)
	punpckldq mm4,mm2		; mm4=(20 21 22 23)=data2
	punpckhdq mm7,mm2		; mm7=(30 31 32 33)=data3
	movq      mm6,mm1		; transpose coefficients(phase 2)
	punpckldq mm1,mm3		; mm1=(40 41 42 43)=data4
	punpckhdq mm6,mm3		; mm6=(50 51 52 53)=data5

	movq	mm2,mm7
	movq	mm3,mm4
	paddw	mm7,mm1			; mm7=data3+data4=tmp3
	paddw	mm4,mm6			; mm4=data2+data5=tmp2
	psubw	mm2,mm1			; mm2=data3-data4=tmp4
	psubw	mm3,mm6			; mm3=data2-data5=tmp5

	; -- Even part

	movq	mm1,mm5
	movq	mm6,mm0
	paddw	mm5,mm7			; mm5=tmp10
	paddw	mm0,mm4			; mm0=tmp11
	psubw	mm1,mm7			; mm1=tmp13
	psubw	mm6,mm4			; mm6=tmp12

	movq	mm7,mm5
	paddw	mm5,mm0			; mm5=tmp10+tmp11
	psubw	mm7,mm0			; mm7=tmp10-tmp11

	paddw	mm5,[GOTOFF(ebx,PW_DESCALE_P2X)]
	paddw	mm7,[GOTOFF(ebx,PW_DESCALE_P2X)]
	psraw	mm5,PASS1_BITS		; mm5=data0
	psraw	mm7,PASS1_BITS		; mm7=data4

	movq	MMWORD [MMBLOCK(0,0,edx,SIZEOF_DCTELEM)], mm5
	movq	MMWORD [MMBLOCK(4,0,edx,SIZEOF_DCTELEM)], mm7

	; (Original)
	; z1 = (tmp12 + tmp13) * 0.541196100;
	; data2 = z1 + tmp13 * 0.765366865;
	; data6 = z1 + tmp12 * -1.847759065;
	;
	; (This implementation)
	; data2 = tmp13 * (0.541196100 + 0.765366865) + tmp12 * 0.541196100;
	; data6 = tmp13 * 0.541196100 + tmp12 * (0.541196100 - 1.847759065);

	movq      mm4,mm1		; mm1=tmp13
	movq      mm0,mm1
	punpcklwd mm4,mm6		; mm6=tmp12
	punpckhwd mm0,mm6
	movq      mm1,mm4
	movq      mm6,mm0
	pmaddwd   mm4,[GOTOFF(ebx,PW_F130_F054)]	; mm4=data2L
	pmaddwd   mm0,[GOTOFF(ebx,PW_F130_F054)]	; mm0=data2H
	pmaddwd   mm1,[GOTOFF(ebx,PW_F054_MF130)]	; mm1=data6L
	pmaddwd   mm6,[GOTOFF(ebx,PW_F054_MF130)]	; mm6=data6H

	paddd	mm4,[GOTOFF(ebx,PD_DESCALE_P2)]
	paddd	mm0,[GOTOFF(ebx,PD_DESCALE_P2)]
	psrad	mm4,DESCALE_P2
	psrad	mm0,DESCALE_P2
	paddd	mm1,[GOTOFF(ebx,PD_DESCALE_P2)]
	paddd	mm6,[GOTOFF(ebx,PD_DESCALE_P2)]
	psrad	mm1,DESCALE_P2
	psrad	mm6,DESCALE_P2

	packssdw  mm4,mm0		; mm4=data2
	packssdw  mm1,mm6		; mm1=data6

	movq	MMWORD [MMBLOCK(2,0,edx,SIZEOF_DCTELEM)], mm4
	movq	MMWORD [MMBLOCK(6,0,edx,SIZEOF_DCTELEM)], mm1

	; -- Odd part

	movq	mm5, MMWORD [wk(0)]	; mm5=tmp6
	movq	mm7, MMWORD [wk(1)]	; mm7=tmp7

	movq	mm0,mm2			; mm2=tmp4
	movq	mm6,mm3			; mm3=tmp5
	paddw	mm0,mm5			; mm0=z3
	paddw	mm6,mm7			; mm6=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      mm4,mm0
	movq      mm1,mm0
	punpcklwd mm4,mm6
	punpckhwd mm1,mm6
	movq      mm0,mm4
	movq      mm6,mm1
	pmaddwd   mm4,[GOTOFF(ebx,PW_MF078_F117)]	; mm4=z3L
	pmaddwd   mm1,[GOTOFF(ebx,PW_MF078_F117)]	; mm1=z3H
	pmaddwd   mm0,[GOTOFF(ebx,PW_F117_F078)]	; mm0=z4L
	pmaddwd   mm6,[GOTOFF(ebx,PW_F117_F078)]	; mm6=z4H

	movq	MMWORD [wk(0)], mm4	; wk(0)=z3L
	movq	MMWORD [wk(1)], mm1	; wk(1)=z3H

	; (Original)
	; z1 = tmp4 + tmp7;  z2 = tmp5 + tmp6;
	; tmp4 = tmp4 * 0.298631336;  tmp5 = tmp5 * 2.053119869;
	; tmp6 = tmp6 * 3.072711026;  tmp7 = tmp7 * 1.501321110;
	; z1 = z1 * -0.899976223;  z2 = z2 * -2.562915447;
	; data7 = tmp4 + z1 + z3;  data5 = tmp5 + z2 + z4;
	; data3 = tmp6 + z2 + z3;  data1 = tmp7 + z1 + z4;
	;
	; (This implementation)
	; tmp4 = tmp4 * (0.298631336 - 0.899976223) + tmp7 * -0.899976223;
	; tmp5 = tmp5 * (2.053119869 - 2.562915447) + tmp6 * -2.562915447;
	; tmp6 = tmp5 * -2.562915447 + tmp6 * (3.072711026 - 2.562915447);
	; tmp7 = tmp4 * -0.899976223 + tmp7 * (1.501321110 - 0.899976223);
	; data7 = tmp4 + z3;  data5 = tmp5 + z4;
	; data3 = tmp6 + z3;  data1 = tmp7 + z4;

	movq      mm4,mm2
	movq      mm1,mm2
	punpcklwd mm4,mm7
	punpckhwd mm1,mm7
	movq      mm2,mm4
	movq      mm7,mm1
	pmaddwd   mm4,[GOTOFF(ebx,PW_MF060_MF089)]	; mm4=tmp4L
	pmaddwd   mm1,[GOTOFF(ebx,PW_MF060_MF089)]	; mm1=tmp4H
	pmaddwd   mm2,[GOTOFF(ebx,PW_MF089_F060)]	; mm2=tmp7L
	pmaddwd   mm7,[GOTOFF(ebx,PW_MF089_F060)]	; mm7=tmp7H

	paddd	mm4, MMWORD [wk(0)]	; mm4=data7L
	paddd	mm1, MMWORD [wk(1)]	; mm1=data7H
	paddd	mm2,mm0			; mm2=data1L
	paddd	mm7,mm6			; mm7=data1H

	paddd	mm4,[GOTOFF(ebx,PD_DESCALE_P2)]
	paddd	mm1,[GOTOFF(ebx,PD_DESCALE_P2)]
	psrad	mm4,DESCALE_P2
	psrad	mm1,DESCALE_P2
	paddd	mm2,[GOTOFF(ebx,PD_DESCALE_P2)]
	paddd	mm7,[GOTOFF(ebx,PD_DESCALE_P2)]
	psrad	mm2,DESCALE_P2
	psrad	mm7,DESCALE_P2

	packssdw  mm4,mm1		; mm4=data7
	packssdw  mm2,mm7		; mm2=data1

	movq	MMWORD [MMBLOCK(7,0,edx,SIZEOF_DCTELEM)], mm4
	movq	MMWORD [MMBLOCK(1,0,edx,SIZEOF_DCTELEM)], mm2

	movq      mm1,mm3
	movq      mm7,mm3
	punpcklwd mm1,mm5
	punpckhwd mm7,mm5
	movq      mm3,mm1
	movq      mm5,mm7
	pmaddwd   mm1,[GOTOFF(ebx,PW_MF050_MF256)]	; mm1=tmp5L
	pmaddwd   mm7,[GOTOFF(ebx,PW_MF050_MF256)]	; mm7=tmp5H
	pmaddwd   mm3,[GOTOFF(ebx,PW_MF256_F050)]	; mm3=tmp6L
	pmaddwd   mm5,[GOTOFF(ebx,PW_MF256_F050)]	; mm5=tmp6H

	paddd	mm1,mm0			; mm1=data5L
	paddd	mm7,mm6			; mm7=data5H
	paddd	mm3, MMWORD [wk(0)]	; mm3=data3L
	paddd	mm5, MMWORD [wk(1)]	; mm5=data3H

	paddd	mm1,[GOTOFF(ebx,PD_DESCALE_P2)]
	paddd	mm7,[GOTOFF(ebx,PD_DESCALE_P2)]
	psrad	mm1,DESCALE_P2
	psrad	mm7,DESCALE_P2
	paddd	mm3,[GOTOFF(ebx,PD_DESCALE_P2)]
	paddd	mm5,[GOTOFF(ebx,PD_DESCALE_P2)]
	psrad	mm3,DESCALE_P2
	psrad	mm5,DESCALE_P2

	packssdw  mm1,mm7		; mm1=data5
	packssdw  mm3,mm5		; mm3=data3

	movq	MMWORD [MMBLOCK(5,0,edx,SIZEOF_DCTELEM)], mm1
	movq	MMWORD [MMBLOCK(3,0,edx,SIZEOF_DCTELEM)], mm3

	add	edx, byte 4*SIZEOF_DCTELEM
	dec	ecx
	jnz	near .columnloop

	emms		; empty MMX state

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