;
; jfss2int.asm - accurate integer FDCT (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 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_sse2) PRIVATE

EXTN(jconst_fdct_islow_sse2):

PW_F130_F054	times 4 dw  (F_0_541+F_0_765), F_0_541
PW_F054_MF130	times 4 dw  F_0_541, (F_0_541-F_1_847)
PW_MF078_F117	times 4 dw  (F_1_175-F_1_961), F_1_175
PW_F117_F078	times 4 dw  F_1_175, (F_1_175-F_0_390)
PW_MF060_MF089	times 4 dw  (F_0_298-F_0_899),-F_0_899
PW_MF089_F060	times 4 dw -F_0_899, (F_1_501-F_0_899)
PW_MF050_MF256	times 4 dw  (F_2_053-F_2_562),-F_2_562
PW_MF256_F050	times 4 dw -F_2_562, (F_3_072-F_2_562)
PD_DESCALE_P1	times 4 dd  1 << (DESCALE_P1-1)
PD_DESCALE_P2	times 4 dd  1 << (DESCALE_P2-1)
PW_DESCALE_P2X	times 8 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_sse2 (DCTELEM * data)
;

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

%define original_ebp	ebp+0
%define wk(i)		ebp-(WK_NUM-(i))*SIZEOF_XMMWORD	; xmmword wk[WK_NUM]
%define WK_NUM		6

	align	16
	global	EXTN(jsimd_fdct_islow_sse2) PRIVATE

