Re: [RFC] Unsolicited usage of VFP registers for Cortex-M4F

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi again.

Nobody has commented yet on this subject so far. Maybe I should have
asked the questions at beginning rather than end of my mail. Here I
repeat my questions with some explanations.

1) Does GCC use VFP registers for holding data other than floating point
values, such as floating point variables (unsolicited VFP usage)? This would mean (probably large) program using exclusively integer expressions but compiled with -float-abi=hard.

If (1) is true:
1.1) What conditions (flags, expressions in the code, etc.), in addition to selecting -mfloat-abi=hard (or
softfp) shall cause such behaviour. I would appreciate some test case.

1.2) Any pointer to source code (in GCC tree) responsible for this [optimization]?

1.4) Can it be disabled? I found no such command line option for ARM
targets.

Regards
Ilija


On 24.09.2012 12:30, Ilija Kocho wrote:
> Hi colleagues
>
> In a course of implementing lazy context switching I the following link
> come to me:
> http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dai0298a/DAFIFGGE.html
>
> Here is a quote in case the link renders broken (in future):
> -- Quote ------------
>
>
>         GNUC C compiler (gcc)
>
> If a program is compiled with the FPU option, gcc might make use of the
> floating-point registers if register pressure is high, and running low
> on available registers for data processing. In some cases, the memory
> copy might also utilize floating-point registers to hold data.
>
> It is possible to avoid the use of floating-point instructions in
> non-floating-point code by using |-mfloat-abi=soft|.
>
> By default, libraries are built with |-mfloat-abi=soft|. So they must
> not contain floating-point instructions. However, because there are
> various gcc vendors with different build options, you might have to
> check with your gcc tool chain supplier to find out the status of the
> libraries.
>
> -- end of quote ---------
>
> I did some research, googling and searching GCC mailing lists, and found
> no other reference that would confirm/deny or put some light on above text.
>
> Therefore here are my questions:
>
> 1) Does GCC use VFP registers for holding data other than floating point
> values (unsolicited VFP usage)?
>
> If (1) is true:
> 1.1) What conditions, in addition to selecting -mfloat-abi=hard (or
> softfp) shall cause such behaviour. I would appreciate some test case.
> 1.2) Any pointer to source code responsible for this [optimization]? I
> would appreciate this.
> 1.4) Can it be disabled? I found no such command line option for ARM
> targets.
>
> 2) Above quote states that -mfloat-abi=soft should be used for libs, but
> ld refuses to link them with code produced with -mfloat-abi=hard even if
> the libs do not use floating point operations. Is there a waay to tweak
> this?
>
> I am especially intersted for Cortex-M4F architecture, but also I would
> like to know about ARMv7 in general.
>
> Regards
> Ilija
>



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux