;
; jfsseflt.asm - floating-point FDCT (64-bit SSE)
;
; Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
; Copyright 2009 D. R. Commander
;
; 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 forward DCT
; (Discrete Cosine Transform). The following code is based directly on
; the IJG's original jfdctflt.c; see the jfdctflt.c for more details.
;
; [TAB8]

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

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

%macro	unpcklps2 2	; %1=(0 1 2 3) / %2=(4 5 6 7) => %1=(0 1 4 5)
	shufps	%1,%2,0x44
%endmacro

%macro	unpckhps2 2	; %1=(0 1 2 3) / %2=(4 5 6 7) => %1=(2 3 6 7)
	shufps	%1,%2,0xEE
%endmacro

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

	alignz	16
	global	EXTN(jconst_fdct_float_sse)

EXTN(jconst_fdct_float_sse):

PD_0_382	times 4 dd  0.382683432365089771728460
PD_0_707	times 4 dd  0.707106781186547524400844
PD_0_541	times 4 dd  0.541196100146196984399723
PD_1_306	times 4 dd  1.306562964876376527856643

	alignz	16

; --------------------------------------------------------------------------
	SECTION	SEG_TEXT
	BITS	64
;
; Perform the forward DCT on one block of samples.
;
; GLOBAL(void)
; jsimd_fdct_float_sse (FAST_FLOAT * data)
;

; r10 = FAST_FLOAT * data

%define wk(i)		rbp-(WK_NUM-(i))*SIZEOF_XMMWORD	; xmmword wk[WK_NUM]
%define WK_NUM		2

	align	16
	global	EXTN(jsimd_fdct_float_sse)

EXTN(jsimd_fdct_float_sse):
	push	rbp
	mov	rax,rsp				; rax = original rbp
	sub	rsp, byte 4
	and	rsp, byte (-SIZEOF_XMMWORD)	; align to 128 bits
	mov	[rsp],rax
	mov	rbp,rsp				; rbp = aligned rbp
	lea	rsp, [wk(0)]
	collect_args

	; ---- Pass 1: process rows.

	mov	rdx, r10	; (FAST_FLOAT *)
	mov	rcx, DCTSIZE/4
