;
; jfdctflt.asm - floating-point FDCT (64-bit SSE)
;
; Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
; Copyright (C) 2009, D. R. Commander.
;
; Based on the 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) PRIVATE

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

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,[rel 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,[rel PD_0_707] ; xmm3=z3

        movaps  xmm1,xmm2               ; xmm1=tmp10
        subps   xmm2,xmm6
        mulps   xmm2,[rel PD_0_382] ; xmm2=z5
        mulps   xmm1,[rel PD_0_541] ; xmm1=MULTIPLY(tmp10,FIX_0_541196)
        mulps   xmm6,[rel 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,[rel 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,[rel PD_0_707] ; xmm3=z3

        movaps  xmm1,xmm2               ; xmm1=tmp10
        subps   xmm2,xmm6
        mulps   xmm2,[rel PD_0_382] ; xmm2=z5
        mulps   xmm1,[rel PD_0_541] ; xmm1=MULTIPLY(tmp10,FIX_0_541196)
        mulps   xmm6,[rel 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

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