;
; 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
