;
; jfdctflt.asm - floating-point FDCT (3DNow!)
;
; Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
;
; 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 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  16
        global  EXTN(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  16

; --------------------------------------------------------------------------
        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   16
        global  EXTN(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   16
