Intel Intrinsics:将来自2个寄存器的所有其他字组合在一起

时间:2015-12-08 23:17:01

标签: assembly intel intrinsics

我有两个__m128i寄存器,让我们称它们为srcA和srcB。从那里我想得到一个__m128i寄存器,让我们说dst,其中包含以下单词(伪代码假设srcA,srcB和dst是单词指针):

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];

如何使用内在函数完成此输出?

1 个答案:

答案 0 :(得分:1)

您还忘了提及您要定位的SSE级别。因此,我将使用最方便的一个,SSE4.1:)

dst = _mm_blend_epi16(srcA, _mm_slli_si128 (srcB, 8), 0xf0);