【NEON 和 VFP 编程】VFP 指令

本节包括以下小节:

• VABS、VNEG 和 VSQRT

浮点绝对值、求反和平方根。

• VADD、VSUB 和 VDIV

浮点加法、减法和除法。

• VMUL、VMLA、VMLS、VNMUL、VNMLA 和 VNMLS

浮点乘法和乘加,包含可选求反。

• VCMP

浮点数比较。

• VCVT(在单精度数和双精度数之间)

在单精度数和双精度数之间转换。

• VCVT(在浮点数和整数之间)

在浮点数和整数之间转换。

• VCVT(在浮点数和定点数之间)

在浮点数和定点数之间转换。

• VMOV

将浮点常数插入单精度或双精度寄存器。

一 VABS、VNEG 和 VSQRT

浮点绝对值、求反和平方根。

这些指令可以是标量、向量或混合型。

语法

Vop{cond}.F32 Sd, Sm

Vop{cond}.F64 Dd, Dm

其中:

op 是 ABS、NEG 或 SQRT 之一。

cond 是一个可选的条件代码。

Sd、Sm 是用于存放结果和操作数的单精度寄存器。

Dd、Dm 是用于存放结果和操作数的双精度寄存器。

用法

VABS 指令获取 Sm 或 Dm 的内容,清除符号位并将结果存放到 Sd 或 Dd 中。 这样就得到绝对值。

VNEG 指令获取 Sm 或 Dm 的内容,更改符号位,并将结果存放到 Sd 或 Dd 中。 这样就得到与原有值符号相反的值。

VSQRT 指令获取 Sm 或 Dm 的内容的平方根,并将结果存放到 Sd 或 Dd 中。

对于 VABS 和 VNEG 指令,如果操作数为非数字,则符号位的确定视根据上述各个情况而定,但不会产生异常。

猜你喜欢

转载自blog.csdn.net/tyyj90/article/details/103232001