arm neon 指令集

本文详细介绍了ARM NEON指令集的不同指令类别,包括正常指令(q)、长指令(l)、宽指令(w)、窄指令(n)和饱和指令(q),以及各种数据类型的饱和范围。还探讨了NEON的寄存器结构和`arm_neon.h`库中的函数,如向量操作、饱和计算、位移、取值和比较操作。此外,列举了支持的运算,如加法、乘法、比较和移位等。
摘要由CSDN通过智能技术生成

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 中的函数介绍
例如

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值