;
; jiss2flt-64.asm - floating-point IDCT (64-bit SSE & SSE2)
;
; Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
; Copyright 2009 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
;
; This file contains a floating-point implementation of the inverse DCT
; (Discrete Cosine Transform). The following code is based directly on
; the IJG's original jidctflt.c; see the jidctflt.c for more details.
;
; [TAB8]

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

; --------------------------------------------------------------------------

%macro	unpcklps2 2	; %1=(0 1 2 3) / %2=(4 5 6 7) => %1=(0 1 4 5)
	shufps	%1,%2,0x44
%endmacro

%macro	unpckhps2 2	; %1=(0 1 2 3) / %2=(4 5 6 7) => %1=(2 3 6 7)
	shufps	%1,%2,0xEE
%endmacro

; --------------------------------------------------------------------------
	SECTION	SEG_CONST

	alignz	16
	global	EXTN(jconst_idct_float_sse2) PRIVATE

EXTN(jconst_idct_float_sse2):

PD_1_414	times 4 dd  1.414213562373095048801689
PD_1_847	times 4 dd  1.847759065022573512256366
PD_1_082	times 4 dd  1.082392200292393968799446
PD_M2_613	times 4 dd -2.613125929752753055713286
PD_RNDINT_MAGIC	times 4 dd  100663296.0	; (float)(0x00C00000 << 3)
PB_CENTERJSAMP	times 16 db CENTERJSAMPLE

	alignz	16

; --------------------------------------------------------------------------
	SECTION	SEG_TEXT
	BITS	64
;
; Perform dequantization and inverse DCT on one block of coefficients.
;
; GLOBAL(void)
; jsimd_idct_float_sse2 (void * dct_table, JCOEFPTR coef_block,
;                        JSAMPARRAY output_buf, JDIMENSION output_col)
;

; r10 = void * dct_table
; r11 = JCOEFPTR coef_block
; r12 = JSAMPARRAY output_buf
; r13 = JDIMENSION output_col

%define original_rbp	rbp+0
%define wk(i)		rbp-(WK_NUM-(i))*SIZEOF_XMMWORD	; xmmword wk[WK_NUM]
%define WK_NUM		2
%define workspace	wk(0)-DCTSIZE2*SIZEOF_FAST_FLOAT
					; FAST_FLOAT workspace[DCTSIZE2]

	align	16
	global	EXTN(jsimd_idct_float_sse2) PRIVATE

EXTN(jsimd_idct_float_sse2):
	push	rbp
	mov	rax,rsp				; rax = original rbp
	sub	rsp, byte 4
	and	rsp, byte (-SIZEOF_XMMWORD)	; align to 128 bits
	mov	[rsp],rax
	mov	rbp,rsp				; rbp = aligned rbp
	lea	rsp, [workspace]
	collect_args
	push	rbx

	; ---- Pass 1: process columns from input, store into work array.

	mov	rdx, r10	; quantptr
	mov	rsi, r11		; inptr
	lea	rdi, [workspace]			; FAST_FLOAT * wsptr
	mov	rcx, DCTSIZE/4				; ctr
