audio/pulseaudio failed on i386

Carlos Jacobo Puga Medina cjpugmed at gmail.com
Fri Jan 24 13:49:31 UTC 2014


2014/1/23 Carlos Jacobo Puga Medina <cjpugmed at gmail.com>

> On FreeBSD 10.0-RELEASE/i386,  I can't seem to build pulseaudio.
>
> I get the following error:
>
> pulsecore/svolume_mmx.c:108:43: [0;1;31merror: register %rdx is only
> available in 64-bit mode
>         " je 2f                         \n\t"
>                                          ^
> <inline asm>:5:9: [0;1;30mnote: instantiated into assembly here
>          movd (%rdx, %edi, 4), %mm0
>               ^~~~~
> pulsecore/svolume_mmx.c:124:43: [0;1;31merror: register %rdx is only
> available in 64-bit mode
>         "3:                             \n\t" /* do samples in groups of 2
> */
>                                          ^
> <inline asm>:33:9: [0;1;30mnote: instantiated into assembly here
>          movq (%rdx, %edi, 4), %mm0
>               ^~~~~
> pulsecore/svolume_mmx.c:137:43: [0;1;31merror: register %rdx is only
> available in 64-bit mode
>         "5:                             \n\t" /* do samples in groups of 4
> */
>                                          ^
> <inline asm>:59:9: [0;1;30mnote: instantiated into assembly here
>          movq (%rdx, %edi, 4), %mm0
>               ^~~~~
> pulsecore/svolume_mmx.c:138:43: [0;1;31merror: register %rdx is only
> available in 64-bit mode
>         " movq (%q1, %3, 4), %%mm0      \n\t" /* |  v1h  |  v1l  |  v0h  |
>  v0l  | */
>                                          ^
> <inline asm>:60:10: [0;1;30mnote: instantiated into assembly here
>          movq 8(%rdx, %edi, 4), %mm2
>                ^~~~~
> pulsecore/svolume_mmx.c:181:43: [0;1;31merror: register %rdx is only
> available in 64-bit mode
>         " je 2f                         \n\t"
>                                          ^
> <inline asm>:9:9: [0;1;30mnote: instantiated into assembly here
>          movd (%rdx, %edi, 4), %mm0
>               ^~~~~
> pulsecore/svolume_mmx.c:199:43: [0;1;31merror: register %rdx is only
> available in 64-bit mode
>         "3:                             \n\t" /* do samples in groups of 2
> */
>                                          ^
> <inline asm>:39:9: [0;1;30mnote: instantiated into assembly here
>          movq (%rdx, %edi, 4), %mm0
>               ^~~~~
> pulsecore/svolume_mmx.c:214:43: [0;1;31merror: register %rdx is only
> available in 64-bit mode
>         "5:                             \n\t" /* do samples in groups of 4
> */
>                                          ^
> <inline asm>:73:9: [0;1;30mnote: instantiated into assembly here
>          movq (%rdx, %edi, 4), %mm0
>               ^~~~~
> pulsecore/svolume_mmx.c:215:43: [0;1;31merror: register %rdx is only
> available in 64-bit mode
>         " movq (%q1, %3, 4), %%mm0      \n\t" /* |  v1h  |  v1l  |  v0h  |
>  v0l  | */
>                                          ^
> <inline asm>:74:10: [0;1;30mnote: instantiated into assembly here
>          movq 8(%rdx, %edi, 4), %mm2
>                ^~~~~
> 8 errors generated.
> gmake[5]: *** [libpulsecommon_4.0_la-svolume_mmx.lo] Error 1
> gmake[5]: Leaving directory
> `/usr/ports/audio/pulseaudio/work/pulseaudio-4.0/src'
> gmake[4]: *** [all] Error 2
> gmake[4]: Leaving directory
> `/usr/ports/audio/pulseaudio/work/pulseaudio-4.0/src'
> gmake[3]: *** [all-recursive] Error 1
> gmake[3]: Leaving directory
> `/usr/ports/audio/pulseaudio/work/pulseaudio-4.0'
> gmake[2]: *** [all] Error 2
> gmake[2]: Leaving directory
> `/usr/ports/audio/pulseaudio/work/pulseaudio-4.0'
> *** Error code 1
>
> Stop.
> make[1]: stopped in /usr/ports/audio/pulseaudio
> *** Error code 1
>
> Stop.
> make: stopped in /usr/ports/audio/pulseaudio
>
> Regards,
>
> --CJPM
>
> References: https://bugs.freedesktop.org/show_bug.cgi?id=55733
>
>
After reverting last committed changes in sconv_sse.c, svolume_mmx.c and
svolume_sse.c, it makes assembly syntax compatible and fixes compilation
errors on i386.

--- src/pulsecore/sconv_sse.c.orig 2014-01-24 14:20:08.000000000 +0100
+++ src/pulsecore/sconv_sse.c 2014-01-24 14:24:18.000000000 +0100
@@ -50,8 +50,8 @@
         " je 2f                         \n\t"

         "1:                             \n\t"
-        " movups (%q2, %0, 2), %%xmm0   \n\t" /* read 8 floats */
-        " movups 16(%q2, %0, 2), %%xmm2 \n\t"
+        " movups (%2, %0, 2), %%xmm0    \n\t" /* read 8 floats */
+        " movups 16(%2, %0, 2), %%xmm2  \n\t"
         " mulps  %%xmm5, %%xmm0         \n\t" /* *= 0x8000 */
         " mulps  %%xmm5, %%xmm2         \n\t"

@@ -64,8 +64,8 @@

         " packssdw %%mm1, %%mm0         \n\t" /* pack parts */
         " packssdw %%mm3, %%mm2         \n\t"
-        " movq     %%mm0, (%q3, %0)     \n\t"
-        " movq     %%mm2, 8(%q3, %0)    \n\t"
+        " movq     %%mm0, (%3, %0)      \n\t"
+        " movq     %%mm2, 8(%3, %0)     \n\t"

         " add $16, %0                   \n\t"
         " dec %1                        \n\t"
@@ -77,7 +77,7 @@
         " je 5f                         \n\t"

         "3:                             \n\t"
-        " movss (%q2, %0, 2), %%xmm0    \n\t"
+        " movss (%2, %0, 2), %%xmm0     \n\t"
         " mulss  %%xmm5, %%xmm0         \n\t"
         " cvtss2si %%xmm0, %4           \n\t"
         " add $0x8000, %4               \n\t" /* check for saturation */
@@ -88,7 +88,7 @@
         " xor $0x7fff, %4               \n\t"

         "4:                             \n\t"
-        " movw  %w4, (%q3, %0)          \n\t" /* store leftover */
+        " movw  %w4, (%3, %0)           \n\t" /* store leftover */
         " add $2, %0                    \n\t"
         " dec %1                        \n\t"
         " jne 3b                        \n\t"
@@ -115,8 +115,8 @@
         " je 2f                         \n\t"

         "1:                             \n\t"
-        " movups (%q2, %0, 2), %%xmm0   \n\t" /* read 8 floats */
-        " movups 16(%q2, %0, 2), %%xmm2 \n\t"
+        " movups (%2, %0, 2), %%xmm0    \n\t" /* read 8 floats */
+        " movups 16(%2, %0, 2), %%xmm2  \n\t"
         " mulps  %%xmm5, %%xmm0         \n\t" /* *= 0x8000 */
         " mulps  %%xmm5, %%xmm2         \n\t"

@@ -124,7 +124,7 @@
         " cvtps2dq %%xmm2, %%xmm2       \n\t"

         " packssdw %%xmm2, %%xmm0       \n\t"
-        " movdqu   %%xmm0, (%q3, %0)    \n\t"
+        " movdqu   %%xmm0, (%3, %0)     \n\t"

         " add $16, %0                   \n\t"
         " dec %1                        \n\t"
@@ -136,7 +136,7 @@
         " je 5f                         \n\t"

         "3:                             \n\t"
-        " movss (%q2, %0, 2), %%xmm0    \n\t"
+        " movss (%2, %0, 2), %%xmm0     \n\t"
         " mulss  %%xmm5, %%xmm0         \n\t"
         " cvtss2si %%xmm0, %4           \n\t"
         " add $0x8000, %4               \n\t"
@@ -147,7 +147,7 @@
         " xor $0x7fff, %4               \n\t"

         "4:                             \n\t"
-        " movw  %w4, (%q3, %0)          \n\t" /* store leftover */
+        " movw  %w4, (%3, %0)           \n\t" /* store leftover */
         " add $2, %0                    \n\t"
         " dec %1                        \n\t"
         " jne 3b                        \n\t"

--- src/pulsecore/svolume_mmx.c.orig 2014-01-24 14:20:40.000000000 +0100
+++ src/pulsecore/svolume_mmx.c 2014-01-24 14:26:22.000000000 +0100
@@ -107,7 +107,7 @@
         " test $1, %2                   \n\t" /* check for odd samples */
         " je 2f                         \n\t"

-        " movd (%q1, %3, 4), %%mm0      \n\t" /* |  v0h  |  v0l  | */
+        " movd (%1, %3, 4), %%mm0       \n\t" /* |  v0h  |  v0l  | */
         " movw (%0), %w4                \n\t" /*     ..  |  p0   | */
         " movd %4, %%mm1                \n\t"
         VOLUME_32x16 (%%mm1, %%mm0)
@@ -122,7 +122,7 @@
         " je 4f                         \n\t"

         "3:                             \n\t" /* do samples in groups of 2
*/
-        " movq (%q1, %3, 4), %%mm0      \n\t" /* |  v1h  |  v1l  |  v0h  |
 v0l  | */
+        " movq (%1, %3, 4), %%mm0       \n\t" /* |  v1h  |  v1l  |  v0h  |
 v0l  | */
         " movd (%0), %%mm1              \n\t" /*              .. |   p1  |
 p0   | */
         VOLUME_32x16 (%%mm1, %%mm0)
         " movd %%mm0, (%0)              \n\t" /*              .. | p1*v1 |
p0*v0 | */
@@ -135,8 +135,8 @@
         " je 6f                         \n\t"

         "5:                             \n\t" /* do samples in groups of 4
*/
-        " movq (%q1, %3, 4), %%mm0      \n\t" /* |  v1h  |  v1l  |  v0h  |
 v0l  | */
-        " movq 8(%q1, %3, 4), %%mm2     \n\t" /* |  v3h  |  v3l  |  v2h  |
 v2l  | */
+        " movq (%1, %3, 4), %%mm0       \n\t" /* |  v1h  |  v1l  |  v0h  |
 v0l  | */
+        " movq 8(%1, %3, 4), %%mm2      \n\t" /* |  v3h  |  v3l  |  v2h  |
 v2l  | */
         " movd (%0), %%mm1              \n\t" /*              .. |   p1  |
 p0   | */
         " movd 4(%0), %%mm3             \n\t" /*              .. |   p3  |
 p2   | */
         VOLUME_32x16 (%%mm1, %%mm0)
@@ -180,7 +180,7 @@
         " test $1, %2                   \n\t" /* check for odd samples */
         " je 2f                         \n\t"

-        " movd (%q1, %3, 4), %%mm0      \n\t" /* |  v0h  |  v0l  | */
+        " movd (%1, %3, 4), %%mm0       \n\t" /* |  v0h  |  v0l  | */
         " movw (%0), %w4                \n\t" /*     ..  |  p0   | */
         " rorw $8, %w4                  \n\t"
         " movd %4, %%mm1                \n\t"
@@ -197,7 +197,7 @@
         " je 4f                         \n\t"

         "3:                             \n\t" /* do samples in groups of 2
*/
-        " movq (%q1, %3, 4), %%mm0      \n\t" /* |  v1h  |  v1l  |  v0h  |
 v0l  | */
+        " movq (%1, %3, 4), %%mm0       \n\t" /* |  v1h  |  v1l  |  v0h  |
 v0l  | */
         " movd (%0), %%mm1              \n\t" /*              .. |   p1  |
 p0   | */
         SWAP_16 (%%mm1)
         VOLUME_32x16 (%%mm1, %%mm0)
@@ -212,8 +212,8 @@
         " je 6f                         \n\t"

         "5:                             \n\t" /* do samples in groups of 4
*/
-        " movq (%q1, %3, 4), %%mm0      \n\t" /* |  v1h  |  v1l  |  v0h  |
 v0l  | */
-        " movq 8(%q1, %3, 4), %%mm2     \n\t" /* |  v3h  |  v3l  |  v2h  |
 v2l  | */
+        " movq (%1, %3, 4), %%mm0       \n\t" /* |  v1h  |  v1l  |  v0h  |
 v0l  | */
+        " movq 8(%1, %3, 4), %%mm2      \n\t" /* |  v3h  |  v3l  |  v2h  |
 v2l  | */
         " movd (%0), %%mm1              \n\t" /*              .. |   p1  |
 p0   | */
         " movd 4(%0), %%mm3             \n\t" /*              .. |   p3  |
 p2   | */
         SWAP_16_2 (%%mm1, %%mm3)

--- src/pulsecore/svolume_sse.c.orig 2014-01-24 14:21:02.000000000 +0100
+++ src/pulsecore/svolume_sse.c 2014-01-24 14:28:46.000000000 +0100
@@ -92,7 +92,7 @@
         " test $1, %2                   \n\t" /* check for odd samples */
         " je 2f                         \n\t"

-        " movd (%q1, %3, 4), %%xmm0     \n\t" /* |  v0h  |  v0l  | */
+        " movd (%1, %3, 4), %%xmm0      \n\t" /* |  v0h  |  v0l  | */
         " movw (%0), %w4                \n\t" /*     ..  |   p0  | */
         " movd %4, %%xmm1               \n\t"
         VOLUME_32x16 (%%xmm1, %%xmm0)
@@ -107,7 +107,7 @@
         " je 4f                         \n\t"

         "3:                             \n\t" /* do samples in groups of 2
*/
-        " movq (%q1, %3, 4), %%xmm0     \n\t" /* |  v1h  |  v1l  |  v0h  |
 v0l  | */
+        " movq (%1, %3, 4), %%xmm0      \n\t" /* |  v1h  |  v1l  |  v0h  |
 v0l  | */
         " movd (%0), %%xmm1             \n\t" /*              .. |   p1  |
 p0   | */
         VOLUME_32x16 (%%xmm1, %%xmm0)
         " movd %%xmm0, (%0)             \n\t" /*              .. | p1*v1 |
p0*v0 | */
@@ -123,7 +123,7 @@
          * that the array is 16 bytes aligned, we probably have to do the
odd values
          * after this then. */
         "5:                             \n\t" /* do samples in groups of 4
*/
-        " movdqu (%q1, %3, 4), %%xmm0   \n\t" /* |  v3h  |  v3l  ..  v0h
 |  v0l  | */
+        " movdqu (%1, %3, 4), %%xmm0    \n\t" /* |  v3h  |  v3l  ..  v0h
 |  v0l  | */
         " movq (%0), %%xmm1             \n\t" /*              .. |   p3
 ..  p0   | */
         VOLUME_32x16 (%%xmm1, %%xmm0)
         " movq %%xmm0, (%0)             \n\t" /*              .. | p3*v3
.. p0*v0 | */
@@ -136,8 +136,8 @@
         " je 8f                         \n\t"

         "7:                             \n\t" /* do samples in groups of 8
*/
-        " movdqu (%q1, %3, 4), %%xmm0   \n\t" /* |  v3h  |  v3l  ..  v0h
 |  v0l  | */
-        " movdqu 16(%q1, %3, 4), %%xmm2 \n\t" /* |  v7h  |  v7l  ..  v4h
 |  v4l  | */
+        " movdqu (%1, %3, 4), %%xmm0    \n\t" /* |  v3h  |  v3l  ..  v0h
 |  v0l  | */
+        " movdqu 16(%1, %3, 4), %%xmm2  \n\t" /* |  v7h  |  v7l  ..  v4h
 |  v4l  | */
         " movq (%0), %%xmm1             \n\t" /*              .. |   p3
 ..  p0   | */
         " movq 8(%0), %%xmm3            \n\t" /*              .. |   p7
 ..  p4   | */
         VOLUME_32x16 (%%xmm1, %%xmm0)
@@ -176,7 +176,7 @@
         " test $1, %2                   \n\t" /* check for odd samples */
         " je 2f                         \n\t"

-        " movd (%q1, %3, 4), %%xmm0     \n\t" /* |  v0h  |  v0l  | */
+        " movd (%1, %3, 4), %%xmm0      \n\t" /* |  v0h  |  v0l  | */
         " movw (%0), %w4                \n\t" /*     ..  |   p0  | */
         " rorw $8, %w4                  \n\t"
         " movd %4, %%xmm1               \n\t"
@@ -193,7 +193,7 @@
         " je 4f                         \n\t"

         "3:                             \n\t" /* do samples in groups of 2
*/
-        " movq (%q1, %3, 4), %%xmm0     \n\t" /* |  v1h  |  v1l  |  v0h  |
 v0l  | */
+        " movq (%1, %3, 4), %%xmm0      \n\t" /* |  v1h  |  v1l  |  v0h  |
 v0l  | */
         " movd (%0), %%xmm1             \n\t" /*              .. |   p1  |
 p0   | */
         SWAP_16 (%%xmm1)
         VOLUME_32x16 (%%xmm1, %%xmm0)
@@ -211,7 +211,7 @@
          * that the array is 16 bytes aligned, we probably have to do the
odd values
          * after this then. */
         "5:                             \n\t" /* do samples in groups of 4
*/
-        " movdqu (%q1, %3, 4), %%xmm0   \n\t" /* |  v3h  |  v3l  ..  v0h
 |  v0l  | */
+        " movdqu (%1, %3, 4), %%xmm0    \n\t" /* |  v3h  |  v3l  ..  v0h
 |  v0l  | */
         " movq (%0), %%xmm1             \n\t" /*              .. |   p3
 ..  p0   | */
         SWAP_16 (%%xmm1)
         VOLUME_32x16 (%%xmm1, %%xmm0)
@@ -226,8 +226,8 @@
         " je 8f                         \n\t"

         "7:                             \n\t" /* do samples in groups of 8
*/
-        " movdqu (%q1, %3, 4), %%xmm0   \n\t" /* |  v3h  |  v3l  ..  v0h
 |  v0l  | */
-        " movdqu 16(%q1, %3, 4), %%xmm2 \n\t" /* |  v7h  |  v7l  ..  v4h
 |  v4l  | */
+        " movdqu (%1, %3, 4), %%xmm0    \n\t" /* |  v3h  |  v3l  ..  v0h
 |  v0l  | */
+        " movdqu 16(%1, %3, 4), %%xmm2  \n\t" /* |  v7h  |  v7l  ..  v4h
 |  v4l  | */
         " movq (%0), %%xmm1             \n\t" /*              .. |   p3
 ..  p0   | */
         " movq 8(%0), %%xmm3            \n\t" /*              .. |   p7
 ..  p4   | */
         SWAP_16_2 (%%xmm1, %%xmm3)


More information about the freebsd-gnome mailing list