【问题标题】:Adding packed bytes/words using MMX instructions使用 MMX 指令添加压缩字节/字
【发布时间】:2015-11-10 22:11:45
【问题描述】:

假设我们有两个包含以下十六进制的寄存器 值:AB0890C24598EE50。使用 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
  • 不幸的是,这是给学校的,所以我不能把它扔掉:)
  • 您需要为此编写实际代码还是只需要说明每种情况下的结果是什么?

标签: x86 simd mmx


【解决方案1】:

我假设您可以将它们放入 MMX 寄存器中。

这会将它们添加为双数

paddd mm0, mm1

这会将它们添加为字节

paddb mm0, mm1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多