[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: vmovqdu/vmovqda inline asm doesn't compile on macos catalina
From: |
Peter Maydell |
Subject: |
Re: vmovqdu/vmovqda inline asm doesn't compile on macos catalina |
Date: |
Fri, 9 Jun 2023 12:05:57 +0100 |
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.maydell@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