MXU 指令使用指南.PDF

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MXU 指令使用指南.PDF

MXU 指令使用指南 MXU 指令使用指南 本文介绍君正 MXU 多媒体加速指令的嵌入汇编使用方法及编译步骤。 1、MXU 指令的嵌入汇编使用方法 君正处理器(如 Jz4740 )实现了 60 条 SIMD 指令用来进行多媒体编解码的优化,象我们常用的 MPEG4、H264、VC-1 、RMVB 等多媒体解码算法都可以使用 MXU 指令来进行优化。通常情况下我 们需要在 C 代码中以嵌入汇编的方式来使用 MXU 指令,这里我们就来介绍其使用方法。详细 MXU 指令请参考《Ingenic Media Extension Instruction Set》规范文档。 首先,我们已经以宏的方式定义好了 MXU 指令,并包含在一个头文件中。该文件定义了 17 个 MXU 寄存器(xr0 ~ xr16 )和所有多媒体指令,详细内容请参考头文件jz_mxh.h 。下面举一个例子: #define S32LDD(xra,rb,s12) \ do { \ __asm__ __volatile (S32LDD xr%0,%z1,%2 \ : \ :K(xra),d (rb),I(s12)); \ } while (0) 上面的宏定义了 S32LDD 指令,该指令包含三个操作域 xra, rb 和 s12,完成从内存[rb + s12]读取一 个 word 数据到 xra (a = 1 ~ 16 )寄存器。 为了介绍如何使用 MXU 指令的嵌入汇编进行编程,我们截取 XVID 中一个典型计算: 8X8 block 的 IDCT 残差加上对该 block 的运动补偿,相应的 C 代码和用 MXU 指令嵌入汇编优化的代码都列出,便 于对照理解。 /* * SRC - the source buffer (NOTE: offset 0 must be 4-byte aligned) * DST - the destination buffer (NOTE: offset 0 always is 4-byte aligned) * * Then the function does the 16-8 bit transfer and this serie of operations : * * SRC (16bit) = SRC * DST (8bit) = max(min(DST+SRC, 255), 0) */ ////////////////////////////////////////////////////// //原始的 C 代码 ////////////////////////////////////////////////////// void MXU 指令使用指南 transfer_16to8add_c(uint8_t * const dst, const int16_t * const src, uint32_t stride) { uint32_t i, j; for (j = 0; j 8; j++) { for (i = 0; i 8; i++) { int16_t pixel = (int16_t) dst[j * stride + i] + src[j * 8 + i]; if (pixel 0) { pixel = 0;

文档评论(0)

tangtianbao1 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档