OSDN Git Service

Fix the problem of Makefile. Swap the contents of fill/neg.
[libbfin32/algorithm_vector.git] / algorithm_vector / fr32_vector_fill.S
index 66db0a7..b207bcb 100644 (file)
@@ -1,16 +1,16 @@
 /*
-* 32bit vector negate implementation.
+* 32bit vector fill implementation.
 *
 * function prototype
-* void fr32_vector_neg(
-*        const fract32 a[],
+* void fr32_vector_fill(
+*        const fract32 a,
 *        fract32 b[],
 *        int count);
 *
 * parameters
 *   FP+16      R2  count
 *      FP+12   R1      const fr32 b[]
-*      FP+ 8   R0      const fr32 a[]
+*      FP+ 8   R0      const fr32 a
 *
 * return
 *      none
 
 * register layout
 *      P1 : count : loop counter's initial value
-*   I0 : a
 *      I1 : b
-*   R0 : a[i]
-*   R1 : -a[i]
+*   R0 : a
 */
 
        .text
        .align 4
-       .global _fr32_vector_neg;
-       .type _fr32_vector_neg, STT_FUNC;
+       .global _fr32_vector_fill;
+       .type _fr32_vector_fill, STT_FUNC;
 
-_fr32_vector_neg:
+_fr32_vector_fill:
        link    0;
 
                /* Set up registers */
-       i0 = r0;                                // load a
        i1 = r1;                                // load b
        p1 = R2;                                // load count
-       p1 += -1;
 
                /* outer loop */
-               r0 = [i0++];
 
-       loop count lc0 = p1;    // Todo : can be 3 parallel instruction. But seems to be simulator bug in 2013RC1RC
+       loop count lc0 = p1;
        loop_begin count;
-               r1 = - r0(s) ;
-               r0 = [i0++] || [i1++] = r1
+               [i1++] = r0;
        loop_end count;
-               r1 = - r0(s) ;
-               [i1++] = r1;
                /* end of outer loop */
 
 
        unlink;
        rts;
-       .size   _fr32_vector_neg, .-_fr32_vector_neg
+       .size   _fr32_vector_fill, .-_fr32_vector_fill