Richard: ping, any idea if we can get rid of these errors? I have a simple standalone reproducer if you want to try different asm syntax:
$ cat atomic.c __int128_t atomic16_read_ro(const __int128_t *ptr) { __int128_t i; asm("vmovqda %1, %0" : "=x" (i) : "m" (*ptr)); return i; } $ cc -o /tmp/atomic.o atomic.c atomic.c:4:9: error: couldn't allocate output register for constraint 'x' thanks -- PMM On Mon, 5 Jun 2023 at 11:55, Peter Maydell <peter.mayd...@linaro.org> wrote: > > I just noticed that the recent atomicity changes introduce a build > failure on x86 macos (Catalina). Now if we wanted to, we can say "this > is too old and outside our support policy", of course... > (I don't know if newer x86 macos is OK -- this machine can't > upgrade to anything newer than Catalina. So it's due to be > decommissioned pretty soon anyway.) > > In file included from ../../accel/tcg/cputlb.c:1673: > In file included from ../../accel/tcg/ldst_atomicity.c.inc:12: > /Users/pm215/src/qemu/host/include/x86_64/host/load-extract-al16-al8.h:38:13: > error: couldn't allocate output register for constraint 'x' > asm("vmovdqu %1, %0" : "=x" (r.i) : "m" (*ptr_align)); > ^ > /Users/pm215/src/qemu/host/include/x86_64/host/load-extract-al16-al8.h:40:13: > error: couldn't allocate output register for constraint 'x' > asm("vmovdqa %1, %0" : "=x" (r.i) : "m" (*ptr_align)); > ^ > In file included from ../../accel/tcg/cputlb.c:34: > In file included from /Users/pm215/src/qemu/include/qemu/atomic128.h:62: > /Users/pm215/src/qemu/host/include/x86_64/host/atomic128-ldst.h:31:9: > error: couldn't allocate output register for constraint 'x' > asm("vmovdqa %1, %0" : "=x" (r.i) : "m" (*ptr)); > ^ > In file included from ../../accel/tcg/cputlb.c:1673: > In file included from ../../accel/tcg/ldst_atomicity.c.inc:12: > /Users/pm215/src/qemu/host/include/x86_64/host/load-extract-al16-al8.h:38:13: > error: couldn't allocate output register for constraint 'x' > asm("vmovdqu %1, %0" : "=x" (r.i) : "m" (*ptr_align)); > ^ > /Users/pm215/src/qemu/host/include/x86_64/host/load-extract-al16-al8.h:40:13: > error: couldn't allocate output register for constraint 'x' > asm("vmovdqa %1, %0" : "=x" (r.i) : "m" (*ptr_align)); > ^ > In file included from ../../accel/tcg/cputlb.c:34: > In file included from /Users/pm215/src/qemu/include/qemu/atomic128.h:62: > /Users/pm215/src/qemu/host/include/x86_64/host/atomic128-ldst.h:31:9: > error: couldn't allocate output register for constraint 'x' > asm("vmovdqa %1, %0" : "=x" (r.i) : "m" (*ptr)); > ^ > /Users/pm215/src/qemu/host/include/x86_64/host/atomic128-ldst.h:31:9: > error: couldn't allocate output register for constraint 'x' > /Users/pm215/src/qemu/host/include/x86_64/host/atomic128-ldst.h:31:9: > error: couldn't allocate output register for constraint 'x' > /Users/pm215/src/qemu/host/include/x86_64/host/atomic128-ldst.h:55:13: > error: couldn't allocate input reg for constraint 'x' > asm("vmovdqa %1, %0" : "=m"(*ptr_align) : "x" (new.i)); > ^ > In file included from ../../accel/tcg/cputlb.c:1673: > In file included from ../../accel/tcg/ldst_atomicity.c.inc:12: > /Users/pm215/src/qemu/host/include/x86_64/host/load-extract-al16-al8.h:38:13: > error: couldn't allocate output register for constraint 'x' > asm("vmovdqu %1, %0" : "=x" (r.i) : "m" (*ptr_align)); > ^ > /Users/pm215/src/qemu/host/include/x86_64/host/load-extract-al16-al8.h:40:13: > error: couldn't allocate output register for constraint 'x' > asm("vmovdqa %1, %0" : "=x" (r.i) : "m" (*ptr_align)); > ^ > In file included from ../../accel/tcg/cputlb.c:34: > In file included from /Users/pm215/src/qemu/include/qemu/atomic128.h:62: > /Users/pm215/src/qemu/host/include/x86_64/host/atomic128-ldst.h:31:9: > error: couldn't allocate output register for constraint 'x' > asm("vmovdqa %1, %0" : "=x" (r.i) : "m" (*ptr)); > ^ > /Users/pm215/src/qemu/host/include/x86_64/host/atomic128-ldst.h:31:9: > error: couldn't allocate output register for constraint 'x' > 13 errors generated. > > -- PMM