;
; jdmrgmmx.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) PRIVATE

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

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
