arm neon 指令分类:
正常指令(q)
正常指令可对上述任意向量类型执行运算,并生成大小相同且类型通常与操作数向量相同的结果向量。
长指令(l)
长指令对双字向量操作数执行运算,并生成四字向量结果。 所生成的元素通常是操作数元素宽度的两倍,并属于同一类型。
宽指令(w)
宽指令对一个双字向量操作数和一个四字向量操作数执行运算。 此类指令生成四字向量结果。 所生成的元素和第一个操作数的元素是第二个操作数元素宽度的两倍。
窄指令(n)
窄指令对四字向量操作数执行运算,并生成双字向量结果。 所生成的元素通常是操作数元素宽度的一半。
饱和指令(q)
通过在 V 和指令助记符之间使用 Q 前缀可以指定饱和指令。
数据类型 x 的饱和范围 (s 就是signed,有符号的意思,u就是unsigned,无符号的意思)
s8 –2^7 <= x < 2^7
s16 –2^15 <= x < 2^15
s32 –2^31 <= x < 2^31
s64 –2^63 <= x < 2^63
u8 0 <= x < 2^8
u16 0 <= x < 2^16
u32 0 <= x < 2^32
u64 0 <= x < 2^64
neon的寄存器:
有16个128位四字到寄存器Q0-Q15,32个64位双子寄存器D0-D31,两个寄存器是重叠的。
arm_neon.h 中的函数介绍
例如
int8x8_t vadd_s8 (int8x8_t __a, in

本文详细介绍了ARM NEON指令集的不同指令类别,包括正常指令(q)、长指令(l)、宽指令(w)、窄指令(n)和饱和指令(q),以及各种数据类型的饱和范围。还探讨了NEON的寄存器结构和`arm_neon.h`库中的函数,如向量操作、饱和计算、位移、取值和比较操作。此外,列举了支持的运算,如加法、乘法、比较和移位等。
最低0.47元/天 解锁文章
3405





