Skip to contentSkip to conversation

package/mplayer: disable inline sse on i386

PATCH New Bernd Kuhls 4 participants 9 messages May 13, 2017 – Apr 1, 2018

lore
Share & tools
lore
#0 lore raw

PATCH 1/3 package/mplayer: disable inline sse on i386

Fixes

libavcodec/x86/ac3dsp_init.c: In function 'ac3_downmix_sse':
libavcodec/x86/ac3dsp_init.c:161:9: error: can't find a register in class 'GENERAL_REGS' while reloading 'asm' libavcodec/x86/ac3dsp_init.c:165:9: error: can't find a register in class 'GENERAL_REGS' while reloading 'asm' libavcodec/x86/ac3dsp_init.c:161:9: error: 'asm' operand has impossible constraints libavcodec/x86/ac3dsp_init.c:165:9: error: 'asm' operand has impossible constraints libavcodec/x86/ac3dsp_init.c:174:9: error: 'asm' operand has impossible constraints

found by autobuilder job
http://autobuild.buildroot.net/results/9f5/9f5a497c6242860fb67a5aa2996c3509f49a4564//

Please note that this patch alone will not fix all build errors, sse2 and mmxext show similar errors and are fixed by follow-up patches.

---
 package/mplayer/mplayer.mk | 4 ++++
 1 file changed, 4 insertions(+)
package/mplayer/mplayer.mk +4 -0
index f43ec5dc7..0d3ba0b81 100644
@@ -292,6 +292,10 @@ define MPLAYER_DISABLE_INLINE_ASM
 		$(@D)/config.h
 	$(SED) 's,#define HAVE_MMX_EXTERNAL 1,#define HAVE_MMX_EXTERNAL 0,g' \
 		$(@D)/config.h
+	$(SED) 's,#define HAVE_SSE_INLINE 1,#define HAVE_SSE_INLINE 0,g' \
+		$(@D)/config.h
+	$(SED) 's,#define HAVE_SSE_EXTERNAL 1,#define HAVE_SSE_EXTERNAL 0,g' \
+		$(@D)/config.h
 endef
 
 ifeq ($(BR2_i386),y)
Signature · 1 line
2.11.0
#1 lore raw

PATCH 2/3 package/mplayer: disable inline sse2 on i386

Fixes subsequent sse2-related build error

libavcodec/x86/cavsdsp.c: In function 'ff_cavsdsp_init_x86':
libavcodec/x86/cavsdsp.c:589:45: error: 'put_cavs_qpel16_mc00_sse2' undeclared (first use in this function) libavcodec/x86/cavsdsp.c:589:45: note: each undeclared identifier is reported only once for each function it appears in libavcodec/x86/cavsdsp.c:590:45: error: 'avg_cavs_qpel16_mc00_sse2' undeclared (first use in this function) common.mak:60: recipe for target 'libavcodec/x86/cavsdsp.o' failed

after disabling inline sse by the previous patch.

Found while fixing autobuilder
http://autobuild.buildroot.net/results/9f5/9f5a497c6242860fb67a5aa2996c3509f49a4564/

---
 package/mplayer/mplayer.mk | 4 ++++
 1 file changed, 4 insertions(+)
package/mplayer/mplayer.mk +4 -0
index 0d3ba0b81..59e37d828 100644
@@ -296,6 +296,10 @@ define MPLAYER_DISABLE_INLINE_ASM
 		$(@D)/config.h
 	$(SED) 's,#define HAVE_SSE_EXTERNAL 1,#define HAVE_SSE_EXTERNAL 0,g' \
 		$(@D)/config.h
+	$(SED) 's,#define HAVE_SSE2_INLINE 1,#define HAVE_SSE2_INLINE 0,g' \
+		$(@D)/config.h
+	$(SED) 's,#define HAVE_SSE2_EXTERNAL 1,#define HAVE_SSE2_EXTERNAL 0,g' \
+		$(@D)/config.h
 endef
 
 ifeq ($(BR2_i386),y)
