;
; jfmmxfst.asm - fast 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 fast, not so accurate integer implementation of
; the forward DCT (Discrete Cosine Transform). The following code is
; based directly on the IJG's original jfdctfst.c; see the jfdctfst.c
; for more details.
;
; [TAB8]

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

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

%define CONST_BITS	8	; 14 is also OK.

%if CONST_BITS == 8
F_0_382	equ	 98		; FIX(0.382683433)
F_0_541	equ	139		; FIX(0.541196100)
F_0_707	equ	181		; FIX(0.707106781)
F_1_306	equ	334		; FIX(1.306562965)
%else
; NASM cannot do compile-time arithmetic on floating-point constants.
%define DESCALE(x,n)  (((x)+(1<<((n)-1)))>>(n))
F_0_382	equ	DESCALE( 410903207,30-CONST_BITS)	; FIX(0.382683433)
F_0_541	equ	DESCALE( 581104887,30-CONST_BITS)	; FIX(0.541196100)
F_0_707	equ	DESCALE( 759250124,30-CONST_BITS)	; FIX(0.707106781)
F_1_306	equ	DESCALE(1402911301,30-CONST_BITS)	; FIX(1.306562965)
%endif

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

; PRE_MULTIPLY_SCALE_BITS <= 2 (to avoid overflow)
; CONST_BITS + CONST_SHIFT + PRE_MULTIPLY_SCALE_BITS == 16 (for pmulhw)

%define PRE_MULTIPLY_SCALE_BITS   2
%define CONST_SHIFT     (16 - PRE_MULTIPLY_SCALE_BITS - CONST_BITS)

	alignz	16
	global	EXTN(jconst_fdct_ifast_mmx)

EXTN(jconst_fdct_ifast_mmx):

PW_F0707	times 4 dw  F_0_707 << CONST_SHIFT
PW_F0382	times 4 dw  F_0_382 << CONST_SHIFT
PW_F0541	times 4 dw  F_0_541 << CONST_SHIFT
PW_F1306	times 4 dw  F_1_306 << CONST_SHIFT

	alignz	16

; --------------------------------------------------------------------------
	SECTION	SEG_TEXT
	BITS	32
;
; Perform the forward DCT on one block of samples.
;
; GLOBAL(void)
; jsimd_fdct_ifast_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_ifast_mmx)

EXTN(jsimd_fdct_ifast_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
	psubw	mm5,mm7			; mm5=tmp13
	psubw	mm0,mm4			; mm0=tmp12
	paddw	mm1,mm7			; mm1=tmp10
	paddw	mm6,mm4			; mm6=tmp11

	paddw	mm0,mm5
	psllw	mm0,PRE_MULTIPLY_SCALE_BITS
	pmulhw	mm0,[GOTOFF(ebx,PW_F0707)] ; mm0=z1

	movq	mm7,mm1
	movq	mm4,mm5
	psubw	mm1,mm6			; mm1=data4
	psubw	mm5,mm0			; mm5=data6
	paddw	mm7,mm6			; mm7=data0
	paddw	mm4,mm0			; mm4=data2

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

	; -- Odd part

	movq	mm6, MMWORD [wk(0)]	; mm6=tmp6
	movq	mm0, MMWORD [wk(1)]	; mm0=tmp7

	paddw	mm2,mm3			; mm2=tmp10
	paddw	mm3,mm6			; mm3=tmp11
	paddw	mm6,mm0			; mm6=tmp12, mm0=tmp7

	psllw	mm2,PRE_MULTIPLY_SCALE_BITS
	psllw	mm6,PRE_MULTIPLY_SCALE_BITS

	psllw	mm3,PRE_MULTIPLY_SCALE_BITS
	pmulhw	mm3,[GOTOFF(ebx,PW_F0707)] ; mm3=z3

	movq	mm1,mm2			; mm1=tmp10
	psubw	mm2,mm6
	pmulhw	mm2,[GOTOFF(ebx,PW_F0382)] ; mm2=z5
	pmulhw	mm1,[GOTOFF(ebx,PW_F0541)] ; mm1=MULTIPLY(tmp10,FIX_0_54119610)
	pmulhw	mm6,[GOTOFF(ebx,PW_F1306)] ; mm6=MULTIPLY(tmp12,FIX_1_30656296)
	paddw	mm1,mm2			; mm1=z2
	paddw	mm6,mm2			; mm6=z4

	movq	mm5,mm0
	psubw	mm0,mm3			; mm0=z13
	paddw	mm5,mm3			; mm5=z11

	movq	mm7,mm0
	movq	mm4,mm5
	psubw	mm0,mm1			; mm0=data3
	psubw	mm5,mm6			; mm5=data7
	paddw	mm7,mm1			; mm7=data5
	paddw	mm4,mm6			; mm4=data1

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

	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
	psubw	mm5,mm7			; mm5=tmp13
	psubw	mm0,mm4			; mm0=tmp12
	paddw	mm1,mm7			; mm1=tmp10
	paddw	mm6,mm4			; mm6=tmp11

	paddw	mm0,mm5
	psllw	mm0,PRE_MULTIPLY_SCALE_BITS
	pmulhw	mm0,[GOTOFF(ebx,PW_F0707)] ; mm0=z1

	movq	mm7,mm1
	movq	mm4,mm5
	psubw	mm1,mm6			; mm1=data4
	psubw	mm5,mm0			; mm5=data6
	paddw	mm7,mm6			; mm7=data0
	paddw	mm4,mm0			; mm4=data2

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

	; -- Odd part

	movq	mm6, MMWORD [wk(0)]	; mm6=tmp6
	movq	mm0, MMWORD [wk(1)]	; mm0=tmp7

	paddw	mm2,mm3			; mm2=tmp10
	paddw	mm3,mm6			; mm3=tmp11
	paddw	mm6,mm0			; mm6=tmp12, mm0=tmp7

	psllw	mm2,PRE_MULTIPLY_SCALE_BITS
	psllw	mm6,PRE_MULTIPLY_SCALE_BITS

	psllw	mm3,PRE_MULTIPLY_SCALE_BITS
	pmulhw	mm3,[GOTOFF(ebx,PW_F0707)] ; mm3=z3

	movq	mm1,mm2			; mm1=tmp10
	psubw	mm2,mm6
	pmulhw	mm2,[GOTOFF(ebx,PW_F0382)] ; mm2=z5
	pmulhw	mm1,[GOTOFF(ebx,PW_F0541)] ; mm1=MULTIPLY(tmp10,FIX_0_54119610)
	pmulhw	mm6,[GOTOFF(ebx,PW_F1306)] ; mm6=MULTIPLY(tmp12,FIX_1_30656296)
	paddw	mm1,mm2			; mm1=z2
	paddw	mm6,mm2			; mm6=z4

	movq	mm5,mm0
	psubw	mm0,mm3			; mm0=z13
	paddw	mm5,mm3			; mm5=z11

	movq	mm7,mm0
	movq	mm4,mm5
	psubw	mm0,mm1			; mm0=data3
	psubw	mm5,mm6			; mm5=data7
	paddw	mm7,mm1			; mm7=data5
	paddw	mm4,mm6			; mm4=data1

	movq	MMWORD [MMBLOCK(3,0,edx,SIZEOF_DCTELEM)], mm0
	movq	MMWORD [MMBLOCK(7,0,edx,SIZEOF_DCTELEM)], mm5
	movq	MMWORD [MMBLOCK(5,0,edx,SIZEOF_DCTELEM)], mm7
	movq	MMWORD [MMBLOCK(1,0,edx,SIZEOF_DCTELEM)], mm4

	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
