sobel_fipr_store_queue: free r1/r2

This commit is contained in:
Zack Buhman 2025-01-28 00:06:26 -06:00
parent 9a2e89d95c
commit 347b2c9731
4 changed files with 25 additions and 14 deletions

View File

@ -272,7 +272,7 @@ void make_temp()
sum += n & 0xff;
n >>= 8;
sum += n & 0xff;
temp[i] = (float)(sum * 0.25);
temp[i] = (float)(sum);
}
}
@ -425,5 +425,8 @@ void main()
//serial::string("convolve end\n");
theta += half_degree;
frame_ix += 1;
if (frame_ix > 20)
break;
}
}

View File

@ -28,7 +28,9 @@ __setup:
/* constants */
mova _const_100f,r0 /* r11 as temporary */
fmov.s @r0,fr0
fschg
fmov dr0,xd0
fschg
/* save C arguments */
mov r4,r0 /* r4 saved as r0 */
@ -118,7 +120,9 @@ _loop_width:
fsts FPUL,fr3
fadd fr3,fr7
fmov dr0,xd0 /* load 100.f constant */
fschg
fmov xd0,dr0 /* load 100.f constant */
fschg
add #4,r0 /* next pixel */

View File

@ -1,13 +1,15 @@
/* y multiplication */
mov #4,r1 /* r1 : temporary */
fmov.s @r0,fr0 /* 0 */
mov #8,r2 /* r2 : temporary */
fmov.s @(r0,r1),fr1 /* 1 */
fmov.s @(r0,r2),fr2 /* 2 */
fldi0 fr3
fipr fv8,fv0
fmov.s @(r0,r5),fr4 /* 1280 */
fmov.s @(r0,r6),fr5 /* 1281 */
fmov.s @(r0,r7),fr6 /* 1282 */
fmov.s @(r0,r5),fr4 /* r0 + 1280 */
fmov.s @(r0,r6),fr5 /* r0 + 1281 */
fmov.s @(r0,r7),fr6 /* r0 + 1282 */
fldi0 fr7
fipr fv12,fv4
@ -34,10 +36,10 @@
fmov fr2,fr4
fmov fr3,fr2
/* load fr1,fr5 */
fmov.s @(r0,r3),fr1 /* 640 */
fmov.s @(r0,r3),fr1 /* r0 + 640 */
fldi0 fr3
fipr fv8,fv0
fmov.s @(r0,r4),fr5 /* 642 */
fmov.s @(r0,r4),fr5 /* r0 + 642 */
fldi0 fr7
fipr fv12,fv4
@ -47,9 +49,10 @@
fsts FPUL,fr3
fadd fr3,fr7
fmov dr0,xd0 /* load 100.f constant */
fschg
fmov xd0,dr0 /* load 100.f constant */
fcmp/gt fr0,fr7
fschg
movt r9
add #-1,r9

View File

@ -2,8 +2,8 @@
.global _sobel_fipr_store_queue
_sobel_fipr_store_queue:
/* r0: var (input address) */
/* r1: const 1 4 */
/* r2: const 2 4 */
/* r1: (temporary) */
/* r2: (temporary) */
/* r3: const 640 4 */
/* r4: const 642 4 */
/* r5: const 1280 4 */
@ -45,6 +45,9 @@ __setup:
/* constants */
mova _const_100f,r0 /* use r0 as temporary */
fmov.s @r0,fr0
fschg
fmov dr0,xd0
fschg
/* set qacr0 */
mov r5,r0 /* r5: C argument */
@ -66,8 +69,6 @@ __setup:
mov r4,r0 /* r4 saved as r0 */
/* offsets */
mov #(1 * 4),r1
mov #(2 * 4),r2
mov.w _const_640,r3
mov.w _const_642,r4
mov.w _const_1280,r5
@ -81,7 +82,7 @@ __setup:
nop
.align 4
_const_100f: .float 100
_const_100f: .float 1900
_const_store_queue: .long 0xe0000000
_const_store_queue_mask: .long 0x03ffffc0 /* (0xffffffff & (~0b111111)) & (~(0b111111 << 26)) */