;
; jfdctfst.asm - fast integer FDCT (MMX)
;
; 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 fast, not so accurate integer implementation of
; the forward DCT (Discrete Cosine Transform). The following code is
; based directly on the IJG's original jfdctfst.c; see the jfdctfst.c
; for more details.
;
; [TAB8]

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

; --------------------------------------------------------------------------

%define CONST_BITS      8       ; 14 is also OK.

%if CONST_BITS == 8
F_0_382 equ      98             ; FIX(0.382683433)
F_0_541 equ     139             ; FIX(0.541196100)
F_0_707 equ     181             ; FIX(0.707106781)
F_1_306 equ     334             ; FIX(1.306562965)
%else
; NASM cannot do compile-time arithmetic on floating-point constants.
%define DESCALE(x,n)  (((x)+(1<<((n)-1)))>>(n))
F_0_382 equ     DESCALE( 410903207,30-CONST_BITS)       ; FIX(0.382683433)
F_0_541 equ     DESCALE( 581104887,30-CONST_BITS)       ; FIX(0.541196100)
F_0_707 equ     DESCALE( 759250124,30-CONST_BITS)       ; FIX(0.707106781)
F_1_306 equ     DESCALE(1402911301,30-CONST_BITS)       ; FIX(1.306562965)
%endif

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

; PRE_MULTIPLY_SCALE_BITS <= 2 (to avoid overflow)
; CONST_BITS + CONST_SHIFT + PRE_MULTIPLY_SCALE_BITS == 16 (for pmulhw)

%define PRE_MULTIPLY_SCALE_BITS   2
%define CONST_SHIFT     (16 - PRE_MULTIPLY_SCALE_BITS - CONST_BITS)

        alignz  16
        global  EXTN(jconst_fdct_ifast_mmx)

EXTN(jconst_fdct_ifast_mmx):

PW_F0707        times 4 dw  F_0_707 << CONST_SHIFT
PW_F0382        times 4 dw  F_0_382 << CONST_SHIFT
PW_F0541        times 4 dw  F_0_541 << CONST_SHIFT
PW_F1306        times 4 dw  F_1_306 << CONST_SHIFT

        alignz  16

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

%define data(b)         (b)+8           ; DCTELEM *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_ifast_mmx)

EXTN(jsimd_fdct_ifast_mmx):
        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)]        ; (DCTELEM *)
        mov     ecx, DCTSIZE/4
        alignx  16,7
