繁体   English   中英

SSE2值提取问题

[英]SSE2 value extraction problem

我想从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);    
}

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

#include <emmintrin.h>

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

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);    

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM