gstreamer/libs/idct/sseidct.S
Wim Taymans c125059f97 Added the excellent mpeg2dec decoder. Not 100% optimized but allready very fast.
Original commit message from CVS:
Added the excellent mpeg2dec decoder. Not 100% optimized but allready
very fast.
More cleanup.
2000-11-04 18:54:07 +00:00

741 lines
13 KiB
ArmAsm

.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