;
; jidctflt.asm - floating-point IDCT (3DNow! & MMX)
;
; Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
;
; 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 inverse DCT
; (Discrete Cosine Transform). The following code is based directly on
; the IJG's original jidctflt.c; see the jidctflt.c for more details.
;
; [TAB8]

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

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

        alignz  16
        global  EXTN(jconst_idct_float_3dnow) PRIVATE

EXTN(jconst_idct_float_3dnow):

PD_1_414        times 2 dd  1.414213562373095048801689
PD_1_847        times 2 dd  1.847759065022573512256366
PD_1_082        times 2 dd  1.082392200292393968799446
PD_2_613        times 2 dd  2.613125929752753055713286
PD_RNDINT_MAGIC times 2 dd  100663296.0 ; (float)(0x00C00000 << 3)
PB_CENTERJSAMP  times 8 db  CENTERJSAMPLE

        alignz  16

; --------------------------------------------------------------------------
        SECTION SEG_TEXT
        BITS    32
;
; Perform dequantization and inverse DCT on one block of coefficients.
;
; GLOBAL(void)
; jsimd_idct_float_3dnow (void *dct_table, JCOEFPTR coef_block,
;                         JSAMPARRAY output_buf, JDIMENSION output_col)
;

%define dct_table(b)    (b)+8           ; void *dct_table
%define coef_block(b)   (b)+12          ; JCOEFPTR coef_block
%define output_buf(b)   (b)+16          ; JSAMPARRAY output_buf
%define output_col(b)   (b)+20          ; JDIMENSION output_col

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

        align   16
        global  EXTN(jsimd_idct_float_3dnow) PRIVATE