.columnloop:
%ifndef NO_ZERO_COLUMN_TEST_FLOAT_SSE
	mov	eax, DWORD [DWBLOCK(1,0,rsi,SIZEOF_JCOEF)]
	or	eax, DWORD [DWBLOCK(2,0,rsi,SIZEOF_JCOEF)]
	jnz	near .columnDCT

	movq	xmm1, XMM_MMWORD [MMBLOCK(1,0,rsi,SIZEOF_JCOEF)]
	movq	xmm2, XMM_MMWORD [MMBLOCK(2,0,rsi,SIZEOF_JCOEF)]
	movq	xmm3, XMM_MMWORD [MMBLOCK(3,0,rsi,SIZEOF_JCOEF)]
	movq	xmm4, XMM_MMWORD [MMBLOCK(4,0,rsi,SIZEOF_JCOEF)]
	movq	xmm5, XMM_MMWORD [MMBLOCK(5,0,rsi,SIZEOF_JCOEF)]
	movq	xmm6, XMM_MMWORD [MMBLOCK(6,0,rsi,SIZEOF_JCOEF)]
	movq	xmm7, XMM_MMWORD [MMBLOCK(7,0,rsi,SIZEOF_JCOEF)]
	por	xmm1,xmm2
	por	xmm3,xmm4
	por	xmm5,xmm6
	por	xmm1,xmm3
	por	xmm5,xmm7
	por	xmm1,xmm5
	packsswb xmm1,xmm1
	movd	eax,xmm1
	test	rax,rax
	jnz	short .columnDCT

	; -- AC terms all zero

	movq      xmm0, XMM_MMWORD [MMBLOCK(0,0,rsi,SIZEOF_JCOEF)]

	punpcklwd xmm0,xmm0		; xmm0=(00 00 01 01 02 02 03 03)
	psrad     xmm0,(DWORD_BIT-WORD_BIT)	; xmm0=in0=(00 01 02 03)
	cvtdq2ps  xmm0,xmm0			; xmm0=in0=(00 01 02 03)

	mulps	xmm0, XMMWORD [XMMBLOCK(0,0,rdx,SIZEOF_FLOAT_MULT_TYPE)]

	movaps	xmm1,xmm0
	movaps	xmm2,xmm0
	movaps	xmm3,xmm0

	shufps	xmm0,xmm0,0x00			; xmm0=(00 00 00 00)
	shufps	xmm1,xmm1,0x55			; xmm1=(01 01 01 01)
	shufps	xmm2,xmm2,0xAA			; xmm2=(02 02 02 02)
	shufps	xmm3,xmm3,0xFF			; xmm3=(03 03 03 03)

	movaps	XMMWORD [XMMBLOCK(0,0,rdi,SIZEOF_FAST_FLOAT)], xmm0
	movaps	XMMWORD [XMMBLOCK(0,1,rdi,SIZEOF_FAST_FLOAT)], xmm0
	movaps	XMMWORD [XMMBLOCK(1,0,rdi,SIZEOF_FAST_FLOAT)], xmm1
	movaps	XMMWORD [XMMBLOCK(1,1,rdi,SIZEOF_FAST_FLOAT)], xmm1
	movaps	XMMWORD [XMMBLOCK(2,0,rdi,SIZEOF_FAST_FLOAT)], xmm2
	movaps	XMMWORD [XMMBLOCK(2,1,rdi,SIZEOF_FAST_FLOAT)], xmm2
	movaps	XMMWORD [XMMBLOCK(3,0,rdi,SIZEOF_FAST_FLOAT)], xmm3
	movaps	XMMWORD [XMMBLOCK(3,1,rdi,SIZEOF_FAST_FLOAT)], xmm3
	jmp	near .nextcolumn
