1

我想使用编译器内在函数在 NEON 寄存器上执行 SIMD 算术右移(即符号位移位)恒定量。然而,我在文档中提到的所有这些转变内在函数中都找不到这种特殊的转变。NEON 是否甚至支持算术移位(不过,如果不支持会很奇怪)而且我太笨了,找不到它(或者正在寻找错误的术语)?或者它可能只是正常的vshr(q)_n内在属性,而这种转变是由所使用的实际类型的符号决定的?

4

1 回答 1

1

啊,转向 ARM-NEON。符号很容易错过。

当然还有算术右移指令,和逻辑右移指令是一样的。您可以通过选择数据类型来决定是否要转换算术或逻辑。

例如

  int8x8_t   vshr_n_s8(int8x8_t a, int b);

将移位算术,因为数据类型是 s8 而:

  uint8x8_t   vshr_n_u8(uint8x8_t a, int b);

因为数据类型是无符号的,所以将在逻辑上移位(移位为零而不是复制符号位)。

于 2013-09-13T12:48:05.077 回答