【发布时间】:2011-04-27 13:22:31
【问题描述】:
我对 SSE 非常陌生,并且使用内部函数优化了一段代码。我对操作本身很满意,但我正在寻找一种更好的方法来编写结果。结果以三个_m128i 变量结束。
我想要做的是将结果值中的特定字节存储到非连续的内存位置。我目前正在这样做:
__m128i values0,values1,values2;
/*Do stuff and store the results in values0, values1, and values2*/
y[0] = (BYTE)_mm_extract_epi16(values0,0);
cb[2]=cb[3] = (BYTE)_mm_extract_epi16(values0,2);
y[3] = (BYTE)_mm_extract_epi16(values0,4);
cr[4]=cr[5] = (BYTE)_mm_extract_epi16(values0,6);
cb[0]=cb[1] = (BYTE)_mm_extract_epi16(values1,0);
y[1] = (BYTE)_mm_extract_epi16(values1,2);
cr[2]=cr[3] = (BYTE)_mm_extract_epi16(values1,4);
y[4] = (BYTE)_mm_extract_epi16(values1,6);
cr[0]=cr[1] = (BYTE)_mm_extract_epi16(values2,0);
y[2] = (BYTE)_mm_extract_epi16(values2,2);
cb[4]=cb[5] = (BYTE)_mm_extract_epi16(values2,4);
y[5] = (BYTE)_mm_extract_epi16(values2,6);
其中y、cb 和cr 是字节(unsigned char) 数组。由于我无法定义的原因,这对我来说似乎是错误的。有人对更好的方法有什么建议吗?
谢谢!
【问题讨论】:
-
我认为您正在寻找 _mm_packXxx 内在函数之一。
-
我看了那些,但似乎没有一个能做我想做的事。我再去看看,谢谢。
标签: c sse intrinsics sse2