%endif
.columnDCT:

	; -- Even part

	movq      xmm0, XMM_MMWORD [MMBLOCK(0,0,rsi,SIZEOF_JCOEF)]
	movq      xmm1, XMM_MMWORD [MMBLOCK(2,0,rsi,SIZEOF_JCOEF)]
	movq      xmm2, XMM_MMWORD [MMBLOCK(4,0,rsi,SIZEOF_JCOEF)]
	movq      xmm3, XMM_MMWORD [MMBLOCK(6,0,rsi,SIZEOF_JCOEF)]

	punpcklwd xmm0,xmm0		; xmm0=(00 00 01 01 02 02 03 03)
	punpcklwd xmm1,xmm1		; xmm1=(20 20 21 21 22 22 23 23)
	psrad     xmm0,(DWORD_BIT-WORD_BIT)	; xmm0=in0=(00 01 02 03)
	psrad     xmm1,(DWORD_BIT-WORD_BIT)	; xmm1=in2=(20 21 22 23)
	cvtdq2ps  xmm0,xmm0			; xmm0=in0=(00 01 02 03)
	cvtdq2ps  xmm1,xmm1			; xmm1=in2=(20 21 22 23)

	punpcklwd xmm2,xmm2		; xmm2=(40 40 41 41 42 42 43 43)
	punpcklwd xmm3,xmm3		; xmm3=(60 60 61 61 62 62 63 63)
	psrad     xmm2,(DWORD_BIT-WORD_BIT)	; xmm2=in4=(40 41 42 43)
	psrad     xmm3,(DWORD_BIT-WORD_BIT)	; xmm3=in6=(60 61 62 63)
	cvtdq2ps  xmm2,xmm2			; xmm2=in4=(40 41 42 43)
	cvtdq2ps  xmm3,xmm3			; xmm3=in6=(60 61 62 63)

	mulps     xmm0, XMMWORD [XMMBLOCK(0,0,rdx,SIZEOF_FLOAT_MULT_TYPE)]
	mulps     xmm1, XMMWORD [XMMBLOCK(2,0,rdx,SIZEOF_FLOAT_MULT_TYPE)]
	mulps     xmm2, XMMWORD [XMMBLOCK(4,0,rdx,SIZEOF_FLOAT_MULT_TYPE)]
	mulps     xmm3, XMMWORD [XMMBLOCK(6,0,rdx,SIZEOF_FLOAT_MULT_TYPE)]

	movaps	xmm4,xmm0
	movaps	xmm5,xmm1
	subps	xmm0,xmm2		; xmm0=tmp11
	subps	xmm1,xmm3
	addps	xmm4,xmm2		; xmm4=tmp10
	addps	xmm5,xmm3		; xmm5=tmp13

	mulps	xmm1,[rel PD_1_414]
	subps	xmm1,xmm5		; xmm1=tmp12

	movaps	xmm6,xmm4
	movaps	xmm7,xmm0
	subps	xmm4,xmm5		; xmm4=tmp3
	subps	xmm0,xmm1		; xmm0=tmp2
	addps	xmm6,xmm5		; xmm6=tmp0
	addps	xmm7,xmm1		; xmm7=tmp1

	movaps	XMMWORD [wk(1)], xmm4	; tmp3
	movaps	XMMWORD [wk(0)], xmm0	; tmp2

	; -- Odd part

	movq      xmm2, XMM_MMWORD [MMBLOCK(1,0,rsi,SIZEOF_JCOEF)]
	movq      xmm3, XMM_MMWORD [MMBLOCK(3,0,rsi,SIZEOF_JCOEF)]
	movq      xmm5, XMM_MMWORD [MMBLOCK(5,0,rsi,SIZEOF_JCOEF)]
	movq      xmm1, XMM_MMWORD [MMBLOCK(7,0,rsi,SIZEOF_JCOEF)]

	punpcklwd xmm2,xmm2		; xmm2=(10 10 11 11 12 12 13 13)
	punpcklwd xmm3,xmm3		; xmm3=(30 30 31 31 32 32 33 33)
	psrad     xmm2,(DWORD_BIT-WORD_BIT)	; xmm2=in1=(10 11 12 13)
	psrad     xmm3,(DWORD_BIT-WORD_BIT)	; xmm3=in3=(30 31 32 33)
	cvtdq2ps  xmm2,xmm2			; xmm2=in1=(10 11 12 13)
	cvtdq2ps  xmm3,xmm3			; xmm3=in3=(30 31 32 33)

	punpcklwd xmm5,xmm5		; xmm5=(50 50 51 51 52 52 53 53)
	punpcklwd xmm1,xmm1		; xmm1=(70 70 71 71 72 72 73 73)
	psrad     xmm5,(DWORD_BIT-WORD_BIT)	; xmm5=in5=(50 51 52 53)
	psrad     xmm1,(DWORD_BIT-WORD_BIT)	; xmm1=in7=(70 71 72 73)
	cvtdq2ps  xmm5,xmm5			; xmm5=in5=(50 51 52 53)
	cvtdq2ps  xmm1,xmm1			; xmm1=in7=(70 71 72 73)

	mulps     xmm2, XMMWORD [XMMBLOCK(1,0,rdx,SIZEOF_FLOAT_MULT_TYPE)]
	mulps     xmm3, XMMWORD [XMMBLOCK(3,0,rdx,SIZEOF_FLOAT_MULT_TYPE)]
	mulps     xmm5, XMMWORD [XMMBLOCK(5,0,rdx,SIZEOF_FLOAT_MULT_TYPE)]
	mulps     xmm1, XMMWORD [XMMBLOCK(7,0,rdx,SIZEOF_FLOAT_MULT_TYPE)]

	movaps	xmm4,xmm2
	movaps	xmm0,xmm5
	addps	xmm2,xmm1		; xmm2=z11
	addps	xmm5,xmm3		; xmm5=z13
	subps	xmm4,xmm1		; xmm4=z12
	subps	xmm0,xmm3		; xmm0=z10

	movaps	xmm1,xmm2
	subps	xmm2,xmm5
	addps	xmm1,xmm5		; xmm1=tmp7

	mulps	xmm2,[rel PD_1_414]	; xmm2=tmp11

	movaps	xmm3,xmm0
	addps	xmm0,xmm4
	mulps	xmm0,[rel PD_1_847]	; xmm0=z5
	mulps	xmm3,[rel PD_M2_613]	; xmm3=(z10 * -2.613125930)
	mulps	xmm4,[rel PD_1_082]	; xmm4=(z12 * 1.082392200)
	addps	xmm3,xmm0		; xmm3=tmp12
	subps	xmm4,xmm0		; xmm4=tmp10

	; -- Final output stage

	subps	xmm3,xmm1		; xmm3=tmp6
	movaps	xmm5,xmm6
	movaps	xmm0,xmm7
	addps	xmm6,xmm1		; xmm6=data0=(00 01 02 03)
	addps	xmm7,xmm3		; xmm7=data1=(10 11 12 13)
	subps	xmm5,xmm1		; xmm5=data7=(70 71 72 73)
	subps	xmm0,xmm3		; xmm0=data6=(60 61 62 63)
	subps	xmm2,xmm3		; xmm2=tmp5

	movaps    xmm1,xmm6		; transpose coefficients(phase 1)
	unpcklps  xmm6,xmm7		; xmm6=(00 10 01 11)
	unpckhps  xmm1,xmm7		; xmm1=(02 12 03 13)
	movaps    xmm3,xmm0		; transpose coefficients(phase 1)
	unpcklps  xmm0,xmm5		; xmm0=(60 70 61 71)
	unpckhps  xmm3,xmm5		; xmm3=(62 72 63 73)

	movaps	xmm7, XMMWORD [wk(0)]	; xmm7=tmp2
	movaps	xmm5, XMMWORD [wk(1)]	; xmm5=tmp3

	movaps	XMMWORD [wk(0)], xmm0	; wk(0)=(60 70 61 71)
	movaps	XMMWORD [wk(1)], xmm3	; wk(1)=(62 72 63 73)

	addps	xmm4,xmm2		; xmm4=tmp4
	movaps	xmm0,xmm7
	movaps	xmm3,xmm5
	addps	xmm7,xmm2		; xmm7=data2=(20 21 22 23)
	addps	xmm5,xmm4		; xmm5=data4=(40 41 42 43)
	subps	xmm0,xmm2		; xmm0=data5=(50 51 52 53)
	subps	xmm3,xmm4		; xmm3=data3=(30 31 32 33)

	movaps    xmm2,xmm7		; transpose coefficients(phase 1)
	unpcklps  xmm7,xmm3		; xmm7=(20 30 21 31)
	unpckhps  xmm2,xmm3		; xmm2=(22 32 23 33)
	movaps    xmm4,xmm5		; transpose coefficients(phase 1)
	unpcklps  xmm5,xmm0		; xmm5=(40 50 41 51)
	unpckhps  xmm4,xmm0		; xmm4=(42 52 43 53)

	movaps    xmm3,xmm6		; transpose coefficients(phase 2)
	unpcklps2 xmm6,xmm7		; xmm6=(00 10 20 30)
	unpckhps2 xmm3,xmm7		; xmm3=(01 11 21 31)
	movaps    xmm0,xmm1		; transpose coefficients(phase 2)
	unpcklps2 xmm1,xmm2		; xmm1=(02 12 22 32)
	unpckhps2 xmm0,xmm2		; xmm0=(03 13 23 33)

	movaps	xmm7, XMMWORD [wk(0)]	; xmm7=(60 70 61 71)
	movaps	xmm2, XMMWORD [wk(1)]	; xmm2=(62 72 63 73)

	movaps	XMMWORD [XMMBLOCK(0,0,rdi,SIZEOF_FAST_FLOAT)], xmm6
	movaps	XMMWORD [XMMBLOCK(1,0,rdi,SIZEOF_FAST_FLOAT)], xmm3
	movaps	XMMWORD [XMMBLOCK(2,0,rdi,SIZEOF_FAST_FLOAT)], xmm1
	movaps	XMMWORD [XMMBLOCK(3,0,rdi,SIZEOF_FAST_FLOAT)], xmm0

	movaps    xmm6,xmm5		; transpose coefficients(phase 2)
	unpcklps2 xmm5,xmm7		; xmm5=(40 50 60 70)
	unpckhps2 xmm6,xmm7		; xmm6=(41 51 61 71)
	movaps    xmm3,xmm4		; transpose coefficients(phase 2)
	unpcklps2 xmm4,xmm2		; xmm4=(42 52 62 72)
	unpckhps2 xmm3,xmm2		; xmm3=(43 53 63 73)

	movaps	XMMWORD [XMMBLOCK(0,1,rdi,SIZEOF_FAST_FLOAT)], xmm5
	movaps	XMMWORD [XMMBLOCK(1,1,rdi,SIZEOF_FAST_FLOAT)], xmm6
	movaps	XMMWORD [XMMBLOCK(2,1,rdi,SIZEOF_FAST_FLOAT)], xmm4
	movaps	XMMWORD [XMMBLOCK(3,1,rdi,SIZEOF_FAST_FLOAT)], xmm3

