qemu-devel
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]