NEON intrinsic 简易入门指南
创始人
2024-05-24 08:41:29
0

简介

Neon是ARM平台的向量化计算指令集,通过一条指令完成多个数据的运算达到加速的目的。新的Armv8a架构有32个128bit的向量寄存器,因此每次运算可以同时处理最多128bit的数据。

数据格式

x[x]_t

解释一下,
type 数据类型
size 元素大小
number_of_lanes 通道数量
length_of_array 数组中的元素个数

数据示例

  • int8x8_t 1个64bit的数据,包含8个int8类型的数据
  • uint8x16x3_t 3个128bit的数据,每个数据包含16个uint8类型的数据

指令格式

ret v[mod]opname[shape][flags]_type(args)

解释一下,
ret 返回数据类型
v vector的简写,是neon intrinsic指令的一个统一前缀
mod 模式主要有以下几种:

  • p pairwise操作,对操作数据两两计操作
  • q 饱和操作,如果结果超过上限,则截断
  • r 四舍五入操作
  • h 折半操作,即右移一位
  • d 翻倍操作,即左移一位,一般会和长指令一起使用

opname 操作名称,如add, sub等
shape 类型主要有以下几种:

  • u 表示输入位有符号型,输出位无符号型
  • n 窄指令,输出是输入的一半
  • l 长指令,输出是输入的2倍
  • w 表示wide,第一个输入向量和输出类型一致,第二个输入向量是第一个输入向量长度的一半
  • _high AArch64下,配合l/n使用,使用l时,表示输入向量只有高64位有效;使用n时,表示输出向量只有高64位有效
  • _lane 指定向量中的某个通道参与计算

flags 标志位

  • 如果没有,则表示64位并行
  • q 表示128位并行,还可以用b, h, s, d(分别代表8,16,32,64位)

_type 输入数据类型

  • s8,s16,s32,s64,u8,u16,u32,u64,f16,f32,f64 s表示有符号整数,u表示无符号整数,f表示浮点数

args 参数

指令示例

  • int16x4_t vadd_s16(int16x4_t a, int16x4_t b)
    add表示加法,s16表示输入16位有符号整数。整个操作就是a+b
  • uint8x8 vqshlun_n_s16(int16x8_t a, int b)
    q表示饱和操作,shl左移,u表示输出转为无符号数,n表示窄指令,即输出为输入的一半,s16表示输入数据为int16。整个操作的意思就是将a左移b位,然后转成无符号型,再转成uint8,如果超过上限,就设为255
  • int16x8_t vreinterpretq_s16_u16(uint16x8_t a)
    uint16转int16
  • int32x4_t vmovl_s16(int16x8_t a);
    mov表示移动,这个函数就是把int16类型的数据提升到int32
  • int16x4_t vget_high_s16(int16x8_t a);
    寄存器a有128位,输出是64位。这个操作的意思就是获取a中的高64位并放到输出向量中
  • int16x8_t vcombine_s16(int16x4_t a, int16x4_t b);
    把两个16x8寄存器向量连接成一个128位的寄存器向量,注意ab类型必须相同
  • int16x4_t vpmax_s8(int16x4_t a, int16x4_t b);
    一一对比a, b的4个元素,输出较大的






参考:

https://zhuanlan.zhihu.com/p/358603760
https://zhuanlan.zhihu.com/p/441686632
https://developer.arm.com/documentation/102467/0100/
https://www.cnblogs.com/fengliu-/p/16140993.html

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...