;
; jidctflt.asm - floating-point IDCT (3DNow! & MMX)
;
; 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 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      32
    GLOBAL_DATA(jconst_idct_float_3dnow)

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      32

; --------------------------------------------------------------------------
    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       32
    GLOBAL_FUNCTION(jsimd_idct_float_3dnow)

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       32
