arch: add corei7-avx
PATCH 1/3 arch: add corei7-avx
--- arch/Config.in.x86 | 13 +++++++++++++ 1 file changed, 13 insertions(+)
arch/Config.in.x86 +13 -0
@@ -13,6 +13,8 @@ config BR2_X86_CPU_HAS_SSE4 bool config BR2_X86_CPU_HAS_SSE42 bool +config BR2_X86_CPU_HAS_AVX + bool choice prompt "Target Architecture Variant"
@@ -89,6 +91,16 @@ config BR2_x86_corei7 select BR2_X86_CPU_HAS_SSSE3 select BR2_X86_CPU_HAS_SSE4 select BR2_X86_CPU_HAS_SSE42 +config BR2_x86_corei7_avx + bool "corei7-avx" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX config BR2_x86_atom bool "atom" select BR2_X86_CPU_HAS_MMX
@@ -226,6 +238,7 @@ config BR2_GCC_TARGET_ARCH default "nocona" if BR2_x86_nocona default "core2" if BR2_x86_core2 default "corei7" if BR2_x86_corei7 + default "corei7-avx" if BR2_x86_corei7_avx default "atom" if BR2_x86_atom default "k8" if BR2_x86_opteron default "k8-sse3" if BR2_x86_opteron_sse3
Signature · 1 line
2.3.3
PATCH 1/1 package/glibc: enable lock elision on x86_64 hosts
--- package/glibc/glibc.mk | 1 + 1 file changed, 1 insertion(+)
package/glibc/glibc.mk +1 -0
@@ -90,6 +90,7 @@ define GLIBC_CONFIGURE_CMDS --prefix=/usr \ --enable-shared \ $(if $(BR2_SOFT_FLOAT),--without-fp,--with-fp) \ + $(if $(BR2_x86_64),--enable-lock-elision,) \ --with-pkgversion="Buildroot" \ --without-cvs \ --disable-profile \
Signature · 1 line
2.3.3
PATCH 1/1 package/glibc: enable lock elision on x86_64 hosts
Dear Steven Noonan,
Quoted 10 lines · Steven Noonan
Signed-off-by Steven Noonan <[email protected]>--- package/glibc/glibc.mk | 1 + 1 file changed, 1 insertion(+)package/glibc/glibc.mk +0
-0
package/glibc/glibc.mk define GLIBC_CONFIGURE_CMDS · line 93
Quoted 4 lines
package/glibc/glibc.mk +1
-0@@ -90,6 +90,7 @@ define GLIBC_CONFIGURE_CMDS --prefix=/usr \ --enable-shared \ $(if $(BR2_SOFT_FLOAT),--without-fp,--with-fp) \ + $(if $(BR2_x86_64),--enable-lock-elision,) \
What happens on x86-64 processors that don't have the HW support needed for lock elision ? Does glibc gracefully falls back at runtime to "normal" locks ?
Thanks,
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH 1/1 package/glibc: enable lock elision on x86_64 hosts
Hi Thomas,
Quoted 6 lines · Thomas Petazzoni
Quoted 5 lines · Steven Noonan
Signed-off-by Steven Noonan <[email protected]>--- package/glibc/glibc.mk | 1 + 1 file changed, 1 insertion(+)
Quoted 13 lines
package/glibc/glibc.mk define GLIBC_CONFIGURE_CMDS · line 93
Quoted 9 lines
package/glibc/glibc.mk +1
-0@@ -90,6 +90,7 @@ define GLIBC_CONFIGURE_CMDS --prefix=/usr \ --enable-shared \ $(if $(BR2_SOFT_FLOAT),--without-fp,--with-fp) \ + $(if $(BR2_x86_64),--enable-lock-elision,) \What happens on x86-64 processors that don't have the HW support needed for lock elision ? Does glibc gracefully falls back at runtime to "normal" locks ?
According to the code at sysdeps/unix/sysv/linux/x86/elision-conf.c, __elision_available is initialized from HAS_RTM which is evaluated at run-time (sysdeps/x86_64/multiarch/init-arch.h).
baruch
Signature · 3 lines
http://baruch.siach.name/blog/ ~. .~ Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
- baruch at tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il -PATCH 1/1 package/glibc: enable lock elision on x86_64 hosts
In reply to Steven NoonanDear Steven Noonan,
Quoted 10 lines · Steven Noonan
Signed-off-by Steven Noonan <[email protected]>--- package/glibc/glibc.mk | 1 + 1 file changed, 1 insertion(+)package/glibc/glibc.mk +0
-0
package/glibc/glibc.mk define GLIBC_CONFIGURE_CMDS · line 93
Quoted 4 lines
package/glibc/glibc.mk +1
-0@@ -90,6 +90,7 @@ define GLIBC_CONFIGURE_CMDS --prefix=/usr \ --enable-shared \ $(if $(BR2_SOFT_FLOAT),--without-fp,--with-fp) \ + $(if $(BR2_x86_64),--enable-lock-elision,) \
The last comma was unnecessary. I've removed it and committed, thanks!
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH 2/3 arch: add core-avx2
In reply to Steven Noonan--- arch/Config.in.x86 | 14 ++++++++++++++ 1 file changed, 14 insertions(+)
arch/Config.in.x86 +14 -0
@@ -15,6 +15,8 @@ config BR2_X86_CPU_HAS_SSE42 bool config BR2_X86_CPU_HAS_AVX bool +config BR2_X86_CPU_HAS_AVX2 + bool choice prompt "Target Architecture Variant"
@@ -101,6 +103,17 @@ config BR2_x86_corei7_avx select BR2_X86_CPU_HAS_SSE4 select BR2_X86_CPU_HAS_SSE42 select BR2_X86_CPU_HAS_AVX +config BR2_x86_core_avx2 + bool "core-avx2" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 config BR2_x86_atom bool "atom" select BR2_X86_CPU_HAS_MMX
@@ -239,6 +252,7 @@ config BR2_GCC_TARGET_ARCH default "core2" if BR2_x86_core2 default "corei7" if BR2_x86_corei7 default "corei7-avx" if BR2_x86_corei7_avx + default "core-avx2" if BR2_x86_core_avx2 default "atom" if BR2_x86_atom default "k8" if BR2_x86_opteron default "k8-sse3" if BR2_x86_opteron_sse3
Signature · 1 line
2.3.3
PATCH 2/3 arch: add core-avx2
Quoted 1 line · Steven Noonan
Signed-off-by Steven Noonan <[email protected]>
PATCH 3/3 packages: add AVX/AVX2 support to ffmpeg/opencv
In reply to Steven Noonan--- package/ffmpeg/ffmpeg.mk | 12 ++++++++++++ package/opencv/opencv.mk | 2 ++ 2 files changed, 14 insertions(+)
package/ffmpeg/ffmpeg.mk +12 -0
@@ -301,6 +301,18 @@ else FFMPEG_CONF_OPTS += --disable-sse42 endif +ifeq ($(BR2_X86_CPU_HAS_AVX),y) +FFMPEG_CONF_OPTS += --enable-avx +else +FFMPEG_CONF_OPTS += --disable-avx +endif + +ifeq ($(BR2_X86_CPU_HAS_AVX2),y) +FFMPEG_CONF_OPTS += --enable-avx2 +else +FFMPEG_CONF_OPTS += --disable-avx2 +endif + # Explicitly disable everything that doesn't match for ARM # FFMPEG "autodetects" by compiling an extended instruction via AS # This works on compilers that aren't built for generic by default
package/opencv/opencv.mk +2 -0
@@ -77,6 +77,8 @@ OPENCV_CONF_OPTS += \ -DENABLE_SSE3=$(if $(BR2_X86_CPU_HAS_SSE3),ON,OFF) \ -DENABLE_SSE41=$(if $(BR2_X86_CPU_HAS_SSE4),ON,OFF) \ -DENABLE_SSE42=$(if $(BR2_X86_CPU_HAS_SSE42),ON,OFF) \ + -DENABLE_AVX=$(if $(BR2_X86_CPU_HAS_AVX),ON,OFF) \ + -DENABLE_AVX2=$(if $(BR2_X86_CPU_HAS_AVX2),ON,OFF) \ -DENABLE_SSSE3=$(if $(BR2_X86_CPU_HAS_SSSE3),ON,OFF) # Cuda stuff
Signature · 1 line
2.3.3
PATCH 1/3 arch: add corei7-avx
In reply to Steven NoonanQuoted 1 line · Steven Noonan
Signed-off-by Steven Noonan <[email protected]>
PATCH 1/3 arch: add corei7-avx
In reply to Steven NoonanDear Steven Noonan,
Quoted 4 lines · Steven Noonan
Signed-off-by Steven Noonan <[email protected]>--- arch/Config.in.x86 | 13 +++++++++++++ 1 file changed, 13 insertions(+)
All three patches applied, thanks a lot!
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com