EXTN(jsimd_idct_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, [workspace]
        push    ebx
;       push    ecx             ; need not be preserved
;       push    edx             ; need not be preserved
        push    esi
        push    edi

        get_GOT ebx             ; get GOT address

        ; ---- Pass 1: process columns from input, store into work array.

;       mov     eax, [original_ebp]
        mov     edx, POINTER [dct_table(eax)]           ; quantptr
        mov     esi, JCOEFPTR [coef_block(eax)]         ; inptr
        lea     edi, [workspace]                        ; FAST_FLOAT *wsptr
        mov     ecx, DCTSIZE/2                          ; ctr
        alignx  16,7
.columnloop:
%ifndef NO_ZERO_COLUMN_TEST_FLOAT_3DNOW
        mov     eax, DWORD [DWBLOCK(1,0,esi,SIZEOF_JCOEF)]
        or      eax, DWORD [DWBLOCK(2,0,esi,SIZEOF_JCOEF)]
        jnz     short .columnDCT

        pushpic ebx             ; save GOT address
        mov     ebx, DWORD [DWBLOCK(3,0,esi,SIZEOF_JCOEF)]
        mov     eax, DWORD [DWBLOCK(4,0,esi,SIZEOF_JCOEF)]
        or      ebx, DWORD [DWBLOCK(5,0,esi,SIZEOF_JCOEF)]
        or      eax, DWORD [DWBLOCK(6,0,esi,SIZEOF_JCOEF)]
        or      ebx, DWORD [DWBLOCK(7,0,esi,SIZEOF_JCOEF)]
        or      eax,ebx
        poppic  ebx             ; restore GOT address
        jnz     short .columnDCT

        ; -- AC terms all zero

        movd      mm0, DWORD [DWBLOCK(0,0,esi,SIZEOF_JCOEF)]

        punpcklwd mm0,mm0
        psrad     mm0,(DWORD_BIT-WORD_BIT)
        pi2fd     mm0,mm0

        pfmul     mm0, MMWORD [MMBLOCK(0,0,edx,SIZEOF_FLOAT_MULT_TYPE)]

        movq      mm1,mm0
        punpckldq mm0,mm0
        punpckhdq mm1,mm1

        movq    MMWORD [MMBLOCK(0,0,edi,SIZEOF_FAST_FLOAT)], mm0
        movq    MMWORD [MMBLOCK(0,1,edi,SIZEOF_FAST_FLOAT)], mm0
        movq    MMWORD [MMBLOCK(0,2,edi,SIZEOF_FAST_FLOAT)], mm0
        movq    MMWORD [MMBLOCK(0,3,edi,SIZEOF_FAST_FLOAT)], mm0
        movq    MMWORD [MMBLOCK(1,0,edi,SIZEOF_FAST_FLOAT)], mm1
        movq    MMWORD [MMBLOCK(1,1,edi,SIZEOF_FAST_FLOAT)], mm1
        movq    MMWORD [MMBLOCK(1,2,edi,SIZEOF_FAST_FLOAT)], mm1
        movq    MMWORD [MMBLOCK(1,3,edi,SIZEOF_FAST_FLOAT)], mm1
        jmp     near .nextcolumn
        alignx  16,7
%endif
.columnDCT:

        ; -- Even part

        movd      mm0, DWORD [DWBLOCK(0,0,esi,SIZEOF_JCOEF)]
        movd      mm1, DWORD [DWBLOCK(2,0,esi,SIZEOF_JCOEF)]
        movd      mm2, DWORD [DWBLOCK(4,0,esi,SIZEOF_JCOEF)]
        movd      mm3, DWORD [DWBLOCK(6,0,esi,SIZEOF_JCOEF)]

        punpcklwd mm0,mm0
        punpcklwd mm1,mm1
        psrad     mm0,(DWORD_BIT-WORD_BIT)
        psrad     mm1,(DWORD_BIT-WORD_BIT)
        pi2fd     mm0,mm0
        pi2fd     mm1,mm1

        pfmul     mm0, MMWORD [MMBLOCK(0,0,edx,SIZEOF_FLOAT_MULT_TYPE)]
        pfmul     mm1, MMWORD [MMBLOCK(2,0,edx,SIZEOF_FLOAT_MULT_TYPE)]

        punpcklwd mm2,mm2
        punpcklwd mm3,mm3
        psrad     mm2,(DWORD_BIT-WORD_BIT)
        psrad     mm3,(DWORD_BIT-WORD_BIT)
        pi2fd     mm2,mm2
        pi2fd     mm3,mm3

        pfmul     mm2, MMWORD [MMBLOCK(4,0,edx,SIZEOF_FLOAT_MULT_TYPE)]
        pfmul     mm3, MMWORD [MMBLOCK(6,0,edx,SIZEOF_FLOAT_MULT_TYPE)]

        movq    mm4,mm0
        movq    mm5,mm1
        pfsub   mm0,mm2                 ; mm0=tmp11
        pfsub   mm1,mm3
        pfadd   mm4,mm2                 ; mm4=tmp10
        pfadd   mm5,mm3                 ; mm5=tmp13

        pfmul   mm1,[GOTOFF(ebx,PD_1_414)]
        pfsub   mm1,mm5                 ; mm1=tmp12

        movq    mm6,mm4
        movq    mm7,mm0
        pfsub   mm4,mm5                 ; mm4=tmp3
        pfsub   mm0,mm1                 ; mm0=tmp2
        pfadd   mm6,mm5                 ; mm6=tmp0
        pfadd   mm7,mm1                 ; mm7=tmp1

        movq    MMWORD [wk(1)], mm4     ; tmp3
        movq    MMWORD [wk(0)], mm0     ; tmp2

        ; -- Odd part

        movd      mm2, DWORD [DWBLOCK(1,0,esi,SIZEOF_JCOEF)]
        movd      mm3, DWORD [DWBLOCK(3,0,esi,SIZEOF_JCOEF)]
        movd      mm5, DWORD [DWBLOCK(5,0,esi,SIZEOF_JCOEF)]
        movd      mm1, DWORD [DWBLOCK(7,0,esi,SIZEOF_JCOEF)]

        punpcklwd mm2,mm2
        punpcklwd mm3,mm3
        psrad     mm2,(DWORD_BIT-WORD_BIT)
        psrad     mm3,(DWORD_BIT-WORD_BIT)
        pi2fd     mm2,mm2
        pi2fd     mm3,mm3

        pfmul     mm2, MMWORD [MMBLOCK(1,0,edx,SIZEOF_FLOAT_MULT_TYPE)]
        pfmul     mm3, MMWORD [MMBLOCK(3,0,edx,SIZEOF_FLOAT_MULT_TYPE)]

        punpcklwd mm5,mm5
        punpcklwd mm1,mm1
        psrad     mm5,(DWORD_BIT-WORD_BIT)
        psrad     mm1,(DWORD_BIT-WORD_BIT)
        pi2fd     mm5,mm5
        pi2fd     mm1,mm1

        pfmul     mm5, MMWORD [MMBLOCK(5,0,edx,SIZEOF_FLOAT_MULT_TYPE)]
        pfmul     mm1, MMWORD [MMBLOCK(7,0,edx,SIZEOF_FLOAT_MULT_TYPE)]

        movq    mm4,mm2
        movq    mm0,mm5
        pfadd   mm2,mm1                 ; mm2=z11
        pfadd   mm5,mm3                 ; mm5=z13
        pfsub   mm4,mm1                 ; mm4=z12
        pfsub   mm0,mm3                 ; mm0=z10

        movq    mm1,mm2
        pfsub   mm2,mm5
        pfadd   mm1,mm5                 ; mm1=tmp7

        pfmul   mm2,[GOTOFF(ebx,PD_1_414)]      ; mm2=tmp11

        movq    mm3,mm0
        pfadd   mm0,mm4
        pfmul   mm0,[GOTOFF(ebx,PD_1_847)]      ; mm0=z5
        pfmul   mm3,[GOTOFF(ebx,PD_2_613)]      ; mm3=(z10 * 2.613125930)
        pfmul   mm4,[GOTOFF(ebx,PD_1_082)]      ; mm4=(z12 * 1.082392200)
        pfsubr  mm3,mm0                 ; mm3=tmp12
        pfsub   mm4,mm0                 ; mm4=tmp10

        ; -- Final output stage

        pfsub   mm3,mm1                 ; mm3=tmp6
        movq    mm5,mm6
        movq    mm0,mm7
        pfadd   mm6,mm1                 ; mm6=data0=(00 01)
        pfadd   mm7,mm3                 ; mm7=data1=(10 11)
        pfsub   mm5,mm1                 ; mm5=data7=(70 71)
        pfsub   mm0,mm3                 ; mm0=data6=(60 61)
        pfsub   mm2,mm3                 ; mm2=tmp5

        movq      mm1,mm6               ; transpose coefficients
        punpckldq mm6,mm7               ; mm6=(00 10)
        punpckhdq mm1,mm7               ; mm1=(01 11)
        movq      mm3,mm0               ; transpose coefficients
        punpckldq mm0,mm5               ; mm0=(60 70)
        punpckhdq mm3,mm5               ; mm3=(61 71)

        movq    MMWORD [MMBLOCK(0,0,edi,SIZEOF_FAST_FLOAT)], mm6
        movq    MMWORD [MMBLOCK(1,0,edi,SIZEOF_FAST_FLOAT)], mm1
        movq    MMWORD [MMBLOCK(0,3,edi,SIZEOF_FAST_FLOAT)], mm0
        movq    MMWORD [MMBLOCK(1,3,edi,SIZEOF_FAST_FLOAT)], mm3

        movq    mm7, MMWORD [wk(0)]     ; mm7=tmp2
        movq    mm5, MMWORD [wk(1)]     ; mm5=tmp3

        pfadd   mm4,mm2                 ; mm4=tmp4
        movq    mm6,mm7
        movq    mm1,mm5
        pfadd   mm7,mm2                 ; mm7=data2=(20 21)
        pfadd   mm5,mm4                 ; mm5=data4=(40 41)
        pfsub   mm6,mm2                 ; mm6=data5=(50 51)
        pfsub   mm1,mm4                 ; mm1=data3=(30 31)

        movq      mm0,mm7               ; transpose coefficients
        punpckldq mm7,mm1               ; mm7=(20 30)
        punpckhdq mm0,mm1               ; mm0=(21 31)
        movq      mm3,mm5               ; transpose coefficients
        punpckldq mm5,mm6               ; mm5=(40 50)
        punpckhdq mm3,mm6               ; mm3=(41 51)

        movq    MMWORD [MMBLOCK(0,1,edi,SIZEOF_FAST_FLOAT)], mm7
        movq    MMWORD [MMBLOCK(1,1,edi,SIZEOF_FAST_FLOAT)], mm0
        movq    MMWORD [MMBLOCK(0,2,edi,SIZEOF_FAST_FLOAT)], mm5
        movq    MMWORD [MMBLOCK(1,2,edi,SIZEOF_FAST_FLOAT)], mm3

.nextcolumn:
        add     esi, byte 2*SIZEOF_JCOEF                ; coef_block
        add     edx, byte 2*SIZEOF_FLOAT_MULT_TYPE      ; quantptr
        add     edi, byte 2*DCTSIZE*SIZEOF_FAST_FLOAT   ; wsptr
        dec     ecx                                     ; ctr
        jnz     near .columnloop

        ; -- Prefetch the next coefficient block

        prefetch [esi + (DCTSIZE2-8)*SIZEOF_JCOEF + 0*32]
        prefetch [esi + (DCTSIZE2-8)*SIZEOF_JCOEF + 1*32]
        prefetch [esi + (DCTSIZE2-8)*SIZEOF_JCOEF + 2*32]
        prefetch [esi + (DCTSIZE2-8)*SIZEOF_JCOEF + 3*32]

        ; ---- Pass 2: process rows from work array, store into output array.

        mov     eax, [original_ebp]
        lea     esi, [workspace]                        ; FAST_FLOAT *wsptr
        mov     edi, JSAMPARRAY [output_buf(eax)]       ; (JSAMPROW *)
        mov     eax, JDIMENSION [output_col(eax)]
        mov     ecx, DCTSIZE/2                          ; ctr
        alignx  16,7
.rowloop:

        ; -- Even part

        movq    mm0, MMWORD [MMBLOCK(0,0,esi,SIZEOF_FAST_FLOAT)]
        movq    mm1, MMWORD [MMBLOCK(2,0,esi,SIZEOF_FAST_FLOAT)]
        movq    mm2, MMWORD [MMBLOCK(4,0,esi,SIZEOF_FAST_FLOAT)]
        movq    mm3, MMWORD [MMBLOCK(6,0,esi,SIZEOF_FAST_FLOAT)]

        movq    mm4,mm0
        movq    mm5,mm1
        pfsub   mm0,mm2                 ; mm0=tmp11
        pfsub   mm1,mm3
        pfadd   mm4,mm2                 ; mm4=tmp10
        pfadd   mm5,mm3                 ; mm5=tmp13

        pfmul   mm1,[GOTOFF(ebx,PD_1_414)]
        pfsub   mm1,mm5                 ; mm1=tmp12

        movq    mm6,mm4
        movq    mm7,mm0
        pfsub   mm4,mm5                 ; mm4=tmp3
        pfsub   mm0,mm1                 ; mm0=tmp2
        pfadd   mm6,mm5                 ; mm6=tmp0
        pfadd   mm7,mm1                 ; mm7=tmp1

        movq    MMWORD [wk(1)], mm4     ; tmp3
        movq    MMWORD [wk(0)], mm0     ; tmp2

        ; -- Odd part

        movq    mm2, MMWORD [MMBLOCK(1,0,esi,SIZEOF_FAST_FLOAT)]
        movq    mm3, MMWORD [MMBLOCK(3,0,esi,SIZEOF_FAST_FLOAT)]
        movq    mm5, MMWORD [MMBLOCK(5,0,esi,SIZEOF_FAST_FLOAT)]
        movq    mm1, MMWORD [MMBLOCK(7,0,esi,SIZEOF_FAST_FLOAT)]

        movq    mm4,mm2
        movq    mm0,mm5
        pfadd   mm2,mm1                 ; mm2=z11
        pfadd   mm5,mm3                 ; mm5=z13
        pfsub   mm4,mm1                 ; mm4=z12
        pfsub   mm0,mm3                 ; mm0=z10

        movq    mm1,mm2
        pfsub   mm2,mm5
        pfadd   mm1,mm5                 ; mm1=tmp7

        pfmul   mm2,[GOTOFF(ebx,PD_1_414)]      ; mm2=tmp11

        movq    mm3,mm0
        pfadd   mm0,mm4
        pfmul   mm0,[GOTOFF(ebx,PD_1_847)]      ; mm0=z5
        pfmul   mm3,[GOTOFF(ebx,PD_2_613)]      ; mm3=(z10 * 2.613125930)
        pfmul   mm4,[GOTOFF(ebx,PD_1_082)]      ; mm4=(z12 * 1.082392200)
        pfsubr  mm3,mm0                 ; mm3=tmp12
        pfsub   mm4,mm0                 ; mm4=tmp10

        ; -- Final output stage

        pfsub   mm3,mm1                 ; mm3=tmp6
        movq    mm5,mm6
        movq    mm0,mm7
        pfadd   mm6,mm1                 ; mm6=data0=(00 10)
        pfadd   mm7,mm3                 ; mm7=data1=(01 11)
        pfsub   mm5,mm1                 ; mm5=data7=(07 17)
        pfsub   mm0,mm3                 ; mm0=data6=(06 16)
        pfsub   mm2,mm3                 ; mm2=tmp5

        movq    mm1,[GOTOFF(ebx,PD_RNDINT_MAGIC)]       ; mm1=[PD_RNDINT_MAGIC]
        pcmpeqd mm3,mm3
        psrld   mm3,WORD_BIT            ; mm3={0xFFFF 0x0000 0xFFFF 0x0000}

        pfadd   mm6,mm1                 ; mm6=roundint(data0/8)=(00 ** 10 **)
        pfadd   mm7,mm1                 ; mm7=roundint(data1/8)=(01 ** 11 **)
        pfadd   mm0,mm1                 ; mm0=roundint(data6/8)=(06 ** 16 **)
        pfadd   mm5,mm1                 ; mm5=roundint(data7/8)=(07 ** 17 **)

        pand    mm6,mm3                 ; mm6=(00 -- 10 --)
        pslld   mm7,WORD_BIT            ; mm7=(-- 01 -- 11)
        pand    mm0,mm3                 ; mm0=(06 -- 16 --)
        pslld   mm5,WORD_BIT            ; mm5=(-- 07 -- 17)
        por     mm6,mm7                 ; mm6=(00 01 10 11)
        por     mm0,mm5                 ; mm0=(06 07 16 17)

        movq    mm1, MMWORD [wk(0)]     ; mm1=tmp2
        movq    mm3, MMWORD [wk(1)]     ; mm3=tmp3

        pfadd   mm4,mm2                 ; mm4=tmp4
        movq    mm7,mm1
        movq    mm5,mm3
        pfadd   mm1,mm2                 ; mm1=data2=(02 12)
        pfadd   mm3,mm4                 ; mm3=data4=(04 14)
        pfsub   mm7,mm2                 ; mm7=data5=(05 15)
        pfsub   mm5,mm4                 ; mm5=data3=(03 13)

        movq    mm2,[GOTOFF(ebx,PD_RNDINT_MAGIC)]       ; mm2=[PD_RNDINT_MAGIC]
        pcmpeqd mm4,mm4
        psrld   mm4,WORD_BIT            ; mm4={0xFFFF 0x0000 0xFFFF 0x0000}

        pfadd   mm3,mm2                 ; mm3=roundint(data4/8)=(04 ** 14 **)
        pfadd   mm7,mm2                 ; mm7=roundint(data5/8)=(05 ** 15 **)
        pfadd   mm1,mm2                 ; mm1=roundint(data2/8)=(02 ** 12 **)
        pfadd   mm5,mm2                 ; mm5=roundint(data3/8)=(03 ** 13 **)

        pand    mm3,mm4                 ; mm3=(04 -- 14 --)
        pslld   mm7,WORD_BIT            ; mm7=(-- 05 -- 15)
        pand    mm1,mm4                 ; mm1=(02 -- 12 --)
        pslld   mm5,WORD_BIT            ; mm5=(-- 03 -- 13)
        por     mm3,mm7                 ; mm3=(04 05 14 15)
        por     mm1,mm5                 ; mm1=(02 03 12 13)

        movq      mm2,[GOTOFF(ebx,PB_CENTERJSAMP)]      ; mm2=[PB_CENTERJSAMP]

        packsswb  mm6,mm3               ; mm6=(00 01 10 11 04 05 14 15)
        packsswb  mm1,mm0               ; mm1=(02 03 12 13 06 07 16 17)
        paddb     mm6,mm2
        paddb     mm1,mm2

        movq      mm4,mm6               ; transpose coefficients(phase 2)
        punpcklwd mm6,mm1               ; mm6=(00 01 02 03 10 11 12 13)
        punpckhwd mm4,mm1               ; mm4=(04 05 06 07 14 15 16 17)

        movq      mm7,mm6               ; transpose coefficients(phase 3)
        punpckldq mm6,mm4               ; mm6=(00 01 02 03 04 05 06 07)
        punpckhdq mm7,mm4               ; mm7=(10 11 12 13 14 15 16 17)

        pushpic ebx                     ; save GOT address

        mov     edx, JSAMPROW [edi+0*SIZEOF_JSAMPROW]
        mov     ebx, JSAMPROW [edi+1*SIZEOF_JSAMPROW]
        movq    MMWORD [edx+eax*SIZEOF_JSAMPLE], mm6
        movq    MMWORD [ebx+eax*SIZEOF_JSAMPLE], mm7

        poppic  ebx                     ; restore GOT address

        add     esi, byte 2*SIZEOF_FAST_FLOAT   ; wsptr
        add     edi, byte 2*SIZEOF_JSAMPROW
        dec     ecx                             ; ctr
        jnz     near .rowloop

        femms           ; empty MMX/3DNow! state

        pop     edi
        pop     esi
;       pop     edx             ; need not be preserved
;       pop     ecx             ; need not be preserved
        pop     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
