;
; jdcolext.asm - colorspace conversion (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
;
; [TAB8]

%include "jcolsamp.inc"

; --------------------------------------------------------------------------
;
; Convert some rows of samples to the output colorspace.
;
; GLOBAL(void)
; jsimd_ycc_rgb_convert_mmx (JDIMENSION out_width,
;                            JSAMPIMAGE input_buf, JDIMENSION input_row,
;                            JSAMPARRAY output_buf, int num_rows)
;

%define out_width(b)    (b)+8           ; JDIMENSION out_width
%define input_buf(b)    (b)+12          ; JSAMPIMAGE input_buf
%define input_row(b)    (b)+16          ; JDIMENSION input_row
%define output_buf(b)   (b)+20          ; JSAMPARRAY output_buf
%define num_rows(b)     (b)+24          ; int num_rows

%define original_ebp    ebp+0
%define wk(i)           ebp-(WK_NUM-(i))*SIZEOF_MMWORD  ; mmword wk[WK_NUM]
%define WK_NUM          2
%define gotptr          wk(0)-SIZEOF_POINTER    ; void * gotptr

        align   16
        global  EXTN(jsimd_ycc_rgb_convert_mmx) PRIVATE

EXTN(jsimd_ycc_rgb_convert_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 eax             ; make a room for GOT address
        push    ebx
;       push    ecx             ; need not be preserved
;       push    edx             ; need not be preserved
        push    esi
        push    edi

        get_GOT ebx                     ; get GOT address
        movpic  POINTER [gotptr], ebx   ; save GOT address

        mov     ecx, JDIMENSION [out_width(eax)]        ; num_cols
        test    ecx,ecx
        jz      near .return

        push    ecx

        mov     edi, JSAMPIMAGE [input_buf(eax)]
        mov     ecx, JDIMENSION [input_row(eax)]
        mov     esi, JSAMPARRAY [edi+0*SIZEOF_JSAMPARRAY]
        mov     ebx, JSAMPARRAY [edi+1*SIZEOF_JSAMPARRAY]
        mov     edx, JSAMPARRAY [edi+2*SIZEOF_JSAMPARRAY]
        lea     esi, [esi+ecx*SIZEOF_JSAMPROW]
        lea     ebx, [ebx+ecx*SIZEOF_JSAMPROW]
        lea     edx, [edx+ecx*SIZEOF_JSAMPROW]

        pop     ecx

        mov     edi, JSAMPARRAY [output_buf(eax)]
        mov     eax, INT [num_rows(eax)]
        test    eax,eax
        jle     near .return
        alignx  16,7
.rowloop:
        push    eax
        push    edi
        push    edx
        push    ebx
        push    esi
        push    ecx                     ; col

        mov     esi, JSAMPROW [esi]     ; inptr0
        mov     ebx, JSAMPROW [ebx]     ; inptr1
        mov     edx, JSAMPROW [edx]     ; inptr2
        mov     edi, JSAMPROW [edi]     ; outptr
        movpic  eax, POINTER [gotptr]   ; load GOT address (eax)
        alignx  16,7
.columnloop:

        movq    mm5, MMWORD [ebx]       ; mm5=Cb(01234567)
        movq    mm1, MMWORD [edx]       ; mm1=Cr(01234567)

        pcmpeqw mm4,mm4
        pcmpeqw mm7,mm7
        psrlw   mm4,BYTE_BIT
        psllw   mm7,7                   ; mm7={0xFF80 0xFF80 0xFF80 0xFF80}
        movq    mm0,mm4                 ; mm0=mm4={0xFF 0x00 0xFF 0x00 ..}

        pand    mm4,mm5                 ; mm4=Cb(0246)=CbE
        psrlw   mm5,BYTE_BIT            ; mm5=Cb(1357)=CbO
        pand    mm0,mm1                 ; mm0=Cr(0246)=CrE
        psrlw   mm1,BYTE_BIT            ; mm1=Cr(1357)=CrO

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

        ; (Original)
        ; R = Y                + 1.40200 * Cr
        ; G = Y - 0.34414 * Cb - 0.71414 * Cr
        ; B = Y + 1.77200 * Cb
        ;
        ; (This implementation)
        ; R = Y                + 0.40200 * Cr + Cr
        ; G = Y - 0.34414 * Cb + 0.28586 * Cr - Cr
        ; B = Y - 0.22800 * Cb + Cb + Cb

        movq    mm2,mm4                 ; mm2=CbE
        movq    mm3,mm5                 ; mm3=CbO
        paddw   mm4,mm4                 ; mm4=2*CbE
        paddw   mm5,mm5                 ; mm5=2*CbO
        movq    mm6,mm0                 ; mm6=CrE
        movq    mm7,mm1                 ; mm7=CrO
        paddw   mm0,mm0                 ; mm0=2*CrE
        paddw   mm1,mm1                 ; mm1=2*CrO

        pmulhw  mm4,[GOTOFF(eax,PW_MF0228)]     ; mm4=(2*CbE * -FIX(0.22800))
        pmulhw  mm5,[GOTOFF(eax,PW_MF0228)]     ; mm5=(2*CbO * -FIX(0.22800))
        pmulhw  mm0,[GOTOFF(eax,PW_F0402)]      ; mm0=(2*CrE * FIX(0.40200))
        pmulhw  mm1,[GOTOFF(eax,PW_F0402)]      ; mm1=(2*CrO * FIX(0.40200))

        paddw   mm4,[GOTOFF(eax,PW_ONE)]
        paddw   mm5,[GOTOFF(eax,PW_ONE)]
        psraw   mm4,1                   ; mm4=(CbE * -FIX(0.22800))
        psraw   mm5,1                   ; mm5=(CbO * -FIX(0.22800))
        paddw   mm0,[GOTOFF(eax,PW_ONE)]
        paddw   mm1,[GOTOFF(eax,PW_ONE)]
        psraw   mm0,1                   ; mm0=(CrE * FIX(0.40200))
        psraw   mm1,1                   ; mm1=(CrO * FIX(0.40200))

        paddw   mm4,mm2
        paddw   mm5,mm3
        paddw   mm4,mm2                 ; mm4=(CbE * FIX(1.77200))=(B-Y)E
        paddw   mm5,mm3                 ; mm5=(CbO * FIX(1.77200))=(B-Y)O
        paddw   mm0,mm6                 ; mm0=(CrE * FIX(1.40200))=(R-Y)E
        paddw   mm1,mm7                 ; mm1=(CrO * FIX(1.40200))=(R-Y)O

        movq    MMWORD [wk(0)], mm4     ; wk(0)=(B-Y)E
        movq    MMWORD [wk(1)], mm5     ; wk(1)=(B-Y)O

        movq      mm4,mm2
        movq      mm5,mm3
        punpcklwd mm2,mm6
        punpckhwd mm4,mm6
        pmaddwd   mm2,[GOTOFF(eax,PW_MF0344_F0285)]
        pmaddwd   mm4,[GOTOFF(eax,PW_MF0344_F0285)]
        punpcklwd mm3,mm7
        punpckhwd mm5,mm7
        pmaddwd   mm3,[GOTOFF(eax,PW_MF0344_F0285)]
        pmaddwd   mm5,[GOTOFF(eax,PW_MF0344_F0285)]

        paddd     mm2,[GOTOFF(eax,PD_ONEHALF)]
        paddd     mm4,[GOTOFF(eax,PD_ONEHALF)]
        psrad     mm2,SCALEBITS
        psrad     mm4,SCALEBITS
        paddd     mm3,[GOTOFF(eax,PD_ONEHALF)]
        paddd     mm5,[GOTOFF(eax,PD_ONEHALF)]
        psrad     mm3,SCALEBITS
        psrad     mm5,SCALEBITS

        packssdw  mm2,mm4       ; mm2=CbE*-FIX(0.344)+CrE*FIX(0.285)
        packssdw  mm3,mm5       ; mm3=CbO*-FIX(0.344)+CrO*FIX(0.285)
        psubw     mm2,mm6       ; mm2=CbE*-FIX(0.344)+CrE*-FIX(0.714)=(G-Y)E
        psubw     mm3,mm7       ; mm3=CbO*-FIX(0.344)+CrO*-FIX(0.714)=(G-Y)O

        movq      mm5, MMWORD [esi]     ; mm5=Y(01234567)

        pcmpeqw   mm4,mm4
        psrlw     mm4,BYTE_BIT          ; mm4={0xFF 0x00 0xFF 0x00 ..}
        pand      mm4,mm5               ; mm4=Y(0246)=YE
        psrlw     mm5,BYTE_BIT          ; mm5=Y(1357)=YO

        paddw     mm0,mm4               ; mm0=((R-Y)E+YE)=RE=(R0 R2 R4 R6)
        paddw     mm1,mm5               ; mm1=((R-Y)O+YO)=RO=(R1 R3 R5 R7)
        packuswb  mm0,mm0               ; mm0=(R0 R2 R4 R6 ** ** ** **)
        packuswb  mm1,mm1               ; mm1=(R1 R3 R5 R7 ** ** ** **)

        paddw     mm2,mm4               ; mm2=((G-Y)E+YE)=GE=(G0 G2 G4 G6)
        paddw     mm3,mm5               ; mm3=((G-Y)O+YO)=GO=(G1 G3 G5 G7)
        packuswb  mm2,mm2               ; mm2=(G0 G2 G4 G6 ** ** ** **)
        packuswb  mm3,mm3               ; mm3=(G1 G3 G5 G7 ** ** ** **)

        paddw     mm4, MMWORD [wk(0)]   ; mm4=(YE+(B-Y)E)=BE=(B0 B2 B4 B6)
        paddw     mm5, MMWORD [wk(1)]   ; mm5=(YO+(B-Y)O)=BO=(B1 B3 B5 B7)
        packuswb  mm4,mm4               ; mm4=(B0 B2 B4 B6 ** ** ** **)
        packuswb  mm5,mm5               ; mm5=(B1 B3 B5 B7 ** ** ** **)

%if RGB_PIXELSIZE == 3 ; ---------------

        ; mmA=(00 02 04 06 ** ** ** **), mmB=(01 03 05 07 ** ** ** **)
        ; mmC=(10 12 14 16 ** ** ** **), mmD=(11 13 15 17 ** ** ** **)
        ; mmE=(20 22 24 26 ** ** ** **), mmF=(21 23 25 27 ** ** ** **)
        ; mmG=(** ** ** ** ** ** ** **), mmH=(** ** ** ** ** ** ** **)

        punpcklbw mmA,mmC               ; mmA=(00 10 02 12 04 14 06 16)
        punpcklbw mmE,mmB               ; mmE=(20 01 22 03 24 05 26 07)
        punpcklbw mmD,mmF               ; mmD=(11 21 13 23 15 25 17 27)

        movq      mmG,mmA
        movq      mmH,mmA
        punpcklwd mmA,mmE               ; mmA=(00 10 20 01 02 12 22 03)
        punpckhwd mmG,mmE               ; mmG=(04 14 24 05 06 16 26 07)

        psrlq     mmH,2*BYTE_BIT        ; mmH=(02 12 04 14 06 16 -- --)
        psrlq     mmE,2*BYTE_BIT        ; mmE=(22 03 24 05 26 07 -- --)

        movq      mmC,mmD
        movq      mmB,mmD
        punpcklwd mmD,mmH               ; mmD=(11 21 02 12 13 23 04 14)
        punpckhwd mmC,mmH               ; mmC=(15 25 06 16 17 27 -- --)

        psrlq     mmB,2*BYTE_BIT        ; mmB=(13 23 15 25 17 27 -- --)

        movq      mmF,mmE
        punpcklwd mmE,mmB               ; mmE=(22 03 13 23 24 05 15 25)
        punpckhwd mmF,mmB               ; mmF=(26 07 17 27 -- -- -- --)

        punpckldq mmA,mmD               ; mmA=(00 10 20 01 11 21 02 12)
        punpckldq mmE,mmG               ; mmE=(22 03 13 23 04 14 24 05)
        punpckldq mmC,mmF               ; mmC=(15 25 06 16 26 07 17 27)

        cmp     ecx, byte SIZEOF_MMWORD
        jb      short .column_st16

        movq    MMWORD [edi+0*SIZEOF_MMWORD], mmA
        movq    MMWORD [edi+1*SIZEOF_MMWORD], mmE
        movq    MMWORD [edi+2*SIZEOF_MMWORD], mmC

        sub     ecx, byte SIZEOF_MMWORD
        jz      short .nextrow

        add     esi, byte SIZEOF_MMWORD                 ; inptr0
        add     ebx, byte SIZEOF_MMWORD                 ; inptr1
        add     edx, byte SIZEOF_MMWORD                 ; inptr2
        add     edi, byte RGB_PIXELSIZE*SIZEOF_MMWORD   ; outptr
        jmp     near .columnloop
        alignx  16,7

.column_st16:
        lea     ecx, [ecx+ecx*2]        ; imul ecx, RGB_PIXELSIZE
        cmp     ecx, byte 2*SIZEOF_MMWORD
        jb      short .column_st8
        movq    MMWORD [edi+0*SIZEOF_MMWORD], mmA
        movq    MMWORD [edi+1*SIZEOF_MMWORD], mmE
        movq    mmA,mmC
        sub     ecx, byte 2*SIZEOF_MMWORD
        add     edi, byte 2*SIZEOF_MMWORD
        jmp     short .column_st4
.column_st8:
        cmp     ecx, byte SIZEOF_MMWORD
        jb      short .column_st4
        movq    MMWORD [edi+0*SIZEOF_MMWORD], mmA
        movq    mmA,mmE
        sub     ecx, byte SIZEOF_MMWORD
        add     edi, byte SIZEOF_MMWORD
.column_st4:
        movd    eax,mmA
        cmp     ecx, byte SIZEOF_DWORD
        jb      short .column_st2
        mov     DWORD [edi+0*SIZEOF_DWORD], eax
        psrlq   mmA,DWORD_BIT
        movd    eax,mmA
        sub     ecx, byte SIZEOF_DWORD
        add     edi, byte SIZEOF_DWORD
.column_st2:
        cmp     ecx, byte SIZEOF_WORD
        jb      short .column_st1
        mov     WORD [edi+0*SIZEOF_WORD], ax
        shr     eax,WORD_BIT
        sub     ecx, byte SIZEOF_WORD
        add     edi, byte SIZEOF_WORD
.column_st1:
        cmp     ecx, byte SIZEOF_BYTE
        jb      short .nextrow
        mov     BYTE [edi+0*SIZEOF_BYTE], al

%else ; RGB_PIXELSIZE == 4 ; -----------

%ifdef RGBX_FILLER_0XFF
        pcmpeqb   mm6,mm6               ; mm6=(X0 X2 X4 X6 ** ** ** **)
        pcmpeqb   mm7,mm7               ; mm7=(X1 X3 X5 X7 ** ** ** **)
%else
        pxor      mm6,mm6               ; mm6=(X0 X2 X4 X6 ** ** ** **)
        pxor      mm7,mm7               ; mm7=(X1 X3 X5 X7 ** ** ** **)
%endif
        ; mmA=(00 02 04 06 ** ** ** **), mmB=(01 03 05 07 ** ** ** **)
        ; mmC=(10 12 14 16 ** ** ** **), mmD=(11 13 15 17 ** ** ** **)
        ; mmE=(20 22 24 26 ** ** ** **), mmF=(21 23 25 27 ** ** ** **)
        ; mmG=(30 32 34 36 ** ** ** **), mmH=(31 33 35 37 ** ** ** **)

        punpcklbw mmA,mmC               ; mmA=(00 10 02 12 04 14 06 16)
        punpcklbw mmE,mmG               ; mmE=(20 30 22 32 24 34 26 36)
        punpcklbw mmB,mmD               ; mmB=(01 11 03 13 05 15 07 17)
        punpcklbw mmF,mmH               ; mmF=(21 31 23 33 25 35 27 37)

        movq      mmC,mmA
        punpcklwd mmA,mmE               ; mmA=(00 10 20 30 02 12 22 32)
        punpckhwd mmC,mmE               ; mmC=(04 14 24 34 06 16 26 36)
        movq      mmG,mmB
        punpcklwd mmB,mmF               ; mmB=(01 11 21 31 03 13 23 33)
        punpckhwd mmG,mmF               ; mmG=(05 15 25 35 07 17 27 37)

        movq      mmD,mmA
        punpckldq mmA,mmB               ; mmA=(00 10 20 30 01 11 21 31)
        punpckhdq mmD,mmB               ; mmD=(02 12 22 32 03 13 23 33)
        movq      mmH,mmC
        punpckldq mmC,mmG               ; mmC=(04 14 24 34 05 15 25 35)
        punpckhdq mmH,mmG               ; mmH=(06 16 26 36 07 17 27 37)

        cmp     ecx, byte SIZEOF_MMWORD
        jb      short .column_st16

        movq    MMWORD [edi+0*SIZEOF_MMWORD], mmA
        movq    MMWORD [edi+1*SIZEOF_MMWORD], mmD
        movq    MMWORD [edi+2*SIZEOF_MMWORD], mmC
        movq    MMWORD [edi+3*SIZEOF_MMWORD], mmH

        sub     ecx, byte SIZEOF_MMWORD
        jz      short .nextrow

        add     esi, byte SIZEOF_MMWORD                 ; inptr0
        add     ebx, byte SIZEOF_MMWORD                 ; inptr1
        add     edx, byte SIZEOF_MMWORD                 ; inptr2
        add     edi, byte RGB_PIXELSIZE*SIZEOF_MMWORD   ; outptr
        jmp     near .columnloop
        alignx  16,7

.column_st16:
        cmp     ecx, byte SIZEOF_MMWORD/2
        jb      short .column_st8
        movq    MMWORD [edi+0*SIZEOF_MMWORD], mmA
        movq    MMWORD [edi+1*SIZEOF_MMWORD], mmD
        movq    mmA,mmC
        movq    mmD,mmH
        sub     ecx, byte SIZEOF_MMWORD/2
        add     edi, byte 2*SIZEOF_MMWORD
.column_st8:
        cmp     ecx, byte SIZEOF_MMWORD/4
        jb      short .column_st4
        movq    MMWORD [edi+0*SIZEOF_MMWORD], mmA
        movq    mmA,mmD
        sub     ecx, byte SIZEOF_MMWORD/4
        add     edi, byte 1*SIZEOF_MMWORD
.column_st4:
        cmp     ecx, byte SIZEOF_MMWORD/8
        jb      short .nextrow
        movd    DWORD [edi+0*SIZEOF_DWORD], mmA

%endif ; RGB_PIXELSIZE ; ---------------

        alignx  16,7

.nextrow:
        pop     ecx
        pop     esi
        pop     ebx
        pop     edx
        pop     edi
        pop     eax

        add     esi, byte SIZEOF_JSAMPROW
        add     ebx, byte SIZEOF_JSAMPROW
        add     edx, byte SIZEOF_JSAMPROW
        add     edi, byte SIZEOF_JSAMPROW       ; output_buf
        dec     eax                             ; num_rows
        jg      near .rowloop

        emms            ; empty MMX state

.return:
        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
