中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
鲲鹏小智

NEON指令

NEON指令格式的通用描述如下:

{<prefix>}<op>{<suffix>} Vd.<T>, Vn.<T>, Vm.<T>
  • {}代表可选参数。
  • <prefix>一般用来标识该条NEON指令处理的数据类型,如S表示有符号整型,U表示无符号整型,F表示浮点数,P表示布尔数据类型。
  • <op>表示该条NEON指令的操作类型,比如ADD表示加操作。
  • <suffix>表示该条NEON指令的操作行为,比如P表示将向量按对操作,V表示跨所有数据通道操作,2表示在宽指令/窄指令中操作数据的高位部分。
  • <T>表示该条NEON指令处理数据的宽度,比如B表示8bit数据宽度,H表示16bit数据宽度,S表示32bit数据宽度,D表示64bit数据宽度。

我们看两个具体的NEON指令代表的含义。

  • ADDHN2:将两个128位向量相加,产生一个64位向量结果,作为NEON寄存器的高64位部分存储。
  • SADDL2:将NEON寄存器的两个高64位向量相加,产生128位向量结果。

前面提到了宽指令和窄指令,这代表的是什么意思呢?其实,NEON指令按照操作数类型可以分为正常指令、宽指令、窄指令、饱和指令、长指令。

  • 正常指令:生成大小相同且类型通常与操作数向量相同的结果向量。
  • 长指令:对双字向量操作数执行运算,生产四字向量到结果。所生成的元素一般是操作数元素宽度的两倍,并属于同一类型。L标记,如VMOVL。
  • 宽指令:一个双字向量操作数和一个四字向量操作数执行运算,生成四字向量结果。W标记,如VADDW。
  • 窄指令:四字向量操作数执行运算,并生成双字向量结果,所生成的元素一般是操作数元素宽度的一半。N标记,如VMOVN。
  • 饱和指令:当超过数据类型指定到范围则自动限制在该范围内。Q标记,如VQSHRUN。
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词