[英]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.