What's the difference between ARM VFP instructions starting with V and with F?
Why doesn't the ARM Information Center list the F instructions in the assembly reference anymore?
Most of them directly map to each other (for example, vcvtr.s32.f32
and ftosis
), so why do they both exist?
For example, these functions do the same (flooring float->int conversion):
vmrs %r1, fpscr
bic %r0, %r1, #0xc00000
orr %r0, %r0, #0x800000
vmsr fpscr, %r0
vcvtr.s32.f32 %s2, %s2
vmov %r0, %s2
vmsr fpscr, %r1
mrs %r1, fpscr
bic %r0, %r1, #0xc00000
orr %r0, %r0, #0x800000
msr fpscr, %r0
ftosis %s2, %s2
fmrs %r0, %s2
msr fpscr, %r1
The Fxxx names are the “Pre-UAL” (Unified Assembly Language) names, and they are deprecated. The Vxxx names are the UAL names, and are what you should be using for new code.