正在阅读:基于MMX指令集的程序设计简介基于MMX指令集的程序设计简介

2004-02-14 09:34 出处:CSDN 作者:hifrog(翻译) 责任编辑:linjixiong

    DWORD* pIn = (DWORD*) pSource;          // 输入双字数组
    DWORD* pOut = (DWORD*) pDest;           // 输出双字数组

    for ( int i = 0; i < nNumberOfPixels; i++ )
    {
        tmp = _m_from_int(*pIn);                // tmp = *pIn (在tmp的低32位写入数据)

      tmp = _mm_unpacklo_pi8(tmp, nNull );    //将tmp中低位的4个字节转化为字
//字的高位用nNull中对应位上的位值填充。

      tmp =  _mm_mullo_pi16 (tmp , nCoeff);   //将tmp中的每一个字相乘,将相乘结果的高位送到nCoeff,在tmp中只保留每个结果的低位。

      tmp = _mm_srli_pi16 (tmp , 8);          // 将tmp中的每一个字右移8位,相当于除以256

      tmp = _mm_packs_pu16 (tmp, nNull);      // 使用饱和模式将tmp中的结果做如下处理:
                                                //将tmp中的4个字转化为4个字节,并将这4个字节写到tmp中的低32位中
                                                // 同时,将nNull中的4个字转化为4个字节,并将这4个字节写到tmp的高32位中。

      *pOut = _m_to_int(tmp);                 // *pOut = tmp (将tmp低32位的数据放入pOut数组中)

察看评论详细内容 我要发表评论
作者笔名简短内容 发表时间
:
键盘也能翻页,试试“← →”键

相关文章

关注我们

最新资讯离线随时看 聊天吐槽赢奖品