Revision: 7580
Author: [email protected]
Date: Mon Apr 11 23:12:45 2011
Log: ARM: Always enable ARMv7 when VFPv3 is enabled.
[email protected], [email protected]
BUG=v8:1317
TEST=
Review URL: http://codereview.chromium.org//6825037
http://code.google.com/p/v8/source/detail?r=7580
Modified:
/branches/bleeding_edge/src/arm/assembler-arm.cc
/branches/bleeding_edge/src/flag-definitions.h
/branches/bleeding_edge/src/platform-linux.cc
=======================================
--- /branches/bleeding_edge/src/arm/assembler-arm.cc Mon Apr 11 02:04:30
2011
+++ /branches/bleeding_edge/src/arm/assembler-arm.cc Mon Apr 11 23:12:45
2011
@@ -59,12 +59,12 @@
#endif // def CAN_USE_ARMV7_INSTRUCTIONS
// If the compiler is allowed to use VFP then we can use VFP too in our
code
// generation even when generating snapshots. This won't work for cross
- // compilation.
+ // compilation. VFPv3 implies ARMv7, see ARM DDI 0406B, page A1-6.
#if defined(__VFP_FP__) && !defined(__SOFTFP__)
- answer |= 1u << VFP3;
+ answer |= 1u << VFP3 | 1u << ARMv7;
#endif // defined(__VFP_FP__) && !defined(__SOFTFP__)
#ifdef CAN_USE_VFP_INSTRUCTIONS
- answer |= 1u << VFP3;
+ answer |= 1u << VFP3 | 1u << ARMv7;
#endif // def CAN_USE_VFP_INSTRUCTIONS
return answer;
}
@@ -77,9 +77,10 @@
initialized_ = true;
#endif
#ifndef __arm__
- // For the simulator=arm build, use VFP when FLAG_enable_vfp3 is enabled.
+ // For the simulator=arm build, use VFP when FLAG_enable_vfp3 is
+ // enabled. VFPv3 implies ARMv7, see ARM DDI 0406B, page A1-6.
if (FLAG_enable_vfp3) {
- supported_ |= 1u << VFP3;
+ supported_ |= 1u << VFP3 | 1u << ARMv7;
}
// For the simulator=arm build, use ARMv7 when FLAG_enable_armv7 is
enabled
if (FLAG_enable_armv7) {
@@ -93,10 +94,11 @@
}
if (OS::ArmCpuHasFeature(VFP3)) {
- // This implementation also sets the VFP flags if
- // runtime detection of VFP returns true.
- supported_ |= 1u << VFP3;
- found_by_runtime_probing_ |= 1u << VFP3;
+ // This implementation also sets the VFP flags if runtime
+ // detection of VFP returns true. VFPv3 implies ARMv7, see ARM DDI
+ // 0406B, page A1-6.
+ supported_ |= 1u << VFP3 | 1u << ARMv7;
+ found_by_runtime_probing_ |= 1u << VFP3 | 1u << ARMv7;
}
if (OS::ArmCpuHasFeature(ARMv7)) {
=======================================
--- /branches/bleeding_edge/src/flag-definitions.h Fri Apr 1 12:46:21 2011
+++ /branches/bleeding_edge/src/flag-definitions.h Mon Apr 11 23:12:45 2011
@@ -162,7 +162,8 @@
DEFINE_bool(enable_sahf, true,
"enable use of SAHF instruction if available (X64 only)")
DEFINE_bool(enable_vfp3, true,
- "enable use of VFP3 instructions if available (ARM only)")
+ "enable use of VFP3 instructions if available - this implies "
+ "enabling ARMv7 instructions (ARM only)")
DEFINE_bool(enable_armv7, true,
"enable use of ARMv7 instructions if available (ARM only)")
DEFINE_bool(enable_fpu, true,
=======================================
--- /branches/bleeding_edge/src/platform-linux.cc Mon Apr 11 16:46:22 2011
+++ /branches/bleeding_edge/src/platform-linux.cc Mon Apr 11 23:12:45 2011
@@ -92,9 +92,10 @@
uint64_t OS::CpuFeaturesImpliedByPlatform() {
#if (defined(__VFP_FP__) && !defined(__SOFTFP__))
- // Here gcc is telling us that we are on an ARM and gcc is assuming that
we
- // have VFP3 instructions. If gcc can assume it then so can we.
- return 1u << VFP3;
+ // Here gcc is telling us that we are on an ARM and gcc is assuming
+ // that we have VFP3 instructions. If gcc can assume it then so can
+ // we. VFPv3 implies ARMv7, see ARM DDI 0406B, page A1-6.
+ return 1u << VFP3 | 1u << ARMv7;
#elif CAN_USE_ARMV7_INSTRUCTIONS
return 1u << ARMv7;
#elif(defined(__mips_hard_float) && __mips_hard_float != 0)
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev