【问题标题】:What is the difference between these 128bit SIMD xor operations [duplicate]这些 128 位 SIMD xor 操作有什么区别
【发布时间】:2015-05-21 06:50:09
【问题描述】:

Intel 提供了几个 SIMD 命令,似乎都是对 128 位数据执行按位异或:

_mm_xor_pd(__m128d, __m128d)
_mm_xor_ps(__m128, __m128)
_mm_xor_si128(__m128i, __m128i)

按位运算不是只对位流进行吗?为什么会有三种不同类型但数据大小相同的操作?

【问题讨论】:

    标签: simd sse2


    【解决方案1】:

    _mm_xor_pd(__m128d, __m128d) 对两个 64 位双精度浮点数进行运算

    [https://msdn.microsoft.com/en-us/library/w87cdc33%28v=vs.90%29.aspx1

    _mm_xor_ps(__m128d, __m128d) 对四个 32 位单精度浮点数进行运算

    https://msdn.microsoft.com/en-us/library/ss6k3wk8(v=vs.90).aspx

    _mm_xor_si128(__m128d, __m128d) 对一个 128 位值进行运算

    https://msdn.microsoft.com/en-us/library/fzt08www%28v=vs.90%29.aspx

    XOR 可以在任意两个二进制数之间使用,无论它们的格式如何。为什么是三个?因为支持常见数据类型(浮点数、双精度和 128 位)和没有两条多指令是一种平衡。

    余额是使用的硅数量,因为每组操作可能发生在单独的功能单元(整数、浮点数、双精度)中。如果他们使用不同的芯片,所有不同类型的操作都可以并行执行。

    【讨论】:

      【解决方案2】:

      从严格的 C 角度来看,它们都因类型而异。

      它们也可能是关于您打算管理哪种数据的 CPU 提示。至少这是experts 附带的最好解释。正如他们所说,这需要在硬件上进行检查。

      【讨论】:

        猜你喜欢
        • 2014-06-15
        • 2018-04-27
        • 1970-01-01
        • 1970-01-01
        • 2020-06-28
        • 1970-01-01
        • 2011-06-28
        • 2015-07-28
        相关资源
        最近更新 更多