;
; jdmrgext.asm - merged upsampling/color conversion (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 "jcolsamp.inc"

; --------------------------------------------------------------------------
;
; Upsample and color convert for the case of 2:1 horizontal and 1:1 vertical.
;
; GLOBAL(void)
; jsimd_h2v1_merged_upsample_mmx (JDIMENSION output_width,
;                                 JSAMPIMAGE input_buf,
;                                 JDIMENSION in_row_group_ctr,
;                                 JSAMPARRAY output_buf);
;

%define output_width(b) (b)+8                   ; JDIMENSION output_width
%define input_buf(b)            (b)+12          ; JSAMPIMAGE input_buf
%define in_row_group_ctr(b)     (b)+16          ; JDIMENSION in_row_group_ctr
%define output_buf(b)           (b)+20          ; JSAMPARRAY output_buf

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

        align   16
        global  EXTN(jsimd_h2v1_merged_upsample_mmx)

EXTN(jsimd_h2v1_merged_upsample_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 [output_width(eax)]     ; col
        test    ecx,ecx
        jz      near .return

        push    ecx

        mov     edi, JSAMPIMAGE [input_buf(eax)]
        mov     ecx, JDIMENSION [in_row_group_ctr(eax)]
        mov     esi, JSAMPARRAY [edi+0*SIZEOF_JSAMPARRAY]
        mov     ebx, JSAMPARRAY [edi+1*SIZEOF_JSAMPARRAY]
        mov     edx, JSAMPARRAY [edi+2*SIZEOF_JSAMPARRAY]
        mov     edi, JSAMPARRAY [output_buf(eax)]
        mov     esi, JSAMPROW [esi+ecx*SIZEOF_JSAMPROW]         ; inptr0
        mov     ebx, JSAMPROW [ebx+ecx*SIZEOF_JSAMPROW]         ; inptr1
        mov     edx, JSAMPROW [edx+ecx*SIZEOF_JSAMPROW]         ; inptr2
        mov     edi, JSAMPROW [edi]                             ; outptr

        pop     ecx                     ; col

        alignx  16,7
.columnloop:
        movpic  eax, POINTER [gotptr]   ; load GOT address (eax)

        movq      mm6, MMWORD [ebx]     ; mm6=Cb(01234567)
        movq      mm7, MMWORD [edx]     ; mm7=Cr(01234567)

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

        movq      mm4,mm6
        punpckhbw mm6,mm1               ; mm6=Cb(4567)=CbH
        punpcklbw mm4,mm1               ; mm4=Cb(0123)=CbL
        movq      mm0,mm7
        punpckhbw mm7,mm1               ; mm7=Cr(4567)=CrH
        punpcklbw mm0,mm1               ; mm0=Cr(0123)=CrL

        paddw     mm6,mm3
        paddw     mm4,mm3
        paddw     mm7,mm3
        paddw     mm0,mm3

        ; (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    mm5,mm6                 ; mm5=CbH
        movq    mm2,mm4                 ; mm2=CbL
        paddw   mm6,mm6                 ; mm6=2*CbH
        paddw   mm4,mm4                 ; mm4=2*CbL
        movq    mm1,mm7                 ; mm1=CrH
        movq    mm3,mm0                 ; mm3=CrL
        paddw   mm7,mm7                 ; mm7=2*CrH
        paddw   mm0,mm0                 ; mm0=2*CrL

        pmulhw  mm6,[GOTOFF(eax,PW_MF0228)]     ; mm6=(2*CbH * -FIX(0.22800))
        pmulhw  mm4,[GOTOFF(eax,PW_MF0228)]     ; mm4=(2*CbL * -FIX(0.22800))
        pmulhw  mm7,[GOTOFF(eax,PW_F0402)]      ; mm7=(2*CrH * FIX(0.40200))
        pmulhw  mm0,[GOTOFF(eax,PW_F0402)]      ; mm0=(2*CrL * FIX(0.40200))

        paddw   mm6,[GOTOFF(eax,PW_ONE)]
        paddw   mm4,[GOTOFF(eax,PW_ONE)]
        psraw   mm6,1                   ; mm6=(CbH * -FIX(0.22800))
        psraw   mm4,1                   ; mm4=(CbL * -FIX(0.22800))
        paddw   mm7,[GOTOFF(eax,PW_ONE)]
        paddw   mm0,[GOTOFF(eax,PW_ONE)]
        psraw   mm7,1                   ; mm7=(CrH * FIX(0.40200))
        psraw   mm0,1                   ; mm0=(CrL * FIX(0.40200))

        paddw   mm6,mm5
        paddw   mm4,mm2
        paddw   mm6,mm5                 ; mm6=(CbH * FIX(1.77200))=(B-Y)H
        paddw   mm4,mm2                 ; mm4=(CbL * FIX(1.77200))=(B-Y)L
        paddw   mm7,mm1                 ; mm7=(CrH * FIX(1.40200))=(R-Y)H
        paddw   mm0,mm3                 ; mm0=(CrL * FIX(1.40200))=(R-Y)L

        movq    MMWORD [wk(0)], mm6     ; wk(0)=(B-Y)H
        movq    MMWORD [wk(1)], mm7     ; wk(1)=(R-Y)H

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

        paddd     mm5,[GOTOFF(eax,PD_ONEHALF)]
        paddd     mm6,[GOTOFF(eax,PD_ONEHALF)]
        psrad     mm5,SCALEBITS
        psrad     mm6,SCALEBITS
        paddd     mm2,[GOTOFF(eax,PD_ONEHALF)]
        paddd     mm7,[GOTOFF(eax,PD_ONEHALF)]
        psrad     mm2,SCALEBITS
        psrad     mm7,SCALEBITS

        packssdw  mm5,mm6       ; mm5=CbH*-FIX(0.344)+CrH*FIX(0.285)
        packssdw  mm2,mm7       ; mm2=CbL*-FIX(0.344)+CrL*FIX(0.285)
        psubw     mm5,mm1       ; mm5=CbH*-FIX(0.344)+CrH*-FIX(0.714)=(G-Y)H
        psubw     mm2,mm3       ; mm2=CbL*-FIX(0.344)+CrL*-FIX(0.714)=(G-Y)L

        movq    MMWORD [wk(2)], mm5     ; wk(2)=(G-Y)H

        mov     al,2                    ; Yctr
        jmp     short .Yloop_1st
        alignx  16,7

.Yloop_2nd:
        movq    mm0, MMWORD [wk(1)]     ; mm0=(R-Y)H
        movq    mm2, MMWORD [wk(2)]     ; mm2=(G-Y)H
        movq    mm4, MMWORD [wk(0)]     ; mm4=(B-Y)H
        alignx  16,7

.Yloop_1st:
        movq    mm7, MMWORD [esi]       ; mm7=Y(01234567)

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

        movq    mm1,mm0                 ; mm1=mm0=(R-Y)(L/H)
        movq    mm3,mm2                 ; mm3=mm2=(G-Y)(L/H)
        movq    mm5,mm4                 ; mm5=mm4=(B-Y)(L/H)

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

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

        paddw     mm4,mm6               ; mm4=((B-Y)+YE)=BE=(B0 B2 B4 B6)
        paddw     mm5,mm7               ; mm5=((B-Y)+YO)=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      near .endcolumn

        add     edi, byte RGB_PIXELSIZE*SIZEOF_MMWORD   ; outptr
        add     esi, byte SIZEOF_MMWORD                 ; inptr0
        dec     al                      ; Yctr
        jnz     near .Yloop_2nd

        add     ebx, byte SIZEOF_MMWORD                 ; inptr1
        add     edx, byte SIZEOF_MMWORD                 ; inptr2
        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 .endcolumn
        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 .endcolumn

        add     edi, byte RGB_PIXELSIZE*SIZEOF_MMWORD   ; outptr
        add     esi, byte SIZEOF_MMWORD                 ; inptr0
        dec     al                      ; Yctr
        jnz     near .Yloop_2nd

        add     ebx, byte SIZEOF_MMWORD                 ; inptr1
        add     edx, byte SIZEOF_MMWORD                 ; inptr2
        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 .endcolumn
        movd    DWORD [edi+0*SIZEOF_DWORD], mmA

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

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

; --------------------------------------------------------------------------
;
; Upsample and color convert for the case of 2:1 horizontal and 2:1 vertical.
;
; GLOBAL(void)
; jsimd_h2v2_merged_upsample_mmx (JDIMENSION output_width,
;                                 JSAMPIMAGE input_buf,
;                                 JDIMENSION in_row_group_ctr,
;                                 JSAMPARRAY output_buf);
;

%define output_width(b) (b)+8                   ; JDIMENSION output_width
%define input_buf(b)            (b)+12          ; JSAMPIMAGE input_buf
%define in_row_group_ctr(b)     (b)+16          ; JDIMENSION in_row_group_ctr
%define output_buf(b)           (b)+20          ; JSAMPARRAY output_buf

        align   16
        global  EXTN(jsimd_h2v2_merged_upsample_mmx)

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

        mov     eax, JDIMENSION [output_width(ebp)]

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

        push    edx                     ; inptr2
        push    ebx                     ; inptr1
        push    esi                     ; inptr00
        mov     ebx,esp

        push    edi                     ; output_buf (outptr0)
        push    ecx                     ; in_row_group_ctr
        push    ebx                     ; input_buf
        push    eax                     ; output_width

        call    near EXTN(jsimd_h2v1_merged_upsample_mmx)

        add     esi, byte SIZEOF_JSAMPROW       ; inptr01
        add     edi, byte SIZEOF_JSAMPROW       ; outptr1
        mov     POINTER [ebx+0*SIZEOF_POINTER], esi
        mov     POINTER [ebx-1*SIZEOF_POINTER], edi

        call    near EXTN(jsimd_h2v1_merged_upsample_mmx)

        add     esp, byte 7*SIZEOF_DWORD

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