;
; jfss2fst-64.asm - fast integer FDCT (64-bit SSE2)
;
; 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 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_sse2) PRIVATE

EXTN(jconst_fdct_ifast_sse2):

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

	alignz	16

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

; r10 = DCTELEM * data

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

	align	16
	global	EXTN(jsimd_fdct_ifast_sse2) PRIVATE

EXTN(jsimd_fdct_ifast_sse2):
	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	; (DCTELEM *)

	movdqa	xmm0, XMMWORD [XMMBLOCK(0,0,rdx,SIZEOF_DCTELEM)]
	movdqa	xmm1, XMMWORD [XMMBLOCK(1,0,rdx,SIZEOF_DCTELEM)]
	movdqa	xmm2, XMMWORD [XMMBLOCK(2,0,rdx,SIZEOF_DCTELEM)]
	movdqa	xmm3, XMMWORD [XMMBLOCK(3,0,rdx,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,rdx,SIZEOF_DCTELEM)]
	movdqa	xmm7, XMMWORD [XMMBLOCK(5,0,rdx,SIZEOF_DCTELEM)]
	movdqa	xmm1, XMMWORD [XMMBLOCK(6,0,rdx,SIZEOF_DCTELEM)]
	movdqa	xmm3, XMMWORD [XMMBLOCK(7,0,rdx,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(0)], xmm7	; wk(0)=(42 52 62 72 43 53 63 73)
	movdqa	XMMWORD [wk(1)], xmm2	; wk(1)=(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(0)]	; xmm2=(42 52 62 72 43 53 63 73)
	movdqa	xmm5, XMMWORD [wk(1)]	; 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
	psubw	xmm3,xmm1		; xmm3=tmp13
	psubw	xmm6,xmm7		; xmm6=tmp12
	paddw	xmm4,xmm1		; xmm4=tmp10
	paddw	xmm0,xmm7		; xmm0=tmp11

	paddw	xmm6,xmm3
	psllw	xmm6,PRE_MULTIPLY_SCALE_BITS
	pmulhw	xmm6,[rel PW_F0707] ; xmm6=z1

	movdqa	xmm1,xmm4
	movdqa	xmm7,xmm3
	psubw	xmm4,xmm0		; xmm4=data4
	psubw	xmm3,xmm6		; xmm3=data6
	paddw	xmm1,xmm0		; xmm1=data0
	paddw	xmm7,xmm6		; xmm7=data2

	movdqa	xmm0, XMMWORD [wk(0)]	; xmm0=tmp6
	movdqa	xmm6, XMMWORD [wk(1)]	; xmm6=tmp7
	movdqa	XMMWORD [wk(0)], xmm4	; wk(0)=data4
	movdqa	XMMWORD [wk(1)], xmm3	; wk(1)=data6

	; -- Odd part

	paddw	xmm2,xmm5		; xmm2=tmp10
	paddw	xmm5,xmm0		; xmm5=tmp11
	paddw	xmm0,xmm6		; xmm0=tmp12, xmm6=tmp7

	psllw	xmm2,PRE_MULTIPLY_SCALE_BITS
	psllw	xmm0,PRE_MULTIPLY_SCALE_BITS

	psllw	xmm5,PRE_MULTIPLY_SCALE_BITS
	pmulhw	xmm5,[rel PW_F0707] ; xmm5=z3

	movdqa	xmm4,xmm2		; xmm4=tmp10
	psubw	xmm2,xmm0
	pmulhw	xmm2,[rel PW_F0382] ; xmm2=z5
	pmulhw	xmm4,[rel PW_F0541] ; xmm4=MULTIPLY(tmp10,FIX_0_541196)
	pmulhw	xmm0,[rel PW_F1306] ; xmm0=MULTIPLY(tmp12,FIX_1_306562)
	paddw	xmm4,xmm2		; xmm4=z2
	paddw	xmm0,xmm2		; xmm0=z4

	movdqa	xmm3,xmm6
	psubw	xmm6,xmm5		; xmm6=z13
	paddw	xmm3,xmm5		; xmm3=z11

	movdqa	xmm2,xmm6
	movdqa	xmm5,xmm3
	psubw	xmm6,xmm4		; xmm6=data3
	psubw	xmm3,xmm0		; xmm3=data7
	paddw	xmm2,xmm4		; xmm2=data5
	paddw	xmm5,xmm0		; xmm5=data1

	; ---- Pass 2: process columns.

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

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

	movdqa	xmm5, XMMWORD [wk(0)]	; xmm5=col4
	movdqa	xmm6, XMMWORD [wk(1)]	; xmm6=col6

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

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

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

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

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

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

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

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

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

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

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

	; -- Even part

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

	paddw	xmm5,xmm3
	psllw	xmm5,PRE_MULTIPLY_SCALE_BITS
	pmulhw	xmm5,[rel PW_F0707] ; xmm5=z1

	movdqa	xmm6,xmm4
	movdqa	xmm2,xmm3
	psubw	xmm4,xmm1		; xmm4=data4
	psubw	xmm3,xmm5		; xmm3=data6
	paddw	xmm6,xmm1		; xmm6=data0
	paddw	xmm2,xmm5		; xmm2=data2

	movdqa	XMMWORD [XMMBLOCK(4,0,rdx,SIZEOF_DCTELEM)], xmm4
	movdqa	XMMWORD [XMMBLOCK(6,0,rdx,SIZEOF_DCTELEM)], xmm3
	movdqa	XMMWORD [XMMBLOCK(0,0,rdx,SIZEOF_DCTELEM)], xmm6
	movdqa	XMMWORD [XMMBLOCK(2,0,rdx,SIZEOF_DCTELEM)], xmm2

	; -- Odd part

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

	paddw	xmm7,xmm0		; xmm7=tmp10
	paddw	xmm0,xmm1		; xmm0=tmp11
	paddw	xmm1,xmm5		; xmm1=tmp12, xmm5=tmp7

	psllw	xmm7,PRE_MULTIPLY_SCALE_BITS
	psllw	xmm1,PRE_MULTIPLY_SCALE_BITS

	psllw	xmm0,PRE_MULTIPLY_SCALE_BITS
	pmulhw	xmm0,[rel PW_F0707] ; xmm0=z3

	movdqa	xmm4,xmm7		; xmm4=tmp10
	psubw	xmm7,xmm1
	pmulhw	xmm7,[rel PW_F0382] ; xmm7=z5
	pmulhw	xmm4,[rel PW_F0541] ; xmm4=MULTIPLY(tmp10,FIX_0_541196)
	pmulhw	xmm1,[rel PW_F1306] ; xmm1=MULTIPLY(tmp12,FIX_1_306562)
	paddw	xmm4,xmm7		; xmm4=z2
	paddw	xmm1,xmm7		; xmm1=z4

	movdqa	xmm3,xmm5
	psubw	xmm5,xmm0		; xmm5=z13
	paddw	xmm3,xmm0		; xmm3=z11

	movdqa	xmm6,xmm5
	movdqa	xmm2,xmm3
	psubw	xmm5,xmm4		; xmm5=data3
	psubw	xmm3,xmm1		; xmm3=data7
	paddw	xmm6,xmm4		; xmm6=data5
	paddw	xmm2,xmm1		; xmm2=data1

	movdqa	XMMWORD [XMMBLOCK(3,0,rdx,SIZEOF_DCTELEM)], xmm5
	movdqa	XMMWORD [XMMBLOCK(7,0,rdx,SIZEOF_DCTELEM)], xmm3
	movdqa	XMMWORD [XMMBLOCK(5,0,rdx,SIZEOF_DCTELEM)], xmm6
	movdqa	XMMWORD [XMMBLOCK(1,0,rdx,SIZEOF_DCTELEM)], xmm2

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

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