* pcm: dmix: i386: keep the size operand in memory
[not found] <alsa-project/alsa-lib/pr/537@alsa-project.org>
@ 2026-10-23 23:22 ` GitHub pull_request - opened
0 siblings, 0 replies; only message in thread
From: GitHub pull_request - opened @ 2026-10-23 23:22 UTC (permalink / raw)
To: alsa-devel
alsa-project/alsa-lib pull request #537 was opened from yegorich:
The i386 `mix_areas_*()` assembly clobbers esi, edi, edx, ecx, eax and ebx. At `-Os` gcc also uses ebp as frame pointer, so no general purpose register is left.
Since abc9f32cf45c ("pcm: dmix: assembly: give more freedom over the constraints") the `size` operand is `"+&rm"`. With AVX512BW enabled (`-march=skylake-avx512`, `cannonlake`, `icelake-client`, `x86-64-v4`, or `-mavx512bw`) and `-Os`/`-Oz`, gcc 15.3 and 16.2 then fail:
```
pcm_dmix_i386.h:52:9: error: 'asm' operand has impossible constraints or there are not enough registers
```
This patch restores the `"+m"` constraint used before that commit for `size`, in all five functions.
Found by the Buildroot autobuilders: https://autobuild.buildroot.org/results/ff613c2d94c35a38a5886b70d72aa37b58440b5d
Testing: compiled `pcm_dmix_i386.h` with gcc 15.3.0 and 16.2.0 (i686), for -O0/-O1/-O2/-O3/-Os/-Oz × 9 `-march` values × with/without `-fPIC`. Before: all `-Os`/`-Oz` + AVX512BW combinations fail. After: all 108 combinations build. A full i686 Buildroot build of alsa-lib with the failing configuration passes as well.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Request URL : https://github.com/alsa-project/alsa-lib/pull/537
Patch URL : https://github.com/alsa-project/alsa-lib/pull/537.patch
Repository URL: https://github.com/alsa-project/alsa-lib
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-10-23 23:22 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <alsa-project/alsa-lib/pr/537@alsa-project.org>
2026-10-23 23:22 ` pcm: dmix: i386: keep the size operand in memory GitHub pull_request - opened
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.