Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly Intel Intrinsics:从2个寄存器中每隔一个字组合一次_Assembly_Intel_Intrinsics - Fatal编程技术网

Assembly Intel Intrinsics:从2个寄存器中每隔一个字组合一次

Assembly Intel Intrinsics:从2个寄存器中每隔一个字组合一次,assembly,intel,intrinsics,Assembly,Intel,Intrinsics,我有两个m128i寄存器,我们称它们为srcA和srcB。由此我想得到一个uu m128i寄存器,比如dst,它包含以下单词(假设srcA、srcB和dst是单词指针的伪代码): 如何使用intrinsics完成此输出?您还忘了提到您的目标SSE级别。因此,我将使用最方便的SSE4.1:) 所以,这就是你想要的。好的问题是什么?另外:\uuu m128i是一个Microsoft C关键字,但问题上没有C标记。然而,这个问题上有一个assembly标签。那么,您是在寻找C语言的解决方案,还是使用X

我有两个m128i寄存器,我们称它们为srcA和srcB。由此我想得到一个uu m128i寄存器,比如dst,它包含以下单词(假设srcA、srcB和dst是单词指针的伪代码):


如何使用intrinsics完成此输出?

您还忘了提到您的目标SSE级别。因此,我将使用最方便的SSE4.1:)


所以,这就是你想要的。好的问题是什么?另外:
\uuu m128i
是一个Microsoft C关键字,但问题上没有
C
标记。然而,这个问题上有一个
assembly
标签。那么,您是在寻找C语言的解决方案,还是使用XMM[0-7]进行汇编的解决方案?编辑了这个问题。。。我正在寻找一个使用汇编的解决方案。你的问题仍然提到“intrinsic”和“u m128i”,它们是C/C++概念,而不是汇编概念。此外,您还应该提到哪个英特尔体系结构。您可能是指x86,但英特尔的安腾(IA-64)编译器也支持基于m128的内部函数。
dst[0] = srcA[0];
dst[1] = srcA[1];
dst[2] = srcA[2];
dst[3] = srcA[3];
dst[4] = srcB[0];
dst[5] = srcB[1];
dst[6] = srcB[2];
dst[7] = srcB[3];
dst = _mm_blend_epi16(srcA, _mm_slli_si128 (srcB, 8), 0xf0);