diff options
| author | Khem Raj <raj.khem@gmail.com> | 2020-03-05 13:18:55 -0800 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2020-03-06 08:19:18 +0000 |
| commit | 1f71b9edcb84715eb3da4e9f4ab44966a7be5c60 (patch) | |
| tree | a638c5bcf088647798715ecadeb1609dc6648745 /meta/recipes-multimedia/pulseaudio | |
| parent | 56bbdd33d8c58376d3a1e11785581f67d6ecd98f (diff) | |
| download | poky-1f71b9edcb84715eb3da4e9f4ab44966a7be5c60.tar.gz | |
pulseaudio: Fix inline assembly syntax for arm
Ensures that gcc can use right operand constraints
(From OE-Core rev: 03e6d0f787cbd62156a163bfbcaed68bfcd379e8)
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-multimedia/pulseaudio')
| -rw-r--r-- | meta/recipes-multimedia/pulseaudio/pulseaudio/0001-remap-arm-Adjust-inline-asm-constraints.patch | 114 | ||||
| -rw-r--r-- | meta/recipes-multimedia/pulseaudio/pulseaudio_13.0.bb | 1 |
2 files changed, 115 insertions, 0 deletions
diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-remap-arm-Adjust-inline-asm-constraints.patch b/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-remap-arm-Adjust-inline-asm-constraints.patch new file mode 100644 index 0000000000..95133fd9d4 --- /dev/null +++ b/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-remap-arm-Adjust-inline-asm-constraints.patch | |||
| @@ -0,0 +1,114 @@ | |||
| 1 | From 3450d1fcfe8a8f84553ab299cd96ae0705ddffbe Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Khem Raj <raj.khem@gmail.com> | ||
| 3 | Date: Thu, 5 Mar 2020 11:48:28 -0800 | ||
| 4 | Subject: [PATCH] remap/arm: Adjust inline asm constraints | ||
| 5 | |||
| 6 | gcc10 can effectively emit single precision registers if right | ||
| 7 | operand modifier constraint is not in use | ||
| 8 | |||
| 9 | This results in assembler rejecting the code | ||
| 10 | |||
| 11 | /tmp/ccEG4QpI.s:646: Error: VFP/Neon double precision register expected -- `vtbl.8 d3,{d0,d1},s8' | ||
| 12 | /tmp/ccEG4QpI.s:678: Error: invalid instruction shape -- `vmul.f32 d0,d0,s8' | ||
| 13 | |||
| 14 | Therefore add %P qualifier to request double registers sinece 'w' could | ||
| 15 | mean variable could be stored in s0..s14 and GCC defaults to printing out s0..s14. | ||
| 16 | Note those registers map to d0..d7 also. | ||
| 17 | |||
| 18 | Output generated is exactly same with gcc9, and it also now compiles | ||
| 19 | with gcc10 | ||
| 20 | |||
| 21 | Its not documented well in gcc docs and there is a ticket for that | ||
| 22 | https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84343 | ||
| 23 | |||
| 24 | Upstream-Status: Submitted [https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/261] | ||
| 25 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
| 26 | --- | ||
| 27 | src/pulsecore/remap_neon.c | 22 +++++++++++----------- | ||
| 28 | 1 file changed, 11 insertions(+), 11 deletions(-) | ||
| 29 | |||
| 30 | diff --git a/src/pulsecore/remap_neon.c b/src/pulsecore/remap_neon.c | ||
| 31 | index 41208986d..ca3b95b48 100644 | ||
| 32 | --- a/src/pulsecore/remap_neon.c | ||
| 33 | +++ b/src/pulsecore/remap_neon.c | ||
| 34 | @@ -189,7 +189,7 @@ static void remap_ch4_to_mono_float32ne_neon(pa_remap_t *m, float *dst, const fl | ||
| 35 | "vadd.f32 d0, d0, d1 \n\t" | ||
| 36 | "vadd.f32 d2, d2, d3 \n\t" | ||
| 37 | "vadd.f32 d0, d0, d2 \n\t" | ||
| 38 | - "vmul.f32 d0, d0, %[quart] \n\t" | ||
| 39 | + "vmul.f32 d0, d0, %P[quart] \n\t" | ||
| 40 | "vst1.32 {d0}, [%[dst]]! \n\t" | ||
| 41 | : [dst] "+r" (dst), [src] "+r" (src) /* output operands */ | ||
| 42 | : [quart] "w" (quart) /* input operands */ | ||
| 43 | @@ -276,7 +276,7 @@ static void remap_arrange_stereo_s16ne_neon(pa_remap_t *m, int16_t *dst, const i | ||
| 44 | for (; n >= 2; n -= 2) { | ||
| 45 | __asm__ __volatile__ ( | ||
| 46 | "vld1.s16 d0, [%[src]]! \n\t" | ||
| 47 | - "vtbl.8 d0, {d0}, %[t] \n\t" | ||
| 48 | + "vtbl.8 d0, {d0}, %P[t] \n\t" | ||
| 49 | "vst1.s16 d0, [%[dst]]! \n\t" | ||
| 50 | : [dst] "+r" (dst), [src] "+r" (src) /* output operands */ | ||
| 51 | : [t] "w" (t) /* input operands */ | ||
| 52 | @@ -287,7 +287,7 @@ static void remap_arrange_stereo_s16ne_neon(pa_remap_t *m, int16_t *dst, const i | ||
| 53 | if (n > 0) { | ||
| 54 | __asm__ __volatile__ ( | ||
| 55 | "vld1.32 d0[0], [%[src]]! \n\t" | ||
| 56 | - "vtbl.8 d0, {d0}, %[t] \n\t" | ||
| 57 | + "vtbl.8 d0, {d0}, %P[t] \n\t" | ||
| 58 | "vst1.32 d0[0], [%[dst]]! \n\t" | ||
| 59 | : [dst] "+r" (dst), [src] "+r" (src) /* output operands */ | ||
| 60 | : [t] "w" (t) /* input operands */ | ||
| 61 | @@ -302,8 +302,8 @@ static void remap_arrange_ch2_ch4_s16ne_neon(pa_remap_t *m, int16_t *dst, const | ||
| 62 | for (; n > 0; n--) { | ||
| 63 | __asm__ __volatile__ ( | ||
| 64 | "vld1.32 d0[0], [%[src]]! \n\t" | ||
| 65 | - "vtbl.8 d0, {d0}, %[t] \n\t" | ||
| 66 | - "vst1.s16 d0, [%[dst]]! \n\t" | ||
| 67 | + "vtbl.8 d0, {d0}, %P[t] \n\t" | ||
| 68 | + "vst1.s16 d0, [%[dst]]! \n\t" | ||
| 69 | : [dst] "+r" (dst), [src] "+r" (src) /* output operands */ | ||
| 70 | : [t] "w" (t) /* input operands */ | ||
| 71 | : "memory", "d0" /* clobber list */ | ||
| 72 | @@ -317,7 +317,7 @@ static void remap_arrange_ch4_s16ne_neon(pa_remap_t *m, int16_t *dst, const int1 | ||
| 73 | for (; n > 0; n--) { | ||
| 74 | __asm__ __volatile__ ( | ||
| 75 | "vld1.s16 d0, [%[src]]! \n\t" | ||
| 76 | - "vtbl.8 d0, {d0}, %[t] \n\t" | ||
| 77 | + "vtbl.8 d0, {d0}, %P[t] \n\t" | ||
| 78 | "vst1.s16 d0, [%[dst]]! \n\t" | ||
| 79 | : [dst] "+r" (dst), [src] "+r" (src) /* output operands */ | ||
| 80 | : [t] "w" (t) /* input operands */ | ||
| 81 | @@ -332,7 +332,7 @@ static void remap_arrange_stereo_float32ne_neon(pa_remap_t *m, float *dst, const | ||
| 82 | for (; n > 0; n--) { | ||
| 83 | __asm__ __volatile__ ( | ||
| 84 | "vld1.f32 d0, [%[src]]! \n\t" | ||
| 85 | - "vtbl.8 d0, {d0}, %[t] \n\t" | ||
| 86 | + "vtbl.8 d0, {d0}, %P[t] \n\t" | ||
| 87 | "vst1.s16 {d0}, [%[dst]]! \n\t" | ||
| 88 | : [dst] "+r" (dst), [src] "+r" (src) /* output operands */ | ||
| 89 | : [t] "w" (t) /* input operands */ | ||
| 90 | @@ -349,8 +349,8 @@ static void remap_arrange_ch2_ch4_any32ne_neon(pa_remap_t *m, float *dst, const | ||
| 91 | for (; n > 0; n--) { | ||
| 92 | __asm__ __volatile__ ( | ||
| 93 | "vld1.f32 d0, [%[src]]! \n\t" | ||
| 94 | - "vtbl.8 d1, {d0}, %[t0] \n\t" | ||
| 95 | - "vtbl.8 d2, {d0}, %[t1] \n\t" | ||
| 96 | + "vtbl.8 d1, {d0}, %P[t0] \n\t" | ||
| 97 | + "vtbl.8 d2, {d0}, %P[t1] \n\t" | ||
| 98 | "vst1.s16 {d1,d2}, [%[dst]]! \n\t" | ||
| 99 | : [dst] "+r" (dst), [src] "+r" (src) /* output operands */ | ||
| 100 | : [t0] "w" (t0), [t1] "w" (t1) /* input operands */ | ||
| 101 | @@ -366,8 +366,8 @@ static void remap_arrange_ch4_float32ne_neon(pa_remap_t *m, float *dst, const fl | ||
| 102 | for (; n > 0; n--) { | ||
| 103 | __asm__ __volatile__ ( | ||
| 104 | "vld1.f32 {d0,d1}, [%[src]]! \n\t" | ||
| 105 | - "vtbl.8 d2, {d0,d1}, %[t0] \n\t" | ||
| 106 | - "vtbl.8 d3, {d0,d1}, %[t1] \n\t" | ||
| 107 | + "vtbl.8 d2, {d0,d1}, %P[t0] \n\t" | ||
| 108 | + "vtbl.8 d3, {d0,d1}, %P[t1] \n\t" | ||
| 109 | "vst1.s16 {d2,d3}, [%[dst]]! \n\t" | ||
| 110 | : [dst] "+r" (dst), [src] "+r" (src) /* output operands */ | ||
| 111 | : [t0] "w" (t0), [t1] "w" (t1) /* input operands */ | ||
| 112 | -- | ||
| 113 | 2.25.1 | ||
| 114 | |||
diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio_13.0.bb b/meta/recipes-multimedia/pulseaudio/pulseaudio_13.0.bb index 7f8ebc2090..601499b6da 100644 --- a/meta/recipes-multimedia/pulseaudio/pulseaudio_13.0.bb +++ b/meta/recipes-multimedia/pulseaudio/pulseaudio_13.0.bb | |||
| @@ -3,6 +3,7 @@ require pulseaudio.inc | |||
| 3 | SRC_URI = "http://freedesktop.org/software/pulseaudio/releases/${BP}.tar.xz \ | 3 | SRC_URI = "http://freedesktop.org/software/pulseaudio/releases/${BP}.tar.xz \ |
| 4 | file://0001-client-conf-Add-allow-autospawn-for-root.patch \ | 4 | file://0001-client-conf-Add-allow-autospawn-for-root.patch \ |
| 5 | file://0002-do-not-display-CLFAGS-to-improve-reproducibility-bui.patch \ | 5 | file://0002-do-not-display-CLFAGS-to-improve-reproducibility-bui.patch \ |
| 6 | file://0001-remap-arm-Adjust-inline-asm-constraints.patch \ | ||
| 6 | file://volatiles.04_pulse \ | 7 | file://volatiles.04_pulse \ |
| 7 | " | 8 | " |
| 8 | SRC_URI[md5sum] = "e41d606f90254ed45c90520faf83d95c" | 9 | SRC_URI[md5sum] = "e41d606f90254ed45c90520faf83d95c" |