Signature · 1 line
2.11.0
#2 lore raw

PATCH 3/3 package/mplayer: disable inline mmxext on i386

In reply to Bernd Kuhls

Fixes subsequent mmxext-related build error

libavcodec/x86/fdct.c: In function 'ff_fdct_mmxext':
libavcodec/x86/fdct.c:567:27: error: 'tab_frw_01234567' undeclared (first use in this function) libavcodec/x86/fdct.c:567:27: note: each undeclared identifier is reported only once for each function it appears in common.mak:60: recipe for target 'libavcodec/x86/fdct.o' failed

after disabling inline sse & sse2 by the previous patches.

Finally fixes
http://autobuild.buildroot.net/results/9f5/9f5a497c6242860fb67a5aa2996c3509f49a4564/

---
 package/mplayer/mplayer.mk | 4 ++++
 1 file changed, 4 insertions(+)
package/mplayer/mplayer.mk +4 -0
index 59e37d828..73cfdde23 100644
@@ -292,6 +292,10 @@ define MPLAYER_DISABLE_INLINE_ASM
 		$(@D)/config.h
 	$(SED) 's,#define HAVE_MMX_EXTERNAL 1,#define HAVE_MMX_EXTERNAL 0,g' \
 		$(@D)/config.h
+	$(SED) 's,#define HAVE_MMXEXT_INLINE 1,#define HAVE_MMXEXT_INLINE 0,g' \
+		$(@D)/config.h
+	$(SED) 's,#define HAVE_MMXEXT_EXTERNAL 1,#define HAVE_MMXEXT_EXTERNAL 0,g' \
+		$(@D)/config.h
 	$(SED) 's,#define HAVE_SSE_INLINE 1,#define HAVE_SSE_INLINE 0,g' \
 		$(@D)/config.h
 	$(SED) 's,#define HAVE_SSE_EXTERNAL 1,#define HAVE_SSE_EXTERNAL 0,g' \
Signature · 1 line
2.11.0
#3 lore raw

PATCH 1/3 package/mplayer: disable inline sse on i386

In reply to Bernd Kuhls

Hello,

Quoted 9 lines · Bernd Kuhls

Fixes

libavcodec/x86/ac3dsp_init.c: In function 'ac3_downmix_sse':
libavcodec/x86/ac3dsp_init.c:161:9: error: can't find a register in class 'GENERAL_REGS' while reloading 'asm' libavcodec/x86/ac3dsp_init.c:165:9: error: can't find a register in class 'GENERAL_REGS' while reloading 'asm' libavcodec/x86/ac3dsp_init.c:161:9: error: 'asm' operand has impossible constraints libavcodec/x86/ac3dsp_init.c:165:9: error: 'asm' operand has impossible constraints libavcodec/x86/ac3dsp_init.c:174:9: error: 'asm' operand has impossible constraints

Quoted 5 lines

found by autobuilder job
http://autobuild.buildroot.net/results/9f5/9f5a497c6242860fb67a5aa2996c3509f49a4564//

Please note that this patch alone will not fix all build errors, sse2 and mmxext show similar errors and are fixed by follow-up patches.

All of this is very messy. Why isn't the ffmpeg code building properly on x86 ? It's a major platform, shouldn't x86 just work ?

Best regards,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
#4 lore raw

PATCH 1/3 package/mplayer: disable inline sse on i386

[posted and mailed]

Thomas Petazzoni <thomas.petazzoni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8 @public.gmane.org> wrote in news:20170514160855.2dea324b at free-electrons.com:

Quoted 2 lines

All of this is very messy. Why isn't the ffmpeg code building properly on x86 ? It's a major platform, shouldn't x86 just work ?

Hi Thomas,

