tune-i686: Add new tune for better support of 686-class CPUs.
PATCH 1/1 tune-i686: Add new tune for better support of 686-class CPUs.
There isn't currently any tune available for i686 x86 optimizations. The tune for i586 doesn't enable i686 specific optimizations, and the one for core2 enables things that won't work on a i686 CPU (like SSE3).
This patch also changes the default tune for the qemux86 machine from i586 to i686. This should cause no issue, as "runqemu qemux86" already defaults to run with "-cpu pentium2".
The tune for core2 now inherits from this one, which allows to remove the override on the X86ARCH32 definition.
--- meta/conf/machine/include/tune-core2.inc | 7 ++----- meta/conf/machine/include/tune-i686.inc | 25 +++++++++++++++++++++++++ meta/conf/machine/qemux86.conf | 2 +- 3 files changed, 28 insertions(+), 6 deletions(-) create mode 100644 meta/conf/machine/include/tune-i686.inc
meta/conf/machine/include/tune-core2.inc +2 -5
@@ -8,11 +8,8 @@ # DEFAULTTUNE ?= "core2-32" -# Set x86 target arch to i686, so that glibc enables SSE optimised memcpy, etc. -X86ARCH32 ?= "i686" - # Include the previous tune to pull in PACKAGE_EXTRA_ARCHS -require conf/machine/include/tune-i586.inc +require conf/machine/include/tune-i686.inc # Extra tune features TUNEVALID[core2] = "Enable core2 specific processor optimizations"
@@ -23,7 +20,7 @@ AVAILTUNES += "core2-32" TUNE_FEATURES_tune-core2-32 = "${TUNE_FEATURES_tune-x86} core2" BASE_LIB_tune-core2-32 = "lib" TUNE_PKGARCH_tune-core2-32 = "core2-32" -PACKAGE_EXTRA_ARCHS_tune-core2-32 = "${PACKAGE_EXTRA_ARCHS_tune-i586} core2-32" +PACKAGE_EXTRA_ARCHS_tune-core2-32 = "${PACKAGE_EXTRA_ARCHS_tune-i686} core2-32" AVAILTUNES += "core2-64" TUNE_FEATURES_tune-core2-64 = "${TUNE_FEATURES_tune-x86-64} core2"
meta/conf/machine/include/tune-i686.inc new file +25 -0
@@ -0,0 +1,25 @@ +# +# The i686 CPU family was introduced with the Intel Pentium Pro in 1995. +# It has as required feature flags: fpu tsc cx8 cmov. +# +# It is the minimum CPU required by the Debian i386 port. +# https://lists.debian.org/debian-devel-announce/2016/05/msg00001.html +# +# + +DEFAULTTUNE ?= "i686" +X86ARCH32 ?= "i686" + +# Include the previous tune to pull in PACKAGE_EXTRA_ARCHS +require conf/machine/include/tune-i586.inc + +# Extra tune features +TUNEVALID[i686] = "Enable i686 specific processor optimizations" +TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'i686', ' -march=i686', '', d)}" + +# Extra tune selections +AVAILTUNES += "i686" +TUNE_FEATURES_tune-i686 = "${TUNE_FEATURES_tune-x86} i686" +BASE_LIB_tune-i686 = "lib" +TUNE_PKGARCH_tune-i686 = "i686" +PACKAGE_EXTRA_ARCHS_tune-i686 = "${PACKAGE_EXTRA_ARCHS_tune-i586} i686"
meta/conf/machine/qemux86.conf +1 -1
@@ -8,7 +8,7 @@ PREFERRED_PROVIDER_virtual/libgles1 ?= "mesa" PREFERRED_PROVIDER_virtual/libgles2 ?= "mesa" require conf/machine/include/qemu.inc -require conf/machine/include/tune-i586.inc +require conf/machine/include/tune-i686.inc require conf/machine/include/qemuboot-x86.inc KERNEL_IMAGETYPE = "bzImage"
Signature · 1 line
2.11.0
Quoted 13 lines · Carlos Alberto Lopez Perez
There isn't currently any tune available for i686 x86 optimizations. The tune for i586 doesn't enable i686 specific optimizations, and the one for core2 enables things that won't work on a i686 CPU (like SSE3).
This patch also changes the default tune for the qemux86 machine from i586 to i686. This should cause no issue, as "runqemu qemux86" already
defaults to run with "-cpu pentium2".The tune for core2 now inherits from this one, which allows to remove the override on the X86ARCH32 definition.
Quoted 8 lines
Signed-off-by Carlos Alberto Lopez Perez <[email protected]>---
meta/conf/machine/include/tune-core2.inc | 7 ++----- meta/conf/machine/include/tune-i686.inc | 25
+++++++++++++++++++++++++
meta/conf/machine/qemux86.conf | 2 +-3 files changed, 28 insertions(+), 6 deletions(-)create mode 100644 meta/conf/machine/include/tune-i686.inc
Please don't do multiple things in a single commit like this.
The qemux86 default tune change isn't as simple as it might first appear as it changes the output artefacts which may or may not mean changes to the testing infrastructure (I'd hope not but I also know the reality).
Adding the tune itself should be more straightforward.
We do need to keep track of the comment "Set x86 target arch to i686, so that glibc enables SSE optimised memcpy, etc." as i586 verses i686 does make a significant difference to the glibc config.
Cheers,
Richard
Quoted 30 lines · Richard Purdie
Quoted 13 lines · Carlos Alberto Lopez Perez
There isn't currently any tune available for i686 x86 optimizations. The tune for i586 doesn't enable i686 specific optimizations, and the one for core2 enables things that won't work on a i686 CPU (like SSE3).
This patch also changes the default tune for the qemux86 machine from i586 to i686. This should cause no issue, as "runqemu qemux86" already
defaults to run with "-cpu pentium2".The tune for core2 now inherits from this one, which allows to remove the override on the X86ARCH32 definition.
Quoted 8 lines
Signed-off-by Carlos Alberto Lopez Perez <[email protected]>---
meta/conf/machine/include/tune-core2.inc | 7 ++----- meta/conf/machine/include/tune-i686.inc | 25
+++++++++++++++++++++++++
meta/conf/machine/qemux86.conf | 2 +-3 files changed, 28 insertions(+), 6 deletions(-)create mode 100644 meta/conf/machine/include/tune-i686.inc
Please don't do multiple things in a single commit like this.
The qemux86 default tune change isn't as simple as it might first appear as it changes the output artefacts which may or may not mean changes to the testing infrastructure (I'd hope not but I also know the reality).
Quoted 5 lines
Adding the tune itself should be more straightforward.
Quoted 1 line
We do need to keep track of the comment "Set x86 target arch to i686,
so that glibc enables SSE optimised memcpy, etc." as i586 verses i686 does make a significant difference to the glibc config.
Sure, I will keep track of the comment. I'll follow-up with a new patch.
Due to this significant difference in performance for glibc, it seems to me it is worth to try the change on the default tune on qemux68 machine. Hopefully it will speed-up a bit the testing times both on the testing architecture and the developer machines.
Will splitting the patch in two will help with this?
PATCH v2 1/1 tune-i686: Add new tune for better support of 686-class CPUs.
In reply to Carlos Alberto Lopez PerezThere isn't currently any tune available for i686 x86 optimizations. The tune for i586 doesn't enable i686 specific optimizations, and the one for core2 enables things that won't work on a i686 CPU (like SSE3).
Make the tune for core2 inherits from this one and move there the setting of X86ARCH32.
--- meta/conf/machine/include/tune-core2.inc | 7 ++----- meta/conf/machine/include/tune-i686.inc | 27 +++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 5 deletions(-) create mode 100644 meta/conf/machine/include/tune-i686.inc
meta/conf/machine/include/tune-core2.inc +2 -5
@@ -8,11 +8,8 @@ # DEFAULTTUNE ?= "core2-32" -# Set x86 target arch to i686, so that glibc enables SSE optimised memcpy, etc. -X86ARCH32 ?= "i686" - # Include the previous tune to pull in PACKAGE_EXTRA_ARCHS -require conf/machine/include/tune-i586.inc +require conf/machine/include/tune-i686.inc # Extra tune features TUNEVALID[core2] = "Enable core2 specific processor optimizations"
@@ -23,7 +20,7 @@ AVAILTUNES += "core2-32" TUNE_FEATURES_tune-core2-32 = "${TUNE_FEATURES_tune-x86} core2" BASE_LIB_tune-core2-32 = "lib" TUNE_PKGARCH_tune-core2-32 = "core2-32" -PACKAGE_EXTRA_ARCHS_tune-core2-32 = "${PACKAGE_EXTRA_ARCHS_tune-i586} core2-32" +PACKAGE_EXTRA_ARCHS_tune-core2-32 = "${PACKAGE_EXTRA_ARCHS_tune-i686} core2-32" AVAILTUNES += "core2-64" TUNE_FEATURES_tune-core2-64 = "${TUNE_FEATURES_tune-x86-64} core2"
meta/conf/machine/include/tune-i686.inc new file +27 -0
@@ -0,0 +1,27 @@ +# +# The i686 CPU family was introduced with the Intel Pentium Pro in 1995. +# It has as required feature flags: fpu tsc cx8 cmov. +# +# It is the minimum CPU required by the Debian i386 port. +# https://lists.debian.org/debian-devel-announce/2016/05/msg00001.html +# +# + +DEFAULTTUNE ?= "i686" + +# Set x86 target arch to i686, so that glibc enables SSE optimised memcpy, etc. +X86ARCH32 ?= "i686" + +# Include the previous tune to pull in PACKAGE_EXTRA_ARCHS +require conf/machine/include/tune-i586.inc + +# Extra tune features +TUNEVALID[i686] = "Enable i686 specific processor optimizations" +TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'i686', ' -march=i686', '', d)}" + +# Extra tune selections +AVAILTUNES += "i686" +TUNE_FEATURES_tune-i686 = "${TUNE_FEATURES_tune-x86} i686" +BASE_LIB_tune-i686 = "lib" +TUNE_PKGARCH_tune-i686 = "i686" +PACKAGE_EXTRA_ARCHS_tune-i686 = "${PACKAGE_EXTRA_ARCHS_tune-i586} i686"
Signature · 1 line
2.11.0