.nextcolumn:
	add	rsi, byte 4*SIZEOF_JCOEF		; coef_block
	add	rdx, byte 4*SIZEOF_FLOAT_MULT_TYPE	; quantptr
	add	rdi,      4*DCTSIZE*SIZEOF_FAST_FLOAT	; wsptr
	dec	rcx					; ctr
	jnz	near .columnloop

	; -- Prefetch the next coefficient block

	prefetchnta [rsi + (DCTSIZE2-8)*SIZEOF_JCOEF + 0*32]
	prefetchnta [rsi + (DCTSIZE2-8)*SIZEOF_JCOEF + 1*32]
	prefetchnta [rsi + (DCTSIZE2-8)*SIZEOF_JCOEF + 2*32]
	prefetchnta [rsi + (DCTSIZE2-8)*SIZEOF_JCOEF + 3*32]

	; ---- Pass 2: process rows from work array, store into output array.

	mov	rax, [original_rbp]
	lea	rsi, [workspace]			; FAST_FLOAT * wsptr
	mov	rdi, r12	; (JSAMPROW *)
	mov	rax, r13
	mov	rcx, DCTSIZE/4				; ctr
.rowloop:

	; -- Even part

	movaps	xmm0, XMMWORD [XMMBLOCK(0,0,rsi,SIZEOF_FAST_FLOAT)]
	movaps	xmm1, XMMWORD [XMMBLOCK(2,0,rsi,SIZEOF_FAST_FLOAT)]
	movaps	xmm2, XMMWORD [XMMBLOCK(4,0,rsi,SIZEOF_FAST_FLOAT)]
	movaps	xmm3, XMMWORD [XMMBLOCK(6,0,rsi,SIZEOF_FAST_FLOAT)]

	movaps	xmm4,xmm0
	movaps	xmm5,xmm1
	subps	xmm0,xmm2		; xmm0=tmp11
	subps	xmm1,xmm3
	addps	xmm4,xmm2		; xmm4=tmp10
	addps	xmm5,xmm3		; xmm5=tmp13

	mulps	xmm1,[rel PD_1_414]
	subps	xmm1,xmm5		; xmm1=tmp12

	movaps	xmm6,xmm4
	movaps	xmm7,xmm0
	subps	xmm4,xmm5		; xmm4=tmp3
	subps	xmm0,xmm1		; xmm0=tmp2
	addps	xmm6,xmm5		; xmm6=tmp0
	addps	xmm7,xmm1		; xmm7=tmp1

	movaps	XMMWORD [wk(1)], xmm4	; tmp3
	movaps	XMMWORD [wk(0)], xmm0	; tmp2

	; -- Odd part

	movaps	xmm2, XMMWORD [XMMBLOCK(1,0,rsi,SIZEOF_FAST_FLOAT)]
	movaps	xmm3, XMMWORD [XMMBLOCK(3,0,rsi,SIZEOF_FAST_FLOAT)]
	movaps	xmm5, XMMWORD [XMMBLOCK(5,0,rsi,SIZEOF_FAST_FLOAT)]
	movaps	xmm1, XMMWORD [XMMBLOCK(7,0,rsi,SIZEOF_FAST_FLOAT)]

	movaps	xmm4,xmm2
	movaps	xmm0,xmm5
	addps	xmm2,xmm1		; xmm2=z11
	addps	xmm5,xmm3		; xmm5=z13
	subps	xmm4,xmm1		; xmm4=z12
	subps	xmm0,xmm3		; xmm0=z10

	movaps	xmm1,xmm2
	subps	xmm2,xmm5
	addps	xmm1,xmm5		; xmm1=tmp7

	mulps	xmm2,[rel PD_1_414]	; xmm2=tmp11

	movaps	xmm3,xmm0
	addps	xmm0,xmm4
	mulps	xmm0,[rel PD_1_847]	; xmm0=z5
	mulps	xmm3,[rel PD_M2_613]	; xmm3=(z10 * -2.613125930)
	mulps	xmm4,[rel PD_1_082]	; xmm4=(z12 * 1.082392200)
	addps	xmm3,xmm0		; xmm3=tmp12
	subps	xmm4,xmm0		; xmm4=tmp10

	; -- Final output stage

	subps	xmm3,xmm1		; xmm3=tmp6
	movaps	xmm5,xmm6
	movaps	xmm0,xmm7
	addps	xmm6,xmm1		; xmm6=data0=(00 10 20 30)
	addps	xmm7,xmm3		; xmm7=data1=(01 11 21 31)
	subps	xmm5,xmm1		; xmm5=data7=(07 17 27 37)
	subps	xmm0,xmm3		; xmm0=data6=(06 16 26 36)
	subps	xmm2,xmm3		; xmm2=tmp5

	movaps	xmm1,[rel PD_RNDINT_MAGIC]	; xmm1=[rel PD_RNDINT_MAGIC]
	pcmpeqd	xmm3,xmm3
	psrld	xmm3,WORD_BIT		; xmm3={0xFFFF 0x0000 0xFFFF 0x0000 ..}

	addps	xmm6,xmm1	; xmm6=roundint(data0/8)=(00 ** 10 ** 20 ** 30 **)
	addps	xmm7,xmm1	; xmm7=roundint(data1/8)=(01 ** 11 ** 21 ** 31 **)
	addps	xmm0,xmm1	; xmm0=roundint(data6/8)=(06 ** 16 ** 26 ** 36 **)
	addps	xmm5,xmm1	; xmm5=roundint(data7/8)=(07 ** 17 ** 27 ** 37 **)

	pand	xmm6,xmm3		; xmm6=(00 -- 10 -- 20 -- 30 --)
	pslld	xmm7,WORD_BIT		; xmm7=(-- 01 -- 11 -- 21 -- 31)
	pand	xmm0,xmm3		; xmm0=(06 -- 16 -- 26 -- 36 --)
	pslld	xmm5,WORD_BIT		; xmm5=(-- 07 -- 17 -- 27 -- 37)
	por	xmm6,xmm7		; xmm6=(00 01 10 11 20 21 30 31)
	por	xmm0,xmm5		; xmm0=(06 07 16 17 26 27 36 37)

	movaps	xmm1, XMMWORD [wk(0)]	; xmm1=tmp2
	movaps	xmm3, XMMWORD [wk(1)]	; xmm3=tmp3

	addps	xmm4,xmm2		; xmm4=tmp4
	movaps	xmm7,xmm1
	movaps	xmm5,xmm3
	addps	xmm1,xmm2		; xmm1=data2=(02 12 22 32)
	addps	xmm3,xmm4		; xmm3=data4=(04 14 24 34)
	subps	xmm7,xmm2		; xmm7=data5=(05 15 25 35)
	subps	xmm5,xmm4		; xmm5=data3=(03 13 23 33)

	movaps	xmm2,[rel PD_RNDINT_MAGIC]	; xmm2=[rel PD_RNDINT_MAGIC]
	pcmpeqd	xmm4,xmm4
	psrld	xmm4,WORD_BIT		; xmm4={0xFFFF 0x0000 0xFFFF 0x0000 ..}

	addps	xmm3,xmm2	; xmm3=roundint(data4/8)=(04 ** 14 ** 24 ** 34 **)
	addps	xmm7,xmm2	; xmm7=roundint(data5/8)=(05 ** 15 ** 25 ** 35 **)
	addps	xmm1,xmm2	; xmm1=roundint(data2/8)=(02 ** 12 ** 22 ** 32 **)
	addps	xmm5,xmm2	; xmm5=roundint(data3/8)=(03 ** 13 ** 23 ** 33 **)

	pand	xmm3,xmm4		; xmm3=(04 -- 14 -- 24 -- 34 --)
	pslld	xmm7,WORD_BIT		; xmm7=(-- 05 -- 15 -- 25 -- 35)
	pand	xmm1,xmm4		; xmm1=(02 -- 12 -- 22 -- 32 --)
	pslld	xmm5,WORD_BIT		; xmm5=(-- 03 -- 13 -- 23 -- 33)
	por	xmm3,xmm7		; xmm3=(04 05 14 15 24 25 34 35)
	por	xmm1,xmm5		; xmm1=(02 03 12 13 22 23 32 33)

	movdqa    xmm2,[rel PB_CENTERJSAMP]	; xmm2=[rel PB_CENTERJSAMP]

	packsswb  xmm6,xmm3	; xmm6=(00 01 10 11 20 21 30 31 04 05 14 15 24 25 34 35)
	packsswb  xmm1,xmm0	; xmm1=(02 03 12 13 22 23 32 33 06 07 16 17 26 27 36 37)
	paddb     xmm6,xmm2
	paddb     xmm1,xmm2

	movdqa    xmm4,xmm6	; transpose coefficients(phase 2)
	punpcklwd xmm6,xmm1	; xmm6=(00 01 02 03 10 11 12 13 20 21 22 23 30 31 32 33)
	punpckhwd xmm4,xmm1	; xmm4=(04 05 06 07 14 15 16 17 24 25 26 27 34 35 36 37)

	movdqa    xmm7,xmm6	; transpose coefficients(phase 3)
	punpckldq xmm6,xmm4	; xmm6=(00 01 02 03 04 05 06 07 10 11 12 13 14 15 16 17)
	punpckhdq xmm7,xmm4	; xmm7=(20 21 22 23 24 25 26 27 30 31 32 33 34 35 36 37)

	pshufd	xmm5,xmm6,0x4E	; xmm5=(10 11 12 13 14 15 16 17 00 01 02 03 04 05 06 07)
	pshufd	xmm3,xmm7,0x4E	; xmm3=(30 31 32 33 34 35 36 37 20 21 22 23 24 25 26 27)

	mov	rdx, JSAMPROW [rdi+0*SIZEOF_JSAMPROW]
	mov	rbx, JSAMPROW [rdi+2*SIZEOF_JSAMPROW]
	movq	XMM_MMWORD [rdx+rax*SIZEOF_JSAMPLE], xmm6
	movq	XMM_MMWORD [rbx+rax*SIZEOF_JSAMPLE], xmm7
	mov	rdx, JSAMPROW [rdi+1*SIZEOF_JSAMPROW]
	mov	rbx, JSAMPROW [rdi+3*SIZEOF_JSAMPROW]
	movq	XMM_MMWORD [rdx+rax*SIZEOF_JSAMPLE], xmm5
	movq	XMM_MMWORD [rbx+rax*SIZEOF_JSAMPLE], xmm3

	add	rsi, byte 4*SIZEOF_FAST_FLOAT	; wsptr
	add	rdi, byte 4*SIZEOF_JSAMPROW
	dec	rcx				; ctr
	jnz	near .rowloop

	pop	rbx
	uncollect_args
	mov	rsp,rbp		; rsp <- aligned rbp
	pop	rsp		; rsp <- original rbp
	pop	rbp
	ret

; For some reason, the OS X linker does not honor the request to align the
; segment unless we do this.
	align	16
