;
; jimmxred.asm - reduced-size 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 inverse-DCT routines that produce reduced-size
; output: either 4x4 or 2x2 pixels from an 8x8 DCT block.
; The following code is based directly on the IJG's original jidctred.c;
; see the jidctred.c for more details.
;
; [TAB8]

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

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

%define CONST_BITS	13
%define PASS1_BITS	2

%define DESCALE_P1_4	(CONST_BITS-PASS1_BITS+1)
%define DESCALE_P2_4	(CONST_BITS+PASS1_BITS+3+1)
%define DESCALE_P1_2	(CONST_BITS-PASS1_BITS+2)
%define DESCALE_P2_2	(CONST_BITS+PASS1_BITS+3+2)

%if CONST_BITS == 13
F_0_211	equ	 1730		; FIX(0.211164243)
F_0_509	equ	 4176		; FIX(0.509795579)
F_0_601	equ	 4926		; FIX(0.601344887)
F_0_720	equ	 5906		; FIX(0.720959822)
F_0_765	equ	 6270		; FIX(0.765366865)
F_0_850	equ	 6967		; FIX(0.850430095)
F_0_899	equ	 7373		; FIX(0.899976223)
F_1_061	equ	 8697		; FIX(1.061594337)
F_1_272	equ	10426		; FIX(1.272758580)
F_1_451	equ	11893		; FIX(1.451774981)
F_1_847	equ	15137		; FIX(1.847759065)
F_2_172	equ	17799		; FIX(2.172734803)
F_2_562	equ	20995		; FIX(2.562915447)
F_3_624	equ	29692		; FIX(3.624509785)
%else
; NASM cannot do compile-time arithmetic on floating-point constants.
%define DESCALE(x,n)  (((x)+(1<<((n)-1)))>>(n))
F_0_211	equ	DESCALE( 226735879,30-CONST_BITS)	; FIX(0.211164243)
F_0_509	equ	DESCALE( 547388834,30-CONST_BITS)	; FIX(0.509795579)
F_0_601	equ	DESCALE( 645689155,30-CONST_BITS)	; FIX(0.601344887)
F_0_720	equ	DESCALE( 774124714,30-CONST_BITS)	; FIX(0.720959822)
F_0_765	equ	DESCALE( 821806413,30-CONST_BITS)	; FIX(0.765366865)
F_0_850	equ	DESCALE( 913142361,30-CONST_BITS)	; FIX(0.850430095)
F_0_899	equ	DESCALE( 966342111,30-CONST_BITS)	; FIX(0.899976223)
F_1_061	equ	DESCALE(1139878239,30-CONST_BITS)	; FIX(1.061594337)
F_1_272	equ	DESCALE(1366614119,30-CONST_BITS)	; FIX(1.272758580)
F_1_451	equ	DESCALE(1558831516,30-CONST_BITS)	; FIX(1.451774981)
F_1_847	equ	DESCALE(1984016188,30-CONST_BITS)	; FIX(1.847759065)
F_2_172	equ	DESCALE(2332956230,30-CONST_BITS)	; FIX(2.172734803)
F_2_562	equ	DESCALE(2751909506,30-CONST_BITS)	; FIX(2.562915447)
F_3_624	equ	DESCALE(3891787747,30-CONST_BITS)	; FIX(3.624509785)
%endif

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

	alignz	16
	global	EXTN(jconst_idct_red_mmx)

EXTN(jconst_idct_red_mmx):

PW_F184_MF076	times 2 dw  F_1_847,-F_0_765
PW_F256_F089	times 2 dw  F_2_562, F_0_899
PW_F106_MF217	times 2 dw  F_1_061,-F_2_172
PW_MF060_MF050	times 2 dw -F_0_601,-F_0_509
PW_F145_MF021	times 2 dw  F_1_451,-F_0_211
PW_F362_MF127	times 2 dw  F_3_624,-F_1_272
PW_F085_MF072	times 2 dw  F_0_850,-F_0_720
PD_DESCALE_P1_4	times 2 dd  1 << (DESCALE_P1_4-1)
PD_DESCALE_P2_4	times 2 dd  1 << (DESCALE_P2_4-1)
PD_DESCALE_P1_2	times 2 dd  1 << (DESCALE_P1_2-1)
PD_DESCALE_P2_2	times 2 dd  1 << (DESCALE_P2_2-1)
PB_CENTERJSAMP	times 8 db  CENTERJSAMPLE

	alignz	16

