diff --git a/example/wiffle_screen_space_store_queue.cpp b/example/wiffle_screen_space_store_queue.cpp index cb2967a..d308c71 100644 --- a/example/wiffle_screen_space_store_queue.cpp +++ b/example/wiffle_screen_space_store_queue.cpp @@ -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; } } diff --git a/sobel_fipr.s b/sobel_fipr.s index 0909ce1..3898d71 100644 --- a/sobel_fipr.s +++ b/sobel_fipr.s @@ -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 */ diff --git a/sobel_fipr_inner.s b/sobel_fipr_inner.s index 82a8d5b..c8f5f14 100644 --- a/sobel_fipr_inner.s +++ b/sobel_fipr_inner.s @@ -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 diff --git a/sobel_fipr_store_queue.s b/sobel_fipr_store_queue.s index 06f1426..5d4c734 100644 --- a/sobel_fipr_store_queue.s +++ b/sobel_fipr_store_queue.s @@ -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)) */