honestly I have no idea what causes the problem. Maybe activating inline asm on x86 at all is a problem due to hardware constraints as described here:
http://stackoverflow.com/questions/8275859/error-cant-find-a-register-in-
class-general-regs-while-reloading-asm ?

Regards, Bernd

#5 lore raw

PATCH 1/3 package/mplayer: disable inline sse on i386

Hi Bernd,

Coming back to this ancient series...

Quoted 8 lines · Bernd Kuhls

[posted and mailed]

Thomas Petazzoni <thomas.petazzoni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8 @public.gmane.org> wrote in news:20170514160855.2dea324b at free-electrons.com:

Quoted 2 lines

All of this is very messy. Why isn't the ffmpeg code building properly on x86 ? It's a major platform, shouldn't x86 just work ?

Quoted 6 lines

Hi Thomas,

honestly I have no idea what causes the problem. Maybe activating inline asm on x86 at all is a problem due to hardware constraints as described here:
http://stackoverflow.com/questions/8275859/error-cant-find-a-register-in-
class-general-regs-while-reloading-asm ?

Looking at current mplayer build failures, they seem slightly different than
the errors you report in the three patches here.

With all the fixes we need for mplayer's bundled ffmpeg, why don't we just
switch to ffmpeg itself? mplayer upstream doesn't seem to advise against it, Debian doesn't use the bundled one, so why not? OK, it will probably be some effort to unbundle it, but I think it's more future-safe that way.

Regards,
Arnout

Signature · 6 lines
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
#6 lore raw

PATCH 1/3 package/mplayer: disable inline sse on i386

Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Arnout" == Arnout Vandecappelle <[email protected]> writes:

Hi,

Quoted 7 lines

Looking at current mplayer build failures, they seem slightly different than
the errors you report in the three patches here.

With all the fixes we need for mplayer's bundled ffmpeg, why don't we just
switch to ffmpeg itself? mplayer upstream doesn't seem to advise against it, Debian doesn't use the bundled one, so why not? OK, it will probably be some effort to unbundle it, but I think it's more future-safe that way.

Or alternatively drop mplayer now that we have mpv. Mplayer upstream seems pretty dead with no releases in the last two years.

Signature · 1 line
Bye, Peter Korsgaard
#7 lore raw

PATCH 1/3 package/mplayer: disable inline sse on i386

Am Sun, 01 Apr 2018 14:17:48 +0200 schrieb Peter Korsgaard:

Quoted 2 lines

Or alternatively drop mplayer now that we have mpv. Mplayer upstream seems pretty dead with no releases in the last two years.

Hi Peter,

no objections, and I have no interest in fixing the ffmpeg code in mplayer. The only package selecting mplayer (as runtime dependency) is tovid, we need to handle that as well.
The libplayer package only has an optional dependency to mplayer, its option BR2_PACKAGE_LIBPLAYER_MPLAYER would need legacy handling.

Shall I send patches to remove mplayer?

Regards, Bernd

#8 lore raw

PATCH 1/3 package/mplayer: disable inline sse on i386

Quoted 11 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Bernd" == Bernd Kuhls <[email protected]> writes:

Am Sun, 01 Apr 2018 14:17:48 +0200 schrieb Peter Korsgaard:

Quoted 2 lines

Or alternatively drop mplayer now that we have mpv. Mplayer upstream seems pretty dead with no releases in the last two years.

Hi Peter,

no objections, and I have no interest in fixing the ffmpeg code in mplayer. The only package selecting mplayer (as runtime dependency) is tovid, we need to handle that as well.

Yes. It looks like tovid can use mpv as well, so that might be a solution.

Quoted 2 lines

The libplayer package only has an optional dependency to mplayer, its option BR2_PACKAGE_LIBPLAYER_MPLAYER would need legacy handling.

Correct.

Quoted 1 line

Shall I send patches to remove mplayer?

Yes, please!

Signature · 1 line
Bye, Peter Korsgaard