; --------------------------------------------------------------------------
	SECTION	SEG_TEXT
	BITS	32
;
; Perform dequantization and inverse DCT on one block of coefficients,
; producing a reduced-size 4x4 output block.
;
; GLOBAL(void)
; jsimd_idct_4x4_mmx (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_MMWORD	; mmword wk[WK_NUM]
%define WK_NUM		2
%define workspace	wk(0)-DCTSIZE2*SIZEOF_JCOEF
					; JCOEF workspace[DCTSIZE2]

	align	16
	global	EXTN(jsimd_idct_4x4_mmx)

EXTN(jsimd_idct_4x4_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]
	pushpic	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_4X4_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(5,0,esi,SIZEOF_JCOEF)]
	por	mm0, MMWORD [MMBLOCK(6,0,esi,SIZEOF_JCOEF)]
	por	mm1, MMWORD [MMBLOCK(7,0,esi,SIZEOF_JCOEF)]
	por	mm0,mm1
	packsswb mm0,mm0
	movd	eax,mm0
	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(1,0,edi,SIZEOF_JCOEF)], mm1
	movq	MMWORD [MMBLOCK(2,0,edi,SIZEOF_JCOEF)], mm2
	movq	MMWORD [MMBLOCK(3,0,edi,SIZEOF_JCOEF)], mm3
	jmp	near .nextcolumn
	alignx	16,7
