C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 如何将两组4个短路装入XMM寄存器?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我刚刚开始使用Visual C 2012的SSE内在函数,我需要一些指针(没有双关语).

我有两个数组,每个数组包含4个带符号的短路(每个数组因此是64位,总共128个).我想将一个加载到XMM寄存器的高位,另一个加载到低位.我可以使用SSE内在函数有效地实现这一目标吗?如果是这样,怎么样?

解决方法

SSE2:
short A[] = {0,1,2,3};
short B[] = {4,5,6,7};

__m128i a,b,v;
a = _mm_loadl_epi64((const __m128i*)A);
b = _mm_loadl_epi64((const __m128i*)B);
v = _mm_unpacklo_epi64(a,b);

// v = {0,3,4,7}

SSE4.1 x64:

short A[] = {0,7};

__m128i v;
v = _mm_loadl_epi64((const __m128i*)A);
v = _mm_insert_epi64(v,*(const long long*)B,1);

// v = {0,7}

请注意,A或B没有对齐要求.但我建议它们都要对齐到8个字节.

大佬总结

以上是大佬教程为你收集整理的c – 如何将两组4个短路装入XMM寄存器?全部内容,希望文章能够帮你解决c – 如何将两组4个短路装入XMM寄存器?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: