62 lines
1.1 KiB
ArmAsm
62 lines
1.1 KiB
ArmAsm
/* fv0 fv4 fv8 fv12 */
|
|
.global _sobel_y
|
|
_sobel_y:
|
|
__setup:
|
|
mova _const_100f,r0
|
|
mov r0,r3
|
|
|
|
mov r4,r0
|
|
mov r5,r7 /* r5 saved as r7 */
|
|
|
|
fldi1 fr8 /* 1.0 */
|
|
fldi1 fr9 /* 2.0 */
|
|
fldi1 fr10 /* 1.0 */
|
|
fldi0 fr11 /* 0.0 */
|
|
fadd fr9,fr9
|
|
|
|
fldi1 fr12
|
|
fmov fr9,fr13
|
|
fldi1 fr14
|
|
fldi0 fr15
|
|
fneg fr12
|
|
fneg fr13
|
|
fneg fr14
|
|
|
|
/* offsets */
|
|
mov #(1 * 4),r1
|
|
mov #(2 * 4),r2
|
|
mov.w _const_640,r4
|
|
mov.w _const_644,r5
|
|
mov.w _const_648,r6
|
|
|
|
bra _loop
|
|
nop
|
|
|
|
.align 4
|
|
_const_100f: .float 100
|
|
_const_640: .word (640 * 4)
|
|
_const_644: .word (641 * 4)
|
|
_const_648: .word (642 * 4)
|
|
|
|
_loop:
|
|
fmov.s @r0,fr0
|
|
fmov.s @(r0,r1),fr1
|
|
fmov.s @(r0,r2),fr2
|
|
fldi0 fr3
|
|
fipr fv8,fv0
|
|
|
|
fmov.s @(r0,r4),fr4
|
|
fmov.s @(r0,r5),fr5
|
|
fmov.s @(r0,r6),fr6
|
|
fldi0 fr7
|
|
fipr fv12,fv4
|
|
|
|
add #4,r0
|
|
|
|
fadd fr3,fr7
|
|
|
|
fmov.s r1,@-r7
|
|
|
|
rts
|
|
nop
|