.rowloop:

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

        ; mm0=(20 21 22 23), mm2=(24 25 26 27)
        ; mm1=(30 31 32 33), mm3=(34 35 36 37)

        movq      mm4,mm0               ; transpose coefficients(phase 1)
        punpcklwd mm0,mm1               ; mm0=(20 30 21 31)
        punpckhwd mm4,mm1               ; mm4=(22 32 23 33)
        movq      mm5,mm2               ; transpose coefficients(phase 1)
        punpcklwd mm2,mm3               ; mm2=(24 34 25 35)
        punpckhwd mm5,mm3               ; mm5=(26 36 27 37)

        movq    mm6, MMWORD [MMBLOCK(0,0,edx,SIZEOF_DCTELEM)]
        movq    mm7, MMWORD [MMBLOCK(1,0,edx,SIZEOF_DCTELEM)]
        movq    mm1, MMWORD [MMBLOCK(0,1,edx,SIZEOF_DCTELEM)]
        movq    mm3, MMWORD [MMBLOCK(1,1,edx,SIZEOF_DCTELEM)]

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

        movq    MMWORD [wk(0)], mm4     ; wk(0)=(22 32 23 33)
        movq    MMWORD [wk(1)], mm2     ; wk(1)=(24 34 25 35)

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

        movq      mm7,mm6               ; transpose coefficients(phase 2)
        punpckldq mm6,mm0               ; mm6=(00 10 20 30)=data0
        punpckhdq mm7,mm0               ; mm7=(01 11 21 31)=data1
        movq      mm3,mm2               ; transpose coefficients(phase 2)
        punpckldq mm2,mm5               ; mm2=(06 16 26 36)=data6
        punpckhdq mm3,mm5               ; mm3=(07 17 27 37)=data7

        movq    mm0,mm7
        movq    mm5,mm6
        psubw   mm7,mm2                 ; mm7=data1-data6=tmp6
        psubw   mm6,mm3                 ; mm6=data0-data7=tmp7
        paddw   mm0,mm2                 ; mm0=data1+data6=tmp1
        paddw   mm5,mm3                 ; mm5=data0+data7=tmp0

        movq    mm2, MMWORD [wk(0)]     ; mm2=(22 32 23 33)
        movq    mm3, MMWORD [wk(1)]     ; mm3=(24 34 25 35)
        movq    MMWORD [wk(0)], mm7     ; wk(0)=tmp6
        movq    MMWORD [wk(1)], mm6     ; wk(1)=tmp7

        movq      mm7,mm4               ; transpose coefficients(phase 2)
        punpckldq mm4,mm2               ; mm4=(02 12 22 32)=data2
        punpckhdq mm7,mm2               ; mm7=(03 13 23 33)=data3
        movq      mm6,mm1               ; transpose coefficients(phase 2)
        punpckldq mm1,mm3               ; mm1=(04 14 24 34)=data4
        punpckhdq mm6,mm3               ; mm6=(05 15 25 35)=data5

        movq    mm2,mm7
        movq    mm3,mm4
        paddw   mm7,mm1                 ; mm7=data3+data4=tmp3
        paddw   mm4,mm6                 ; mm4=data2+data5=tmp2
        psubw   mm2,mm1                 ; mm2=data3-data4=tmp4
        psubw   mm3,mm6                 ; mm3=data2-data5=tmp5

        ; -- Even part

        movq    mm1,mm5
        movq    mm6,mm0
        psubw   mm5,mm7                 ; mm5=tmp13
        psubw   mm0,mm4                 ; mm0=tmp12
        paddw   mm1,mm7                 ; mm1=tmp10
        paddw   mm6,mm4                 ; mm6=tmp11

        paddw   mm0,mm5
        psllw   mm0,PRE_MULTIPLY_SCALE_BITS
        pmulhw  mm0,[GOTOFF(ebx,PW_F0707)] ; mm0=z1

        movq    mm7,mm1
        movq    mm4,mm5
        psubw   mm1,mm6                 ; mm1=data4
        psubw   mm5,mm0                 ; mm5=data6
        paddw   mm7,mm6                 ; mm7=data0
        paddw   mm4,mm0                 ; mm4=data2

        movq    MMWORD [MMBLOCK(0,1,edx,SIZEOF_DCTELEM)], mm1
        movq    MMWORD [MMBLOCK(2,1,edx,SIZEOF_DCTELEM)], mm5
        movq    MMWORD [MMBLOCK(0,0,edx,SIZEOF_DCTELEM)], mm7
        movq    MMWORD [MMBLOCK(2,0,edx,SIZEOF_DCTELEM)], mm4

        ; -- Odd part

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

        paddw   mm2,mm3                 ; mm2=tmp10
        paddw   mm3,mm6                 ; mm3=tmp11
        paddw   mm6,mm0                 ; mm6=tmp12, mm0=tmp7

        psllw   mm2,PRE_MULTIPLY_SCALE_BITS
        psllw   mm6,PRE_MULTIPLY_SCALE_BITS

        psllw   mm3,PRE_MULTIPLY_SCALE_BITS
        pmulhw  mm3,[GOTOFF(ebx,PW_F0707)] ; mm3=z3

        movq    mm1,mm2                 ; mm1=tmp10
        psubw   mm2,mm6
        pmulhw  mm2,[GOTOFF(ebx,PW_F0382)] ; mm2=z5
        pmulhw  mm1,[GOTOFF(ebx,PW_F0541)] ; mm1=MULTIPLY(tmp10,FIX_0_54119610)
        pmulhw  mm6,[GOTOFF(ebx,PW_F1306)] ; mm6=MULTIPLY(tmp12,FIX_1_30656296)
        paddw   mm1,mm2                 ; mm1=z2
        paddw   mm6,mm2                 ; mm6=z4

        movq    mm5,mm0
        psubw   mm0,mm3                 ; mm0=z13
        paddw   mm5,mm3                 ; mm5=z11

        movq    mm7,mm0
        movq    mm4,mm5
        psubw   mm0,mm1                 ; mm0=data3
        psubw   mm5,mm6                 ; mm5=data7
        paddw   mm7,mm1                 ; mm7=data5
        paddw   mm4,mm6                 ; mm4=data1

        movq    MMWORD [MMBLOCK(3,0,edx,SIZEOF_DCTELEM)], mm0
        movq    MMWORD [MMBLOCK(3,1,edx,SIZEOF_DCTELEM)], mm5
        movq    MMWORD [MMBLOCK(1,1,edx,SIZEOF_DCTELEM)], mm7
        movq    MMWORD [MMBLOCK(1,0,edx,SIZEOF_DCTELEM)], mm4

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

        ; ---- Pass 2: process columns.

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

        movq    mm0, MMWORD [MMBLOCK(2,0,edx,SIZEOF_DCTELEM)]
        movq    mm1, MMWORD [MMBLOCK(3,0,edx,SIZEOF_DCTELEM)]
        movq    mm2, MMWORD [MMBLOCK(6,0,edx,SIZEOF_DCTELEM)]
        movq    mm3, MMWORD [MMBLOCK(7,0,edx,SIZEOF_DCTELEM)]

        ; mm0=(02 12 22 32), mm2=(42 52 62 72)
        ; mm1=(03 13 23 33), mm3=(43 53 63 73)

        movq      mm4,mm0               ; transpose coefficients(phase 1)
        punpcklwd mm0,mm1               ; mm0=(02 03 12 13)
        punpckhwd mm4,mm1               ; mm4=(22 23 32 33)
        movq      mm5,mm2               ; transpose coefficients(phase 1)
        punpcklwd mm2,mm3               ; mm2=(42 43 52 53)
        punpckhwd mm5,mm3               ; mm5=(62 63 72 73)

        movq    mm6, MMWORD [MMBLOCK(0,0,edx,SIZEOF_DCTELEM)]
        movq    mm7, MMWORD [MMBLOCK(1,0,edx,SIZEOF_DCTELEM)]
        movq    mm1, MMWORD [MMBLOCK(4,0,edx,SIZEOF_DCTELEM)]
        movq    mm3, MMWORD [MMBLOCK(5,0,edx,SIZEOF_DCTELEM)]

        ; mm6=(00 10 20 30), mm1=(40 50 60 70)
        ; mm7=(01 11 21 31), mm3=(41 51 61 71)

        movq    MMWORD [wk(0)], mm4     ; wk(0)=(22 23 32 33)
        movq    MMWORD [wk(1)], mm2     ; wk(1)=(42 43 52 53)

        movq      mm4,mm6               ; transpose coefficients(phase 1)
        punpcklwd mm6,mm7               ; mm6=(00 01 10 11)
        punpckhwd mm4,mm7               ; mm4=(20 21 30 31)
        movq      mm2,mm1               ; transpose coefficients(phase 1)
        punpcklwd mm1,mm3               ; mm1=(40 41 50 51)
        punpckhwd mm2,mm3               ; mm2=(60 61 70 71)

        movq      mm7,mm6               ; transpose coefficients(phase 2)
        punpckldq mm6,mm0               ; mm6=(00 01 02 03)=data0
        punpckhdq mm7,mm0               ; mm7=(10 11 12 13)=data1
        movq      mm3,mm2               ; transpose coefficients(phase 2)
        punpckldq mm2,mm5               ; mm2=(60 61 62 63)=data6
        punpckhdq mm3,mm5               ; mm3=(70 71 72 73)=data7

        movq    mm0,mm7
        movq    mm5,mm6
        psubw   mm7,mm2                 ; mm7=data1-data6=tmp6
        psubw   mm6,mm3                 ; mm6=data0-data7=tmp7
        paddw   mm0,mm2                 ; mm0=data1+data6=tmp1
        paddw   mm5,mm3                 ; mm5=data0+data7=tmp0

        movq    mm2, MMWORD [wk(0)]     ; mm2=(22 23 32 33)
        movq    mm3, MMWORD [wk(1)]     ; mm3=(42 43 52 53)
        movq    MMWORD [wk(0)], mm7     ; wk(0)=tmp6
        movq    MMWORD [wk(1)], mm6     ; wk(1)=tmp7

        movq      mm7,mm4               ; transpose coefficients(phase 2)
        punpckldq mm4,mm2               ; mm4=(20 21 22 23)=data2
        punpckhdq mm7,mm2               ; mm7=(30 31 32 33)=data3
        movq      mm6,mm1               ; transpose coefficients(phase 2)
        punpckldq mm1,mm3               ; mm1=(40 41 42 43)=data4
        punpckhdq mm6,mm3               ; mm6=(50 51 52 53)=data5

        movq    mm2,mm7
        movq    mm3,mm4
        paddw   mm7,mm1                 ; mm7=data3+data4=tmp3
        paddw   mm4,mm6                 ; mm4=data2+data5=tmp2
        psubw   mm2,mm1                 ; mm2=data3-data4=tmp4
        psubw   mm3,mm6                 ; mm3=data2-data5=tmp5

        ; -- Even part

        movq    mm1,mm5
        movq    mm6,mm0
        psubw   mm5,mm7                 ; mm5=tmp13
        psubw   mm0,mm4                 ; mm0=tmp12
        paddw   mm1,mm7                 ; mm1=tmp10
        paddw   mm6,mm4                 ; mm6=tmp11

        paddw   mm0,mm5
        psllw   mm0,PRE_MULTIPLY_SCALE_BITS
        pmulhw  mm0,[GOTOFF(ebx,PW_F0707)] ; mm0=z1

        movq    mm7,mm1
        movq    mm4,mm5
        psubw   mm1,mm6                 ; mm1=data4
        psubw   mm5,mm0                 ; mm5=data6
        paddw   mm7,mm6                 ; mm7=data0
        paddw   mm4,mm0                 ; mm4=data2

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

        ; -- Odd part

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

        paddw   mm2,mm3                 ; mm2=tmp10
        paddw   mm3,mm6                 ; mm3=tmp11
        paddw   mm6,mm0                 ; mm6=tmp12, mm0=tmp7

        psllw   mm2,PRE_MULTIPLY_SCALE_BITS
        psllw   mm6,PRE_MULTIPLY_SCALE_BITS

        psllw   mm3,PRE_MULTIPLY_SCALE_BITS
        pmulhw  mm3,[GOTOFF(ebx,PW_F0707)] ; mm3=z3

        movq    mm1,mm2                 ; mm1=tmp10
        psubw   mm2,mm6
        pmulhw  mm2,[GOTOFF(ebx,PW_F0382)] ; mm2=z5
        pmulhw  mm1,[GOTOFF(ebx,PW_F0541)] ; mm1=MULTIPLY(tmp10,FIX_0_54119610)
        pmulhw  mm6,[GOTOFF(ebx,PW_F1306)] ; mm6=MULTIPLY(tmp12,FIX_1_30656296)
        paddw   mm1,mm2                 ; mm1=z2
        paddw   mm6,mm2                 ; mm6=z4

        movq    mm5,mm0
        psubw   mm0,mm3                 ; mm0=z13
        paddw   mm5,mm3                 ; mm5=z11

        movq    mm7,mm0
        movq    mm4,mm5
        psubw   mm0,mm1                 ; mm0=data3
        psubw   mm5,mm6                 ; mm5=data7
        paddw   mm7,mm1                 ; mm7=data5
        paddw   mm4,mm6                 ; mm4=data1

        movq    MMWORD [MMBLOCK(3,0,edx,SIZEOF_DCTELEM)], mm0
        movq    MMWORD [MMBLOCK(7,0,edx,SIZEOF_DCTELEM)], mm5
        movq    MMWORD [MMBLOCK(5,0,edx,SIZEOF_DCTELEM)], mm7
        movq    MMWORD [MMBLOCK(1,0,edx,SIZEOF_DCTELEM)], mm4

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

        emms            ; empty MMX 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
