【发布时间】:2013-09-18 00:58:44
【问题描述】:
我不明白如何区分 vbit、vbsl 和 vbif 与 neon 内在函数。我需要执行 vbit 操作,但如果我使用内部函数中的 vbslq 指令,我将得不到我想要的。
例如我有一个像这样的源向量:
uint8x16_t source = 39 62 9b 52 34 5b 47 48 47 35 0 0 0 0 0 0
目标向量是:
uint8x16_t destination = 0 0 0 0 0 0 0 0 0 0 0 0 c3 c8 c5 d5
我希望输出如下:
39 62 9b 52 34 5b 47 48 47 35 0 0 c3 c8 c5 d5
意思是我想从源中复制前十个字节,而其他 6 个保持不变。 我正在使用这个面具:
{0,0,0,0,0,0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};
vbslq_u8的正确使用方法是什么?
【问题讨论】:
-
您使用的是哪个内在函数,您希望它做什么?也许您可以照原样发布代码的相关部分并解释您需要做什么?
-
我需要做与 stackoverflow.com/questions/18312814/… 完全相同的事情。我试图按照答案中的说法去做,但我得到的结果不是我想要的。我使用的指令是 vbslq_u8 但我不明白它到底是做什么的。
-
好的 - 发布代码,同时发布您传递给内部函数的输入数据的示例,您期望的输出数据是什么,以及实际数据是什么。
-
@PaulR 。我用所有信息编辑了我的答案。
标签: arm simd neon intrinsics