9.23 Pre-UAL VFP syntax and mnemonics

There are differences between pre-UAL and UAL syntax and mnemonics for VFP instructions.

Where UAL mnemonics use .F32 to specify single-precision data, pre-UAL mnemonics use S appended to the instruction mnemonic. For example, VABS.F32 was FABSS.

Where UAL mnemonics use .F64 to specify double-precision data, pre-UAL mnemonics use D appended to the instruction mnemonic. For example, VCMPE.F64 was FCMPED.

Pre-UAL VFP mnemonics

The following table shows the pre-UAL mnemonics of those instructions that are affected by VFP vector mode. All other VFP instructions are always scalar regardless of the settings of LEN and STRIDE.

Table 9-2 Pre-UAL VFP mnemonics

UAL mnemonic Equivalent pre-UAL mnemonic
VABS FABS
VADD FADD
VDIV FDIV
VMLA FMAC
VMLS FNMAC
VMOV (immediate) FCONST a
VMOV (register) FCPY
VMUL FMUL
VNEG FNEG
VNMLA FNMSC
VNMLS FMSC
VNMUL FNMUL
VSQRT FSQRT
VSUB FSUB

Immediate values in FCONST

The following table shows the floating-point values you can load using FCONST. Trailing zeroes are omitted for clarity. The immediate value you must put in the FCONST instruction is the decimal representation of the binary number abcdefgh, where:

a

is 0 for positive numbers, or 1 for negative numbers.

bcd

is shown in the column headings.

efgh

is shown in the row headings.

Alternatively, you can use 0x followed by the hexadecimal representation.

Table 9-3 Floating-point values for use with FCONST

  bcd 000 001 010 011 100 101 110 111
efgh                  
0000   2.0 4.0 8.0 16.0 0.125 0.25 0.5 1.0
0001   2.125 4.25 8.5 17.0 0.1328125 0.265625 0.53125 1.0625
0010   2.25 4.5 9.0 18.0 0.140625 0.28125 0.5625 1.125
0011   2.375 4.75 9.5 19.0 0.1484375 0.296875 0.59375 1.1875
0100   2.5 5.0 10.0 20.0 0.15625 0.3125 0.625 1.25
0101   2.625 5.25 10.5 21.0 0.1640625 0.328125 0.65625 1.3125
0110   2.75 5.5 11.0 22.0 0.171875 0.34375 0.6875 1.375
0111   2.875 5.75 11.5 23.0 0.1796875 0.359375 0.71875 1.4375
1000   3.0 6.0 12.0 24.0 0.1875 0.375 0.75 1.5
1001   3.125 6.25 12.5 25.0 0.1953125 0.390625 0.78125 1.5625
1010   3.25 6.5 13.0 26.0 0.203125 0.40625 0.8125 1.625
1011   3.375 6.75 13.5 27.0 0.2109375 0.421875 0.84375 1.6875
1100   3.5 7.0 14.0 28.0 0.21875 0.4375 0.875 1.75
1101   3.625 7.25 14.5 29.0 0.2265625 0.453125 0.90625 1.8125
1110   3.75 7.5 15.0 30.0 0.234375 0.46875 0.9375 1.875
1111   3.875 7.75 15.5 31.0 0.2421875 0.484375 0.96875 1.9375
a

The immediate in VMOV (immediate) is the floating-point number you want to load. The immediate in FCONST is the number encoded in the instruction to produce the floating-point number you want to load.

Non-ConfidentialPDF file icon PDF versionARM DUI0473M
Copyright © 2010-2016 ARM Limited or its affiliates. All rights reserved.