Keil Logo

Pre-UAL VFP syntax and mnemonics

8.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 8-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 8-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 DUI0379H
Copyright © 2007, 2008, 2011, 2012, 2014-2016 ARM. All rights reserved. 
  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.