;
; jfdctflt.asm - floating-point FDCT (3DNow!)
;
; 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.
;
; [TAB8]

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

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

    alignz      32
    GLOBAL_DATA(jconst_fdct_float_3dnow)

EXTN(jconst_fdct_float_3dnow):

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

    alignz      32

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

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

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

    align       32
    GLOBAL_FUNCTION(jsimd_fdct_float_3dnow)

EXTN(jsimd_fdct_float_3dnow):
    push        ebp
    mov         eax, esp                    ; eax = original ebp
    sub         esp, byte 4
    and         esp, byte (-SIZEOF_MMWORD)  ; align to 64 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/2
    alignx      16, 7
.rowloop:

    movq        mm0, MMWORD [MMBLOCK(0,0,edx,SIZEOF_FAST_FLOAT)]
    movq        mm1, MMWORD [MMBLOCK(1,0,edx,SIZEOF_FAST_FLOAT)]
    movq        mm2, MMWORD [MMBLOCK(0,3,edx,SIZEOF_FAST_FLOAT)]
    movq        mm3, MMWORD [MMBLOCK(1,3,edx,SIZEOF_FAST_FLOAT)]

    ; mm0=(00 01), mm1=(10 11), mm2=(06 07), mm3=(16 17)

    movq        mm4, mm0                ; transpose coefficients
    punpckldq   mm0, mm1                ; mm0=(00 10)=data0
    punpckhdq   mm4, mm1                ; mm4=(01 11)=data1
    movq        mm5, mm2                ; transpose coefficients
    punpckldq   mm2, mm3                ; mm2=(06 16)=data6
    punpckhdq   mm5, mm3                ; mm5=(07 17)=data7

    movq        mm6, mm4
    movq        mm7, mm0
    pfsub       mm4, mm2                ; mm4=data1-data6=tmp6
    pfsub       mm0, mm5                ; mm0=data0-data7=tmp7
    pfadd       mm6, mm2                ; mm6=data1+data6=tmp1
    pfadd       mm7, mm5                ; mm7=data0+data7=tmp0

    movq        mm1, MMWORD [MMBLOCK(0,1,edx,SIZEOF_FAST_FLOAT)]
    movq        mm3, MMWORD [MMBLOCK(1,1,edx,SIZEOF_FAST_FLOAT)]
    movq        mm2, MMWORD [MMBLOCK(0,2,edx,SIZEOF_FAST_FLOAT)]
    movq        mm5, MMWORD [MMBLOCK(1,2,edx,SIZEOF_FAST_FLOAT)]

    ; mm1=(02 03), mm3=(12 13), mm2=(04 05), mm5=(14 15)

    movq        MMWORD [wk(0)], mm4     ; wk(0)=tmp6
    movq        MMWORD [wk(1)], mm0     ; wk(1)=tmp7

    movq        mm4, mm1                ; transpose coefficients
    punpckldq   mm1, mm3                ; mm1=(02 12)=data2
    punpckhdq   mm4, mm3                ; mm4=(03 13)=data3
    movq        mm0, mm2                ; transpose coefficients
    punpckldq   mm2, mm5                ; mm2=(04 14)=data4
    punpckhdq   mm0, mm5                ; mm0=(05 15)=data5

    movq        mm3, mm4
    movq        mm5, mm1
    pfadd       mm4, mm2                ; mm4=data3+data4=tmp3
    pfadd       mm1, mm0                ; mm1=data2+data5=tmp2
    pfsub       mm3, mm2                ; mm3=data3-data4=tmp4
    pfsub       mm5, mm0                ; mm5=data2-data5=tmp5

    ; -- Even part

    movq        mm2, mm7
    movq        mm0, mm6
    pfsub       mm7, mm4                ; mm7=tmp13
    pfsub       mm6, mm1                ; mm6=tmp12
    pfadd       mm2, mm4                ; mm2=tmp10
    pfadd       mm0, mm1                ; mm0=tmp11

    pfadd       mm6, mm7
    pfmul       mm6, [GOTOFF(ebx,PD_0_707)]  ; mm6=z1

    movq        mm4, mm2
    movq        mm1, mm7
    pfsub       mm2, mm0                ; mm2=data4
    pfsub       mm7, mm6                ; mm7=data6
    pfadd       mm4, mm0                ; mm4=data0
    pfadd       mm1, mm6                ; mm1=data2

    movq        MMWORD [MMBLOCK(0,2,edx,SIZEOF_FAST_FLOAT)], mm2
    movq        MMWORD [MMBLOCK(0,3,edx,SIZEOF_FAST_FLOAT)], mm7
    movq        MMWORD [MMBLOCK(0,0,edx,SIZEOF_FAST_FLOAT)], mm4
    movq        MMWORD [MMBLOCK(0,1,edx,SIZEOF_FAST_FLOAT)], mm1

    ; -- Odd part

    movq        mm0, MMWORD [wk(0)]     ; mm0=tmp6
    movq        mm6, MMWORD [wk(1)]     ; mm6=tmp7

    pfadd       mm3, mm5                ; mm3=tmp10
    pfadd       mm5, mm0                ; mm5=tmp11
    pfadd       mm0, mm6                ; mm0=tmp12, mm6=tmp7

    pfmul       mm5, [GOTOFF(ebx,PD_0_707)]  ; mm5=z3

    movq        mm2, mm3                     ; mm2=tmp10
    pfsub       mm3, mm0
    pfmul       mm3, [GOTOFF(ebx,PD_0_382)]  ; mm3=z5
    pfmul       mm2, [GOTOFF(ebx,PD_0_541)]  ; mm2=MULTIPLY(tmp10,FIX_0_54119610)
    pfmul       mm0, [GOTOFF(ebx,PD_1_306)]  ; mm0=MULTIPLY(tmp12,FIX_1_30656296)
    pfadd       mm2, mm3                     ; mm2=z2
    pfadd       mm0, mm3                     ; mm0=z4

    movq        mm7, mm6
    pfsub       mm6, mm5                ; mm6=z13
    pfadd       mm7, mm5                ; mm7=z11

    movq        mm4, mm6
    movq        mm1, mm7
    pfsub       mm6, mm2                ; mm6=data3
    pfsub       mm7, mm0                ; mm7=data7
    pfadd       mm4, mm2                ; mm4=data5
    pfadd       mm1, mm0                ; mm1=data1

    movq        MMWORD [MMBLOCK(1,1,edx,SIZEOF_FAST_FLOAT)], mm6
    movq        MMWORD [MMBLOCK(1,3,edx,SIZEOF_FAST_FLOAT)], mm7
    movq        MMWORD [MMBLOCK(1,2,edx,SIZEOF_FAST_FLOAT)], mm4
    movq        MMWORD [MMBLOCK(1,0,edx,SIZEOF_FAST_FLOAT)], mm1

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

    ; ---- Pass 2: process columns.

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

    movq        mm0, MMWORD [MMBLOCK(0,0,edx,SIZEOF_FAST_FLOAT)]
    movq        mm1, MMWORD [MMBLOCK(1,0,edx,SIZEOF_FAST_FLOAT)]
    movq        mm2, MMWORD [MMBLOCK(6,0,edx,SIZEOF_FAST_FLOAT)]
    movq        mm3, MMWORD [MMBLOCK(7,0,edx,SIZEOF_FAST_FLOAT)]

    ; mm0=(00 10), mm1=(01 11), mm2=(60 70), mm3=(61 71)

    movq        mm4, mm0                ; transpose coefficients
    punpckldq   mm0, mm1                ; mm0=(00 01)=data0
    punpckhdq   mm4, mm1                ; mm4=(10 11)=data1
    movq        mm5, mm2                ; transpose coefficients
    punpckldq   mm2, mm3                ; mm2=(60 61)=data6
    punpckhdq   mm5, mm3                ; mm5=(70 71)=data7

    movq        mm6, mm4
    movq        mm7, mm0
    pfsub       mm4, mm2                ; mm4=data1-data6=tmp6
    pfsub       mm0, mm5                ; mm0=data0-data7=tmp7
    pfadd       mm6, mm2                ; mm6=data1+data6=tmp1
    pfadd       mm7, mm5                ; mm7=data0+data7=tmp0

    movq        mm1, MMWORD [MMBLOCK(2,0,edx,SIZEOF_FAST_FLOAT)]
    movq        mm3, MMWORD [MMBLOCK(3,0,edx,SIZEOF_FAST_FLOAT)]
    movq        mm2, MMWORD [MMBLOCK(4,0,edx,SIZEOF_FAST_FLOAT)]
    movq        mm5, MMWORD [MMBLOCK(5,0,edx,SIZEOF_FAST_FLOAT)]

    ; mm1=(20 30), mm3=(21 31), mm2=(40 50), mm5=(41 51)

    movq        MMWORD [wk(0)], mm4     ; wk(0)=tmp6
    movq        MMWORD [wk(1)], mm0     ; wk(1)=tmp7

    movq        mm4, mm1                ; transpose coefficients
    punpckldq   mm1, mm3                ; mm1=(20 21)=data2
    punpckhdq   mm4, mm3                ; mm4=(30 31)=data3
    movq        mm0, mm2                ; transpose coefficients
    punpckldq   mm2, mm5                ; mm2=(40 41)=data4
    punpckhdq   mm0, mm5                ; mm0=(50 51)=data5

    movq        mm3, mm4
    movq        mm5, mm1
    pfadd       mm4, mm2                ; mm4=data3+data4=tmp3
    pfadd       mm1, mm0                ; mm1=data2+data5=tmp2
    pfsub       mm3, mm2                ; mm3=data3-data4=tmp4
    pfsub       mm5, mm0                ; mm5=data2-data5=tmp5

    ; -- Even part

    movq        mm2, mm7
    movq        mm0, mm6
    pfsub       mm7, mm4                ; mm7=tmp13
    pfsub       mm6, mm1                ; mm6=tmp12
    pfadd       mm2, mm4                ; mm2=tmp10
    pfadd       mm0, mm1                ; mm0=tmp11

    pfadd       mm6, mm7
    pfmul       mm6, [GOTOFF(ebx,PD_0_707)]  ; mm6=z1

    movq        mm4, mm2
    movq        mm1, mm7
    pfsub       mm2, mm0                ; mm2=data4
    pfsub       mm7, mm6                ; mm7=data6
    pfadd       mm4, mm0                ; mm4=data0
    pfadd       mm1, mm6                ; mm1=data2

    movq        MMWORD [MMBLOCK(4,0,edx,SIZEOF_FAST_FLOAT)], mm2
    movq        MMWORD [MMBLOCK(6,0,edx,SIZEOF_FAST_FLOAT)], mm7
    movq        MMWORD [MMBLOCK(0,0,edx,SIZEOF_FAST_FLOAT)], mm4
    movq        MMWORD [MMBLOCK(2,0,edx,SIZEOF_FAST_FLOAT)], mm1

    ; -- Odd part

    movq        mm0, MMWORD [wk(0)]     ; mm0=tmp6
    movq        mm6, MMWORD [wk(1)]     ; mm6=tmp7

    pfadd       mm3, mm5                ; mm3=tmp10
    pfadd       mm5, mm0                ; mm5=tmp11
    pfadd       mm0, mm6                ; mm0=tmp12, mm6=tmp7

    pfmul       mm5, [GOTOFF(ebx,PD_0_707)]  ; mm5=z3

    movq        mm2, mm3                     ; mm2=tmp10
    pfsub       mm3, mm0
    pfmul       mm3, [GOTOFF(ebx,PD_0_382)]  ; mm3=z5
    pfmul       mm2, [GOTOFF(ebx,PD_0_541)]  ; mm2=MULTIPLY(tmp10,FIX_0_54119610)
    pfmul       mm0, [GOTOFF(ebx,PD_1_306)]  ; mm0=MULTIPLY(tmp12,FIX_1_30656296)
    pfadd       mm2, mm3                     ; mm2=z2
    pfadd       mm0, mm3                     ; mm0=z4

    movq        mm7, mm6
    pfsub       mm6, mm5                ; mm6=z13
    pfadd       mm7, mm5                ; mm7=z11

    movq        mm4, mm6
    movq        mm1, mm7
    pfsub       mm6, mm2                ; mm6=data3
    pfsub       mm7, mm0                ; mm7=data7
    pfadd       mm4, mm2                ; mm4=data5
    pfadd       mm1, mm0                ; mm1=data1

    movq        MMWORD [MMBLOCK(3,0,edx,SIZEOF_FAST_FLOAT)], mm6
    movq        MMWORD [MMBLOCK(7,0,edx,SIZEOF_FAST_FLOAT)], mm7
    movq        MMWORD [MMBLOCK(5,0,edx,SIZEOF_FAST_FLOAT)], mm4
    movq        MMWORD [MMBLOCK(1,0,edx,SIZEOF_FAST_FLOAT)], mm1

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

    femms                               ; empty MMX/3DNow! state

;   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