%endif
.columnDCT:

	; -- Odd part

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

	movq      mm4,mm0
	movq      mm5,mm0
	punpcklwd mm4,mm1
	punpckhwd mm5,mm1
	movq      mm0,mm4
	movq      mm1,mm5
	pmaddwd   mm4,[GOTOFF(ebx,PW_F256_F089)]	; mm4=(tmp2L)
	pmaddwd   mm5,[GOTOFF(ebx,PW_F256_F089)]	; mm5=(tmp2H)
	pmaddwd   mm0,[GOTOFF(ebx,PW_F106_MF217)]	; mm0=(tmp0L)
	pmaddwd   mm1,[GOTOFF(ebx,PW_F106_MF217)]	; mm1=(tmp0H)

	movq      mm6,mm2
	movq      mm7,mm2
	punpcklwd mm6,mm3
	punpckhwd mm7,mm3
	movq      mm2,mm6
	movq      mm3,mm7
	pmaddwd   mm6,[GOTOFF(ebx,PW_MF060_MF050)]	; mm6=(tmp2L)
	pmaddwd   mm7,[GOTOFF(ebx,PW_MF060_MF050)]	; mm7=(tmp2H)
	pmaddwd   mm2,[GOTOFF(ebx,PW_F145_MF021)]	; mm2=(tmp0L)
	pmaddwd   mm3,[GOTOFF(ebx,PW_F145_MF021)]	; mm3=(tmp0H)

	paddd	mm6,mm4			; mm6=tmp2L
	paddd	mm7,mm5			; mm7=tmp2H
	paddd	mm2,mm0			; mm2=tmp0L
	paddd	mm3,mm1			; mm3=tmp0H

	movq	MMWORD [wk(0)], mm2	; wk(0)=tmp0L
	movq	MMWORD [wk(1)], mm3	; wk(1)=tmp0H

	; -- Even part

	movq	mm4, MMWORD [MMBLOCK(0,0,esi,SIZEOF_JCOEF)]
	movq	mm5, MMWORD [MMBLOCK(2,0,esi,SIZEOF_JCOEF)]
	movq	mm0, MMWORD [MMBLOCK(6,0,esi,SIZEOF_JCOEF)]
	pmullw	mm4, MMWORD [MMBLOCK(0,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
	pmullw	mm5, MMWORD [MMBLOCK(2,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
	pmullw	mm0, MMWORD [MMBLOCK(6,0,edx,SIZEOF_ISLOW_MULT_TYPE)]

	pxor      mm1,mm1
	pxor      mm2,mm2
	punpcklwd mm1,mm4		; mm1=tmp0L
	punpckhwd mm2,mm4		; mm2=tmp0H
	psrad     mm1,(16-CONST_BITS-1)	; psrad mm1,16 & pslld mm1,CONST_BITS+1
	psrad     mm2,(16-CONST_BITS-1)	; psrad mm2,16 & pslld mm2,CONST_BITS+1

	movq      mm3,mm5		; mm5=in2=z2
	punpcklwd mm5,mm0		; mm0=in6=z3
	punpckhwd mm3,mm0
	pmaddwd   mm5,[GOTOFF(ebx,PW_F184_MF076)]	; mm5=tmp2L
	pmaddwd   mm3,[GOTOFF(ebx,PW_F184_MF076)]	; mm3=tmp2H

	movq	mm4,mm1
	movq	mm0,mm2
	paddd	mm1,mm5			; mm1=tmp10L
	paddd	mm2,mm3			; mm2=tmp10H
	psubd	mm4,mm5			; mm4=tmp12L
	psubd	mm0,mm3			; mm0=tmp12H

	; -- Final output stage

	movq	mm5,mm1
	movq	mm3,mm2
	paddd	mm1,mm6			; mm1=data0L
	paddd	mm2,mm7			; mm2=data0H
	psubd	mm5,mm6			; mm5=data3L
	psubd	mm3,mm7			; mm3=data3H

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

	paddd	mm1,mm6
	paddd	mm2,mm6
	psrad	mm1,DESCALE_P1_4
	psrad	mm2,DESCALE_P1_4
	paddd	mm5,mm6
	paddd	mm3,mm6
	psrad	mm5,DESCALE_P1_4
	psrad	mm3,DESCALE_P1_4

	packssdw  mm1,mm2		; mm1=data0=(00 01 02 03)
	packssdw  mm5,mm3		; mm5=data3=(30 31 32 33)

	movq	mm7, MMWORD [wk(0)]	; mm7=tmp0L
	movq	mm6, MMWORD [wk(1)]	; mm6=tmp0H

	movq	mm2,mm4
	movq	mm3,mm0
	paddd	mm4,mm7			; mm4=data1L
	paddd	mm0,mm6			; mm0=data1H
	psubd	mm2,mm7			; mm2=data2L
	psubd	mm3,mm6			; mm3=data2H

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

	paddd	mm4,mm7
	paddd	mm0,mm7
	psrad	mm4,DESCALE_P1_4
	psrad	mm0,DESCALE_P1_4
	paddd	mm2,mm7
	paddd	mm3,mm7
	psrad	mm2,DESCALE_P1_4
	psrad	mm3,DESCALE_P1_4

	packssdw  mm4,mm0		; mm4=data1=(10 11 12 13)
	packssdw  mm2,mm3		; mm2=data2=(20 21 22 23)

	movq      mm6,mm1		; transpose coefficients(phase 1)
	punpcklwd mm1,mm4		; mm1=(00 10 01 11)
	punpckhwd mm6,mm4		; mm6=(02 12 03 13)
	movq      mm7,mm2		; transpose coefficients(phase 1)
	punpcklwd mm2,mm5		; mm2=(20 30 21 31)
	punpckhwd mm7,mm5		; mm7=(22 32 23 33)

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

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

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

	; -- Odd part

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

	movq      mm4,mm0
	movq      mm5,mm0
	punpcklwd mm4,mm1
	punpckhwd mm5,mm1
	movq      mm0,mm4
	movq      mm1,mm5
	pmaddwd   mm4,[GOTOFF(ebx,PW_F256_F089)]	; mm4=(tmp2L)
	pmaddwd   mm5,[GOTOFF(ebx,PW_F256_F089)]	; mm5=(tmp2H)
	pmaddwd   mm0,[GOTOFF(ebx,PW_F106_MF217)]	; mm0=(tmp0L)
	pmaddwd   mm1,[GOTOFF(ebx,PW_F106_MF217)]	; mm1=(tmp0H)

	movq      mm6,mm2
	movq      mm7,mm2
	punpcklwd mm6,mm3
	punpckhwd mm7,mm3
	movq      mm2,mm6
	movq      mm3,mm7
	pmaddwd   mm6,[GOTOFF(ebx,PW_MF060_MF050)]	; mm6=(tmp2L)
	pmaddwd   mm7,[GOTOFF(ebx,PW_MF060_MF050)]	; mm7=(tmp2H)
	pmaddwd   mm2,[GOTOFF(ebx,PW_F145_MF021)]	; mm2=(tmp0L)
	pmaddwd   mm3,[GOTOFF(ebx,PW_F145_MF021)]	; mm3=(tmp0H)

	paddd	mm6,mm4			; mm6=tmp2L
	paddd	mm7,mm5			; mm7=tmp2H
	paddd	mm2,mm0			; mm2=tmp0L
	paddd	mm3,mm1			; mm3=tmp0H

	movq	MMWORD [wk(0)], mm2	; wk(0)=tmp0L
	movq	MMWORD [wk(1)], mm3	; wk(1)=tmp0H

	; -- Even part

	movq	mm4, MMWORD [MMBLOCK(0,0,esi,SIZEOF_JCOEF)]
	movq	mm5, MMWORD [MMBLOCK(2,0,esi,SIZEOF_JCOEF)]
	movq	mm0, MMWORD [MMBLOCK(6,0,esi,SIZEOF_JCOEF)]

	pxor      mm1,mm1
	pxor      mm2,mm2
	punpcklwd mm1,mm4		; mm1=tmp0L
	punpckhwd mm2,mm4		; mm2=tmp0H
	psrad     mm1,(16-CONST_BITS-1)	; psrad mm1,16 & pslld mm1,CONST_BITS+1
	psrad     mm2,(16-CONST_BITS-1)	; psrad mm2,16 & pslld mm2,CONST_BITS+1

	movq      mm3,mm5		; mm5=in2=z2
	punpcklwd mm5,mm0		; mm0=in6=z3
	punpckhwd mm3,mm0
	pmaddwd   mm5,[GOTOFF(ebx,PW_F184_MF076)]	; mm5=tmp2L
	pmaddwd   mm3,[GOTOFF(ebx,PW_F184_MF076)]	; mm3=tmp2H

	movq	mm4,mm1
	movq	mm0,mm2
	paddd	mm1,mm5			; mm1=tmp10L
	paddd	mm2,mm3			; mm2=tmp10H
	psubd	mm4,mm5			; mm4=tmp12L
	psubd	mm0,mm3			; mm0=tmp12H

	; -- Final output stage

	movq	mm5,mm1
	movq	mm3,mm2
	paddd	mm1,mm6			; mm1=data0L
	paddd	mm2,mm7			; mm2=data0H
	psubd	mm5,mm6			; mm5=data3L
	psubd	mm3,mm7			; mm3=data3H

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

	paddd	mm1,mm6
	paddd	mm2,mm6
	psrad	mm1,DESCALE_P2_4
	psrad	mm2,DESCALE_P2_4
	paddd	mm5,mm6
	paddd	mm3,mm6
	psrad	mm5,DESCALE_P2_4
	psrad	mm3,DESCALE_P2_4

	packssdw  mm1,mm2		; mm1=data0=(00 10 20 30)
	packssdw  mm5,mm3		; mm5=data3=(03 13 23 33)

	movq	mm7, MMWORD [wk(0)]	; mm7=tmp0L
	movq	mm6, MMWORD [wk(1)]	; mm6=tmp0H

	movq	mm2,mm4
	movq	mm3,mm0
	paddd	mm4,mm7			; mm4=data1L
	paddd	mm0,mm6			; mm0=data1H
	psubd	mm2,mm7			; mm2=data2L
	psubd	mm3,mm6			; mm3=data2H

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

	paddd	mm4,mm7
	paddd	mm0,mm7
	psrad	mm4,DESCALE_P2_4
	psrad	mm0,DESCALE_P2_4
	paddd	mm2,mm7
	paddd	mm3,mm7
	psrad	mm2,DESCALE_P2_4
	psrad	mm3,DESCALE_P2_4

	packssdw  mm4,mm0		; mm4=data1=(01 11 21 31)
	packssdw  mm2,mm3		; mm2=data2=(02 12 22 32)

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

	packsswb  mm1,mm2		; mm1=(00 10 20 30 02 12 22 32)
	packsswb  mm4,mm5		; mm4=(01 11 21 31 03 13 23 33)
	paddb     mm1,mm6
	paddb     mm4,mm6

	movq      mm7,mm1		; transpose coefficients(phase 1)
	punpcklbw mm1,mm4		; mm1=(00 01 10 11 20 21 30 31)
	punpckhbw mm7,mm4		; mm7=(02 03 12 13 22 23 32 33)

	movq      mm0,mm1		; transpose coefficients(phase 2)
	punpcklwd mm1,mm7		; mm1=(00 01 02 03 10 11 12 13)
	punpckhwd mm0,mm7		; mm0=(20 21 22 23 30 31 32 33)

	mov	edx, JSAMPROW [edi+0*SIZEOF_JSAMPROW]
	mov	esi, JSAMPROW [edi+2*SIZEOF_JSAMPROW]
	movd	DWORD [edx+eax*SIZEOF_JSAMPLE], mm1
	movd	DWORD [esi+eax*SIZEOF_JSAMPLE], mm0

	psrlq	mm1,4*BYTE_BIT
	psrlq	mm0,4*BYTE_BIT

	mov	edx, JSAMPROW [edi+1*SIZEOF_JSAMPROW]
	mov	esi, JSAMPROW [edi+3*SIZEOF_JSAMPROW]
	movd	DWORD [edx+eax*SIZEOF_JSAMPLE], mm1
	movd	DWORD [esi+eax*SIZEOF_JSAMPLE], mm0

	emms		; empty MMX state

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


; --------------------------------------------------------------------------
;
; Perform dequantization and inverse DCT on one block of coefficients,
; producing a reduced-size 2x2 output block.
;
; GLOBAL(void)
; jsimd_idct_2x2_mmx (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

	align	16
	global	EXTN(jsimd_idct_2x2_mmx)

EXTN(jsimd_idct_2x2_mmx):
	push	ebp
	mov	ebp,esp
	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.

	mov	edx, POINTER [dct_table(ebp)]	; quantptr
	mov	esi, JCOEFPTR [coef_block(ebp)]		; inptr

	; | input:                  | result:        |
	; | 00 01 ** 03 ** 05 ** 07 |                |
	; | 10 11 ** 13 ** 15 ** 17 |                |
	; | ** ** ** ** ** ** ** ** |                |
	; | 30 31 ** 33 ** 35 ** 37 | A0 A1 A3 A5 A7 |
	; | ** ** ** ** ** ** ** ** | B0 B1 B3 B5 B7 |
	; | 50 51 ** 53 ** 55 ** 57 |                |
	; | ** ** ** ** ** ** ** ** |                |
	; | 70 71 ** 73 ** 75 ** 77 |                |

	; -- Odd part

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

	; mm0=(10 11 ** 13), mm1=(30 31 ** 33)
	; mm2=(50 51 ** 53), mm3=(70 71 ** 73)

	pcmpeqd   mm7,mm7
	pslld     mm7,WORD_BIT		; mm7={0x0000 0xFFFF 0x0000 0xFFFF}

	movq      mm4,mm0		; mm4=(10 11 ** 13)
	movq      mm5,mm2		; mm5=(50 51 ** 53)
	punpcklwd mm4,mm1		; mm4=(10 30 11 31)
	punpcklwd mm5,mm3		; mm5=(50 70 51 71)
	pmaddwd   mm4,[GOTOFF(ebx,PW_F362_MF127)]
	pmaddwd   mm5,[GOTOFF(ebx,PW_F085_MF072)]

	psrld	mm0,WORD_BIT		; mm0=(11 -- 13 --)
	pand	mm1,mm7			; mm1=(-- 31 -- 33)
	psrld	mm2,WORD_BIT		; mm2=(51 -- 53 --)
	pand	mm3,mm7			; mm3=(-- 71 -- 73)
	por	mm0,mm1			; mm0=(11 31 13 33)
	por	mm2,mm3			; mm2=(51 71 53 73)
	pmaddwd	mm0,[GOTOFF(ebx,PW_F362_MF127)]
	pmaddwd	mm2,[GOTOFF(ebx,PW_F085_MF072)]

	paddd	mm4,mm5			; mm4=tmp0[col0 col1]

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

	; mm6=(** 15 ** 17), mm1=(** 35 ** 37)
	; mm3=(** 55 ** 57), mm5=(** 75 ** 77)

	psrld	mm6,WORD_BIT		; mm6=(15 -- 17 --)
	pand	mm1,mm7			; mm1=(-- 35 -- 37)
	psrld	mm3,WORD_BIT		; mm3=(55 -- 57 --)
	pand	mm5,mm7			; mm5=(-- 75 -- 77)
	por	mm6,mm1			; mm6=(15 35 17 37)
	por	mm3,mm5			; mm3=(55 75 57 77)
	pmaddwd	mm6,[GOTOFF(ebx,PW_F362_MF127)]
	pmaddwd	mm3,[GOTOFF(ebx,PW_F085_MF072)]

	paddd	mm0,mm2			; mm0=tmp0[col1 col3]
	paddd	mm6,mm3			; mm6=tmp0[col5 col7]

	; -- Even part

	movq	mm1, MMWORD [MMBLOCK(0,0,esi,SIZEOF_JCOEF)]
	movq	mm5, MMWORD [MMBLOCK(0,1,esi,SIZEOF_JCOEF)]
	pmullw	mm1, MMWORD [MMBLOCK(0,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
	pmullw	mm5, MMWORD [MMBLOCK(0,1,edx,SIZEOF_ISLOW_MULT_TYPE)]

	; mm1=(00 01 ** 03), mm5=(** 05 ** 07)

	movq	mm2,mm1				; mm2=(00 01 ** 03)
	pslld	mm1,WORD_BIT			; mm1=(-- 00 -- **)
	psrad	mm1,(WORD_BIT-CONST_BITS-2)	; mm1=tmp10[col0 ****]

	pand	mm2,mm7				; mm2=(-- 01 -- 03)
	pand	mm5,mm7				; mm5=(-- 05 -- 07)
	psrad	mm2,(WORD_BIT-CONST_BITS-2)	; mm2=tmp10[col1 col3]
	psrad	mm5,(WORD_BIT-CONST_BITS-2)	; mm5=tmp10[col5 col7]

	; -- Final output stage

	movq      mm3,mm1
	paddd     mm1,mm4		; mm1=data0[col0 ****]=(A0 **)
	psubd     mm3,mm4		; mm3=data1[col0 ****]=(B0 **)
	punpckldq mm1,mm3		; mm1=(A0 B0)

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

	movq	mm4,mm2
	movq	mm3,mm5
	paddd	mm2,mm0			; mm2=data0[col1 col3]=(A1 A3)
	paddd	mm5,mm6			; mm5=data0[col5 col7]=(A5 A7)
	psubd	mm4,mm0			; mm4=data1[col1 col3]=(B1 B3)
	psubd	mm3,mm6			; mm3=data1[col5 col7]=(B5 B7)

	paddd	mm1,mm7
	psrad	mm1,DESCALE_P1_2

	paddd	mm2,mm7
	paddd	mm5,mm7
	psrad	mm2,DESCALE_P1_2
	psrad	mm5,DESCALE_P1_2
	paddd	mm4,mm7
	paddd	mm3,mm7
	psrad	mm4,DESCALE_P1_2
	psrad	mm3,DESCALE_P1_2

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

	mov	edi, JSAMPARRAY [output_buf(ebp)]	; (JSAMPROW *)
	mov	eax, JDIMENSION [output_col(ebp)]

	; | input:| result:|
	; | A0 B0 |        |
	; | A1 B1 | C0 C1  |
	; | A3 B3 | D0 D1  |
	; | A5 B5 |        |
	; | A7 B7 |        |

	; -- Odd part

	packssdw  mm2,mm4		; mm2=(A1 A3 B1 B3)
	packssdw  mm5,mm3		; mm5=(A5 A7 B5 B7)
	pmaddwd   mm2,[GOTOFF(ebx,PW_F362_MF127)]
	pmaddwd   mm5,[GOTOFF(ebx,PW_F085_MF072)]

	paddd     mm2,mm5		; mm2=tmp0[row0 row1]

	; -- Even part

	pslld     mm1,(CONST_BITS+2)	; mm1=tmp10[row0 row1]

	; -- Final output stage

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

	movq      mm6,mm1
	paddd     mm1,mm2		; mm1=data0[row0 row1]=(C0 C1)
	psubd     mm6,mm2		; mm6=data1[row0 row1]=(D0 D1)

	paddd     mm1,mm0
	paddd     mm6,mm0
	psrad     mm1,DESCALE_P2_2
	psrad     mm6,DESCALE_P2_2

	movq      mm7,mm1		; transpose coefficients
	punpckldq mm1,mm6		; mm1=(C0 D0)
	punpckhdq mm7,mm6		; mm7=(C1 D1)

	packssdw  mm1,mm7		; mm1=(C0 D0 C1 D1)
	packsswb  mm1,mm1		; mm1=(C0 D0 C1 D1 C0 D0 C1 D1)
	paddb     mm1,[GOTOFF(ebx,PB_CENTERJSAMP)]

	movd	ecx,mm1
	movd	ebx,mm1			; ebx=(C0 D0 C1 D1)
	shr	ecx,2*BYTE_BIT		; ecx=(C1 D1 -- --)

	mov	edx, JSAMPROW [edi+0*SIZEOF_JSAMPROW]
	mov	esi, JSAMPROW [edi+1*SIZEOF_JSAMPROW]
	mov	WORD [edx+eax*SIZEOF_JSAMPLE], bx
	mov	WORD [esi+eax*SIZEOF_JSAMPLE], cx

	emms		; empty MMX state

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