;
; jfdctflt.asm - floating-point FDCT (SSE)
;
; Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
; Copyright (C) 2016, 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.

%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      32
    GLOBAL_DATA(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      32

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

%define data(b)       (b) + 8           ; FAST_FLOAT *data

%define original_ebp  ebp + 0
%define wk(i)         ebp - (WK_NUM - (i)) * SIZEOF_XMMWORD
                                        ; xmmword wk[WK_NUM]
%define WK_NUM        2

    align       32
    GLOBAL_FUNCTION(jsimd_fdct_float_sse)

EXTN(jsimd_fdct_float_sse):
    push        ebp
    mov         eax, esp                     ; eax = original ebp
    sub         esp, byte 4
    and         esp, byte (-SIZEOF_XMMWORD)  ; align to 128 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)]  ; (FAST_FLOAT *)
    mov         ecx, DCTSIZE/4
    alignx      16, 7
.rowloop:

    movaps      xmm0, XMMWORD [XMMBLOCK(2,0,edx,SIZEOF_FAST_FLOAT)]
    movaps      xmm1, XMMWORD [XMMBLOCK(3,0,edx,SIZEOF_FAST_FLOAT)]
    movaps      xmm2, XMMWORD [XMMBLOCK(2,1,edx,SIZEOF_FAST_FLOAT)]
    movaps      xmm3, XMMWORD [XMMBLOCK(3,1,edx,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,edx,SIZEOF_FAST_FLOAT)]
    movaps      xmm7, XMMWORD [XMMBLOCK(1,0,edx,SIZEOF_FAST_FLOAT)]
    movaps      xmm1, XMMWORD [XMMBLOCK(0,1,edx,SIZEOF_FAST_FLOAT)]
    movaps      xmm3, XMMWORD [XMMBLOCK(1,1,edx,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, [GOTOFF(ebx,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,edx,SIZEOF_FAST_FLOAT)], xmm1
    movaps      XMMWORD [XMMBLOCK(2,1,edx,SIZEOF_FAST_FLOAT)], xmm5
    movaps      XMMWORD [XMMBLOCK(0,0,edx,SIZEOF_FAST_FLOAT)], xmm7
    movaps      XMMWORD [XMMBLOCK(2,0,edx,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, [GOTOFF(ebx,PD_0_707)]  ; xmm3=z3

    movaps      xmm1, xmm2                    ; xmm1=tmp10
    subps       xmm2, xmm6
    mulps       xmm2, [GOTOFF(ebx,PD_0_382)]  ; xmm2=z5
    mulps       xmm1, [GOTOFF(ebx,PD_0_541)]  ; xmm1=MULTIPLY(tmp10,FIX_0_541196)
    mulps       xmm6, [GOTOFF(ebx,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,edx,SIZEOF_FAST_FLOAT)], xmm0
    movaps      XMMWORD [XMMBLOCK(3,1,edx,SIZEOF_FAST_FLOAT)], xmm5
    movaps      XMMWORD [XMMBLOCK(1,1,edx,SIZEOF_FAST_FLOAT)], xmm7
    movaps      XMMWORD [XMMBLOCK(1,0,edx,SIZEOF_FAST_FLOAT)], xmm4

    add         edx, 4*DCTSIZE*SIZEOF_FAST_FLOAT
    dec         ecx
    jnz         near .rowloop

    ; ---- Pass 2: process columns.

    mov         edx, POINTER [data(eax)]  ; (FAST_FLOAT *)
    mov         ecx, DCTSIZE/4
    alignx      16, 7
.columnloop:

    movaps      xmm0, XMMWORD [XMMBLOCK(2,0,edx,SIZEOF_FAST_FLOAT)]
    movaps      xmm1, XMMWORD [XMMBLOCK(3,0,edx,SIZEOF_FAST_FLOAT)]
    movaps      xmm2, XMMWORD [XMMBLOCK(6,0,edx,SIZEOF_FAST_FLOAT)]
    movaps      xmm3, XMMWORD [XMMBLOCK(7,0,edx,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,edx,SIZEOF_FAST_FLOAT)]
    movaps      xmm7, XMMWORD [XMMBLOCK(1,0,edx,SIZEOF_FAST_FLOAT)]
    movaps      xmm1, XMMWORD [XMMBLOCK(4,0,edx,SIZEOF_FAST_FLOAT)]
    movaps      xmm3, XMMWORD [XMMBLOCK(5,0,edx,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, [GOTOFF(ebx,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,edx,SIZEOF_FAST_FLOAT)], xmm1
    movaps      XMMWORD [XMMBLOCK(6,0,edx,SIZEOF_FAST_FLOAT)], xmm5
    movaps      XMMWORD [XMMBLOCK(0,0,edx,SIZEOF_FAST_FLOAT)], xmm7
    movaps      XMMWORD [XMMBLOCK(2,0,edx,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, [GOTOFF(ebx,PD_0_707)]  ; xmm3=z3

    movaps      xmm1, xmm2                    ; xmm1=tmp10
    subps       xmm2, xmm6
    mulps       xmm2, [GOTOFF(ebx,PD_0_382)]  ; xmm2=z5
    mulps       xmm1, [GOTOFF(ebx,PD_0_541)]  ; xmm1=MULTIPLY(tmp10,FIX_0_541196)
    mulps       xmm6, [GOTOFF(ebx,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,edx,SIZEOF_FAST_FLOAT)], xmm0
    movaps      XMMWORD [XMMBLOCK(7,0,edx,SIZEOF_FAST_FLOAT)], xmm5
    movaps      XMMWORD [XMMBLOCK(5,0,edx,SIZEOF_FAST_FLOAT)], xmm7
    movaps      XMMWORD [XMMBLOCK(1,0,edx,SIZEOF_FAST_FLOAT)], xmm4

    add         edx, byte 4*SIZEOF_FAST_FLOAT
    dec         ecx
    jnz         near .columnloop

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