【问题标题】:Is it possible to vectorize a multiplication in VC++ without SSE4?是否可以在没有 SSE4 的情况下在 VC++ 中向量化乘法?
【发布时间】:2011-03-27 21:27:25
【问题描述】:

我想向量化一个乘法运算。我尝试使用_mm_mul_epi32,但我的 CPU 只支持“MMX, SSE (1,2,3,3S), EM64T”指令。

谁能告诉我是否可以尝试其他功能?

【问题讨论】:

标签: x86 sse simd


【解决方案1】:

这取决于您的被乘数的范围 - 如果它们适合 16 位,那么在 SSE4 之前有许多 16 x 16 位多 SSE 指令可用(例如 mm_madd_epi16mm_mulhi_epi16mm_mullo_epi16、@ 987654324@等)。

如果您需要 32 位操作数但它们是无符号的,那么您可以使用 mm_mul_epu32

或者,您可以转换为浮点数,并使用_mm_mul_ps(整数 在 SSE 中浮点数转换非常有效,如果它使您的 SIMD 吞吐量提高了 4 倍,那么成本可能是合理的)。

【讨论】:

  • 这与个人无关,我会“跟踪”任何发布有关 SSE、SIMD 等内容的人 ;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-07
  • 2014-06-16
  • 2018-01-03
  • 2020-01-22
相关资源
最近更新 更多