5.3.4. NEON 中的正常指令、长指令、宽指令、窄指令和饱和指令

许多 NEON 数据处理指令可具有正常指令、长指令、宽指令、窄指令和饱和指令变体形式。

NEON 指令可处理:

正常指令

正常指令可对上述任意向量类型执行运算,并生成大小相同且类型通常与操作数向量相同的结果向量。

通过将 Q 附加到指令助记符,可以指定正常指令的操作数和结果必须全部为四字。 这样指定后,如果操作数或结果不是四字,则汇编程序会生成错误。

长指令

长指令对双字向量操作数执行运算,并生成四字向量结果。 所生成的元素通常是操作数元素宽度的两倍,并属于同一类型。

通过将 L 追加到指令助记符来指定长指令。

宽指令

宽指令对一个双字向量操作数和一个四字向量操作数执行运算。 此类指令生成四字向量结果。 所生成的元素和第一个操作数的元素是第二个操作数元素宽度的两倍。

通过将 W 追加到指令助记符来指定宽指令。

窄指令

窄指令对四字向量操作数执行运算,并生成双字向量结果。 所生成的元素通常是操作数元素宽度的一半。

通过将 N 追加到指令助记符来指定窄指令。

饱和指令

有关饱和指令用法的一般描述,请参阅饱和指令。 有关 NEON 饱和指令饱和到的范围,请参阅Table 5.7

通过在 V 和指令助记符之间使用 Q 前缀来指定饱和指令。

Table 5.7. NEON 饱和范围 

数据类型 x 的饱和范围
S8 -27 <= x < 27
S16 -215 <= x < 215
S32 -231 <= x < 231
S64 -263 <= x < 263
U8 0 <= x < 28
U16 0 <= x < 216
U32 0 <= x < 232
U64 0 <= x < 264
Copyright © 2002-2007 ARM Limited. All rights reserved. ARM DUI 0204HC
Non-Confidential