EXTN(jsimd_fdct_islow_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		; unused
;	push	edi		; unused

	get_GOT	ebx		; get GOT address

	; ---- Pass 1: process rows.

	mov	edx, POINTER [data(eax)]	; (DCTELEM *)

	movdqa	xmm0, XMMWORD [XMMBLOCK(0,0,edx,SIZEOF_DCTELEM)]
	movdqa	xmm1, XMMWORD [XMMBLOCK(1,0,edx,SIZEOF_DCTELEM)]
	movdqa	xmm2, XMMWORD [XMMBLOCK(2,0,edx,SIZEOF_DCTELEM)]
	movdqa	xmm3, XMMWORD [XMMBLOCK(3,0,edx,SIZEOF_DCTELEM)]

	; xmm0=(00 01 02 03 04 05 06 07), xmm2=(20 21 22 23 24 25 26 27)
	; xmm1=(10 11 12 13 14 15 16 17), xmm3=(30 31 32 33 34 35 36 37)

	movdqa    xmm4,xmm0		; transpose coefficients(phase 1)
	punpcklwd xmm0,xmm1		; xmm0=(00 10 01 11 02 12 03 13)
	punpckhwd xmm4,xmm1		; xmm4=(04 14 05 15 06 16 07 17)
	movdqa    xmm5,xmm2		; transpose coefficients(phase 1)
	punpcklwd xmm2,xmm3		; xmm2=(20 30 21 31 22 32 23 33)
	punpckhwd xmm5,xmm3		; xmm5=(24 34 25 35 26 36 27 37)

	movdqa	xmm6, XMMWORD [XMMBLOCK(4,0,edx,SIZEOF_DCTELEM)]
	movdqa	xmm7, XMMWORD [XMMBLOCK(5,0,edx,SIZEOF_DCTELEM)]
	movdqa	xmm1, XMMWORD [XMMBLOCK(6,0,edx,SIZEOF_DCTELEM)]
	movdqa	xmm3, XMMWORD [XMMBLOCK(7,0,edx,SIZEOF_DCTELEM)]

	; xmm6=( 4 12 20 28 36 44 52 60), xmm1=( 6 14 22 30 38 46 54 62)
	; xmm7=( 5 13 21 29 37 45 53 61), xmm3=( 7 15 23 31 39 47 55 63)

	movdqa	XMMWORD [wk(0)], xmm2	; wk(0)=(20 30 21 31 22 32 23 33)
	movdqa	XMMWORD [wk(1)], xmm5	; wk(1)=(24 34 25 35 26 36 27 37)

	movdqa    xmm2,xmm6		; transpose coefficients(phase 1)
	punpcklwd xmm6,xmm7		; xmm6=(40 50 41 51 42 52 43 53)
	punpckhwd xmm2,xmm7		; xmm2=(44 54 45 55 46 56 47 57)
	movdqa    xmm5,xmm1		; transpose coefficients(phase 1)
	punpcklwd xmm1,xmm3		; xmm1=(60 70 61 71 62 72 63 73)
	punpckhwd xmm5,xmm3		; xmm5=(64 74 65 75 66 76 67 77)

	movdqa    xmm7,xmm6		; transpose coefficients(phase 2)
	punpckldq xmm6,xmm1		; xmm6=(40 50 60 70 41 51 61 71)
	punpckhdq xmm7,xmm1		; xmm7=(42 52 62 72 43 53 63 73)
	movdqa    xmm3,xmm2		; transpose coefficients(phase 2)
	punpckldq xmm2,xmm5		; xmm2=(44 54 64 74 45 55 65 75)
	punpckhdq xmm3,xmm5		; xmm3=(46 56 66 76 47 57 67 77)

	movdqa	xmm1, XMMWORD [wk(0)]	; xmm1=(20 30 21 31 22 32 23 33)
	movdqa	xmm5, XMMWORD [wk(1)]	; xmm5=(24 34 25 35 26 36 27 37)
	movdqa	XMMWORD [wk(2)], xmm7	; wk(2)=(42 52 62 72 43 53 63 73)
	movdqa	XMMWORD [wk(3)], xmm2	; wk(3)=(44 54 64 74 45 55 65 75)

	movdqa    xmm7,xmm0		; transpose coefficients(phase 2)
	punpckldq xmm0,xmm1		; xmm0=(00 10 20 30 01 11 21 31)
	punpckhdq xmm7,xmm1		; xmm7=(02 12 22 32 03 13 23 33)
	movdqa    xmm2,xmm4		; transpose coefficients(phase 2)
	punpckldq xmm4,xmm5		; xmm4=(04 14 24 34 05 15 25 35)
	punpckhdq xmm2,xmm5		; xmm2=(06 16 26 36 07 17 27 37)

	movdqa     xmm1,xmm0		; transpose coefficients(phase 3)
	punpcklqdq xmm0,xmm6		; xmm0=(00 10 20 30 40 50 60 70)=data0
	punpckhqdq xmm1,xmm6		; xmm1=(01 11 21 31 41 51 61 71)=data1
	movdqa     xmm5,xmm2		; transpose coefficients(phase 3)
	punpcklqdq xmm2,xmm3		; xmm2=(06 16 26 36 46 56 66 76)=data6
	punpckhqdq xmm5,xmm3		; xmm5=(07 17 27 37 47 57 67 77)=data7

	movdqa	xmm6,xmm1
	movdqa	xmm3,xmm0
	psubw	xmm1,xmm2		; xmm1=data1-data6=tmp6
	psubw	xmm0,xmm5		; xmm0=data0-data7=tmp7
	paddw	xmm6,xmm2		; xmm6=data1+data6=tmp1
	paddw	xmm3,xmm5		; xmm3=data0+data7=tmp0

	movdqa	xmm2, XMMWORD [wk(2)]	; xmm2=(42 52 62 72 43 53 63 73)
	movdqa	xmm5, XMMWORD [wk(3)]	; xmm5=(44 54 64 74 45 55 65 75)
	movdqa	XMMWORD [wk(0)], xmm1	; wk(0)=tmp6
	movdqa	XMMWORD [wk(1)], xmm0	; wk(1)=tmp7

	movdqa     xmm1,xmm7		; transpose coefficients(phase 3)
	punpcklqdq xmm7,xmm2		; xmm7=(02 12 22 32 42 52 62 72)=data2
	punpckhqdq xmm1,xmm2		; xmm1=(03 13 23 33 43 53 63 73)=data3
	movdqa     xmm0,xmm4		; transpose coefficients(phase 3)
	punpcklqdq xmm4,xmm5		; xmm4=(04 14 24 34 44 54 64 74)=data4
	punpckhqdq xmm0,xmm5		; xmm0=(05 15 25 35 45 55 65 75)=data5

	movdqa	xmm2,xmm1
	movdqa	xmm5,xmm7
	paddw	xmm1,xmm4		; xmm1=data3+data4=tmp3
	paddw	xmm7,xmm0		; xmm7=data2+data5=tmp2
	psubw	xmm2,xmm4		; xmm2=data3-data4=tmp4
	psubw	xmm5,xmm0		; xmm5=data2-data5=tmp5

	; -- Even part

	movdqa	xmm4,xmm3
	movdqa	xmm0,xmm6
	paddw	xmm3,xmm1		; xmm3=tmp10
	paddw	xmm6,xmm7		; xmm6=tmp11
	psubw	xmm4,xmm1		; xmm4=tmp13
	psubw	xmm0,xmm7		; xmm0=tmp12

	movdqa	xmm1,xmm3
	paddw	xmm3,xmm6		; xmm3=tmp10+tmp11
	psubw	xmm1,xmm6		; xmm1=tmp10-tmp11

	psllw	xmm3,PASS1_BITS		; xmm3=data0
	psllw	xmm1,PASS1_BITS		; xmm1=data4

	movdqa	XMMWORD [wk(2)], xmm3	; wk(2)=data0
	movdqa	XMMWORD [wk(3)], xmm1	; wk(3)=data4

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

	movdqa    xmm7,xmm4		; xmm4=tmp13
	movdqa    xmm6,xmm4
	punpcklwd xmm7,xmm0		; xmm0=tmp12
	punpckhwd xmm6,xmm0
	movdqa    xmm4,xmm7
	movdqa    xmm0,xmm6
	pmaddwd   xmm7,[GOTOFF(ebx,PW_F130_F054)]	; xmm7=data2L
	pmaddwd   xmm6,[GOTOFF(ebx,PW_F130_F054)]	; xmm6=data2H
	pmaddwd   xmm4,[GOTOFF(ebx,PW_F054_MF130)]	; xmm4=data6L
	pmaddwd   xmm0,[GOTOFF(ebx,PW_F054_MF130)]	; xmm0=data6H

	paddd	xmm7,[GOTOFF(ebx,PD_DESCALE_P1)]
	paddd	xmm6,[GOTOFF(ebx,PD_DESCALE_P1)]
	psrad	xmm7,DESCALE_P1
	psrad	xmm6,DESCALE_P1
	paddd	xmm4,[GOTOFF(ebx,PD_DESCALE_P1)]
	paddd	xmm0,[GOTOFF(ebx,PD_DESCALE_P1)]
	psrad	xmm4,DESCALE_P1
	psrad	xmm0,DESCALE_P1

	packssdw  xmm7,xmm6		; xmm7=data2
	packssdw  xmm4,xmm0		; xmm4=data6

	movdqa	XMMWORD [wk(4)], xmm7	; wk(4)=data2
	movdqa	XMMWORD [wk(5)], xmm4	; wk(5)=data6

	; -- Odd part

	movdqa	xmm3, XMMWORD [wk(0)]	; xmm3=tmp6
	movdqa	xmm1, XMMWORD [wk(1)]	; xmm1=tmp7

	movdqa	xmm6,xmm2		; xmm2=tmp4
	movdqa	xmm0,xmm5		; xmm5=tmp5
	paddw	xmm6,xmm3		; xmm6=z3
	paddw	xmm0,xmm1		; xmm0=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);

	movdqa    xmm7,xmm6
	movdqa    xmm4,xmm6
	punpcklwd xmm7,xmm0
	punpckhwd xmm4,xmm0
	movdqa    xmm6,xmm7
	movdqa    xmm0,xmm4
	pmaddwd   xmm7,[GOTOFF(ebx,PW_MF078_F117)]	; xmm7=z3L
	pmaddwd   xmm4,[GOTOFF(ebx,PW_MF078_F117)]	; xmm4=z3H
	pmaddwd   xmm6,[GOTOFF(ebx,PW_F117_F078)]	; xmm6=z4L
	pmaddwd   xmm0,[GOTOFF(ebx,PW_F117_F078)]	; xmm0=z4H

	movdqa	XMMWORD [wk(0)], xmm7	; wk(0)=z3L
	movdqa	XMMWORD [wk(1)], xmm4	; 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;

	movdqa    xmm7,xmm2
	movdqa    xmm4,xmm2
	punpcklwd xmm7,xmm1
	punpckhwd xmm4,xmm1
	movdqa    xmm2,xmm7
	movdqa    xmm1,xmm4
	pmaddwd   xmm7,[GOTOFF(ebx,PW_MF060_MF089)]	; xmm7=tmp4L
	pmaddwd   xmm4,[GOTOFF(ebx,PW_MF060_MF089)]	; xmm4=tmp4H
	pmaddwd   xmm2,[GOTOFF(ebx,PW_MF089_F060)]	; xmm2=tmp7L
	pmaddwd   xmm1,[GOTOFF(ebx,PW_MF089_F060)]	; xmm1=tmp7H

	paddd	xmm7, XMMWORD [wk(0)]	; xmm7=data7L
	paddd	xmm4, XMMWORD [wk(1)]	; xmm4=data7H
	paddd	xmm2,xmm6		; xmm2=data1L
	paddd	xmm1,xmm0		; xmm1=data1H

	paddd	xmm7,[GOTOFF(ebx,PD_DESCALE_P1)]
	paddd	xmm4,[GOTOFF(ebx,PD_DESCALE_P1)]
	psrad	xmm7,DESCALE_P1
	psrad	xmm4,DESCALE_P1
	paddd	xmm2,[GOTOFF(ebx,PD_DESCALE_P1)]
	paddd	xmm1,[GOTOFF(ebx,PD_DESCALE_P1)]
	psrad	xmm2,DESCALE_P1
	psrad	xmm1,DESCALE_P1

	packssdw  xmm7,xmm4		; xmm7=data7
	packssdw  xmm2,xmm1		; xmm2=data1

	movdqa    xmm4,xmm5
	movdqa    xmm1,xmm5
	punpcklwd xmm4,xmm3
	punpckhwd xmm1,xmm3
	movdqa    xmm5,xmm4
	movdqa    xmm3,xmm1
	pmaddwd   xmm4,[GOTOFF(ebx,PW_MF050_MF256)]	; xmm4=tmp5L
	pmaddwd   xmm1,[GOTOFF(ebx,PW_MF050_MF256)]	; xmm1=tmp5H
	pmaddwd   xmm5,[GOTOFF(ebx,PW_MF256_F050)]	; xmm5=tmp6L
	pmaddwd   xmm3,[GOTOFF(ebx,PW_MF256_F050)]	; xmm3=tmp6H

	paddd	xmm4,xmm6		; xmm4=data5L
	paddd	xmm1,xmm0		; xmm1=data5H
	paddd	xmm5, XMMWORD [wk(0)]	; xmm5=data3L
	paddd	xmm3, XMMWORD [wk(1)]	; xmm3=data3H

	paddd	xmm4,[GOTOFF(ebx,PD_DESCALE_P1)]
	paddd	xmm1,[GOTOFF(ebx,PD_DESCALE_P1)]
	psrad	xmm4,DESCALE_P1
	psrad	xmm1,DESCALE_P1
	paddd	xmm5,[GOTOFF(ebx,PD_DESCALE_P1)]
	paddd	xmm3,[GOTOFF(ebx,PD_DESCALE_P1)]
	psrad	xmm5,DESCALE_P1
	psrad	xmm3,DESCALE_P1

	packssdw  xmm4,xmm1		; xmm4=data5
	packssdw  xmm5,xmm3		; xmm5=data3

	; ---- Pass 2: process columns.

