This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
The VFP9 floating-point unit (as occasionally used with ARM9 devices) has an erratum (760019) whereby it is possible for floating-point division and square-root instructions to be executed twice. This is not a problem if the destination register is not used as an input, but can cause incorrect results if they do. The safest work-around for this issue is to make the compiler treat these instructions as early-clobber; this ensures that the conditions for result corruption cannot occur. This patch takes that approach, but relaxes back to the original behaviour when either the architecture level is ARMv6 or higher or the VFP sub-architecture level is VFPv3 or higher; if either of these are true then the code cannot run on an affected part. 2014-07-03 Richard Earnshaw <rearnsha@arm.com> * arm.md (arch): Add armv6_or_vfpv3. (arch_enabled): Add test for the above. * vfp.md (divsf_vfp, divdf_vfp): Add earlyclobber when code can run on VFP9. (sqrtsf_vfp, sqrtdf_vfp): Likewise. Committed to trunk. R.
Attachment:
vfp-760019.patch
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |