dreamcast/sobel_fipr.s
2025-01-26 03:04:42 -06:00

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