gstreamer/gst/goom/surf3d.s
Bastien Nocera a7bc7485b1 configure.ac: Add checks for Flex/Yacc/Bison and other furry animals, for the new goom 2k4 based plugin
Original commit message from CVS:
2008-02-23  Bastien Nocera  <hadess@hadess.net>

* configure.ac: Add checks for Flex/Yacc/Bison and other
furry animals, for the new goom 2k4 based plugin

* gst/goom/*: Update to use goom 2k4, uses liboil to detect
CPU optimisations (not working yet), move the old plugin to...

* gst/goom2k1/*: ... here, in case somebody is sick enough

Fixes 
2008-02-23 01:51:37 +00:00

484 lines
7.4 KiB
ArmAsm

.file "surf3d.c"
.version "01.01"
gcc2_compiled.:
.text
.align 4
.globl grid3d_new
.type grid3d_new,@function
grid3d_new:
pushl %ebp
movl %esp,%ebp
subl $44,%esp
pushl %edi
pushl %esi
pushl %ebx
movl 20(%ebp),%eax
movl 12(%ebp),%esi
movl %eax,-8(%ebp)
addl $-12,%esp
pushl $44
call malloc
movl %esi,%edx
imull -8(%ebp),%edx
movl %eax,%edi
movl %edx,-12(%ebp)
leal (%edx,%edx,2),%ebx
movl %edx,8(%edi)
addl $-12,%esp
sall $2,%ebx
pushl %ebx
call malloc
addl $32,%esp
movl %eax,(%edi)
addl $-12,%esp
pushl %ebx
call malloc
movl %eax,4(%edi)
movl 24(%ebp),%eax
movl %eax,12(%edi)
movl 28(%ebp),%eax
movl %eax,16(%edi)
movl 32(%ebp),%eax
movl %eax,20(%edi)
movl 8(%ebp),%eax
movl %eax,28(%edi)
movl %esi,24(%edi)
movl -8(%ebp),%edx
movl 16(%ebp),%eax
movl %edx,32(%edi)
movl %eax,36(%edi)
movl $0,40(%edi)
testl %edx,%edx
je .L480
movl %esi,%eax
movl %esi,-28(%ebp)
shrl $31,%eax
addl %eax,%esi
movl -8(%ebp),%eax
shrl $31,%eax
addl -8(%ebp),%eax
movl -12(%ebp),%edx
sarl $1,%eax
movl %edx,-24(%ebp)
negl -28(%ebp)
movl %esi,-16(%ebp)
movl %eax,-20(%ebp)
.p2align 4,,7
.L481:
movl -28(%ebp),%eax
addl %eax,-24(%ebp)
decl -8(%ebp)
movl 12(%ebp),%esi
testl %esi,%esi
je .L479
movl -8(%ebp),%eax
subl -20(%ebp),%eax
movl %eax,-4(%ebp)
fildl -4(%ebp)
movl %esi,-4(%ebp)
movl -24(%ebp),%edx
leal (%edx,%esi),%eax
movl -16(%ebp),%ebx
fildl 16(%ebp)
leal (%eax,%eax,2),%eax
sarl $1,%ebx
leal 0(,%eax,4),%ecx
fmulp %st,%st(1)
fildl 20(%ebp)
fdivrp %st,%st(1)
fildl 8(%ebp)
fildl -4(%ebp)
jmp .L484
.L487:
fxch %st(2)
.p2align 4,,7
.L484:
decl %esi
movl %esi,%eax
movl (%edi),%edx
subl %ebx,%eax
movl %eax,-4(%ebp)
fildl -4(%ebp)
addl $-12,%ecx
fmul %st(2),%st
fdiv %st(1),%st
fstps (%edx,%ecx)
fxch %st(2)
movl (%edi),%eax
movl $0,4(%eax,%ecx)
movl (%edi),%eax
fsts 8(%eax,%ecx)
testl %esi,%esi
jne .L487
fstp %st(0)
fstp %st(0)
fstp %st(0)
.L479:
cmpl $0,-8(%ebp)
jne .L481
.L480:
leal -56(%ebp),%esp
popl %ebx
movl %edi,%eax
popl %esi
popl %edi
leave
ret
.Lfe1:
.size grid3d_new,.Lfe1-grid3d_new
.section .rodata
.align 8
.LC48:
.long 0x0,0x3fe00000
.align 4
.LC49:
.long 0x3f19999a
.align 4
.LC50:
.long 0x3ee3d70a
.text
.align 4
.globl grid3d_update
.type grid3d_update,@function
grid3d_update:
pushl %ebp
movl %esp,%ebp
subl $32,%esp
pushl %esi
pushl %ebx
flds 12(%ebp)
movl 8(%ebp),%ebx
movl 16(%ebp),%ecx
fld %st(0)
#APP
fsin
#NO_APP
fstps -4(%ebp)
flds -4(%ebp)
fxch %st(1)
#APP
fcos
#NO_APP
fstps -4(%ebp)
flds -4(%ebp)
cmpl $0,40(%ebx)
jne .L519
testl %ecx,%ecx
je .L520
xorl %esi,%esi
cmpl 24(%ebx),%esi
jge .L520
fldl .LC48
xorl %edx,%edx
.p2align 4,,7
.L524:
movl (%ebx),%eax
fld %st(0)
fld %st(1)
fxch %st(1)
fmuls 4(%eax,%edx)
fxch %st(1)
fmuls (%ecx,%esi,4)
faddp %st,%st(1)
incl %esi
fstps 4(%eax,%edx)
addl $12,%edx
cmpl 24(%ebx),%esi
jl .L524
fstp %st(0)
.L520:
movl 24(%ebx),%esi
cmpl 8(%ebx),%esi
jge .L519
leal (%esi,%esi,2),%eax
flds .LC49
flds .LC50
leal 0(,%eax,4),%ecx
.p2align 4,,7
.L529:
movl (%ebx),%eax
flds 4(%eax,%ecx)
fmul %st(2),%st
fstps 4(%eax,%ecx)
movl %esi,%eax
subl 24(%ebx),%eax
movl (%ebx),%edx
leal (%eax,%eax,2),%eax
flds 4(%edx,%eax,4)
fmul %st(1),%st
fadds 4(%edx,%ecx)
incl %esi
fstps 4(%edx,%ecx)
addl $12,%ecx
cmpl 8(%ebx),%esi
jl .L529
fstp %st(0)
fstp %st(0)
.L519:
xorl %esi,%esi
cmpl 8(%ebx),%esi
jge .L536
xorl %ecx,%ecx
.p2align 4,,7
.L534:
movl (%ebx),%eax
flds (%eax,%ecx)
flds 8(%eax,%ecx)
fmul %st(2),%st
fxch %st(1)
fmul %st(3),%st
fsubp %st,%st(1)
movl 4(%ebx),%edx
incl %esi
fstps (%edx,%ecx)
movl (%ebx),%eax
flds (%eax,%ecx)
flds 8(%eax,%ecx)
fxch %st(1)
fmul %st(2),%st
fxch %st(1)
fmul %st(3),%st
faddp %st,%st(1)
movl 4(%ebx),%edx
fstps 8(%edx,%ecx)
movl (%ebx),%eax
flds 4(%eax,%ecx)
movl 4(%ebx),%edx
fstps 4(%edx,%ecx)
movl 4(%ebx),%eax
flds (%eax,%ecx)
fadds 12(%ebx)
fstps (%eax,%ecx)
movl 4(%ebx),%eax
flds 4(%eax,%ecx)
fadds 16(%ebx)
fstps 4(%eax,%ecx)
movl 4(%ebx),%eax
flds 8(%eax,%ecx)
fadds 20(%ebx)
fstps 8(%eax,%ecx)
addl $12,%ecx
cmpl 8(%ebx),%esi
jl .L534
.L536:
fstp %st(0)
fstp %st(0)
popl %ebx
popl %esi
leave
ret
.Lfe2:
.size grid3d_update,.Lfe2-grid3d_update
.section .rodata
.align 4
.LC51:
.long 0x40000000
.align 8
.LC52:
.long 0x0,0x42380000
.text
.align 4
.globl surf3d_draw
.type surf3d_draw,@function
surf3d_draw:
pushl %ebp
movl %esp,%ebp
subl $60,%esp
pushl %edi
pushl %esi
pushl %ebx
movl $0,-20(%ebp)
movl -20(%ebp),%edx
movl 8(%ebp),%eax
cmpl 8(%eax),%edx
jge .L493
fldl .LC52
flds .LC51
xorl %edi,%edi
.p2align 4,,7
.L495:
movl 8(%ebp),%eax
movl 4(%eax),%eax
movl %eax,-36(%ebp)
fcoms 8(%eax,%edi)
fnstsw %ax
andb $69,%ah
cmpb $1,%ah
jne .L496
fildl 16(%ebp)
movl -36(%ebp),%edx
fld %st(0)
fmuls (%edx,%edi)
fdivs 8(%edx,%edi)
fld %st(3)
faddp %st,%st(1)
fstpl -32(%ebp)
movl -32(%ebp),%eax
movl -28(%ebp),%edx
movl %eax,-40(%ebp)
sarl $16,-40(%ebp)
movl -36(%ebp),%edx
fmuls 4(%edx,%edi)
fdivs 8(%edx,%edi)
movl -40(%ebp),%ecx
fld %st(2)
faddp %st,%st(1)
fstpl -32(%ebp)
movl -32(%ebp),%eax
movl -28(%ebp),%edx
movl %eax,-44(%ebp)
movl 28(%ebp),%eax
sarl $1,%eax
addl %eax,%ecx
movl 32(%ebp),%eax
sarl $16,-44(%ebp)
sarl $1,%eax
movl %ecx,%ebx
subl -44(%ebp),%eax
movl %eax,%esi
cmpl 28(%ebp),%ebx
jge .L496
testl %ecx,%ecx
jl .L496
cmpl 32(%ebp),%esi
jge .L496
testl %eax,%eax
jge .L499
.L496:
xorl %esi,%esi
xorl %ebx,%ebx
.L499:
movl 20(%ebp),%eax
movl %ebx,%edx
leal (%eax,%edx,4),%edx
movl 28(%ebp),%eax
imull %esi,%eax
leal (%edx,%eax,4),%eax
testl %ebx,%ebx
je .L494
testl %esi,%esi
je .L494
#APP
movd (%eax), %mm0
paddusb 12(%ebp), %mm0
movd %mm0, (%eax)
#NO_APP
.L494:
incl -20(%ebp)
addl $12,%edi
movl -20(%ebp),%eax
movl 8(%ebp),%edx
cmpl 8(%edx),%eax
jl .L495
fstp %st(0)
fstp %st(0)
.L493:
popl %ebx
popl %esi
popl %edi
leave
ret
.Lfe3:
.size surf3d_draw,.Lfe3-surf3d_draw
.align 4
.globl surf3d_rotate
.type surf3d_rotate,@function
surf3d_rotate:
pushl %ebp
movl %esp,%ebp
subl $32,%esp
pushl %esi
pushl %ebx
flds 12(%ebp)
movl 8(%ebp),%ebx
fld %st(0)
#APP
fsin
#NO_APP
fstps -4(%ebp)
flds -4(%ebp)
fxch %st(1)
#APP
fcos
#NO_APP
fstps -4(%ebp)
xorl %esi,%esi
flds -4(%ebp)
cmpl 8(%ebx),%esi
jge .L537
xorl %ecx,%ecx
.p2align 4,,7
.L508:
movl (%ebx),%eax
flds (%eax,%ecx)
flds 8(%eax,%ecx)
fmul %st(2),%st
fxch %st(1)
fmul %st(3),%st
fsubp %st,%st(1)
movl 4(%ebx),%edx
incl %esi
fstps (%edx,%ecx)
movl (%ebx),%eax
flds (%eax,%ecx)
flds 8(%eax,%ecx)
fxch %st(1)
fmul %st(2),%st
fxch %st(1)
fmul %st(3),%st
faddp %st,%st(1)
movl 4(%ebx),%edx
fstps 8(%edx,%ecx)
movl (%ebx),%eax
flds 4(%eax,%ecx)
movl 4(%ebx),%edx
fstps 4(%edx,%ecx)
addl $12,%ecx
cmpl 8(%ebx),%esi
jl .L508
.L537:
fstp %st(0)
fstp %st(0)
popl %ebx
popl %esi
leave
ret
.Lfe4:
.size surf3d_rotate,.Lfe4-surf3d_rotate
.align 4
.globl surf3d_translate
.type surf3d_translate,@function
surf3d_translate:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movl 8(%ebp),%ecx
xorl %ebx,%ebx
cmpl 8(%ecx),%ebx
jge .L512
xorl %edx,%edx
.p2align 4,,7
.L514:
movl 4(%ecx),%eax
flds (%eax,%edx)
fadds 12(%ecx)
incl %ebx
fstps (%eax,%edx)
movl 4(%ecx),%eax
flds 4(%eax,%edx)
fadds 16(%ecx)
fstps 4(%eax,%edx)
movl 4(%ecx),%eax
flds 8(%eax,%edx)
fadds 20(%ecx)
fstps 8(%eax,%edx)
addl $12,%edx
cmpl 8(%ecx),%ebx
jl .L514
.L512:
popl %ebx
leave
ret
.Lfe5:
.size surf3d_translate,.Lfe5-surf3d_translate
.ident "GCC: (GNU) 2.95.3 19991030 (prerelease)"