[PATCH] arm: allow SIMD instructions to be used without VFP support enabled

Richard Earnshaw rearnsha@arm.com
Tue Apr 9 08:32:00 GMT 2013


On 09/04/13 08:03, Jan Beulich wrote:
>>>> On 08.04.13 at 18:31, Richard Earnshaw <rearnsha@arm.com> wrote:
>> The class of common mnemonics you've changed includes instructions such
>> as vmul.  When you have Neon but no FP, both the scalar FP and vector FP
>> variants of the instructions should be disabled, but the integer
>> versions remain.
>
> By example of vabs I already know that this isn't the case -
> vabs.f32 (with Dn or Qn register operands) continues to assemble
> quite fine.
>
> The fundamental question here is what the meaning of
>
> 	.arch_extension "fp"
>
> and its "nofp" counterpart really is: The current meaning is to
> enable/disable VFP, not floating point support in general. And
> again, according to my reading of the spec you'd need a
> separate enable/disable for SIMD-without-FP first in order to
> achieve the effect you appear to aim at (iow to me "no VFP"
> does not imply integer only SIMD, no matter whether in actual
> implementations this will likely be the case, as there's no
> dependency mentioned in the FPSID and MVFRx registers).
>

The only thing that's useful to think about is what is permitted by the 
architecture.  The architecture only permits INT_NEON + FP_NEON + FP, FP 
(in various guises) and INT_NEON.  It doesn't make sense to me to allow 
other random permutations.  Ergo

	.arch_extension "neon"
	.arch_extension "nofp"

should give INT_NEON in the terminology above.

R.




More information about the Binutils mailing list