summaryrefslogtreecommitdiffstats
path: root/gst-libs/gst/idct/sseidct.S
diff options
context:
space:
mode:
authorThomas Vander Stichele <thomas@apestaart.org>2001-12-23 20:21:20 +0000
committerThomas Vander Stichele <thomas@apestaart.org>2001-12-23 20:21:20 +0000
commit3417567558ed1e3cea8bf67f67d56d3c9c4002a9 (patch)
treeedfb223736c9ab4c4b551569111470e3ed750b3f /gst-libs/gst/idct/sseidct.S
parentd5bcd85bf30f52cb9393999e1136d68a085a6321 (diff)
downloadgst-plugins-bad-3417567558ed1e3cea8bf67f67d56d3c9c4002a9.tar.gz
gst-plugins-bad-3417567558ed1e3cea8bf67f67d56d3c9c4002a9.tar.bz2
gst-plugins-bad-3417567558ed1e3cea8bf67f67d56d3c9c4002a9.zip
more fixes
Original commit message from CVS: more fixes
Diffstat (limited to 'gst-libs/gst/idct/sseidct.S')
-rw-r--r--gst-libs/gst/idct/sseidct.S740
1 files changed, 740 insertions, 0 deletions
diff --git a/gst-libs/gst/idct/sseidct.S b/gst-libs/gst/idct/sseidct.S
new file mode 100644
index 00000000..99cda4f2
--- /dev/null
+++ b/gst-libs/gst/idct/sseidct.S
@@ -0,0 +1,740 @@
+.data
+ .align 4
+ .type rounder0,@object
+rounder0:
+ .long 65536
+ .long 65536
+ .size rounder0,8
+ .align 4
+ .type rounder4,@object
+rounder4:
+ .long 1024
+ .long 1024
+ .size rounder4,8
+ .align 4
+ .type rounder1,@object
+rounder1:
+ .long 3597
+ .long 3597
+ .size rounder1,8
+ .align 4
+ .type rounder7,@object
+rounder7:
+ .long 512
+ .long 512
+ .size rounder7,8
+ .align 4
+ .type rounder2,@object
+rounder2:
+ .long 2260
+ .long 2260
+ .size rounder2,8
+ .align 4
+ .type rounder6,@object
+rounder6:
+ .long 512
+ .long 512
+ .size rounder6,8
+ .align 4
+ .type rounder3,@object
+rounder3:
+ .long 1203
+ .long 1203
+ .size rounder3,8
+ .align 4
+ .type rounder5,@object
+rounder5:
+ .long 120
+ .long 120
+ .size rounder5,8
+ .align 2
+ .type _T1.46,@object
+_T1.46:
+ .value 13036
+ .value 13036
+ .value 13036
+ .value 13036
+ .align 2
+ .type _T2.47,@object
+_T2.47:
+ .value 27146
+ .value 27146
+ .value 27146
+ .value 27146
+ .align 2
+ .type _T3.48,@object
+_T3.48:
+ .value -21746
+ .value -21746
+ .value -21746
+ .value -21746
+ .align 2
+ .type _C4.49,@object
+_C4.49:
+ .value 23170
+ .value 23170
+ .value 23170
+ .value 23170
+ .local scratch0.50
+ .comm scratch0.50,8,4
+ .local scratch1.51
+ .comm scratch1.51,8,4
+ .align 2
+ .type table04.54,@object
+table04.54:
+ .value 16384
+ .value 21407
+ .value -16384
+ .value -21407
+ .value 16384
+ .value 8867
+ .value 16384
+ .value 8867
+ .value 22725
+ .value 19266
+ .value -22725
+ .value -12873
+ .value 12873
+ .value 4520
+ .value 19266
+ .value -4520
+ .value 16384
+ .value -8867
+ .value 16384
+ .value -8867
+ .value -16384
+ .value 21407
+ .value 16384
+ .value -21407
+ .value 12873
+ .value -22725
+ .value 19266
+ .value -22725
+ .value 4520
+ .value 19266
+ .value 4520
+ .value -12873
+ .align 2
+ .type table17.55,@object
+table17.55:
+ .value 22725
+ .value 29692
+ .value -22725
+ .value -29692
+ .value 22725
+ .value 12299
+ .value 22725
+ .value 12299
+ .value 31521
+ .value 26722
+ .value -31521
+ .value -17855
+ .value 17855
+ .value 6270
+ .value 26722
+ .value -6270
+ .value 22725
+ .value -12299
+ .value 22725
+ .value -12299
+ .value -22725
+ .value 29692
+ .value 22725
+ .value -29692
+ .value 17855
+ .value -31521
+ .value 26722
+ .value -31521
+ .value 6270
+ .value 26722
+ .value 6270
+ .value -17855
+ .align 2
+ .type table26.56,@object
+table26.56:
+ .value 21407
+ .value 27969
+ .value -21407
+ .value -27969
+ .value 21407
+ .value 11585
+ .value 21407
+ .value 11585
+ .value 29692
+ .value 25172
+ .value -29692
+ .value -16819
+ .value 16819
+ .value 5906
+ .value 25172
+ .value -5906
+ .value 21407
+ .value -11585
+ .value 21407
+ .value -11585
+ .value -21407
+ .value 27969
+ .value 21407
+ .value -27969
+ .value 16819
+ .value -29692
+ .value 25172
+ .value -29692
+ .value 5906
+ .value 25172
+ .value 5906
+ .value -16819
+ .align 2
+ .type table35.57,@object
+table35.57:
+ .value 19266
+ .value 25172
+ .value -19266
+ .value -25172
+ .value 19266
+ .value 10426
+ .value 19266
+ .value 10426
+ .value 26722
+ .value 22654
+ .value -26722
+ .value -15137
+ .value 15137
+ .value 5315
+ .value 22654
+ .value -5315
+ .value 19266
+ .value -10426
+ .value 19266
+ .value -10426
+ .value -19266
+ .value 25172
+ .value 19266
+ .value -25172
+ .value 15137
+ .value -26722
+ .value 22654
+ .value -26722
+ .value 5315
+ .value 22654
+ .value 5315
+ .value -15137
+.text
+ .align 4
+.globl gst_idct_sse_idct
+ .type gst_idct_sse_idct,@function
+gst_idct_sse_idct:
+ subl $8,%esp
+ pushl %ebp
+ pushl %edi
+ pushl %esi
+ pushl %ebx
+ call .L51
+.L51:
+ popl %ebx
+ addl $_GLOBAL_OFFSET_TABLE_+[.-.L51],%ebx
+ movl 28(%esp),%edx
+ leal table04.54@GOTOFF(%ebx),%eax
+ movq (%edx), %mm2
+ movq 8(%edx), %mm5
+ movq %mm2, %mm0
+ movq (%eax), %mm3
+ movq %mm5, %mm6
+ movq 8(%eax), %mm4
+ pmaddwd %mm0, %mm3
+ pshufw $78, %mm2, %mm2
+ leal rounder0@GOTOFF(%ebx),%ecx
+ movq 16(%eax), %mm1
+ pmaddwd %mm2, %mm4
+ pmaddwd 32(%eax), %mm0
+ pshufw $78, %mm6, %mm6
+ movq 24(%eax), %mm7
+ pmaddwd %mm5, %mm1
+ paddd (%ecx), %mm3
+ pmaddwd %mm6, %mm7
+ pmaddwd 40(%eax), %mm2
+ paddd %mm4, %mm3
+ pmaddwd 48(%eax), %mm5
+ movq %mm3, %mm4
+ pmaddwd 56(%eax), %mm6
+ paddd %mm7, %mm1
+ paddd (%ecx), %mm0
+ psubd %mm1, %mm3
+ psrad $11, %mm3
+ paddd %mm4, %mm1
+ paddd %mm2, %mm0
+ psrad $11, %mm1
+ paddd %mm6, %mm5
+ movq %mm0, %mm4
+ paddd %mm5, %mm0
+ psubd %mm5, %mm4
+ movq 64(%edx), %mm2
+ psrad $11, %mm0
+ movq 72(%edx), %mm5
+ psrad $11, %mm4
+ packssdw %mm0, %mm1
+ movq %mm5, %mm6
+ packssdw %mm3, %mm4
+ movq %mm2, %mm0
+ movq %mm1, (%edx)
+ pshufw $177, %mm4, %mm4
+ movq (%eax), %mm3
+ movq %mm4, 8(%edx)
+ pmaddwd %mm0, %mm3
+ movq 8(%eax), %mm4
+ pshufw $78, %mm2, %mm2
+ leal rounder4@GOTOFF(%ebx),%ecx
+ movq 16(%eax), %mm1
+ pmaddwd %mm2, %mm4
+ pmaddwd 32(%eax), %mm0
+ pshufw $78, %mm6, %mm6
+ movq 24(%eax), %mm7
+ pmaddwd %mm5, %mm1
+ paddd (%ecx), %mm3
+ pmaddwd %mm6, %mm7
+ pmaddwd 40(%eax), %mm2
+ paddd %mm4, %mm3
+ pmaddwd 48(%eax), %mm5
+ movq %mm3, %mm4
+ pmaddwd 56(%eax), %mm6
+ paddd %mm7, %mm1
+ paddd (%ecx), %mm0
+ psubd %mm1, %mm3
+ psrad $11, %mm3
+ paddd %mm4, %mm1
+ paddd %mm2, %mm0
+ psrad $11, %mm1
+ paddd %mm6, %mm5
+ movq %mm0, %mm4
+ paddd %mm5, %mm0
+ psubd %mm5, %mm4
+ leal table17.55@GOTOFF(%ebx),%eax
+ movq 16(%edx), %mm2
+ psrad $11, %mm0
+ movq 24(%edx), %mm5
+ psrad $11, %mm4
+ packssdw %mm0, %mm1
+ movq %mm5, %mm6
+ packssdw %mm3, %mm4
+ movq %mm2, %mm0
+ movq %mm1, 64(%edx)
+ pshufw $177, %mm4, %mm4
+ movq (%eax), %mm3
+ movq %mm4, 72(%edx)
+ pmaddwd %mm0, %mm3
+ movq 8(%eax), %mm4
+ pshufw $78, %mm2, %mm2
+ leal rounder1@GOTOFF(%ebx),%ecx
+ movq 16(%eax), %mm1
+ pmaddwd %mm2, %mm4
+ pmaddwd 32(%eax), %mm0
+ pshufw $78, %mm6, %mm6
+ movq 24(%eax), %mm7
+ pmaddwd %mm5, %mm1
+ paddd (%ecx), %mm3
+ pmaddwd %mm6, %mm7
+ pmaddwd 40(%eax), %mm2
+ paddd %mm4, %mm3
+ pmaddwd 48(%eax), %mm5
+ movq %mm3, %mm4
+ pmaddwd 56(%eax), %mm6
+ paddd %mm7, %mm1
+ paddd (%ecx), %mm0
+ psubd %mm1, %mm3
+ psrad $11, %mm3
+ paddd %mm4, %mm1
+ paddd %mm2, %mm0
+ psrad $11, %mm1
+ paddd %mm6, %mm5
+ movq %mm0, %mm4
+ paddd %mm5, %mm0
+ psubd %mm5, %mm4
+ movq 112(%edx), %mm2
+ psrad $11, %mm0
+ movq 120(%edx), %mm5
+ psrad $11, %mm4
+ packssdw %mm0, %mm1
+ movq %mm5, %mm6
+ packssdw %mm3, %mm4
+ movq %mm2, %mm0
+ movq %mm1, 16(%edx)
+ pshufw $177, %mm4, %mm4
+ movq (%eax), %mm3
+ movq %mm4, 24(%edx)
+ pmaddwd %mm0, %mm3
+ movq 8(%eax), %mm4
+ pshufw $78, %mm2, %mm2
+ leal rounder7@GOTOFF(%ebx),%ecx
+ movq 16(%eax), %mm1
+ pmaddwd %mm2, %mm4
+ pmaddwd 32(%eax), %mm0
+ pshufw $78, %mm6, %mm6
+ movq 24(%eax), %mm7
+ pmaddwd %mm5, %mm1
+ paddd (%ecx), %mm3
+ pmaddwd %mm6, %mm7
+ pmaddwd 40(%eax), %mm2
+ paddd %mm4, %mm3
+ pmaddwd 48(%eax), %mm5
+ movq %mm3, %mm4
+ pmaddwd 56(%eax), %mm6
+ paddd %mm7, %mm1
+ paddd (%ecx), %mm0
+ psubd %mm1, %mm3
+ psrad $11, %mm3
+ paddd %mm4, %mm1
+ paddd %mm2, %mm0
+ psrad $11, %mm1
+ paddd %mm6, %mm5
+ movq %mm0, %mm4
+ paddd %mm5, %mm0
+ psubd %mm5, %mm4
+ leal table26.56@GOTOFF(%ebx),%eax
+ movq 32(%edx), %mm2
+ psrad $11, %mm0
+ movq 40(%edx), %mm5
+ psrad $11, %mm4
+ packssdw %mm0, %mm1
+ movq %mm5, %mm6
+ packssdw %mm3, %mm4
+ movq %mm2, %mm0
+ movq %mm1, 112(%edx)
+ pshufw $177, %mm4, %mm4
+ movq (%eax), %mm3
+ movq %mm4, 120(%edx)
+ pmaddwd %mm0, %mm3
+ movq 8(%eax), %mm4
+ pshufw $78, %mm2, %mm2
+ leal rounder2@GOTOFF(%ebx),%ecx
+ movq 16(%eax), %mm1
+ pmaddwd %mm2, %mm4
+ pmaddwd 32(%eax), %mm0
+ pshufw $78, %mm6, %mm6
+ movq 24(%eax), %mm7
+ pmaddwd %mm5, %mm1
+ paddd (%ecx), %mm3
+ pmaddwd %mm6, %mm7
+ pmaddwd 40(%eax), %mm2
+ paddd %mm4, %mm3
+ pmaddwd 48(%eax), %mm5
+ movq %mm3, %mm4
+ pmaddwd 56(%eax), %mm6
+ paddd %mm7, %mm1
+ paddd (%ecx), %mm0
+ psubd %mm1, %mm3
+ psrad $11, %mm3
+ paddd %mm4, %mm1
+ paddd %mm2, %mm0
+ psrad $11, %mm1
+ paddd %mm6, %mm5
+ movq %mm0, %mm4
+ paddd %mm5, %mm0
+ psubd %mm5, %mm4
+ movq 96(%edx), %mm2
+ psrad $11, %mm0
+ movq 104(%edx), %mm5
+ psrad $11, %mm4
+ packssdw %mm0, %mm1
+ movq %mm5, %mm6
+ packssdw %mm3, %mm4
+ movq %mm2, %mm0
+ movq %mm1, 32(%edx)
+ pshufw $177, %mm4, %mm4
+ movq (%eax), %mm3
+ movq %mm4, 40(%edx)
+ pmaddwd %mm0, %mm3
+ movq 8(%eax), %mm4
+ pshufw $78, %mm2, %mm2
+ leal rounder6@GOTOFF(%ebx),%ecx
+ movq 16(%eax), %mm1
+ pmaddwd %mm2, %mm4
+ pmaddwd 32(%eax), %mm0
+ pshufw $78, %mm6, %mm6
+ movq 24(%eax), %mm7
+ pmaddwd %mm5, %mm1
+ paddd (%ecx), %mm3
+ pmaddwd %mm6, %mm7
+ pmaddwd 40(%eax), %mm2
+ paddd %mm4, %mm3
+ pmaddwd 48(%eax), %mm5
+ movq %mm3, %mm4
+ pmaddwd 56(%eax), %mm6
+ paddd %mm7, %mm1
+ paddd (%ecx), %mm0
+ psubd %mm1, %mm3
+ psrad $11, %mm3
+ paddd %mm4, %mm1
+ paddd %mm2, %mm0
+ psrad $11, %mm1
+ paddd %mm6, %mm5
+ movq %mm0, %mm4
+ paddd %mm5, %mm0
+ psubd %mm5, %mm4
+ leal table35.57@GOTOFF(%ebx),%eax
+ movq 48(%edx), %mm2
+ psrad $11, %mm0
+ movq 56(%edx), %mm5
+ psrad $11, %mm4
+ packssdw %mm0, %mm1
+ movq %mm5, %mm6
+ packssdw %mm3, %mm4
+ movq %mm2, %mm0
+ movq %mm1, 96(%edx)
+ pshufw $177, %mm4, %mm4
+ movq (%eax), %mm3
+ movq %mm4, 104(%edx)
+ pmaddwd %mm0, %mm3
+ movq 8(%eax), %mm4
+ pshufw $78, %mm2, %mm2
+ leal rounder3@GOTOFF(%ebx),%ecx
+ movq 16(%eax), %mm1
+ pmaddwd %mm2, %mm4
+ pmaddwd 32(%eax), %mm0
+ pshufw $78, %mm6, %mm6
+ movq 24(%eax), %mm7
+ pmaddwd %mm5, %mm1
+ paddd (%ecx), %mm3
+ pmaddwd %mm6, %mm7
+ pmaddwd 40(%eax), %mm2
+ paddd %mm4, %mm3
+ pmaddwd 48(%eax), %mm5
+ movq %mm3, %mm4
+ pmaddwd 56(%eax), %mm6
+ paddd %mm7, %mm1
+ paddd (%ecx), %mm0
+ psubd %mm1, %mm3
+ psrad $11, %mm3
+ paddd %mm4, %mm1
+ paddd %mm2, %mm0
+ psrad $11, %mm1
+ paddd %mm6, %mm5
+ movq %mm0, %mm4
+ paddd %mm5, %mm0
+ psubd %mm5, %mm4
+ movq 80(%edx), %mm2
+ psrad $11, %mm0
+ movq 88(%edx), %mm5
+ psrad $11, %mm4
+ packssdw %mm0, %mm1
+ movq %mm5, %mm6
+ packssdw %mm3, %mm4
+ movq %mm2, %mm0
+ movq %mm1, 48(%edx)
+ pshufw $177, %mm4, %mm4
+ movq (%eax), %mm3
+ movq %mm4, 56(%edx)
+ pmaddwd %mm0, %mm3
+ movq 8(%eax), %mm4
+ pshufw $78, %mm2, %mm2
+ leal rounder5@GOTOFF(%ebx),%ecx
+ movq 16(%eax), %mm1
+ pmaddwd %mm2, %mm4
+ pmaddwd 32(%eax), %mm0
+ pshufw $78, %mm6, %mm6
+ movq 24(%eax), %mm7
+ pmaddwd %mm5, %mm1
+ paddd (%ecx), %mm3
+ pmaddwd %mm6, %mm7
+ pmaddwd 40(%eax), %mm2
+ paddd %mm4, %mm3
+ pmaddwd 48(%eax), %mm5
+ movq %mm3, %mm4
+ pmaddwd 56(%eax), %mm6
+ paddd %mm7, %mm1
+ paddd (%ecx), %mm0
+ psubd %mm1, %mm3
+ psrad $11, %mm3
+ paddd %mm4, %mm1
+ paddd %mm2, %mm0
+ psrad $11, %mm1
+ paddd %mm6, %mm5
+ movq %mm0, %mm4
+ paddd %mm5, %mm0
+ psubd %mm5, %mm4
+ psrad $11, %mm0
+ psrad $11, %mm4
+ packssdw %mm0, %mm1
+ packssdw %mm3, %mm4
+ movq %mm1, 80(%edx)
+ pshufw $177, %mm4, %mm4
+ movq %mm4, 88(%edx)
+ leal _T1.46@GOTOFF(%ebx),%edi
+ movq (%edi), %mm0
+ movq 16(%edx), %mm1
+ movq %mm0, %mm2
+ movq 112(%edx), %mm4
+ pmulhw %mm1, %mm0
+ leal _T3.48@GOTOFF(%ebx),%esi
+ movl %esi,16(%esp)
+ movq (%esi), %mm5
+ pmulhw %mm4, %mm2
+ movq 80(%edx), %mm6
+ movq %mm5, %mm7
+ movq 48(%edx), %mm3
+ psubsw %mm4, %mm0
+ leal _T2.47@GOTOFF(%ebx),%ecx
+ movq (%ecx), %mm4
+ pmulhw %mm3, %mm5
+ paddsw %mm2, %mm1
+ pmulhw %mm6, %mm7
+ movq %mm4, %mm2
+ paddsw %mm3, %mm5
+ pmulhw 32(%edx), %mm4
+ paddsw %mm6, %mm7
+ psubsw %mm6, %mm5
+ paddsw %mm3, %mm7
+ movq 96(%edx), %mm3
+ movq %mm0, %mm6
+ pmulhw %mm3, %mm2
+ psubsw %mm5, %mm0
+ psubsw %mm3, %mm4
+ paddsw %mm6, %mm5
+ leal scratch0.50@GOTOFF(%ebx),%esi
+ movl %esi,20(%esp)
+ movq %mm0, scratch0.50@GOTOFF(%ebx)
+ movq %mm1, %mm6
+ paddsw 32(%edx), %mm2
+ paddsw %mm7, %mm6
+ psubsw %mm7, %mm1
+ movq %mm1, %mm7
+ movq (%edx), %mm3
+ paddsw %mm5, %mm1
+ leal _C4.49@GOTOFF(%ebx),%eax
+ movq (%eax), %mm0
+ psubsw %mm5, %mm7
+ leal scratch1.51@GOTOFF(%ebx),%ebp
+ movq %mm6, scratch1.51@GOTOFF(%ebx)
+ pmulhw %mm0, %mm1
+ movq %mm4, %mm6
+ pmulhw %mm0, %mm7
+ movq 64(%edx), %mm5
+ movq %mm3, %mm0
+ psubsw %mm5, %mm3
+ paddsw %mm5, %mm0
+ paddsw %mm3, %mm4
+ movq %mm0, %mm5
+ psubsw %mm6, %mm3
+ paddsw %mm2, %mm5
+ paddsw %mm1, %mm1
+ psubsw %mm2, %mm0
+ paddsw %mm7, %mm7
+ movq %mm3, %mm2
+ movq %mm4, %mm6
+ paddsw %mm7, %mm3
+ psraw $6, %mm3
+ paddsw %mm1, %mm4
+ psraw $6, %mm4
+ psubsw %mm1, %mm6
+ movq (%ebp), %mm1
+ psubsw %mm7, %mm2
+ psraw $6, %mm6
+ movq %mm5, %mm7
+ movq %mm4, 16(%edx)
+ psraw $6, %mm2
+ movq %mm3, 32(%edx)
+ paddsw %mm1, %mm5
+ movq (%esi), %mm4
+ psubsw %mm1, %mm7
+ psraw $6, %mm5
+ movq %mm0, %mm3
+ movq %mm2, 80(%edx)
+ psubsw %mm4, %mm3
+ psraw $6, %mm7
+ paddsw %mm0, %mm4
+ movq %mm5, (%edx)
+ psraw $6, %mm3
+ movq %mm6, 96(%edx)
+ psraw $6, %mm4
+ movq %mm7, 112(%edx)
+ movq %mm3, 64(%edx)
+ movq %mm4, 48(%edx)
+ movq (%edi), %mm0
+ movq 24(%edx), %mm1
+ movq %mm0, %mm2
+ movq 120(%edx), %mm4
+ pmulhw %mm1, %mm0
+ movl 16(%esp),%esi
+ movq (%esi), %mm5
+ pmulhw %mm4, %mm2
+ movq 88(%edx), %mm6
+ movq %mm5, %mm7
+ movq 56(%edx), %mm3
+ psubsw %mm4, %mm0
+ movq (%ecx), %mm4
+ pmulhw %mm3, %mm5
+ paddsw %mm2, %mm1
+ pmulhw %mm6, %mm7
+ movq %mm4, %mm2
+ paddsw %mm3, %mm5
+ pmulhw 40(%edx), %mm4
+ paddsw %mm6, %mm7
+ psubsw %mm6, %mm5
+ paddsw %mm3, %mm7
+ movq 104(%edx), %mm3
+ movq %mm0, %mm6
+ pmulhw %mm3, %mm2
+ psubsw %mm5, %mm0
+ psubsw %mm3, %mm4
+ paddsw %mm6, %mm5
+ movq %mm0, scratch0.50@GOTOFF(%ebx)
+ movq %mm1, %mm6
+ paddsw 40(%edx), %mm2
+ paddsw %mm7, %mm6
+ psubsw %mm7, %mm1
+ movq %mm1, %mm7
+ movq 8(%edx), %mm3
+ paddsw %mm5, %mm1
+ movq (%eax), %mm0
+ psubsw %mm5, %mm7
+ movq %mm6, scratch1.51@GOTOFF(%ebx)
+ pmulhw %mm0, %mm1
+ movq %mm4, %mm6
+ pmulhw %mm0, %mm7
+ movq 72(%edx), %mm5
+ movq %mm3, %mm0
+ psubsw %mm5, %mm3
+ paddsw %mm5, %mm0
+ paddsw %mm3, %mm4
+ movq %mm0, %mm5
+ psubsw %mm6, %mm3
+ paddsw %mm2, %mm5
+ paddsw %mm1, %mm1
+ psubsw %mm2, %mm0
+ paddsw %mm7, %mm7
+ movq %mm3, %mm2
+ movq %mm4, %mm6
+ paddsw %mm7, %mm3
+ psraw $6, %mm3
+ paddsw %mm1, %mm4
+ psraw $6, %mm4
+ psubsw %mm1, %mm6
+ movq (%ebp), %mm1
+ psubsw %mm7, %mm2
+ psraw $6, %mm6
+ movq %mm5, %mm7
+ movq %mm4, 24(%edx)
+ psraw $6, %mm2
+ movq %mm3, 40(%edx)
+ paddsw %mm1, %mm5
+ movl 20(%esp),%esi
+ movq (%esi), %mm4
+ psubsw %mm1, %mm7
+ psraw $6, %mm5
+ movq %mm0, %mm3
+ movq %mm2, 88(%edx)
+ psubsw %mm4, %mm3
+ psraw $6, %mm7
+ paddsw %mm0, %mm4
+ movq %mm5, 8(%edx)
+ psraw $6, %mm3
+ movq %mm6, 104(%edx)
+ psraw $6, %mm4
+ movq %mm7, 120(%edx)
+ movq %mm3, 72(%edx)
+ movq %mm4, 56(%edx)
+ popl %ebx
+ popl %esi
+ popl %edi
+ popl %ebp
+ addl $8,%esp
+ ret