打印

DSP程序优化C循环的实例

[复制链接]
1037|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
拿起书本|  楼主 | 2014-9-30 21:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#define WORD_ALIGNED(x) (_nassert(((int)(x) & 0x3) == 0))
/*输入参数加上关键字restrict,内存独立声明,xptr yptr指向的区域不重合*/

void lesson3_c(short * restrict xptr, short * restrict yptr, short *zptr,
               short *w_sum, int N)
{
    int i, w_vec1, w_vec2;
    short w1, w2;
     
  /*保证xptr yptr是四字节对齐的,编程者负责要保证这一点*/                       
    WORD_ALIGNED(xptr);
    WORD_ALIGNED(yptr);                                 
                                      
    w1 = zptr[0];
    w2 = zptr[1];

   /*最小循环20次,循环的次数是2的倍数*/

    #pragma MUST_ITERATE(20, , 2);
    for (i = 0; i < N; i++)
    {
        w_vec1 =  xptr * w1;
        w_vec2 =  yptr * w2;
        w_sum = (w_vec1 + w_vec2) >> 15;
    }
}

相关帖子

沙发
zhangmangui| | 2014-10-7 19:29 | 只看该作者
代码的优化太重要了   

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:好好学习,天天向上!

519

主题

4194

帖子

31

粉丝