我想使用编译器内在函数在NEON寄存器上执行SIMD算术右移(即在符号位中移位)一个恒定量。然而,在documentation中提到的所有转移内在函数中,我找不到这种特殊的转变。 NEON甚至支持算术移位(但是,如果没有这样做会很奇怪)而且我太笨了而无法找到它(或者我正在寻找错误的术语)?或者它可能只是正常的vshr(q)_n
内在因素,而这种转变是由所用实际类型的签名决定的?
答案 0 :(得分:1)
啊,转向ARM-NEON。标志很容易错过。
当然有一个算术右移指令,它与逻辑右移指令相同。您可以通过选择数据类型来决定是否要移动算术或逻辑。
E.g。
int8x8_t vshr_n_s8(int8x8_t a, int b);
将移位算术,因为数据类型是s8而:
uint8x8_t vshr_n_u8(uint8x8_t a, int b);
将逻辑移位(以零填充而不是复制符号位),因为数据类型是无符号的。