;
; jdmrgss2.asm - merged upsampling/color conversion (SSE2)
;
; Copyright 2009, 2012 Pierre Ossman <ossman@cendio.se> for Cendio AB
; Copyright 2012 D. R. Commander
;
; 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_sse2 (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_XMMWORD ; xmmword wk[WK_NUM]
%define WK_NUM          3
%define gotptr          wk(0)-SIZEOF_POINTER    ; void * gotptr

        align   16
        global  EXTN(jsimd_h2v1_merged_upsample_sse2)

EXTN(jsimd_h2v1_merged_upsample_sse2):
        push    ebp
        mov     eax,esp                         ; eax = original ebp
        sub     esp, byte 4
        and     esp, byte (-SIZEOF_XMMWORD)     ; align to 128 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)

        movdqa    xmm6, XMMWORD [ebx]   ; xmm6=Cb(0123456789ABCDEF)
        movdqa    xmm7, XMMWORD [edx]   ; xmm7=Cr(0123456789ABCDEF)

        pxor      xmm1,xmm1             ; xmm1=(all 0's)
        pcmpeqw   xmm3,xmm3
        psllw     xmm3,7                ; xmm3={0xFF80 0xFF80 0xFF80 0xFF80 ..}

        movdqa    xmm4,xmm6
        punpckhbw xmm6,xmm1             ; xmm6=Cb(89ABCDEF)=CbH
        punpcklbw xmm4,xmm1             ; xmm4=Cb(01234567)=CbL
        movdqa    xmm0,xmm7
        punpckhbw xmm7,xmm1             ; xmm7=Cr(89ABCDEF)=CrH
        punpcklbw xmm0,xmm1             ; xmm0=Cr(01234567)=CrL

        paddw     xmm6,xmm3
        paddw     xmm4,xmm3
        paddw     xmm7,xmm3
        paddw     xmm0,xmm3

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

        movdqa  xmm5,xmm6               ; xmm5=CbH
        movdqa  xmm2,xmm4               ; xmm2=CbL
        paddw   xmm6,xmm6               ; xmm6=2*CbH
        paddw   xmm4,xmm4               ; xmm4=2*CbL
        movdqa  xmm1,xmm7               ; xmm1=CrH
        movdqa  xmm3,xmm0               ; xmm3=CrL
        paddw   xmm7,xmm7               ; xmm7=2*CrH
        paddw   xmm0,xmm0               ; xmm0=2*CrL

        pmulhw  xmm6,[GOTOFF(eax,PW_MF0228)]    ; xmm6=(2*CbH * -FIX(0.22800))
        pmulhw  xmm4,[GOTOFF(eax,PW_MF0228)]    ; xmm4=(2*CbL * -FIX(0.22800))
        pmulhw  xmm7,[GOTOFF(eax,PW_F0402)]     ; xmm7=(2*CrH * FIX(0.40200))
        pmulhw  xmm0,[GOTOFF(eax,PW_F0402)]     ; xmm0=(2*CrL * FIX(0.40200))

        paddw   xmm6,[GOTOFF(eax,PW_ONE)]
        paddw   xmm4,[GOTOFF(eax,PW_ONE)]
        psraw   xmm6,1                  ; xmm6=(CbH * -FIX(0.22800))
        psraw   xmm4,1                  ; xmm4=(CbL * -FIX(0.22800))
        paddw   xmm7,[GOTOFF(eax,PW_ONE)]
        paddw   xmm0,[GOTOFF(eax,PW_ONE)]
        psraw   xmm7,1                  ; xmm7=(CrH * FIX(0.40200))
        psraw   xmm0,1                  ; xmm0=(CrL * FIX(0.40200))

        paddw   xmm6,xmm5
        paddw   xmm4,xmm2
        paddw   xmm6,xmm5               ; xmm6=(CbH * FIX(1.77200))=(B-Y)H
        paddw   xmm4,xmm2               ; xmm4=(CbL * FIX(1.77200))=(B-Y)L
        paddw   xmm7,xmm1               ; xmm7=(CrH * FIX(1.40200))=(R-Y)H
        paddw   xmm0,xmm3               ; xmm0=(CrL * FIX(1.40200))=(R-Y)L

        movdqa  XMMWORD [wk(0)], xmm6   ; wk(0)=(B-Y)H
        movdqa  XMMWORD [wk(1)], xmm7   ; wk(1)=(R-Y)H

        movdqa    xmm6,xmm5
        movdqa    xmm7,xmm2
        punpcklwd xmm5,xmm1
        punpckhwd xmm6,xmm1
        pmaddwd   xmm5,[GOTOFF(eax,PW_MF0344_F0285)]
        pmaddwd   xmm6,[GOTOFF(eax,PW_MF0344_F0285)]
        punpcklwd xmm2,xmm3
        punpckhwd xmm7,xmm3
        pmaddwd   xmm2,[GOTOFF(eax,PW_MF0344_F0285)]
        pmaddwd   xmm7,[GOTOFF(eax,PW_MF0344_F0285)]

        paddd     xmm5,[GOTOFF(eax,PD_ONEHALF)]
        paddd     xmm6,[GOTOFF(eax,PD_ONEHALF)]
        psrad     xmm5,SCALEBITS
        psrad     xmm6,SCALEBITS
        paddd     xmm2,[GOTOFF(eax,PD_ONEHALF)]
        paddd     xmm7,[GOTOFF(eax,PD_ONEHALF)]
        psrad     xmm2,SCALEBITS
        psrad     xmm7,SCALEBITS

        packssdw  xmm5,xmm6     ; xmm5=CbH*-FIX(0.344)+CrH*FIX(0.285)
        packssdw  xmm2,xmm7     ; xmm2=CbL*-FIX(0.344)+CrL*FIX(0.285)
        psubw     xmm5,xmm1     ; xmm5=CbH*-FIX(0.344)+CrH*-FIX(0.714)=(G-Y)H
        psubw     xmm2,xmm3     ; xmm2=CbL*-FIX(0.344)+CrL*-FIX(0.714)=(G-Y)L

        movdqa  XMMWORD [wk(2)], xmm5   ; wk(2)=(G-Y)H

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

.Yloop_2nd:
        movdqa  xmm0, XMMWORD [wk(1)]   ; xmm0=(R-Y)H
        movdqa  xmm2, XMMWORD [wk(2)]   ; xmm2=(G-Y)H
        movdqa  xmm4, XMMWORD [wk(0)]   ; xmm4=(B-Y)H
        alignx  16,7

.Yloop_1st:
        movdqa  xmm7, XMMWORD [esi]     ; xmm7=Y(0123456789ABCDEF)

        pcmpeqw xmm6,xmm6
        psrlw   xmm6,BYTE_BIT           ; xmm6={0xFF 0x00 0xFF 0x00 ..}
        pand    xmm6,xmm7               ; xmm6=Y(02468ACE)=YE
        psrlw   xmm7,BYTE_BIT           ; xmm7=Y(13579BDF)=YO

        movdqa  xmm1,xmm0               ; xmm1=xmm0=(R-Y)(L/H)
        movdqa  xmm3,xmm2               ; xmm3=xmm2=(G-Y)(L/H)
        movdqa  xmm5,xmm4               ; xmm5=xmm4=(B-Y)(L/H)

        paddw     xmm0,xmm6             ; xmm0=((R-Y)+YE)=RE=R(02468ACE)
        paddw     xmm1,xmm7             ; xmm1=((R-Y)+YO)=RO=R(13579BDF)
        packuswb  xmm0,xmm0             ; xmm0=R(02468ACE********)
        packuswb  xmm1,xmm1             ; xmm1=R(13579BDF********)

        paddw     xmm2,xmm6             ; xmm2=((G-Y)+YE)=GE=G(02468ACE)
        paddw     xmm3,xmm7             ; xmm3=((G-Y)+YO)=GO=G(13579BDF)
        packuswb  xmm2,xmm2             ; xmm2=G(02468ACE********)
        packuswb  xmm3,xmm3             ; xmm3=G(13579BDF********)

        paddw     xmm4,xmm6             ; xmm4=((B-Y)+YE)=BE=B(02468ACE)
        paddw     xmm5,xmm7             ; xmm5=((B-Y)+YO)=BO=B(13579BDF)
        packuswb  xmm4,xmm4             ; xmm4=B(02468ACE********)
        packuswb  xmm5,xmm5             ; xmm5=B(13579BDF********)

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

        ; xmmA=(00 02 04 06 08 0A 0C 0E **), xmmB=(01 03 05 07 09 0B 0D 0F **)
        ; xmmC=(10 12 14 16 18 1A 1C 1E **), xmmD=(11 13 15 17 19 1B 1D 1F **)
        ; xmmE=(20 22 24 26 28 2A 2C 2E **), xmmF=(21 23 25 27 29 2B 2D 2F **)
        ; xmmG=(** ** ** ** ** ** ** ** **), xmmH=(** ** ** ** ** ** ** ** **)

        punpcklbw xmmA,xmmC     ; xmmA=(00 10 02 12 04 14 06 16 08 18 0A 1A 0C 1C 0E 1E)
        punpcklbw xmmE,xmmB     ; xmmE=(20 01 22 03 24 05 26 07 28 09 2A 0B 2C 0D 2E 0F)
        punpcklbw xmmD,xmmF     ; xmmD=(11 21 13 23 15 25 17 27 19 29 1B 2B 1D 2D 1F 2F)

        movdqa    xmmG,xmmA
        movdqa    xmmH,xmmA
        punpcklwd xmmA,xmmE     ; xmmA=(00 10 20 01 02 12 22 03 04 14 24 05 06 16 26 07)
        punpckhwd xmmG,xmmE     ; xmmG=(08 18 28 09 0A 1A 2A 0B 0C 1C 2C 0D 0E 1E 2E 0F)

        psrldq    xmmH,2        ; xmmH=(02 12 04 14 06 16 08 18 0A 1A 0C 1C 0E 1E -- --)
        psrldq    xmmE,2        ; xmmE=(22 03 24 05 26 07 28 09 2A 0B 2C 0D 2E 0F -- --)

        movdqa    xmmC,xmmD
        movdqa    xmmB,xmmD
        punpcklwd xmmD,xmmH     ; xmmD=(11 21 02 12 13 23 04 14 15 25 06 16 17 27 08 18)
        punpckhwd xmmC,xmmH     ; xmmC=(19 29 0A 1A 1B 2B 0C 1C 1D 2D 0E 1E 1F 2F -- --)

        psrldq    xmmB,2        ; xmmB=(13 23 15 25 17 27 19 29 1B 2B 1D 2D 1F 2F -- --)

        movdqa    xmmF,xmmE
        punpcklwd xmmE,xmmB     ; xmmE=(22 03 13 23 24 05 15 25 26 07 17 27 28 09 19 29)
        punpckhwd xmmF,xmmB     ; xmmF=(2A 0B 1B 2B 2C 0D 1D 2D 2E 0F 1F 2F -- -- -- --)

        pshufd    xmmH,xmmA,0x4E; xmmH=(04 14 24 05 06 16 26 07 00 10 20 01 02 12 22 03)
        movdqa    xmmB,xmmE
        punpckldq xmmA,xmmD     ; xmmA=(00 10 20 01 11 21 02 12 02 12 22 03 13 23 04 14)
        punpckldq xmmE,xmmH     ; xmmE=(22 03 13 23 04 14 24 05 24 05 15 25 06 16 26 07)
        punpckhdq xmmD,xmmB     ; xmmD=(15 25 06 16 26 07 17 27 17 27 08 18 28 09 19 29)

        pshufd    xmmH,xmmG,0x4E; xmmH=(0C 1C 2C 0D 0E 1E 2E 0F 08 18 28 09 0A 1A 2A 0B)
        movdqa    xmmB,xmmF
        punpckldq xmmG,xmmC     ; xmmG=(08 18 28 09 19 29 0A 1A 0A 1A 2A 0B 1B 2B 0C 1C)
        punpckldq xmmF,xmmH     ; xmmF=(2A 0B 1B 2B 0C 1C 2C 0D 2C 0D 1D 2D 0E 1E 2E 0F)
        punpckhdq xmmC,xmmB     ; xmmC=(1D 2D 0E 1E 2E 0F 1F 2F 1F 2F -- -- -- -- -- --)

        punpcklqdq xmmA,xmmE    ; xmmA=(00 10 20 01 11 21 02 12 22 03 13 23 04 14 24 05)
        punpcklqdq xmmD,xmmG    ; xmmD=(15 25 06 16 26 07 17 27 08 18 28 09 19 29 0A 1A)
        punpcklqdq xmmF,xmmC    ; xmmF=(2A 0B 1B 2B 0C 1C 2C 0D 1D 2D 0E 1E 2E 0F 1F 2F)

        cmp     ecx, byte SIZEOF_XMMWORD
        jb      short .column_st32

        test    edi, SIZEOF_XMMWORD-1
        jnz     short .out1
        ; --(aligned)-------------------
        movntdq XMMWORD [edi+0*SIZEOF_XMMWORD], xmmA
        movntdq XMMWORD [edi+1*SIZEOF_XMMWORD], xmmD
        movntdq XMMWORD [edi+2*SIZEOF_XMMWORD], xmmF
        jmp     short .out0
.out1:  ; --(unaligned)-----------------
        movdqu  XMMWORD [edi+0*SIZEOF_XMMWORD], xmmA
        movdqu  XMMWORD [edi+1*SIZEOF_XMMWORD], xmmD
        movdqu  XMMWORD [edi+2*SIZEOF_XMMWORD], xmmF
.out0:
        add     edi, byte RGB_PIXELSIZE*SIZEOF_XMMWORD  ; outptr
        sub     ecx, byte SIZEOF_XMMWORD
        jz      near .endcolumn

        add     esi, byte SIZEOF_XMMWORD        ; inptr0
        dec     al                      ; Yctr
        jnz     near .Yloop_2nd

        add     ebx, byte SIZEOF_XMMWORD        ; inptr1
        add     edx, byte SIZEOF_XMMWORD        ; inptr2
        jmp     near .columnloop
        alignx  16,7

.column_st32:
        lea     ecx, [ecx+ecx*2]                ; imul ecx, RGB_PIXELSIZE
        cmp     ecx, byte 2*SIZEOF_XMMWORD
        jb      short .column_st16
        movdqu  XMMWORD [edi+0*SIZEOF_XMMWORD], xmmA
        movdqu  XMMWORD [edi+1*SIZEOF_XMMWORD], xmmD
        add     edi, byte 2*SIZEOF_XMMWORD      ; outptr
        movdqa  xmmA,xmmF
        sub     ecx, byte 2*SIZEOF_XMMWORD
        jmp     short .column_st15
.column_st16:
        cmp     ecx, byte SIZEOF_XMMWORD
        jb      short .column_st15
        movdqu  XMMWORD [edi+0*SIZEOF_XMMWORD], xmmA
        add     edi, byte SIZEOF_XMMWORD        ; outptr
        movdqa  xmmA,xmmD
        sub     ecx, byte SIZEOF_XMMWORD
.column_st15:
        ; Store the lower 8 bytes of xmmA to the output when it has enough
        ; space.
        cmp     ecx, byte SIZEOF_MMWORD
        jb      short .column_st7
        movq    XMM_MMWORD [edi], xmmA
        add     edi, byte SIZEOF_MMWORD
        sub     ecx, byte SIZEOF_MMWORD
        psrldq  xmmA, SIZEOF_MMWORD
.column_st7:
        ; Store the lower 4 bytes of xmmA to the output when it has enough
        ; space.
        cmp     ecx, byte SIZEOF_DWORD
        jb      short .column_st3
        movd    XMM_DWORD [edi], xmmA
        add     edi, byte SIZEOF_DWORD
        sub     ecx, byte SIZEOF_DWORD
        psrldq  xmmA, SIZEOF_DWORD
.column_st3:
        ; Store the lower 2 bytes of eax to the output when it has enough
        ; space.
        movd    eax, xmmA
        cmp     ecx, byte SIZEOF_WORD
        jb      short .column_st1
        mov     WORD [edi], ax
        add     edi, byte SIZEOF_WORD
        sub     ecx, byte SIZEOF_WORD
        shr     eax, 16
.column_st1:
        ; Store the lower 1 byte of eax to the output when it has enough
        ; space.
        test    ecx, ecx
        jz      short .endcolumn
        mov     BYTE [edi], al

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

%ifdef RGBX_FILLER_0XFF
        pcmpeqb   xmm6,xmm6             ; xmm6=XE=X(02468ACE********)
        pcmpeqb   xmm7,xmm7             ; xmm7=XO=X(13579BDF********)
%else
        pxor      xmm6,xmm6             ; xmm6=XE=X(02468ACE********)
        pxor      xmm7,xmm7             ; xmm7=XO=X(13579BDF********)
%endif
        ; xmmA=(00 02 04 06 08 0A 0C 0E **), xmmB=(01 03 05 07 09 0B 0D 0F **)
        ; xmmC=(10 12 14 16 18 1A 1C 1E **), xmmD=(11 13 15 17 19 1B 1D 1F **)
        ; xmmE=(20 22 24 26 28 2A 2C 2E **), xmmF=(21 23 25 27 29 2B 2D 2F **)
        ; xmmG=(30 32 34 36 38 3A 3C 3E **), xmmH=(31 33 35 37 39 3B 3D 3F **)

        punpcklbw xmmA,xmmC     ; xmmA=(00 10 02 12 04 14 06 16 08 18 0A 1A 0C 1C 0E 1E)
        punpcklbw xmmE,xmmG     ; xmmE=(20 30 22 32 24 34 26 36 28 38 2A 3A 2C 3C 2E 3E)
        punpcklbw xmmB,xmmD     ; xmmB=(01 11 03 13 05 15 07 17 09 19 0B 1B 0D 1D 0F 1F)
        punpcklbw xmmF,xmmH     ; xmmF=(21 31 23 33 25 35 27 37 29 39 2B 3B 2D 3D 2F 3F)

        movdqa    xmmC,xmmA
        punpcklwd xmmA,xmmE     ; xmmA=(00 10 20 30 02 12 22 32 04 14 24 34 06 16 26 36)
        punpckhwd xmmC,xmmE     ; xmmC=(08 18 28 38 0A 1A 2A 3A 0C 1C 2C 3C 0E 1E 2E 3E)
        movdqa    xmmG,xmmB
        punpcklwd xmmB,xmmF     ; xmmB=(01 11 21 31 03 13 23 33 05 15 25 35 07 17 27 37)
        punpckhwd xmmG,xmmF     ; xmmG=(09 19 29 39 0B 1B 2B 3B 0D 1D 2D 3D 0F 1F 2F 3F)

        movdqa    xmmD,xmmA
        punpckldq xmmA,xmmB     ; xmmA=(00 10 20 30 01 11 21 31 02 12 22 32 03 13 23 33)
        punpckhdq xmmD,xmmB     ; xmmD=(04 14 24 34 05 15 25 35 06 16 26 36 07 17 27 37)
        movdqa    xmmH,xmmC
        punpckldq xmmC,xmmG     ; xmmC=(08 18 28 38 09 19 29 39 0A 1A 2A 3A 0B 1B 2B 3B)
        punpckhdq xmmH,xmmG     ; xmmH=(0C 1C 2C 3C 0D 1D 2D 3D 0E 1E 2E 3E 0F 1F 2F 3F)

        cmp     ecx, byte SIZEOF_XMMWORD
        jb      short .column_st32

        test    edi, SIZEOF_XMMWORD-1
        jnz     short .out1
        ; --(aligned)-------------------
        movntdq XMMWORD [edi+0*SIZEOF_XMMWORD], xmmA
        movntdq XMMWORD [edi+1*SIZEOF_XMMWORD], xmmD
        movntdq XMMWORD [edi+2*SIZEOF_XMMWORD], xmmC
        movntdq XMMWORD [edi+3*SIZEOF_XMMWORD], xmmH
        jmp     short .out0
.out1:  ; --(unaligned)-----------------
        movdqu  XMMWORD [edi+0*SIZEOF_XMMWORD], xmmA
        movdqu  XMMWORD [edi+1*SIZEOF_XMMWORD], xmmD
        movdqu  XMMWORD [edi+2*SIZEOF_XMMWORD], xmmC
        movdqu  XMMWORD [edi+3*SIZEOF_XMMWORD], xmmH
.out0:
        add     edi, byte RGB_PIXELSIZE*SIZEOF_XMMWORD  ; outptr
        sub     ecx, byte SIZEOF_XMMWORD
        jz      near .endcolumn

        add     esi, byte SIZEOF_XMMWORD        ; inptr0
        dec     al                      ; Yctr
        jnz     near .Yloop_2nd

        add     ebx, byte SIZEOF_XMMWORD        ; inptr1
        add     edx, byte SIZEOF_XMMWORD        ; inptr2
        jmp     near .columnloop
        alignx  16,7

.column_st32:
        cmp     ecx, byte SIZEOF_XMMWORD/2
        jb      short .column_st16
        movdqu  XMMWORD [edi+0*SIZEOF_XMMWORD], xmmA
        movdqu  XMMWORD [edi+1*SIZEOF_XMMWORD], xmmD
        add     edi, byte 2*SIZEOF_XMMWORD      ; outptr
        movdqa  xmmA,xmmC
        movdqa  xmmD,xmmH
        sub     ecx, byte SIZEOF_XMMWORD/2
.column_st16:
        cmp     ecx, byte SIZEOF_XMMWORD/4
        jb      short .column_st15
        movdqu  XMMWORD [edi+0*SIZEOF_XMMWORD], xmmA
        add     edi, byte SIZEOF_XMMWORD        ; outptr
        movdqa  xmmA,xmmD
        sub     ecx, byte SIZEOF_XMMWORD/4
.column_st15:
        ; Store two pixels (8 bytes) of xmmA to the output when it has enough
        ; space.
        cmp     ecx, byte SIZEOF_XMMWORD/8
        jb      short .column_st7
        movq    XMM_MMWORD [edi], xmmA
        add     edi, byte SIZEOF_XMMWORD/8*4
        sub     ecx, byte SIZEOF_XMMWORD/8
        psrldq  xmmA, SIZEOF_XMMWORD/8*4
.column_st7:
        ; Store one pixel (4 bytes) of xmmA to the output when it has enough
        ; space.
        test    ecx, ecx
        jz      short .endcolumn
        movd    XMM_DWORD [edi], xmmA

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

.endcolumn:
        sfence          ; flush the write buffer

.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_sse2 (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_sse2)

EXTN(jsimd_h2v2_merged_upsample_sse2):
        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, POINTER [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_sse2)

        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_sse2)

        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
