;
; jquant.asm - sample data conversion and quantization (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
;
; [TAB8]

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

; --------------------------------------------------------------------------
        SECTION SEG_TEXT
        BITS    32
;
; Load data into workspace, applying unsigned->signed conversion
;
; GLOBAL(void)
; jsimd_convsamp_mmx (JSAMPARRAY sample_data, JDIMENSION start_col,
;                     DCTELEM *workspace);
;

%define sample_data     ebp+8           ; JSAMPARRAY sample_data
%define start_col       ebp+12          ; JDIMENSION start_col
%define workspace       ebp+16          ; DCTELEM *workspace

        align   16
        global  EXTN(jsimd_convsamp_mmx) PRIVATE

EXTN(jsimd_convsamp_mmx):
        push    ebp
        mov     ebp,esp
        push    ebx
;       push    ecx             ; need not be preserved
;       push    edx             ; need not be preserved
        push    esi
        push    edi

        pxor    mm6,mm6                 ; mm6=(all 0's)
        pcmpeqw mm7,mm7
        psllw   mm7,7                   ; mm7={0xFF80 0xFF80 0xFF80 0xFF80}

        mov     esi, JSAMPARRAY [sample_data]   ; (JSAMPROW *)
        mov     eax, JDIMENSION [start_col]
        mov     edi, POINTER [workspace]        ; (DCTELEM *)
        mov     ecx, DCTSIZE/4
        alignx  16,7
.convloop:
        mov     ebx, JSAMPROW [esi+0*SIZEOF_JSAMPROW]   ; (JSAMPLE *)
        mov     edx, JSAMPROW [esi+1*SIZEOF_JSAMPROW]   ; (JSAMPLE *)

        movq    mm0, MMWORD [ebx+eax*SIZEOF_JSAMPLE]    ; mm0=(01234567)
        movq    mm1, MMWORD [edx+eax*SIZEOF_JSAMPLE]    ; mm1=(89ABCDEF)

        mov     ebx, JSAMPROW [esi+2*SIZEOF_JSAMPROW]   ; (JSAMPLE *)
        mov     edx, JSAMPROW [esi+3*SIZEOF_JSAMPROW]   ; (JSAMPLE *)

        movq    mm2, MMWORD [ebx+eax*SIZEOF_JSAMPLE]    ; mm2=(GHIJKLMN)
        movq    mm3, MMWORD [edx+eax*SIZEOF_JSAMPLE]    ; mm3=(OPQRSTUV)

        movq      mm4,mm0
        punpcklbw mm0,mm6               ; mm0=(0123)
        punpckhbw mm4,mm6               ; mm4=(4567)
        movq      mm5,mm1
        punpcklbw mm1,mm6               ; mm1=(89AB)
        punpckhbw mm5,mm6               ; mm5=(CDEF)

        paddw   mm0,mm7
        paddw   mm4,mm7
        paddw   mm1,mm7
        paddw   mm5,mm7

        movq    MMWORD [MMBLOCK(0,0,edi,SIZEOF_DCTELEM)], mm0
        movq    MMWORD [MMBLOCK(0,1,edi,SIZEOF_DCTELEM)], mm4
        movq    MMWORD [MMBLOCK(1,0,edi,SIZEOF_DCTELEM)], mm1
        movq    MMWORD [MMBLOCK(1,1,edi,SIZEOF_DCTELEM)], mm5

        movq      mm0,mm2
        punpcklbw mm2,mm6               ; mm2=(GHIJ)
        punpckhbw mm0,mm6               ; mm0=(KLMN)
        movq      mm4,mm3
        punpcklbw mm3,mm6               ; mm3=(OPQR)
        punpckhbw mm4,mm6               ; mm4=(STUV)

        paddw   mm2,mm7
        paddw   mm0,mm7
        paddw   mm3,mm7
        paddw   mm4,mm7

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

        add     esi, byte 4*SIZEOF_JSAMPROW
        add     edi, byte 4*DCTSIZE*SIZEOF_DCTELEM
        dec     ecx
        jnz     short .convloop

        emms            ; empty MMX state

        pop     edi
        pop     esi
;       pop     edx             ; need not be preserved
;       pop     ecx             ; need not be preserved
        pop     ebx
        pop     ebp
        ret

; --------------------------------------------------------------------------
;
; Quantize/descale the coefficients, and store into coef_block
;
; This implementation is based on an algorithm described in
;   "How to optimize for the Pentium family of microprocessors"
;   (http://www.agner.org/assem/).
;
; GLOBAL(void)
; jsimd_quantize_mmx (JCOEFPTR coef_block, DCTELEM *divisors,
;                     DCTELEM *workspace);
;

%define RECIPROCAL(m,n,b) MMBLOCK(DCTSIZE*0+(m),(n),(b),SIZEOF_DCTELEM)
%define CORRECTION(m,n,b) MMBLOCK(DCTSIZE*1+(m),(n),(b),SIZEOF_DCTELEM)
%define SCALE(m,n,b)      MMBLOCK(DCTSIZE*2+(m),(n),(b),SIZEOF_DCTELEM)
%define SHIFT(m,n,b)      MMBLOCK(DCTSIZE*3+(m),(n),(b),SIZEOF_DCTELEM)

%define coef_block      ebp+8           ; JCOEFPTR coef_block
%define divisors        ebp+12          ; DCTELEM *divisors
%define workspace       ebp+16          ; DCTELEM *workspace

        align   16
        global  EXTN(jsimd_quantize_mmx) PRIVATE

EXTN(jsimd_quantize_mmx):
        push    ebp
        mov     ebp,esp
;       push    ebx             ; unused
;       push    ecx             ; unused
;       push    edx             ; need not be preserved
        push    esi
        push    edi

        mov     esi, POINTER [workspace]
        mov     edx, POINTER [divisors]
        mov     edi, JCOEFPTR [coef_block]
        mov     ah, 2
        alignx  16,7
.quantloop1:
        mov     al, DCTSIZE2/8/2
        alignx  16,7
.quantloop2:
        movq    mm2, MMWORD [MMBLOCK(0,0,esi,SIZEOF_DCTELEM)]
        movq    mm3, MMWORD [MMBLOCK(0,1,esi,SIZEOF_DCTELEM)]

        movq    mm0,mm2
        movq    mm1,mm3

        psraw   mm2,(WORD_BIT-1)  ; -1 if value < 0, 0 otherwise
        psraw   mm3,(WORD_BIT-1)

        pxor    mm0,mm2   ; val = -val
        pxor    mm1,mm3
        psubw   mm0,mm2
        psubw   mm1,mm3

        ;
        ; MMX is an annoyingly crappy instruction set. It has two
        ; misfeatures that are causing problems here:
        ;
        ; - All multiplications are signed.
        ;
        ; - The second operand for the shifts is not treated as packed.
        ;
        ;
        ; We work around the first problem by implementing this algorithm:
        ;
        ; unsigned long unsigned_multiply(unsigned short x, unsigned short y)
        ; {
        ;   enum { SHORT_BIT = 16 };
        ;   signed short sx = (signed short) x;
        ;   signed short sy = (signed short) y;
        ;   signed long sz;
        ;
        ;   sz = (long) sx * (long) sy;     /* signed multiply */
        ;
        ;   if (sx < 0) sz += (long) sy << SHORT_BIT;
        ;   if (sy < 0) sz += (long) sx << SHORT_BIT;
        ;
        ;   return (unsigned long) sz;
        ; }
        ;
        ; (note that a negative sx adds _sy_ and vice versa)
        ;
        ; For the second problem, we replace the shift by a multiplication.
        ; Unfortunately that means we have to deal with the signed issue again.
        ;

        paddw   mm0, MMWORD [CORRECTION(0,0,edx)]   ; correction + roundfactor
        paddw   mm1, MMWORD [CORRECTION(0,1,edx)]

        movq    mm4,mm0   ; store current value for later
        movq    mm5,mm1
        pmulhw  mm0, MMWORD [RECIPROCAL(0,0,edx)]   ; reciprocal
        pmulhw  mm1, MMWORD [RECIPROCAL(0,1,edx)]
        paddw   mm0,mm4         ; reciprocal is always negative (MSB=1),
        paddw   mm1,mm5   ; so we always need to add the initial value
                        ; (input value is never negative as we
                        ; inverted it at the start of this routine)

        ; here it gets a bit tricky as both scale
        ; and mm0/mm1 can be negative
        movq    mm6, MMWORD [SCALE(0,0,edx)]    ; scale
        movq    mm7, MMWORD [SCALE(0,1,edx)]
        movq    mm4,mm0
        movq    mm5,mm1
        pmulhw  mm0,mm6
        pmulhw  mm1,mm7

        psraw   mm6,(WORD_BIT-1)    ; determine if scale is negative
        psraw   mm7,(WORD_BIT-1)

        pand    mm6,mm4             ; and add input if it is
        pand    mm7,mm5
        paddw   mm0,mm6
        paddw   mm1,mm7

        psraw   mm4,(WORD_BIT-1)    ; then check if negative input
        psraw   mm5,(WORD_BIT-1)

        pand    mm4, MMWORD [SCALE(0,0,edx)]    ; and add scale if it is
        pand    mm5, MMWORD [SCALE(0,1,edx)]
        paddw   mm0,mm4
        paddw   mm1,mm5

        pxor    mm0,mm2   ; val = -val
        pxor    mm1,mm3
        psubw   mm0,mm2
        psubw   mm1,mm3

        movq    MMWORD [MMBLOCK(0,0,edi,SIZEOF_DCTELEM)], mm0
        movq    MMWORD [MMBLOCK(0,1,edi,SIZEOF_DCTELEM)], mm1

        add     esi, byte 8*SIZEOF_DCTELEM
        add     edx, byte 8*SIZEOF_DCTELEM
        add     edi, byte 8*SIZEOF_JCOEF
        dec     al
        jnz     near .quantloop2
        dec     ah
        jnz     near .quantloop1        ; to avoid branch misprediction

        emms            ; empty MMX state

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