diff --git a/simd/i386-sse2/jidctred.asm b/simd/i386-sse2/jidctred.asm
new file mode 100644
index 0000000..06dade8
--- /dev/null
+++ b/simd/i386-sse2/jidctred.asm
@@ -0,0 +1,594 @@
+;
+; jidctred.asm - reduced-size IDCT (SSE2)
+;
+; 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
+;
+; This file contains inverse-DCT routines that produce reduced-size
+; output: either 4x4 or 2x2 pixels from an 8x8 DCT block.
+; The following code is based directly on the IJG's original jidctred.c;
+; see the jidctred.c for more details.
+;
+; [TAB8]
+
+%include "jsimdext.inc"
+%include "jdct.inc"
+
+; --------------------------------------------------------------------------
+
+%define CONST_BITS      13
+%define PASS1_BITS      2
+
+%define DESCALE_P1_4    (CONST_BITS-PASS1_BITS+1)
+%define DESCALE_P2_4    (CONST_BITS+PASS1_BITS+3+1)
+%define DESCALE_P1_2    (CONST_BITS-PASS1_BITS+2)
+%define DESCALE_P2_2    (CONST_BITS+PASS1_BITS+3+2)
+
+%if CONST_BITS == 13
+F_0_211 equ      1730           ; FIX(0.211164243)
+F_0_509 equ      4176           ; FIX(0.509795579)
+F_0_601 equ      4926           ; FIX(0.601344887)
+F_0_720 equ      5906           ; FIX(0.720959822)
+F_0_765 equ      6270           ; FIX(0.765366865)
+F_0_850 equ      6967           ; FIX(0.850430095)
+F_0_899 equ      7373           ; FIX(0.899976223)
+F_1_061 equ      8697           ; FIX(1.061594337)
+F_1_272 equ     10426           ; FIX(1.272758580)
+F_1_451 equ     11893           ; FIX(1.451774981)
+F_1_847 equ     15137           ; FIX(1.847759065)
+F_2_172 equ     17799           ; FIX(2.172734803)
+F_2_562 equ     20995           ; FIX(2.562915447)
+F_3_624 equ     29692           ; FIX(3.624509785)
+%else
+; NASM cannot do compile-time arithmetic on floating-point constants.
+%define DESCALE(x,n)  (((x)+(1<<((n)-1)))>>(n))
+F_0_211 equ     DESCALE( 226735879,30-CONST_BITS)       ; FIX(0.211164243)
+F_0_509 equ     DESCALE( 547388834,30-CONST_BITS)       ; FIX(0.509795579)
+F_0_601 equ     DESCALE( 645689155,30-CONST_BITS)       ; FIX(0.601344887)
+F_0_720 equ     DESCALE( 774124714,30-CONST_BITS)       ; FIX(0.720959822)
+F_0_765 equ     DESCALE( 821806413,30-CONST_BITS)       ; FIX(0.765366865)
+F_0_850 equ     DESCALE( 913142361,30-CONST_BITS)       ; FIX(0.850430095)
+F_0_899 equ     DESCALE( 966342111,30-CONST_BITS)       ; FIX(0.899976223)
+F_1_061 equ     DESCALE(1139878239,30-CONST_BITS)       ; FIX(1.061594337)
+F_1_272 equ     DESCALE(1366614119,30-CONST_BITS)       ; FIX(1.272758580)
+F_1_451 equ     DESCALE(1558831516,30-CONST_BITS)       ; FIX(1.451774981)
+F_1_847 equ     DESCALE(1984016188,30-CONST_BITS)       ; FIX(1.847759065)
+F_2_172 equ     DESCALE(2332956230,30-CONST_BITS)       ; FIX(2.172734803)
+F_2_562 equ     DESCALE(2751909506,30-CONST_BITS)       ; FIX(2.562915447)
+F_3_624 equ     DESCALE(3891787747,30-CONST_BITS)       ; FIX(3.624509785)
+%endif
+
+; --------------------------------------------------------------------------
+        SECTION SEG_CONST
+
+        alignz  16
+        global  EXTN(jconst_idct_red_sse2)
+
+EXTN(jconst_idct_red_sse2):
+
+PW_F184_MF076   times 4 dw  F_1_847,-F_0_765
+PW_F256_F089    times 4 dw  F_2_562, F_0_899
+PW_F106_MF217   times 4 dw  F_1_061,-F_2_172
+PW_MF060_MF050  times 4 dw -F_0_601,-F_0_509
+PW_F145_MF021   times 4 dw  F_1_451,-F_0_211
+PW_F362_MF127   times 4 dw  F_3_624,-F_1_272
+PW_F085_MF072   times 4 dw  F_0_850,-F_0_720
+PD_DESCALE_P1_4 times 4 dd  1 << (DESCALE_P1_4-1)
+PD_DESCALE_P2_4 times 4 dd  1 << (DESCALE_P2_4-1)
+PD_DESCALE_P1_2 times 4 dd  1 << (DESCALE_P1_2-1)
+PD_DESCALE_P2_2 times 4 dd  1 << (DESCALE_P2_2-1)
+PB_CENTERJSAMP  times 16 db CENTERJSAMPLE
+
+        alignz  16
+
+; --------------------------------------------------------------------------
+        SECTION SEG_TEXT
+        BITS    32
+;
+; Perform dequantization and inverse DCT on one block of coefficients,
+; producing a reduced-size 4x4 output block.
+;
+; GLOBAL(void)
+; jsimd_idct_4x4_sse2 (void * dct_table, JCOEFPTR coef_block,
+;                      JSAMPARRAY output_buf, JDIMENSION output_col)
+;
+
+%define dct_table(b)    (b)+8           ; void * dct_table
+%define coef_block(b)   (b)+12          ; JCOEFPTR coef_block
+%define output_buf(b)   (b)+16          ; JSAMPARRAY output_buf
+%define output_col(b)   (b)+20          ; JDIMENSION output_col
+
+%define original_ebp    ebp+0
+%define wk(i)           ebp-(WK_NUM-(i))*SIZEOF_XMMWORD ; xmmword wk[WK_NUM]
+%define WK_NUM          2
+
+        align   16
+        global  EXTN(jsimd_idct_4x4_sse2)
+
+EXTN(jsimd_idct_4x4_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 ebx
+;       push    ecx             ; unused
+;       push    edx             ; need not be preserved
+        push    esi
+        push    edi
+
+        get_GOT ebx             ; get GOT address
+
+        ; ---- Pass 1: process columns from input.
+
+;       mov     eax, [original_ebp]
+        mov     edx, POINTER [dct_table(eax)]           ; quantptr
+        mov     esi, JCOEFPTR [coef_block(eax)]         ; inptr
+
+%ifndef NO_ZERO_COLUMN_TEST_4X4_SSE2
+        mov     eax, DWORD [DWBLOCK(1,0,esi,SIZEOF_JCOEF)]
+        or      eax, DWORD [DWBLOCK(2,0,esi,SIZEOF_JCOEF)]
+        jnz     short .columnDCT
+
+        movdqa  xmm0, XMMWORD [XMMBLOCK(1,0,esi,SIZEOF_JCOEF)]
+        movdqa  xmm1, XMMWORD [XMMBLOCK(2,0,esi,SIZEOF_JCOEF)]
+        por     xmm0, XMMWORD [XMMBLOCK(3,0,esi,SIZEOF_JCOEF)]
+        por     xmm1, XMMWORD [XMMBLOCK(5,0,esi,SIZEOF_JCOEF)]
+        por     xmm0, XMMWORD [XMMBLOCK(6,0,esi,SIZEOF_JCOEF)]
+        por     xmm1, XMMWORD [XMMBLOCK(7,0,esi,SIZEOF_JCOEF)]
+        por     xmm0,xmm1
+        packsswb xmm0,xmm0
+        packsswb xmm0,xmm0
+        movd    eax,xmm0
+        test    eax,eax
+        jnz     short .columnDCT
+
+        ; -- AC terms all zero
+
+        movdqa  xmm0, XMMWORD [XMMBLOCK(0,0,esi,SIZEOF_JCOEF)]
+        pmullw  xmm0, XMMWORD [XMMBLOCK(0,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
+
+        psllw   xmm0,PASS1_BITS
+
+        movdqa    xmm3,xmm0     ; xmm0=in0=(00 01 02 03 04 05 06 07)
+        punpcklwd xmm0,xmm0     ; xmm0=(00 00 01 01 02 02 03 03)
+        punpckhwd xmm3,xmm3     ; xmm3=(04 04 05 05 06 06 07 07)
+
+        pshufd  xmm1,xmm0,0x50  ; xmm1=[col0 col1]=(00 00 00 00 01 01 01 01)
+        pshufd  xmm0,xmm0,0xFA  ; xmm0=[col2 col3]=(02 02 02 02 03 03 03 03)
+        pshufd  xmm6,xmm3,0x50  ; xmm6=[col4 col5]=(04 04 04 04 05 05 05 05)
+        pshufd  xmm3,xmm3,0xFA  ; xmm3=[col6 col7]=(06 06 06 06 07 07 07 07)
+
+        jmp     near .column_end
+        alignx  16,7
+%endif
+.columnDCT:
+
+        ; -- Odd part
+
+        movdqa  xmm0, XMMWORD [XMMBLOCK(1,0,esi,SIZEOF_JCOEF)]
+        movdqa  xmm1, XMMWORD [XMMBLOCK(3,0,esi,SIZEOF_JCOEF)]
+        pmullw  xmm0, XMMWORD [XMMBLOCK(1,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
+        pmullw  xmm1, XMMWORD [XMMBLOCK(3,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
+        movdqa  xmm2, XMMWORD [XMMBLOCK(5,0,esi,SIZEOF_JCOEF)]
+        movdqa  xmm3, XMMWORD [XMMBLOCK(7,0,esi,SIZEOF_JCOEF)]
+        pmullw  xmm2, XMMWORD [XMMBLOCK(5,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
+        pmullw  xmm3, XMMWORD [XMMBLOCK(7,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
+
+        movdqa    xmm4,xmm0
+        movdqa    xmm5,xmm0
+        punpcklwd xmm4,xmm1
+        punpckhwd xmm5,xmm1
+        movdqa    xmm0,xmm4
+        movdqa    xmm1,xmm5
+        pmaddwd   xmm4,[GOTOFF(ebx,PW_F256_F089)]       ; xmm4=(tmp2L)
+        pmaddwd   xmm5,[GOTOFF(ebx,PW_F256_F089)]       ; xmm5=(tmp2H)
+        pmaddwd   xmm0,[GOTOFF(ebx,PW_F106_MF217)]      ; xmm0=(tmp0L)
+        pmaddwd   xmm1,[GOTOFF(ebx,PW_F106_MF217)]      ; xmm1=(tmp0H)
+
+        movdqa    xmm6,xmm2
+        movdqa    xmm7,xmm2
+        punpcklwd xmm6,xmm3
+        punpckhwd xmm7,xmm3
+        movdqa    xmm2,xmm6
+        movdqa    xmm3,xmm7
+        pmaddwd   xmm6,[GOTOFF(ebx,PW_MF060_MF050)]     ; xmm6=(tmp2L)
+        pmaddwd   xmm7,[GOTOFF(ebx,PW_MF060_MF050)]     ; xmm7=(tmp2H)
+        pmaddwd   xmm2,[GOTOFF(ebx,PW_F145_MF021)]      ; xmm2=(tmp0L)
+        pmaddwd   xmm3,[GOTOFF(ebx,PW_F145_MF021)]      ; xmm3=(tmp0H)
+
+        paddd   xmm6,xmm4               ; xmm6=tmp2L
+        paddd   xmm7,xmm5               ; xmm7=tmp2H
+        paddd   xmm2,xmm0               ; xmm2=tmp0L
+        paddd   xmm3,xmm1               ; xmm3=tmp0H
+
+        movdqa  XMMWORD [wk(0)], xmm2   ; wk(0)=tmp0L
+        movdqa  XMMWORD [wk(1)], xmm3   ; wk(1)=tmp0H
+
+        ; -- Even part
+
+        movdqa  xmm4, XMMWORD [XMMBLOCK(0,0,esi,SIZEOF_JCOEF)]
+        movdqa  xmm5, XMMWORD [XMMBLOCK(2,0,esi,SIZEOF_JCOEF)]
+        movdqa  xmm0, XMMWORD [XMMBLOCK(6,0,esi,SIZEOF_JCOEF)]
+        pmullw  xmm4, XMMWORD [XMMBLOCK(0,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
+        pmullw  xmm5, XMMWORD [XMMBLOCK(2,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
+        pmullw  xmm0, XMMWORD [XMMBLOCK(6,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
+
+        pxor      xmm1,xmm1
+        pxor      xmm2,xmm2
+        punpcklwd xmm1,xmm4             ; xmm1=tmp0L
+        punpckhwd xmm2,xmm4             ; xmm2=tmp0H
+        psrad     xmm1,(16-CONST_BITS-1) ; psrad xmm1,16 & pslld xmm1,CONST_BITS+1
+        psrad     xmm2,(16-CONST_BITS-1) ; psrad xmm2,16 & pslld xmm2,CONST_BITS+1
+
+        movdqa    xmm3,xmm5             ; xmm5=in2=z2
+        punpcklwd xmm5,xmm0             ; xmm0=in6=z3
+        punpckhwd xmm3,xmm0
+        pmaddwd   xmm5,[GOTOFF(ebx,PW_F184_MF076)]      ; xmm5=tmp2L
+        pmaddwd   xmm3,[GOTOFF(ebx,PW_F184_MF076)]      ; xmm3=tmp2H
+
+        movdqa  xmm4,xmm1
+        movdqa  xmm0,xmm2
+        paddd   xmm1,xmm5               ; xmm1=tmp10L
+        paddd   xmm2,xmm3               ; xmm2=tmp10H
+        psubd   xmm4,xmm5               ; xmm4=tmp12L
+        psubd   xmm0,xmm3               ; xmm0=tmp12H
+
+        ; -- Final output stage
+
+        movdqa  xmm5,xmm1
+        movdqa  xmm3,xmm2
+        paddd   xmm1,xmm6               ; xmm1=data0L
+        paddd   xmm2,xmm7               ; xmm2=data0H
+        psubd   xmm5,xmm6               ; xmm5=data3L
+        psubd   xmm3,xmm7               ; xmm3=data3H
+
+        movdqa  xmm6,[GOTOFF(ebx,PD_DESCALE_P1_4)]      ; xmm6=[PD_DESCALE_P1_4]
+
+        paddd   xmm1,xmm6
+        paddd   xmm2,xmm6
+        psrad   xmm1,DESCALE_P1_4
+        psrad   xmm2,DESCALE_P1_4
+        paddd   xmm5,xmm6
+        paddd   xmm3,xmm6
+        psrad   xmm5,DESCALE_P1_4
+        psrad   xmm3,DESCALE_P1_4
+
+        packssdw  xmm1,xmm2             ; xmm1=data0=(00 01 02 03 04 05 06 07)
+        packssdw  xmm5,xmm3             ; xmm5=data3=(30 31 32 33 34 35 36 37)
+
+        movdqa  xmm7, XMMWORD [wk(0)]   ; xmm7=tmp0L
+        movdqa  xmm6, XMMWORD [wk(1)]   ; xmm6=tmp0H
+
+        movdqa  xmm2,xmm4
+        movdqa  xmm3,xmm0
+        paddd   xmm4,xmm7               ; xmm4=data1L
+        paddd   xmm0,xmm6               ; xmm0=data1H
+        psubd   xmm2,xmm7               ; xmm2=data2L
+        psubd   xmm3,xmm6               ; xmm3=data2H
+
+        movdqa  xmm7,[GOTOFF(ebx,PD_DESCALE_P1_4)]      ; xmm7=[PD_DESCALE_P1_4]
+
+        paddd   xmm4,xmm7
+        paddd   xmm0,xmm7
+        psrad   xmm4,DESCALE_P1_4
+        psrad   xmm0,DESCALE_P1_4
+        paddd   xmm2,xmm7
+        paddd   xmm3,xmm7
+        psrad   xmm2,DESCALE_P1_4
+        psrad   xmm3,DESCALE_P1_4
+
+        packssdw  xmm4,xmm0             ; xmm4=data1=(10 11 12 13 14 15 16 17)
+        packssdw  xmm2,xmm3             ; xmm2=data2=(20 21 22 23 24 25 26 27)
+
+        movdqa    xmm6,xmm1     ; transpose coefficients(phase 1)
+        punpcklwd xmm1,xmm4     ; xmm1=(00 10 01 11 02 12 03 13)
+        punpckhwd xmm6,xmm4     ; xmm6=(04 14 05 15 06 16 07 17)
+        movdqa    xmm7,xmm2     ; transpose coefficients(phase 1)
+        punpcklwd xmm2,xmm5     ; xmm2=(20 30 21 31 22 32 23 33)
+        punpckhwd xmm7,xmm5     ; xmm7=(24 34 25 35 26 36 27 37)
+
+        movdqa    xmm0,xmm1     ; transpose coefficients(phase 2)
+        punpckldq xmm1,xmm2     ; xmm1=[col0 col1]=(00 10 20 30 01 11 21 31)
+        punpckhdq xmm0,xmm2     ; xmm0=[col2 col3]=(02 12 22 32 03 13 23 33)
+        movdqa    xmm3,xmm6     ; transpose coefficients(phase 2)
+        punpckldq xmm6,xmm7     ; xmm6=[col4 col5]=(04 14 24 34 05 15 25 35)
+        punpckhdq xmm3,xmm7     ; xmm3=[col6 col7]=(06 16 26 36 07 17 27 37)
+.column_end:
+
+        ; -- Prefetch the next coefficient block
+
+        prefetchnta [esi + DCTSIZE2*SIZEOF_JCOEF + 0*32]
+        prefetchnta [esi + DCTSIZE2*SIZEOF_JCOEF + 1*32]
+        prefetchnta [esi + DCTSIZE2*SIZEOF_JCOEF + 2*32]
+        prefetchnta [esi + DCTSIZE2*SIZEOF_JCOEF + 3*32]
+
+        ; ---- Pass 2: process rows, store into output array.
+
+        mov     eax, [original_ebp]
+        mov     edi, JSAMPARRAY [output_buf(eax)]       ; (JSAMPROW *)
+        mov     eax, JDIMENSION [output_col(eax)]
+
+        ; -- Even part
+
+        pxor      xmm4,xmm4
+        punpcklwd xmm4,xmm1             ; xmm4=tmp0
+        psrad     xmm4,(16-CONST_BITS-1) ; psrad xmm4,16 & pslld xmm4,CONST_BITS+1
+
+        ; -- Odd part
+
+        punpckhwd xmm1,xmm0
+        punpckhwd xmm6,xmm3
+        movdqa    xmm5,xmm1
+        movdqa    xmm2,xmm6
+        pmaddwd   xmm1,[GOTOFF(ebx,PW_F256_F089)]       ; xmm1=(tmp2)
+        pmaddwd   xmm6,[GOTOFF(ebx,PW_MF060_MF050)]     ; xmm6=(tmp2)
+        pmaddwd   xmm5,[GOTOFF(ebx,PW_F106_MF217)]      ; xmm5=(tmp0)
+        pmaddwd   xmm2,[GOTOFF(ebx,PW_F145_MF021)]      ; xmm2=(tmp0)
+
+        paddd     xmm6,xmm1             ; xmm6=tmp2
+        paddd     xmm2,xmm5             ; xmm2=tmp0
+
+        ; -- Even part
+
+        punpcklwd xmm0,xmm3
+        pmaddwd   xmm0,[GOTOFF(ebx,PW_F184_MF076)]      ; xmm0=tmp2
+
+        movdqa    xmm7,xmm4
+        paddd     xmm4,xmm0             ; xmm4=tmp10
+        psubd     xmm7,xmm0             ; xmm7=tmp12
+
+        ; -- Final output stage
+
+        movdqa  xmm1,[GOTOFF(ebx,PD_DESCALE_P2_4)]      ; xmm1=[PD_DESCALE_P2_4]
+
+        movdqa  xmm5,xmm4
+        movdqa  xmm3,xmm7
+        paddd   xmm4,xmm6               ; xmm4=data0=(00 10 20 30)
+        paddd   xmm7,xmm2               ; xmm7=data1=(01 11 21 31)
+        psubd   xmm5,xmm6               ; xmm5=data3=(03 13 23 33)
+        psubd   xmm3,xmm2               ; xmm3=data2=(02 12 22 32)
+
+        paddd   xmm4,xmm1
+        paddd   xmm7,xmm1
+        psrad   xmm4,DESCALE_P2_4
+        psrad   xmm7,DESCALE_P2_4
+        paddd   xmm5,xmm1
+        paddd   xmm3,xmm1
+        psrad   xmm5,DESCALE_P2_4
+        psrad   xmm3,DESCALE_P2_4
+
+        packssdw  xmm4,xmm3             ; xmm4=(00 10 20 30 02 12 22 32)
+        packssdw  xmm7,xmm5             ; xmm7=(01 11 21 31 03 13 23 33)
+
+        movdqa    xmm0,xmm4             ; transpose coefficients(phase 1)
+        punpcklwd xmm4,xmm7             ; xmm4=(00 01 10 11 20 21 30 31)
+        punpckhwd xmm0,xmm7             ; xmm0=(02 03 12 13 22 23 32 33)
+
+        movdqa    xmm6,xmm4             ; transpose coefficients(phase 2)
+        punpckldq xmm4,xmm0             ; xmm4=(00 01 02 03 10 11 12 13)
+        punpckhdq xmm6,xmm0             ; xmm6=(20 21 22 23 30 31 32 33)
+
+        packsswb  xmm4,xmm6             ; xmm4=(00 01 02 03 10 11 12 13 20 ..)
+        paddb     xmm4,[GOTOFF(ebx,PB_CENTERJSAMP)]
+
+        pshufd    xmm2,xmm4,0x39        ; xmm2=(10 11 12 13 20 21 22 23 30 ..)
+        pshufd    xmm1,xmm4,0x4E        ; xmm1=(20 21 22 23 30 31 32 33 00 ..)
+        pshufd    xmm3,xmm4,0x93        ; xmm3=(30 31 32 33 00 01 02 03 10 ..)
+
+        mov     edx, JSAMPROW [edi+0*SIZEOF_JSAMPROW]
+        mov     esi, JSAMPROW [edi+1*SIZEOF_JSAMPROW]
+        movd    XMM_DWORD [edx+eax*SIZEOF_JSAMPLE], xmm4
+        movd    XMM_DWORD [esi+eax*SIZEOF_JSAMPLE], xmm2
+        mov     edx, JSAMPROW [edi+2*SIZEOF_JSAMPROW]
+        mov     esi, JSAMPROW [edi+3*SIZEOF_JSAMPROW]
+        movd    XMM_DWORD [edx+eax*SIZEOF_JSAMPLE], xmm1
+        movd    XMM_DWORD [esi+eax*SIZEOF_JSAMPLE], xmm3
+
+        pop     edi
+        pop     esi
+;       pop     edx             ; need not be preserved
+;       pop     ecx             ; unused
+        poppic  ebx
+        mov     esp,ebp         ; esp <- aligned ebp
+        pop     esp             ; esp <- original ebp
+        pop     ebp
+        ret
+
+
+; --------------------------------------------------------------------------
+;
+; Perform dequantization and inverse DCT on one block of coefficients,
+; producing a reduced-size 2x2 output block.
+;
+; GLOBAL(void)
+; jsimd_idct_2x2_sse2 (void * dct_table, JCOEFPTR coef_block,
+;                      JSAMPARRAY output_buf, JDIMENSION output_col)
+;
+
+%define dct_table(b)    (b)+8           ; void * dct_table
+%define coef_block(b)   (b)+12          ; JCOEFPTR coef_block
+%define output_buf(b)   (b)+16          ; JSAMPARRAY output_buf
+%define output_col(b)   (b)+20          ; JDIMENSION output_col
+
+        align   16
+        global  EXTN(jsimd_idct_2x2_sse2)
+
+EXTN(jsimd_idct_2x2_sse2):
+        push    ebp
+        mov     ebp,esp
+        push    ebx
+;       push    ecx             ; need not be preserved
+;       push    edx             ; need not be preserved
+        push    esi
+        push    edi
+
+        get_GOT ebx             ; get GOT address
+
+        ; ---- Pass 1: process columns from input.
+
+        mov     edx, POINTER [dct_table(ebp)]           ; quantptr
+        mov     esi, JCOEFPTR [coef_block(ebp)]         ; inptr
+
+        ; | input:                  | result:        |
+        ; | 00 01 ** 03 ** 05 ** 07 |                |
+        ; | 10 11 ** 13 ** 15 ** 17 |                |
+        ; | ** ** ** ** ** ** ** ** |                |
+        ; | 30 31 ** 33 ** 35 ** 37 | A0 A1 A3 A5 A7 |
+        ; | ** ** ** ** ** ** ** ** | B0 B1 B3 B5 B7 |
+        ; | 50 51 ** 53 ** 55 ** 57 |                |
+        ; | ** ** ** ** ** ** ** ** |                |
+        ; | 70 71 ** 73 ** 75 ** 77 |                |
+
+        ; -- Odd part
+
+        movdqa  xmm0, XMMWORD [XMMBLOCK(1,0,esi,SIZEOF_JCOEF)]
+        movdqa  xmm1, XMMWORD [XMMBLOCK(3,0,esi,SIZEOF_JCOEF)]
+        pmullw  xmm0, XMMWORD [XMMBLOCK(1,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
+        pmullw  xmm1, XMMWORD [XMMBLOCK(3,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
+        movdqa  xmm2, XMMWORD [XMMBLOCK(5,0,esi,SIZEOF_JCOEF)]
+        movdqa  xmm3, XMMWORD [XMMBLOCK(7,0,esi,SIZEOF_JCOEF)]
+        pmullw  xmm2, XMMWORD [XMMBLOCK(5,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
+        pmullw  xmm3, XMMWORD [XMMBLOCK(7,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
+
+        ; xmm0=(10 11 ** 13 ** 15 ** 17), xmm1=(30 31 ** 33 ** 35 ** 37)
+        ; xmm2=(50 51 ** 53 ** 55 ** 57), xmm3=(70 71 ** 73 ** 75 ** 77)
+
+        pcmpeqd   xmm7,xmm7
+        pslld     xmm7,WORD_BIT         ; xmm7={0x0000 0xFFFF 0x0000 0xFFFF ..}
+
+        movdqa    xmm4,xmm0             ; xmm4=(10 11 ** 13 ** 15 ** 17)
+        movdqa    xmm5,xmm2             ; xmm5=(50 51 ** 53 ** 55 ** 57)
+        punpcklwd xmm4,xmm1             ; xmm4=(10 30 11 31 ** ** 13 33)
+        punpcklwd xmm5,xmm3             ; xmm5=(50 70 51 71 ** ** 53 73)
+        pmaddwd   xmm4,[GOTOFF(ebx,PW_F362_MF127)]
+        pmaddwd   xmm5,[GOTOFF(ebx,PW_F085_MF072)]
+
+        psrld   xmm0,WORD_BIT           ; xmm0=(11 -- 13 -- 15 -- 17 --)
+        pand    xmm1,xmm7               ; xmm1=(-- 31 -- 33 -- 35 -- 37)
+        psrld   xmm2,WORD_BIT           ; xmm2=(51 -- 53 -- 55 -- 57 --)
+        pand    xmm3,xmm7               ; xmm3=(-- 71 -- 73 -- 75 -- 77)
+        por     xmm0,xmm1               ; xmm0=(11 31 13 33 15 35 17 37)
+        por     xmm2,xmm3               ; xmm2=(51 71 53 73 55 75 57 77)
+        pmaddwd xmm0,[GOTOFF(ebx,PW_F362_MF127)]
+        pmaddwd xmm2,[GOTOFF(ebx,PW_F085_MF072)]
+
+        paddd   xmm4,xmm5               ; xmm4=tmp0[col0 col1 **** col3]
+        paddd   xmm0,xmm2               ; xmm0=tmp0[col1 col3 col5 col7]
+
+        ; -- Even part
+
+        movdqa  xmm6, XMMWORD [XMMBLOCK(0,0,esi,SIZEOF_JCOEF)]
+        pmullw  xmm6, XMMWORD [XMMBLOCK(0,0,edx,SIZEOF_ISLOW_MULT_TYPE)]
+
+        ; xmm6=(00 01 ** 03 ** 05 ** 07)
+
+        movdqa  xmm1,xmm6               ; xmm1=(00 01 ** 03 ** 05 ** 07)
+        pslld   xmm6,WORD_BIT           ; xmm6=(-- 00 -- ** -- ** -- **)
+        pand    xmm1,xmm7               ; xmm1=(-- 01 -- 03 -- 05 -- 07)
+        psrad   xmm6,(WORD_BIT-CONST_BITS-2) ; xmm6=tmp10[col0 **** **** ****]
+        psrad   xmm1,(WORD_BIT-CONST_BITS-2) ; xmm1=tmp10[col1 col3 col5 col7]
+
+        ; -- Final output stage
+
+        movdqa  xmm3,xmm6
+        movdqa  xmm5,xmm1
+        paddd   xmm6,xmm4       ; xmm6=data0[col0 **** **** ****]=(A0 ** ** **)
+        paddd   xmm1,xmm0       ; xmm1=data0[col1 col3 col5 col7]=(A1 A3 A5 A7)
+        psubd   xmm3,xmm4       ; xmm3=data1[col0 **** **** ****]=(B0 ** ** **)
+        psubd   xmm5,xmm0       ; xmm5=data1[col1 col3 col5 col7]=(B1 B3 B5 B7)
+
+        movdqa  xmm2,[GOTOFF(ebx,PD_DESCALE_P1_2)]      ; xmm2=[PD_DESCALE_P1_2]
+
+        punpckldq  xmm6,xmm3            ; xmm6=(A0 B0 ** **)
+
+        movdqa     xmm7,xmm1
+        punpcklqdq xmm1,xmm5            ; xmm1=(A1 A3 B1 B3)
+        punpckhqdq xmm7,xmm5            ; xmm7=(A5 A7 B5 B7)
+
+        paddd   xmm6,xmm2
+        psrad   xmm6,DESCALE_P1_2
+
+        paddd   xmm1,xmm2
+        paddd   xmm7,xmm2
+        psrad   xmm1,DESCALE_P1_2
+        psrad   xmm7,DESCALE_P1_2
+
+        ; -- Prefetch the next coefficient block
+
+        prefetchnta [esi + DCTSIZE2*SIZEOF_JCOEF + 0*32]
+        prefetchnta [esi + DCTSIZE2*SIZEOF_JCOEF + 1*32]
+        prefetchnta [esi + DCTSIZE2*SIZEOF_JCOEF + 2*32]
+        prefetchnta [esi + DCTSIZE2*SIZEOF_JCOEF + 3*32]
+
+        ; ---- Pass 2: process rows, store into output array.
+
+        mov     edi, JSAMPARRAY [output_buf(ebp)]       ; (JSAMPROW *)
+        mov     eax, JDIMENSION [output_col(ebp)]
+
+        ; | input:| result:|
+        ; | A0 B0 |        |
+        ; | A1 B1 | C0 C1  |
+        ; | A3 B3 | D0 D1  |
+        ; | A5 B5 |        |
+        ; | A7 B7 |        |
+
+        ; -- Odd part
+
+        packssdw  xmm1,xmm1             ; xmm1=(A1 A3 B1 B3 A1 A3 B1 B3)
+        packssdw  xmm7,xmm7             ; xmm7=(A5 A7 B5 B7 A5 A7 B5 B7)
+        pmaddwd   xmm1,[GOTOFF(ebx,PW_F362_MF127)]
+        pmaddwd   xmm7,[GOTOFF(ebx,PW_F085_MF072)]
+
+        paddd     xmm1,xmm7             ; xmm1=tmp0[row0 row1 row0 row1]
+
+        ; -- Even part
+
+        pslld     xmm6,(CONST_BITS+2)   ; xmm6=tmp10[row0 row1 **** ****]
+
+        ; -- Final output stage
+
+        movdqa    xmm4,xmm6
+        paddd     xmm6,xmm1     ; xmm6=data0[row0 row1 **** ****]=(C0 C1 ** **)
+        psubd     xmm4,xmm1     ; xmm4=data1[row0 row1 **** ****]=(D0 D1 ** **)
+
+        punpckldq xmm6,xmm4     ; xmm6=(C0 D0 C1 D1)
+
+        paddd     xmm6,[GOTOFF(ebx,PD_DESCALE_P2_2)]
+        psrad     xmm6,DESCALE_P2_2
+
+        packssdw  xmm6,xmm6             ; xmm6=(C0 D0 C1 D1 C0 D0 C1 D1)
+        packsswb  xmm6,xmm6             ; xmm6=(C0 D0 C1 D1 C0 D0 C1 D1 ..)
+        paddb     xmm6,[GOTOFF(ebx,PB_CENTERJSAMP)]
+
+        pextrw  ebx,xmm6,0x00           ; ebx=(C0 D0 -- --)
+        pextrw  ecx,xmm6,0x01           ; ecx=(C1 D1 -- --)
+
+        mov     edx, JSAMPROW [edi+0*SIZEOF_JSAMPROW]
+        mov     esi, JSAMPROW [edi+1*SIZEOF_JSAMPROW]
+        mov     WORD [edx+eax*SIZEOF_JSAMPLE], bx
+        mov     WORD [esi+eax*SIZEOF_JSAMPLE], cx
+
+        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