;	mov	edx, POINTER [data(eax)]	; (DCTELEM *)

	movdqa	xmm6, XMMWORD [wk(2)]	; xmm6=col0
	movdqa	xmm0, XMMWORD [wk(4)]	; xmm0=col2

	; xmm6=(00 10 20 30 40 50 60 70), xmm0=(02 12 22 32 42 52 62 72)
	; xmm2=(01 11 21 31 41 51 61 71), xmm5=(03 13 23 33 43 53 63 73)

	movdqa    xmm1,xmm6		; transpose coefficients(phase 1)
	punpcklwd xmm6,xmm2		; xmm6=(00 01 10 11 20 21 30 31)
	punpckhwd xmm1,xmm2		; xmm1=(40 41 50 51 60 61 70 71)
	movdqa    xmm3,xmm0		; transpose coefficients(phase 1)
	punpcklwd xmm0,xmm5		; xmm0=(02 03 12 13 22 23 32 33)
	punpckhwd xmm3,xmm5		; xmm3=(42 43 52 53 62 63 72 73)

	movdqa	xmm2, XMMWORD [wk(3)]	; xmm2=col4
	movdqa	xmm5, XMMWORD [wk(5)]	; xmm5=col6

	; xmm2=(04 14 24 34 44 54 64 74), xmm5=(06 16 26 36 46 56 66 76)
	; xmm4=(05 15 25 35 45 55 65 75), xmm7=(07 17 27 37 47 57 67 77)

	movdqa	XMMWORD [wk(0)], xmm0	; wk(0)=(02 03 12 13 22 23 32 33)
	movdqa	XMMWORD [wk(1)], xmm3	; wk(1)=(42 43 52 53 62 63 72 73)

	movdqa    xmm0,xmm2		; transpose coefficients(phase 1)
	punpcklwd xmm2,xmm4		; xmm2=(04 05 14 15 24 25 34 35)
	punpckhwd xmm0,xmm4		; xmm0=(44 45 54 55 64 65 74 75)
	movdqa    xmm3,xmm5		; transpose coefficients(phase 1)
	punpcklwd xmm5,xmm7		; xmm5=(06 07 16 17 26 27 36 37)
	punpckhwd xmm3,xmm7		; xmm3=(46 47 56 57 66 67 76 77)

	movdqa    xmm4,xmm2		; transpose coefficients(phase 2)
	punpckldq xmm2,xmm5		; xmm2=(04 05 06 07 14 15 16 17)
	punpckhdq xmm4,xmm5		; xmm4=(24 25 26 27 34 35 36 37)
	movdqa    xmm7,xmm0		; transpose coefficients(phase 2)
	punpckldq xmm0,xmm3		; xmm0=(44 45 46 47 54 55 56 57)
	punpckhdq xmm7,xmm3		; xmm7=(64 65 66 67 74 75 76 77)

	movdqa	xmm5, XMMWORD [wk(0)]	; xmm5=(02 03 12 13 22 23 32 33)
	movdqa	xmm3, XMMWORD [wk(1)]	; xmm3=(42 43 52 53 62 63 72 73)
	movdqa	XMMWORD [wk(2)], xmm4	; wk(2)=(24 25 26 27 34 35 36 37)
	movdqa	XMMWORD [wk(3)], xmm0	; wk(3)=(44 45 46 47 54 55 56 57)

	movdqa    xmm4,xmm6		; transpose coefficients(phase 2)
	punpckldq xmm6,xmm5		; xmm6=(00 01 02 03 10 11 12 13)
	punpckhdq xmm4,xmm5		; xmm4=(20 21 22 23 30 31 32 33)
	movdqa    xmm0,xmm1		; transpose coefficients(phase 2)
	punpckldq xmm1,xmm3		; xmm1=(40 41 42 43 50 51 52 53)
	punpckhdq xmm0,xmm3		; xmm0=(60 61 62 63 70 71 72 73)

	movdqa     xmm5,xmm6		; transpose coefficients(phase 3)
	punpcklqdq xmm6,xmm2		; xmm6=(00 01 02 03 04 05 06 07)=data0
	punpckhqdq xmm5,xmm2		; xmm5=(10 11 12 13 14 15 16 17)=data1
	movdqa     xmm3,xmm0		; transpose coefficients(phase 3)
	punpcklqdq xmm0,xmm7		; xmm0=(60 61 62 63 64 65 66 67)=data6
	punpckhqdq xmm3,xmm7		; xmm3=(70 71 72 73 74 75 76 77)=data7

	movdqa	xmm2,xmm5
	movdqa	xmm7,xmm6
	psubw	xmm5,xmm0		; xmm5=data1-data6=tmp6
	psubw	xmm6,xmm3		; xmm6=data0-data7=tmp7
	paddw	xmm2,xmm0		; xmm2=data1+data6=tmp1
	paddw	xmm7,xmm3		; xmm7=data0+data7=tmp0

	movdqa	xmm0, XMMWORD [wk(2)]	; xmm0=(24 25 26 27 34 35 36 37)
	movdqa	xmm3, XMMWORD [wk(3)]	; xmm3=(44 45 46 47 54 55 56 57)
	movdqa	XMMWORD [wk(0)], xmm5	; wk(0)=tmp6
	movdqa	XMMWORD [wk(1)], xmm6	; wk(1)=tmp7

	movdqa     xmm5,xmm4		; transpose coefficients(phase 3)
	punpcklqdq xmm4,xmm0		; xmm4=(20 21 22 23 24 25 26 27)=data2
	punpckhqdq xmm5,xmm0		; xmm5=(30 31 32 33 34 35 36 37)=data3
	movdqa     xmm6,xmm1		; transpose coefficients(phase 3)
	punpcklqdq xmm1,xmm3		; xmm1=(40 41 42 43 44 45 46 47)=data4
	punpckhqdq xmm6,xmm3		; xmm6=(50 51 52 53 54 55 56 57)=data5

	movdqa	xmm0,xmm5
	movdqa	xmm3,xmm4
	paddw	xmm5,xmm1		; xmm5=data3+data4=tmp3
	paddw	xmm4,xmm6		; xmm4=data2+data5=tmp2
	psubw	xmm0,xmm1		; xmm0=data3-data4=tmp4
	psubw	xmm3,xmm6		; xmm3=data2-data5=tmp5

	; -- Even part

	movdqa	xmm1,xmm7
	movdqa	xmm6,xmm2
	paddw	xmm7,xmm5		; xmm7=tmp10
	paddw	xmm2,xmm4		; xmm2=tmp11
	psubw	xmm1,xmm5		; xmm1=tmp13
	psubw	xmm6,xmm4		; xmm6=tmp12

	movdqa	xmm5,xmm7
	paddw	xmm7,xmm2		; xmm7=tmp10+tmp11
	psubw	xmm5,xmm2		; xmm5=tmp10-tmp11

	paddw	xmm7,[GOTOFF(ebx,PW_DESCALE_P2X)]
	paddw	xmm5,[GOTOFF(ebx,PW_DESCALE_P2X)]
	psraw	xmm7,PASS1_BITS		; xmm7=data0
	psraw	xmm5,PASS1_BITS		; xmm5=data4

	movdqa	XMMWORD [XMMBLOCK(0,0,edx,SIZEOF_DCTELEM)], xmm7
	movdqa	XMMWORD [XMMBLOCK(4,0,edx,SIZEOF_DCTELEM)], xmm5

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

	movdqa    xmm4,xmm1		; xmm1=tmp13
	movdqa    xmm2,xmm1
	punpcklwd xmm4,xmm6		; xmm6=tmp12
	punpckhwd xmm2,xmm6
	movdqa    xmm1,xmm4
	movdqa    xmm6,xmm2
	pmaddwd   xmm4,[GOTOFF(ebx,PW_F130_F054)]	; xmm4=data2L
	pmaddwd   xmm2,[GOTOFF(ebx,PW_F130_F054)]	; xmm2=data2H
	pmaddwd   xmm1,[GOTOFF(ebx,PW_F054_MF130)]	; xmm1=data6L
	pmaddwd   xmm6,[GOTOFF(ebx,PW_F054_MF130)]	; xmm6=data6H

	paddd	xmm4,[GOTOFF(ebx,PD_DESCALE_P2)]
	paddd	xmm2,[GOTOFF(ebx,PD_DESCALE_P2)]
	psrad	xmm4,DESCALE_P2
	psrad	xmm2,DESCALE_P2
	paddd	xmm1,[GOTOFF(ebx,PD_DESCALE_P2)]
	paddd	xmm6,[GOTOFF(ebx,PD_DESCALE_P2)]
	psrad	xmm1,DESCALE_P2
	psrad	xmm6,DESCALE_P2

	packssdw  xmm4,xmm2		; xmm4=data2
	packssdw  xmm1,xmm6		; xmm1=data6

	movdqa	XMMWORD [XMMBLOCK(2,0,edx,SIZEOF_DCTELEM)], xmm4
	movdqa	XMMWORD [XMMBLOCK(6,0,edx,SIZEOF_DCTELEM)], xmm1

	; -- Odd part

	movdqa	xmm7, XMMWORD [wk(0)]	; xmm7=tmp6
	movdqa	xmm5, XMMWORD [wk(1)]	; xmm5=tmp7

	movdqa	xmm2,xmm0		; xmm0=tmp4
	movdqa	xmm6,xmm3		; xmm3=tmp5
	paddw	xmm2,xmm7		; xmm2=z3
	paddw	xmm6,xmm5		; xmm6=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);

	movdqa    xmm4,xmm2
	movdqa    xmm1,xmm2
	punpcklwd xmm4,xmm6
	punpckhwd xmm1,xmm6
	movdqa    xmm2,xmm4
	movdqa    xmm6,xmm1
	pmaddwd   xmm4,[GOTOFF(ebx,PW_MF078_F117)]	; xmm4=z3L
	pmaddwd   xmm1,[GOTOFF(ebx,PW_MF078_F117)]	; xmm1=z3H
	pmaddwd   xmm2,[GOTOFF(ebx,PW_F117_F078)]	; xmm2=z4L
	pmaddwd   xmm6,[GOTOFF(ebx,PW_F117_F078)]	; xmm6=z4H

	movdqa	XMMWORD [wk(0)], xmm4	; wk(0)=z3L
	movdqa	XMMWORD [wk(1)], xmm1	; 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;

	movdqa    xmm4,xmm0
	movdqa    xmm1,xmm0
	punpcklwd xmm4,xmm5
	punpckhwd xmm1,xmm5
	movdqa    xmm0,xmm4
	movdqa    xmm5,xmm1
	pmaddwd   xmm4,[GOTOFF(ebx,PW_MF060_MF089)]	; xmm4=tmp4L
	pmaddwd   xmm1,[GOTOFF(ebx,PW_MF060_MF089)]	; xmm1=tmp4H
	pmaddwd   xmm0,[GOTOFF(ebx,PW_MF089_F060)]	; xmm0=tmp7L
	pmaddwd   xmm5,[GOTOFF(ebx,PW_MF089_F060)]	; xmm5=tmp7H

	paddd	xmm4, XMMWORD [wk(0)]	; xmm4=data7L
	paddd	xmm1, XMMWORD [wk(1)]	; xmm1=data7H
	paddd	xmm0,xmm2		; xmm0=data1L
	paddd	xmm5,xmm6		; xmm5=data1H

	paddd	xmm4,[GOTOFF(ebx,PD_DESCALE_P2)]
	paddd	xmm1,[GOTOFF(ebx,PD_DESCALE_P2)]
	psrad	xmm4,DESCALE_P2
	psrad	xmm1,DESCALE_P2
	paddd	xmm0,[GOTOFF(ebx,PD_DESCALE_P2)]
	paddd	xmm5,[GOTOFF(ebx,PD_DESCALE_P2)]
	psrad	xmm0,DESCALE_P2
	psrad	xmm5,DESCALE_P2

	packssdw  xmm4,xmm1		; xmm4=data7
	packssdw  xmm0,xmm5		; xmm0=data1

	movdqa	XMMWORD [XMMBLOCK(7,0,edx,SIZEOF_DCTELEM)], xmm4
	movdqa	XMMWORD [XMMBLOCK(1,0,edx,SIZEOF_DCTELEM)], xmm0

	movdqa    xmm1,xmm3
	movdqa    xmm5,xmm3
	punpcklwd xmm1,xmm7
	punpckhwd xmm5,xmm7
	movdqa    xmm3,xmm1
	movdqa    xmm7,xmm5
	pmaddwd   xmm1,[GOTOFF(ebx,PW_MF050_MF256)]	; xmm1=tmp5L
	pmaddwd   xmm5,[GOTOFF(ebx,PW_MF050_MF256)]	; xmm5=tmp5H
	pmaddwd   xmm3,[GOTOFF(ebx,PW_MF256_F050)]	; xmm3=tmp6L
	pmaddwd   xmm7,[GOTOFF(ebx,PW_MF256_F050)]	; xmm7=tmp6H

	paddd	xmm1,xmm2		; xmm1=data5L
	paddd	xmm5,xmm6		; xmm5=data5H
	paddd	xmm3, XMMWORD [wk(0)]	; xmm3=data3L
	paddd	xmm7, XMMWORD [wk(1)]	; xmm7=data3H

	paddd	xmm1,[GOTOFF(ebx,PD_DESCALE_P2)]
	paddd	xmm5,[GOTOFF(ebx,PD_DESCALE_P2)]
	psrad	xmm1,DESCALE_P2
	psrad	xmm5,DESCALE_P2
	paddd	xmm3,[GOTOFF(ebx,PD_DESCALE_P2)]
	paddd	xmm7,[GOTOFF(ebx,PD_DESCALE_P2)]
	psrad	xmm3,DESCALE_P2
	psrad	xmm7,DESCALE_P2

	packssdw  xmm1,xmm5		; xmm1=data5
	packssdw  xmm3,xmm7		; xmm3=data3

	movdqa	XMMWORD [XMMBLOCK(5,0,edx,SIZEOF_DCTELEM)], xmm1
	movdqa	XMMWORD [XMMBLOCK(3,0,edx,SIZEOF_DCTELEM)], xmm3

;	pop	edi		; unused
;	pop	esi		; unused
;	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

; For some reason, the OS X linker does not honor the request to align the
; segment unless we do this.
	align	16