.rowloop:

	movaps	xmm0, XMMWORD [XMMBLOCK(2,0,rdx,SIZEOF_FAST_FLOAT)]
	movaps	xmm1, XMMWORD [XMMBLOCK(3,0,rdx,SIZEOF_FAST_FLOAT)]
	movaps	xmm2, XMMWORD [XMMBLOCK(2,1,rdx,SIZEOF_FAST_FLOAT)]
	movaps	xmm3, XMMWORD [XMMBLOCK(3,1,rdx,SIZEOF_FAST_FLOAT)]

	; xmm0=(20 21 22 23), xmm2=(24 25 26 27)
	; xmm1=(30 31 32 33), xmm3=(34 35 36 37)

	movaps   xmm4,xmm0		; transpose coefficients(phase 1)
	unpcklps xmm0,xmm1		; xmm0=(20 30 21 31)
	unpckhps xmm4,xmm1		; xmm4=(22 32 23 33)
	movaps   xmm5,xmm2		; transpose coefficients(phase 1)
	unpcklps xmm2,xmm3		; xmm2=(24 34 25 35)
	unpckhps xmm5,xmm3		; xmm5=(26 36 27 37)

	movaps	xmm6, XMMWORD [XMMBLOCK(0,0,rdx,SIZEOF_FAST_FLOAT)]
	movaps	xmm7, XMMWORD [XMMBLOCK(1,0,rdx,SIZEOF_FAST_FLOAT)]
	movaps	xmm1, XMMWORD [XMMBLOCK(0,1,rdx,SIZEOF_FAST_FLOAT)]
	movaps	xmm3, XMMWORD [XMMBLOCK(1,1,rdx,SIZEOF_FAST_FLOAT)]

	; xmm6=(00 01 02 03), xmm1=(04 05 06 07)
	; xmm7=(10 11 12 13), xmm3=(14 15 16 17)

	movaps	XMMWORD [wk(0)], xmm4	; wk(0)=(22 32 23 33)
	movaps	XMMWORD [wk(1)], xmm2	; wk(1)=(24 34 25 35)

	movaps   xmm4,xmm6		; transpose coefficients(phase 1)
	unpcklps xmm6,xmm7		; xmm6=(00 10 01 11)
	unpckhps xmm4,xmm7		; xmm4=(02 12 03 13)
	movaps   xmm2,xmm1		; transpose coefficients(phase 1)
	unpcklps xmm1,xmm3		; xmm1=(04 14 05 15)
	unpckhps xmm2,xmm3		; xmm2=(06 16 07 17)

	movaps    xmm7,xmm6		; transpose coefficients(phase 2)
	unpcklps2 xmm6,xmm0		; xmm6=(00 10 20 30)=data0
	unpckhps2 xmm7,xmm0		; xmm7=(01 11 21 31)=data1
	movaps    xmm3,xmm2		; transpose coefficients(phase 2)
	unpcklps2 xmm2,xmm5		; xmm2=(06 16 26 36)=data6
	unpckhps2 xmm3,xmm5		; xmm3=(07 17 27 37)=data7

	movaps	xmm0,xmm7
	movaps	xmm5,xmm6
	subps	xmm7,xmm2		; xmm7=data1-data6=tmp6
	subps	xmm6,xmm3		; xmm6=data0-data7=tmp7
	addps	xmm0,xmm2		; xmm0=data1+data6=tmp1
	addps	xmm5,xmm3		; xmm5=data0+data7=tmp0

	movaps	xmm2, XMMWORD [wk(0)]	; xmm2=(22 32 23 33)
	movaps	xmm3, XMMWORD [wk(1)]	; xmm3=(24 34 25 35)
	movaps	XMMWORD [wk(0)], xmm7	; wk(0)=tmp6
	movaps	XMMWORD [wk(1)], xmm6	; wk(1)=tmp7

	movaps    xmm7,xmm4		; transpose coefficients(phase 2)
	unpcklps2 xmm4,xmm2		; xmm4=(02 12 22 32)=data2
	unpckhps2 xmm7,xmm2		; xmm7=(03 13 23 33)=data3
	movaps    xmm6,xmm1		; transpose coefficients(phase 2)
	unpcklps2 xmm1,xmm3		; xmm1=(04 14 24 34)=data4
	unpckhps2 xmm6,xmm3		; xmm6=(05 15 25 35)=data5

	movaps	xmm2,xmm7
	movaps	xmm3,xmm4
	addps	xmm7,xmm1		; xmm7=data3+data4=tmp3
	addps	xmm4,xmm6		; xmm4=data2+data5=tmp2
	subps	xmm2,xmm1		; xmm2=data3-data4=tmp4
	subps	xmm3,xmm6		; xmm3=data2-data5=tmp5

	; -- Even part

	movaps	xmm1,xmm5
	movaps	xmm6,xmm0
	subps	xmm5,xmm7		; xmm5=tmp13
	subps	xmm0,xmm4		; xmm0=tmp12
	addps	xmm1,xmm7		; xmm1=tmp10
	addps	xmm6,xmm4		; xmm6=tmp11

	addps	xmm0,xmm5
	mulps	xmm0,[PD_0_707] ; xmm0=z1

	movaps	xmm7,xmm1
	movaps	xmm4,xmm5
	subps	xmm1,xmm6		; xmm1=data4
	subps	xmm5,xmm0		; xmm5=data6
	addps	xmm7,xmm6		; xmm7=data0
	addps	xmm4,xmm0		; xmm4=data2

	movaps	XMMWORD [XMMBLOCK(0,1,rdx,SIZEOF_FAST_FLOAT)], xmm1
	movaps	XMMWORD [XMMBLOCK(2,1,rdx,SIZEOF_FAST_FLOAT)], xmm5
	movaps	XMMWORD [XMMBLOCK(0,0,rdx,SIZEOF_FAST_FLOAT)], xmm7
	movaps	XMMWORD [XMMBLOCK(2,0,rdx,SIZEOF_FAST_FLOAT)], xmm4

	; -- Odd part

	movaps	xmm6, XMMWORD [wk(0)]	; xmm6=tmp6
	movaps	xmm0, XMMWORD [wk(1)]	; xmm0=tmp7

	addps	xmm2,xmm3		; xmm2=tmp10
	addps	xmm3,xmm6		; xmm3=tmp11
	addps	xmm6,xmm0		; xmm6=tmp12, xmm0=tmp7

	mulps	xmm3,[PD_0_707] ; xmm3=z3

	movaps	xmm1,xmm2		; xmm1=tmp10
	subps	xmm2,xmm6
	mulps	xmm2,[PD_0_382] ; xmm2=z5
	mulps	xmm1,[PD_0_541] ; xmm1=MULTIPLY(tmp10,FIX_0_541196)
	mulps	xmm6,[PD_1_306] ; xmm6=MULTIPLY(tmp12,FIX_1_306562)
	addps	xmm1,xmm2		; xmm1=z2
	addps	xmm6,xmm2		; xmm6=z4

	movaps	xmm5,xmm0
	subps	xmm0,xmm3		; xmm0=z13
	addps	xmm5,xmm3		; xmm5=z11

	movaps	xmm7,xmm0
	movaps	xmm4,xmm5
	subps	xmm0,xmm1		; xmm0=data3
	subps	xmm5,xmm6		; xmm5=data7
	addps	xmm7,xmm1		; xmm7=data5
	addps	xmm4,xmm6		; xmm4=data1

	movaps	XMMWORD [XMMBLOCK(3,0,rdx,SIZEOF_FAST_FLOAT)], xmm0
	movaps	XMMWORD [XMMBLOCK(3,1,rdx,SIZEOF_FAST_FLOAT)], xmm5
	movaps	XMMWORD [XMMBLOCK(1,1,rdx,SIZEOF_FAST_FLOAT)], xmm7
	movaps	XMMWORD [XMMBLOCK(1,0,rdx,SIZEOF_FAST_FLOAT)], xmm4

	add	rdx, 4*DCTSIZE*SIZEOF_FAST_FLOAT
	dec	rcx
	jnz	near .rowloop

	; ---- Pass 2: process columns.

	mov	rdx, r10	; (FAST_FLOAT *)
	mov	rcx, DCTSIZE/4
