Removal of NWFPE in its entirety, and VFP emulation code
Måns Rullgård
mans at mansr.com
Wed Apr 10 16:46:50 EDT 2013
Russell King - ARM Linux <linux at arm.linux.org.uk> writes:
> On Wed, Apr 10, 2013 at 08:23:30PM +0100, Måns Rullgård wrote:
>> Russell King - ARM Linux <linux at arm.linux.org.uk> writes:
>>
>> > On Wed, Apr 10, 2013 at 12:58:09PM +0100, Måns Rullgård wrote:
>> >> Russell King - ARM Linux <linux at arm.linux.org.uk> writes:
>> >>
>> >> > On Wed, Apr 10, 2013 at 12:18:19PM +0100, Måns Rullgård wrote:
>> >> >> Russell King - ARM Linux <linux at arm.linux.org.uk> writes:
>> >> >>
>> >> >> > The situation with VFP is likely less disruptive - only instructions
>> >> >> > which aren't implemented in hardware (or, for example, if you ask for
>> >> >> > inexact exceptions to be enabled) which are bounced to the software
>> >> >> > support code will be affected. I think OMAP should get away unscathed,
>> >> >> > but ARM's implementation will bounce if inexact exceptions are enabled
>> >> >>
>> >> >> What do you mean by this? OMAP uses ARM's cores.
>> >> >
>> >> > OMAP's VFP reports that it never traps to support code for VFP instructions,
>> >> > so the emulation code is never used on OMAP.
>> >>
>> >> That is true for OMAP2 (ARM1136/VFP11) and OMAP3 (Cortex-A8). OMAP4
>> >> (Cortex-A9) and OMAP5 (Cortex-A15) both trap on vector operations.
>> >
>> > No. Both OMAP3 and OMAP4 report that they are VFP subarchitecture 3,
>> > and the VFP subarchitecture 3 never traps to support code for any
>> > instruction (it's the "null subarchitecture" value.)
>>
>> VFPv3 does not require hardware support for vector operations, and the
>> Cortex-A9 NEON TRM [1] says this:
>>
>> ARMv7 deprecates the use of VFP vector mode. The Cortex-A9 NEON MPE
>> hardware does not support VFP vector operations. [...] The Cortex-A9
>> NEON MPE provides high speed VFP operation without support code.
>> However, if an application requires VFP vector operation, then it
>> must use support code.
>>
>> [1] http://infocenter.arm.com/help/topic/com.arm.doc.ddi0409i/CHDEEJDB.html
>>
>> The VFP-only TRM [2] contains similar language:
>>
>> The use of VFP vector mode is deprecated in ARMv7. Vector operations
>> are not supported in hardware. If you use vectors, support code is
>> required.
>>
>> [2] http://infocenter.arm.com/help/topic/com.arm.doc.ddi0408i/I1019986.html
>>
>> The Cortex-A15 TRM [3] follows suit:
>>
>> Vector operations are not supported. Any attempt to execute a vector
>> operation results in an Undefined Instruction exception. If an
>> application requires VFP vector operation, then it must use VFP
>> support code.
>>
>> [3] http://infocenter.arm.com/help/topic/com.arm.doc.ddi0438h/CEGCDBHC.html
>>
>> In future, if you checked the relevant documentation before making bold
>> claims, you might avoid making a fool of yourself.
>
> Oh fuck off, just really fuck off you total dickface. Really, do you
> think that I, being the one who created the VFP support code, haven't
> read the VFP documentation? Christ, you are fucking thick.
I'll ignore the insults for now, but you really should consider watching
your tone if you want to be taken seriously.
> Subarchitecture, bits [22:16]
> 0b0000011
> VFP architecture v3 or later with Null subarchitecture. The entire floating-point
> implementation is in hardware, and no software support code is required. The
> VFP architecture version is indicated by the MVFR0 and MVFR1 registers.
> This value can be used only by an implementation that does not support the trap
> enable bits in the FPSCR, see Floating-point Status and Control Register
> (FPSCR) on page A2-28.
This means merely that the implementation never traps on things like
denormal inputs or over/underflow. It has nothing to do with vector
support.
Both the ARM ARM and the various TRMs make it abundantly clear that
vector operations are optional *and* that some of the cores do *not*
implement them in hardware.
I have also run code with vector operations on A9, and I assure you it
does trap.
> And both OMAP3 and OMAP4 report *this* subarchitecture version. Maybe
> it's you who needs to take a reading lesson instead of making a prat of
> *yourself*.
Same subarchitecture, different variants.
--
Måns Rullgård
mans at mansr.com
More information about the linux-arm-kernel
mailing list