我有两个数组,每个数组包含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寄存器?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)