.columnloop:

	movaps	xmm0, XMMWORD [XMMBLOCK(2,0,rdx,SIZEOF_FAST_FLOAT)]
	movaps	xmm1, XMMWORD [XMMBLOCK(3,0,rdx,SIZEOF_FAST_FLOAT)]
	movaps	xmm2, XMMWORD [XMMBLOCK(6,0,rdx,SIZEOF_FAST_FLOAT)]
	movaps	xmm3, XMMWORD [XMMBLOCK(7,0,rdx,SIZEOF_FAST_FLOAT)]

	; xmm0=(02 12 22 32), xmm2=(42 52 62 72)
	; xmm1=(03 13 23 33), xmm3=(43 53 63 73)

	movaps   xmm4,xmm0		; transpose coefficients(phase 1)
	unpcklps xmm0,xmm1		; xmm0=(02 03 12 13)
	unpckhps xmm4,xmm1		; xmm4=(22 23 32 33)
	movaps   xmm5,xmm2		; transpose coefficients(phase 1)
	unpcklps xmm2,xmm3		; xmm2=(42 43 52 53)
	unpckhps xmm5,xmm3		; xmm5=(62 63 72 73)

	movaps	xmm6, XMMWORD [XMMBLOCK(0,0,rdx,SIZEOF_FAST_FLOAT)]
	movaps	xmm7, XMMWORD [XMMBLOCK(1,0,rdx,SIZEOF_FAST_FLOAT)]
	movaps	xmm1, XMMWORD [XMMBLOCK(4,0,rdx,SIZEOF_FAST_FLOAT)]
	movaps	xmm3, XMMWORD [XMMBLOCK(5,0,rdx,SIZEOF_FAST_FLOAT)]

	; xmm6=(00 10 20 30), xmm1=(40 50 60 70)
	; xmm7=(01 11 21 31), xmm3=(41 51 61 71)

	movaps	XMMWORD [wk(0)], xmm4	; wk(0)=(22 23 32 33)
	movaps	XMMWORD [wk(1)], xmm2	; wk(1)=(42 43 52 53)

	movaps   xmm4,xmm6		; transpose coefficients(phase 1)
	unpcklps xmm6,xmm7		; xmm6=(00 01 10 11)
	unpckhps xmm4,xmm7		; xmm4=(20 21 30 31)
	movaps   xmm2,xmm1		; transpose coefficients(phase 1)
	unpcklps xmm1,xmm3		; xmm1=(40 41 50 51)
	unpckhps xmm2,xmm3		; xmm2=(60 61 70 71)

	movaps    xmm7,xmm6		; transpose coefficients(phase 2)
	unpcklps2 xmm6,xmm0		; xmm6=(00 01 02 03)=data0
	unpckhps2 xmm7,xmm0		; xmm7=(10 11 12 13)=data1
	movaps    xmm3,xmm2		; transpose coefficients(phase 2)
	unpcklps2 xmm2,xmm5		; xmm2=(60 61 62 63)=data6
	unpckhps2 xmm3,xmm5		; xmm3=(70 71 72 73)=data7

	movaps	xmm0,xmm7
	movaps	xmm5,xmm6
	subps	xmm7,xmm2		; xmm7=data1-data6=tmp6
	subps	xmm6,xmm3		; xmm6=data0-data7=tmp7
	addps	xmm0,xmm2		; xmm0=data1+data6=tmp1
	addps	xmm5,xmm3		; xmm5=data0+data7=tmp0

	movaps	xmm2, XMMWORD [wk(0)]	; xmm2=(22 23 32 33)
	movaps	xmm3, XMMWORD [wk(1)]	; xmm3=(42 43 52 53)
	movaps	XMMWORD [wk(0)], xmm7	; wk(0)=tmp6
	movaps	XMMWORD [wk(1)], xmm6	; wk(1)=tmp7

	movaps    xmm7,xmm4		; transpose coefficients(phase 2)
	unpcklps2 xmm4,xmm2		; xmm4=(20 21 22 23)=data2
	unpckhps2 xmm7,xmm2		; xmm7=(30 31 32 33)=data3
	movaps    xmm6,xmm1		; transpose coefficients(phase 2)
	unpcklps2 xmm1,xmm3		; xmm1=(40 41 42 43)=data4
	unpckhps2 xmm6,xmm3		; xmm6=(50 51 52 53)=data5

	movaps	xmm2,xmm7
	movaps	xmm3,xmm4
	addps	xmm7,xmm1		; xmm7=data3+data4=tmp3
	addps	xmm4,xmm6		; xmm4=data2+data5=tmp2
	subps	xmm2,xmm1		; xmm2=data3-data4=tmp4
	subps	xmm3,xmm6		; xmm3=data2-data5=tmp5

	; -- Even part

	movaps	xmm1,xmm5
	movaps	xmm6,xmm0
	subps	xmm5,xmm7		; xmm5=tmp13
	subps	xmm0,xmm4		; xmm0=tmp12
	addps	xmm1,xmm7		; xmm1=tmp10
	addps	xmm6,xmm4		; xmm6=tmp11

	addps	xmm0,xmm5
	mulps	xmm0,[PD_0_707] ; xmm0=z1

	movaps	xmm7,xmm1
	movaps	xmm4,xmm5
	subps	xmm1,xmm6		; xmm1=data4
	subps	xmm5,xmm0		; xmm5=data6
	addps	xmm7,xmm6		; xmm7=data0
	addps	xmm4,xmm0		; xmm4=data2

	movaps	XMMWORD [XMMBLOCK(4,0,rdx,SIZEOF_FAST_FLOAT)], xmm1
	movaps	XMMWORD [XMMBLOCK(6,0,rdx,SIZEOF_FAST_FLOAT)], xmm5
	movaps	XMMWORD [XMMBLOCK(0,0,rdx,SIZEOF_FAST_FLOAT)], xmm7
	movaps	XMMWORD [XMMBLOCK(2,0,rdx,SIZEOF_FAST_FLOAT)], xmm4

	; -- Odd part

	movaps	xmm6, XMMWORD [wk(0)]	; xmm6=tmp6
	movaps	xmm0, XMMWORD [wk(1)]	; xmm0=tmp7

	addps	xmm2,xmm3		; xmm2=tmp10
	addps	xmm3,xmm6		; xmm3=tmp11
	addps	xmm6,xmm0		; xmm6=tmp12, xmm0=tmp7

	mulps	xmm3,[PD_0_707] ; xmm3=z3

	movaps	xmm1,xmm2		; xmm1=tmp10
	subps	xmm2,xmm6
	mulps	xmm2,[PD_0_382] ; xmm2=z5
	mulps	xmm1,[PD_0_541] ; xmm1=MULTIPLY(tmp10,FIX_0_541196)
	mulps	xmm6,[PD_1_306] ; xmm6=MULTIPLY(tmp12,FIX_1_306562)
	addps	xmm1,xmm2		; xmm1=z2
	addps	xmm6,xmm2		; xmm6=z4

	movaps	xmm5,xmm0
	subps	xmm0,xmm3		; xmm0=z13
	addps	xmm5,xmm3		; xmm5=z11

	movaps	xmm7,xmm0
	movaps	xmm4,xmm5
	subps	xmm0,xmm1		; xmm0=data3
	subps	xmm5,xmm6		; xmm5=data7
	addps	xmm7,xmm1		; xmm7=data5
	addps	xmm4,xmm6		; xmm4=data1

	movaps	XMMWORD [XMMBLOCK(3,0,rdx,SIZEOF_FAST_FLOAT)], xmm0
	movaps	XMMWORD [XMMBLOCK(7,0,rdx,SIZEOF_FAST_FLOAT)], xmm5
	movaps	XMMWORD [XMMBLOCK(5,0,rdx,SIZEOF_FAST_FLOAT)], xmm7
	movaps	XMMWORD [XMMBLOCK(1,0,rdx,SIZEOF_FAST_FLOAT)], xmm4

	add	rdx, byte 4*SIZEOF_FAST_FLOAT
	dec	rcx
	jnz	near .columnloop

	uncollect_args
	mov	rsp,rbp		; rsp <- aligned rbp
	pop	rsp		; rsp <- original rbp
	pop	rbp
	ret
