;
; ji3dnflt.asm - floating-point IDCT (3DNow! & 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"

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

	alignz	16
	global	EXTN(jconst_idct_float_3dnow) PRIVATE

EXTN(jconst_idct_float_3dnow):

PD_1_414	times 2 dd  1.414213562373095048801689
PD_1_847	times 2 dd  1.847759065022573512256366
PD_1_082	times 2 dd  1.082392200292393968799446
PD_2_613	times 2 dd  2.613125929752753055713286
PD_RNDINT_MAGIC	times 2 dd  100663296.0	; (float)(0x00C00000 << 3)
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_3dnow (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_FAST_FLOAT
					; FAST_FLOAT workspace[DCTSIZE2]

	align	16
	global	EXTN(jsimd_idct_float_3dnow) PRIVATE

EXTN(jsimd_idct_float_3dnow):
	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]			; FAST_FLOAT * wsptr
	mov	ecx, DCTSIZE/2				; ctr
	alignx	16,7
.columnloop:
%ifndef NO_ZERO_COLUMN_TEST_FLOAT_3DNOW
	mov	eax, DWORD [DWBLOCK(1,0,esi,SIZEOF_JCOEF)]
	or	eax, DWORD [DWBLOCK(2,0,esi,SIZEOF_JCOEF)]
	jnz	short .columnDCT

	pushpic	ebx		; save GOT address
	mov	ebx, DWORD [DWBLOCK(3,0,esi,SIZEOF_JCOEF)]
	mov	eax, DWORD [DWBLOCK(4,0,esi,SIZEOF_JCOEF)]
	or	ebx, DWORD [DWBLOCK(5,0,esi,SIZEOF_JCOEF)]
	or	eax, DWORD [DWBLOCK(6,0,esi,SIZEOF_JCOEF)]
	or	ebx, DWORD [DWBLOCK(7,0,esi,SIZEOF_JCOEF)]
	or	eax,ebx
	poppic	ebx		; restore GOT address
	jnz	short .columnDCT

	; -- AC terms all zero

	movd      mm0, DWORD [DWBLOCK(0,0,esi,SIZEOF_JCOEF)]

	punpcklwd mm0,mm0
	psrad     mm0,(DWORD_BIT-WORD_BIT)
	pi2fd     mm0,mm0

	pfmul     mm0, MMWORD [MMBLOCK(0,0,edx,SIZEOF_FLOAT_MULT_TYPE)]

	movq      mm1,mm0
	punpckldq mm0,mm0
	punpckhdq mm1,mm1

	movq	MMWORD [MMBLOCK(0,0,edi,SIZEOF_FAST_FLOAT)], mm0
	movq	MMWORD [MMBLOCK(0,1,edi,SIZEOF_FAST_FLOAT)], mm0
	movq	MMWORD [MMBLOCK(0,2,edi,SIZEOF_FAST_FLOAT)], mm0
	movq	MMWORD [MMBLOCK(0,3,edi,SIZEOF_FAST_FLOAT)], mm0
	movq	MMWORD [MMBLOCK(1,0,edi,SIZEOF_FAST_FLOAT)], mm1
	movq	MMWORD [MMBLOCK(1,1,edi,SIZEOF_FAST_FLOAT)], mm1
	movq	MMWORD [MMBLOCK(1,2,edi,SIZEOF_FAST_FLOAT)], mm1
	movq	MMWORD [MMBLOCK(1,3,edi,SIZEOF_FAST_FLOAT)], mm1
	jmp	near .nextcolumn
	alignx	16,7
%endif
.columnDCT:

	; -- Even part

	movd      mm0, DWORD [DWBLOCK(0,0,esi,SIZEOF_JCOEF)]
	movd      mm1, DWORD [DWBLOCK(2,0,esi,SIZEOF_JCOEF)]
	movd      mm2, DWORD [DWBLOCK(4,0,esi,SIZEOF_JCOEF)]
	movd      mm3, DWORD [DWBLOCK(6,0,esi,SIZEOF_JCOEF)]

	punpcklwd mm0,mm0
	punpcklwd mm1,mm1
	psrad     mm0,(DWORD_BIT-WORD_BIT)
	psrad     mm1,(DWORD_BIT-WORD_BIT)
	pi2fd     mm0,mm0
	pi2fd     mm1,mm1

	pfmul     mm0, MMWORD [MMBLOCK(0,0,edx,SIZEOF_FLOAT_MULT_TYPE)]
	pfmul     mm1, MMWORD [MMBLOCK(2,0,edx,SIZEOF_FLOAT_MULT_TYPE)]

	punpcklwd mm2,mm2
	punpcklwd mm3,mm3
	psrad     mm2,(DWORD_BIT-WORD_BIT)
	psrad     mm3,(DWORD_BIT-WORD_BIT)
	pi2fd     mm2,mm2
	pi2fd     mm3,mm3

	pfmul     mm2, MMWORD [MMBLOCK(4,0,edx,SIZEOF_FLOAT_MULT_TYPE)]
	pfmul     mm3, MMWORD [MMBLOCK(6,0,edx,SIZEOF_FLOAT_MULT_TYPE)]

	movq	mm4,mm0
	movq	mm5,mm1
	pfsub	mm0,mm2			; mm0=tmp11
	pfsub	mm1,mm3
	pfadd	mm4,mm2			; mm4=tmp10
	pfadd	mm5,mm3			; mm5=tmp13

	pfmul	mm1,[GOTOFF(ebx,PD_1_414)]
	pfsub	mm1,mm5			; mm1=tmp12

	movq	mm6,mm4
	movq	mm7,mm0
	pfsub	mm4,mm5			; mm4=tmp3
	pfsub	mm0,mm1			; mm0=tmp2
	pfadd	mm6,mm5			; mm6=tmp0
	pfadd	mm7,mm1			; mm7=tmp1

	movq	MMWORD [wk(1)], mm4	; tmp3
	movq	MMWORD [wk(0)], mm0	; tmp2

	; -- Odd part

	movd      mm2, DWORD [DWBLOCK(1,0,esi,SIZEOF_JCOEF)]
	movd      mm3, DWORD [DWBLOCK(3,0,esi,SIZEOF_JCOEF)]
	movd      mm5, DWORD [DWBLOCK(5,0,esi,SIZEOF_JCOEF)]
	movd      mm1, DWORD [DWBLOCK(7,0,esi,SIZEOF_JCOEF)]

	punpcklwd mm2,mm2
	punpcklwd mm3,mm3
	psrad     mm2,(DWORD_BIT-WORD_BIT)
	psrad     mm3,(DWORD_BIT-WORD_BIT)
	pi2fd     mm2,mm2
	pi2fd     mm3,mm3

	pfmul     mm2, MMWORD [MMBLOCK(1,0,edx,SIZEOF_FLOAT_MULT_TYPE)]
	pfmul     mm3, MMWORD [MMBLOCK(3,0,edx,SIZEOF_FLOAT_MULT_TYPE)]

	punpcklwd mm5,mm5
	punpcklwd mm1,mm1
	psrad     mm5,(DWORD_BIT-WORD_BIT)
	psrad     mm1,(DWORD_BIT-WORD_BIT)
	pi2fd     mm5,mm5
	pi2fd     mm1,mm1

	pfmul     mm5, MMWORD [MMBLOCK(5,0,edx,SIZEOF_FLOAT_MULT_TYPE)]
	pfmul     mm1, MMWORD [MMBLOCK(7,0,edx,SIZEOF_FLOAT_MULT_TYPE)]

	movq	mm4,mm2
	movq	mm0,mm5
	pfadd	mm2,mm1			; mm2=z11
	pfadd	mm5,mm3			; mm5=z13
	pfsub	mm4,mm1			; mm4=z12
	pfsub	mm0,mm3			; mm0=z10

	movq	mm1,mm2
	pfsub	mm2,mm5
	pfadd	mm1,mm5			; mm1=tmp7

	pfmul	mm2,[GOTOFF(ebx,PD_1_414)]	; mm2=tmp11

	movq	mm3,mm0
	pfadd	mm0,mm4
	pfmul	mm0,[GOTOFF(ebx,PD_1_847)]	; mm0=z5
	pfmul	mm3,[GOTOFF(ebx,PD_2_613)]	; mm3=(z10 * 2.613125930)
	pfmul	mm4,[GOTOFF(ebx,PD_1_082)]	; mm4=(z12 * 1.082392200)
	pfsubr	mm3,mm0			; mm3=tmp12
	pfsub	mm4,mm0			; mm4=tmp10

	; -- Final output stage

	pfsub	mm3,mm1			; mm3=tmp6
	movq	mm5,mm6
	movq	mm0,mm7
	pfadd	mm6,mm1			; mm6=data0=(00 01)
	pfadd	mm7,mm3			; mm7=data1=(10 11)
	pfsub	mm5,mm1			; mm5=data7=(70 71)
	pfsub	mm0,mm3			; mm0=data6=(60 61)
	pfsub	mm2,mm3			; mm2=tmp5

	movq      mm1,mm6		; transpose coefficients
	punpckldq mm6,mm7		; mm6=(00 10)
	punpckhdq mm1,mm7		; mm1=(01 11)
	movq      mm3,mm0		; transpose coefficients
	punpckldq mm0,mm5		; mm0=(60 70)
	punpckhdq mm3,mm5		; mm3=(61 71)

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

	movq	mm7, MMWORD [wk(0)]	; mm7=tmp2
	movq	mm5, MMWORD [wk(1)]	; mm5=tmp3

	pfadd	mm4,mm2			; mm4=tmp4
	movq	mm6,mm7
	movq	mm1,mm5
	pfadd	mm7,mm2			; mm7=data2=(20 21)
	pfadd	mm5,mm4			; mm5=data4=(40 41)
	pfsub	mm6,mm2			; mm6=data5=(50 51)
	pfsub	mm1,mm4			; mm1=data3=(30 31)

	movq      mm0,mm7		; transpose coefficients
	punpckldq mm7,mm1		; mm7=(20 30)
	punpckhdq mm0,mm1		; mm0=(21 31)
	movq      mm3,mm5		; transpose coefficients
	punpckldq mm5,mm6		; mm5=(40 50)
	punpckhdq mm3,mm6		; mm3=(41 51)

	movq	MMWORD [MMBLOCK(0,1,edi,SIZEOF_FAST_FLOAT)], mm7
	movq	MMWORD [MMBLOCK(1,1,edi,SIZEOF_FAST_FLOAT)], mm0
	movq	MMWORD [MMBLOCK(0,2,edi,SIZEOF_FAST_FLOAT)], mm5
	movq	MMWORD [MMBLOCK(1,2,edi,SIZEOF_FAST_FLOAT)], mm3

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

	; -- Prefetch the next coefficient block

	prefetch [esi + (DCTSIZE2-8)*SIZEOF_JCOEF + 0*32]
	prefetch [esi + (DCTSIZE2-8)*SIZEOF_JCOEF + 1*32]
	prefetch [esi + (DCTSIZE2-8)*SIZEOF_JCOEF + 2*32]
	prefetch [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/2				; ctr
	alignx	16,7
.rowloop:

	; -- Even part

	movq	mm0, MMWORD [MMBLOCK(0,0,esi,SIZEOF_FAST_FLOAT)]
	movq	mm1, MMWORD [MMBLOCK(2,0,esi,SIZEOF_FAST_FLOAT)]
	movq	mm2, MMWORD [MMBLOCK(4,0,esi,SIZEOF_FAST_FLOAT)]
	movq	mm3, MMWORD [MMBLOCK(6,0,esi,SIZEOF_FAST_FLOAT)]

	movq	mm4,mm0
	movq	mm5,mm1
	pfsub	mm0,mm2			; mm0=tmp11
	pfsub	mm1,mm3
	pfadd	mm4,mm2			; mm4=tmp10
	pfadd	mm5,mm3			; mm5=tmp13

	pfmul	mm1,[GOTOFF(ebx,PD_1_414)]
	pfsub	mm1,mm5			; mm1=tmp12

	movq	mm6,mm4
	movq	mm7,mm0
	pfsub	mm4,mm5			; mm4=tmp3
	pfsub	mm0,mm1			; mm0=tmp2
	pfadd	mm6,mm5			; mm6=tmp0
	pfadd	mm7,mm1			; mm7=tmp1

	movq	MMWORD [wk(1)], mm4	; tmp3
	movq	MMWORD [wk(0)], mm0	; tmp2

	; -- Odd part

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

	movq	mm4,mm2
	movq	mm0,mm5
	pfadd	mm2,mm1			; mm2=z11
	pfadd	mm5,mm3			; mm5=z13
	pfsub	mm4,mm1			; mm4=z12
	pfsub	mm0,mm3			; mm0=z10

	movq	mm1,mm2
	pfsub	mm2,mm5
	pfadd	mm1,mm5			; mm1=tmp7

	pfmul	mm2,[GOTOFF(ebx,PD_1_414)]	; mm2=tmp11

	movq	mm3,mm0
	pfadd	mm0,mm4
	pfmul	mm0,[GOTOFF(ebx,PD_1_847)]	; mm0=z5
	pfmul	mm3,[GOTOFF(ebx,PD_2_613)]	; mm3=(z10 * 2.613125930)
	pfmul	mm4,[GOTOFF(ebx,PD_1_082)]	; mm4=(z12 * 1.082392200)
	pfsubr	mm3,mm0			; mm3=tmp12
	pfsub	mm4,mm0			; mm4=tmp10

	; -- Final output stage

	pfsub	mm3,mm1			; mm3=tmp6
	movq	mm5,mm6
	movq	mm0,mm7
	pfadd	mm6,mm1			; mm6=data0=(00 10)
	pfadd	mm7,mm3			; mm7=data1=(01 11)
	pfsub	mm5,mm1			; mm5=data7=(07 17)
	pfsub	mm0,mm3			; mm0=data6=(06 16)
	pfsub	mm2,mm3			; mm2=tmp5

	movq	mm1,[GOTOFF(ebx,PD_RNDINT_MAGIC)]	; mm1=[PD_RNDINT_MAGIC]
	pcmpeqd	mm3,mm3
	psrld	mm3,WORD_BIT		; mm3={0xFFFF 0x0000 0xFFFF 0x0000}

	pfadd	mm6,mm1			; mm6=roundint(data0/8)=(00 ** 10 **)
	pfadd	mm7,mm1			; mm7=roundint(data1/8)=(01 ** 11 **)
	pfadd	mm0,mm1			; mm0=roundint(data6/8)=(06 ** 16 **)
	pfadd	mm5,mm1			; mm5=roundint(data7/8)=(07 ** 17 **)

	pand	mm6,mm3			; mm6=(00 -- 10 --)
	pslld	mm7,WORD_BIT		; mm7=(-- 01 -- 11)
	pand	mm0,mm3			; mm0=(06 -- 16 --)
	pslld	mm5,WORD_BIT		; mm5=(-- 07 -- 17)
	por	mm6,mm7			; mm6=(00 01 10 11)
	por	mm0,mm5			; mm0=(06 07 16 17)

	movq	mm1, MMWORD [wk(0)]	; mm1=tmp2
	movq	mm3, MMWORD [wk(1)]	; mm3=tmp3

	pfadd	mm4,mm2			; mm4=tmp4
	movq	mm7,mm1
	movq	mm5,mm3
	pfadd	mm1,mm2			; mm1=data2=(02 12)
	pfadd	mm3,mm4			; mm3=data4=(04 14)
	pfsub	mm7,mm2			; mm7=data5=(05 15)
	pfsub	mm5,mm4			; mm5=data3=(03 13)

	movq	mm2,[GOTOFF(ebx,PD_RNDINT_MAGIC)]	; mm2=[PD_RNDINT_MAGIC]
	pcmpeqd	mm4,mm4
	psrld	mm4,WORD_BIT		; mm4={0xFFFF 0x0000 0xFFFF 0x0000}

	pfadd	mm3,mm2			; mm3=roundint(data4/8)=(04 ** 14 **)
	pfadd	mm7,mm2			; mm7=roundint(data5/8)=(05 ** 15 **)
	pfadd	mm1,mm2			; mm1=roundint(data2/8)=(02 ** 12 **)
	pfadd	mm5,mm2			; mm5=roundint(data3/8)=(03 ** 13 **)

	pand	mm3,mm4			; mm3=(04 -- 14 --)
	pslld	mm7,WORD_BIT		; mm7=(-- 05 -- 15)
	pand	mm1,mm4			; mm1=(02 -- 12 --)
	pslld	mm5,WORD_BIT		; mm5=(-- 03 -- 13)
	por	mm3,mm7			; mm3=(04 05 14 15)
	por	mm1,mm5			; mm1=(02 03 12 13)

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

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

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

	movq      mm7,mm6		; transpose coefficients(phase 3)
	punpckldq mm6,mm4		; mm6=(00 01 02 03 04 05 06 07)
	punpckhdq mm7,mm4		; mm7=(10 11 12 13 14 15 16 17)

	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], mm6
	movq	MMWORD [ebx+eax*SIZEOF_JSAMPLE], mm7

	poppic	ebx			; restore GOT address

	add	esi, byte 2*SIZEOF_FAST_FLOAT	; wsptr
	add	edi, byte 2*SIZEOF_JSAMPROW
	dec	ecx				; ctr
	jnz	near .rowloop

	femms		; empty MMX/3DNow! 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
