【问题标题】:SSE2 value extraction problemSSE2值提取问题
【发布时间】:2011-08-23 16:54:01
【问题描述】:

我想从 128 位寄存器中提取值(第一个字 16 位),我得到了这个命令,但这不起作用。设置 a 的值后会有一些算术运算,结果会有一些算术运算变量内部最终会改变我想提取第一个单词...我该怎么做...

int r;
int inm=0;

__m128i a=_mm_setr_epi16(8,9,3,2,4,5,6,11);

_asm{
    r = _mm_extract_epi16(a,inm);    
}

【问题讨论】:

  • JavaScript 怎么样?您的代码看起来像 C。除此之外,您不应将此处的问题标记为紧急。

标签: c inline-assembly sse intrinsics


【解决方案1】:

您不要将内在函数放在 _asm 块中。它们的行为与任何其他功能一样。这会正常工作:

#include <emmintrin.h>

__m128i a = _mm_setr_epi16(8,9,3,2,4,5,6,11);
int r = _mm_extract_epi16(a, 0);

【讨论】:

    【解决方案2】:

    pextrw 指令仅适用于立即数。在 C 中,这意味着该值需要是编译时间常数。

    int r;
    static const int inm=0;
    
    __m128i a=_mm_setr_epi16(8,9,3,2,4,5,6,11);
    
    r = _mm_extract_epi16(a,inm);    
    

    【讨论】:

      猜你喜欢
      • 2012-11-08
      • 1970-01-01
      • 1970-01-01
      • 2017-02-14
      • 2014-04-24
      • 2013-07-06
      • 1970-01-01
      • 2015-06-25
      • 1970-01-01
      相关资源
      最近更新 更多