使用 MMX 指令添加压缩字节/字
Posted
技术标签:
【中文标题】使用 MMX 指令添加压缩字节/字【英文标题】:Adding packed bytes/words using MMX instructions 【发布时间】:2015-11-10 22:11:45 【问题描述】:假设我们有两个包含以下十六进制的寄存器
值:AB0890C2
、4598EE50
。使用 MMX 添加它们的结果是什么
说明:
a. for packed byte
b. for packed word
假设不使用饱和算法?
根据我的理解,如果你正常添加两个十六进制值,你会得到F0A17F12
,但是我如何使用 MMX 指令为压缩字节和字添加这个?
【问题讨论】:
它必须是 MMX 有什么原因吗?由于您只有两个 32 位值,因此使用 SWAR 可能会更容易。 这个问题来自我的教科书,上面写着要使用MMX指令。 您可能想扔掉那本书(MMX 已经过时了 20 年)并获得一些更新的东西。如果是为了学校而你别无选择,那么请查看 MMX 内在函数 here,尤其是_mm_add_pi8
和 _mm_add_pi16
。
不幸的是,这是给学校的,所以我不能把它扔掉:)
您需要为此编写实际代码还是只需要说明每种情况下的结果是什么?
【参考方案1】:
我假设您可以将它们放入 MMX 寄存器中。
这会将它们添加为双数
paddd mm0, mm1
这会将它们添加为字节
paddb mm0, mm1
【讨论】:
以上是关于使用 MMX 指令添加压缩字节/字的主要内容,如果未能解决你的问题,请参考以下文章