;
; 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)

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)

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
