qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: gaosong <gaosong@loongson.cn>
To: Yao Zi <ziyao@disroot.org>,
	qemu-devel@nongnu.org, Thomas Huth <thuth@redhat.com>
Cc: "Richard Henderson" <richard.henderson@linaro.org>,
	"Philippe Mathieu-Daudé" <philmd@linaro.org>,
	qemu-stable@nongnu.org, "Michael Tokarev" <mjt@tls.msk.ru>,
	"bibo mao" <maobibo@loongson.cn>
Subject: Re: [PATCH] host/include/loongarch64: Fix inline assembly compatibility with Clang
Date: Thu, 20 Mar 2025 17:39:36 +0800	[thread overview]
Message-ID: <c8679bcb-4978-5ae8-c3a8-161e4b51c19f@loongson.cn> (raw)
In-Reply-To: <20250314033150.53268-3-ziyao@disroot.org>

在 2025/3/14 上午11:31, Yao Zi 写道:
> Clang on LoongArch only accepts fp register names in the dollar-prefixed
> form, while GCC allows omitting the dollar. Change registers in ASM
> clobbers to the dollar-prefixed form to make user emulators buildable
> with Clang on loongarch64. No functional change invovled.
>
> Signed-off-by: Yao Zi <ziyao@disroot.org>
> ---
>   host/include/loongarch64/host/atomic128-ldst.h.inc        | 4 ++--
>   host/include/loongarch64/host/bufferiszero.c.inc          | 6 ++++--
>   host/include/loongarch64/host/load-extract-al16-al8.h.inc | 2 +-
>   3 files changed, 7 insertions(+), 5 deletions(-)
Cc: qemu-stable@nongnu.org

resolves: https://gitlab.com/qemu-project/qemu/-/issues/2871
> diff --git a/host/include/loongarch64/host/atomic128-ldst.h.inc b/host/include/loongarch64/host/atomic128-ldst.h.inc
> index 9a4a8f8b9e..754d2143f0 100644
> --- a/host/include/loongarch64/host/atomic128-ldst.h.inc
> +++ b/host/include/loongarch64/host/atomic128-ldst.h.inc
> @@ -28,7 +28,7 @@ static inline Int128 atomic16_read_ro(const Int128 *ptr)
>       asm("vld $vr0, %2, 0\n\t"
>           "vpickve2gr.d %0, $vr0, 0\n\t"
>           "vpickve2gr.d %1, $vr0, 1"
> -	: "=r"(l), "=r"(h) : "r"(ptr), "m"(*ptr) : "f0");
> +        : "=r"(l), "=r"(h) : "r"(ptr), "m"(*ptr) : "$f0");
>   
>       return int128_make128(l, h);
>   }
> @@ -46,7 +46,7 @@ static inline void atomic16_set(Int128 *ptr, Int128 val)
>       asm("vinsgr2vr.d $vr0, %1, 0\n\t"
>           "vinsgr2vr.d $vr0, %2, 1\n\t"
>           "vst $vr0, %3, 0"
> -	: "=m"(*ptr) : "r"(l), "r"(h), "r"(ptr) : "f0");
> +        : "=m"(*ptr) : "r"(l), "r"(h), "r"(ptr) : "$f0");
>   }
>   
>   #endif /* LOONGARCH_ATOMIC128_LDST_H */
> diff --git a/host/include/loongarch64/host/bufferiszero.c.inc b/host/include/loongarch64/host/bufferiszero.c.inc
> index 69891eac80..bb2598fdc3 100644
> --- a/host/include/loongarch64/host/bufferiszero.c.inc
> +++ b/host/include/loongarch64/host/bufferiszero.c.inc
> @@ -61,7 +61,8 @@ static bool buffer_is_zero_lsx(const void *buf, size_t len)
>       "2:"
>           : "=&r"(ret), "+r"(p)
>           : "r"(buf), "r"(e), "r"(l)
> -        : "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "fcc0");
> +        : "$f0", "$f1", "$f2", "$f3", "$f4", "$f5", "$f6", "$f7", "$f8",
> +          "$fcc0");
>   
>       return ret;
>   }
> @@ -119,7 +120,8 @@ static bool buffer_is_zero_lasx(const void *buf, size_t len)
>       "3:"
>           : "=&r"(ret), "+r"(p)
>           : "r"(buf), "r"(e), "r"(l)
> -        : "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "fcc0");
> +        : "$f0", "$f1", "$f2", "$f3", "$f4", "$f5", "$f6", "$f7", "$f8",
> +          "$fcc0");
>   
>       return ret;
>   }
> diff --git a/host/include/loongarch64/host/load-extract-al16-al8.h.inc b/host/include/loongarch64/host/load-extract-al16-al8.h.inc
> index d1fb59d8af..9528521e7d 100644
> --- a/host/include/loongarch64/host/load-extract-al16-al8.h.inc
> +++ b/host/include/loongarch64/host/load-extract-al16-al8.h.inc
> @@ -31,7 +31,7 @@ static inline uint64_t load_atom_extract_al16_or_al8(void *pv, int s)
>       asm("vld $vr0, %2, 0\n\t"
>           "vpickve2gr.d %0, $vr0, 0\n\t"
>           "vpickve2gr.d %1, $vr0, 1"
> -	: "=r"(l), "=r"(h) : "r"(ptr_align), "m"(*ptr_align) : "f0");
> +        : "=r"(l), "=r"(h) : "r"(ptr_align), "m"(*ptr_align) : "$f0");
>   
>       return (l >> shr) | (h << (-shr & 63));
>   }



  parent reply	other threads:[~2025-03-20  9:38 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-14  3:31 [PATCH] host/include/loongarch64: Fix inline assembly compatibility with Clang Yao Zi
2025-03-14 20:32 ` Richard Henderson
2025-03-17  1:06 ` bibo mao
2025-03-20  9:39 ` gaosong [this message]
2025-03-21  2:06 ` bibo mao

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c8679bcb-4978-5ae8-c3a8-161e4b51c19f@loongson.cn \
    --to=gaosong@loongson.cn \
    --cc=maobibo@loongson.cn \
    --cc=mjt@tls.msk.ru \
    --cc=philmd@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-stable@nongnu.org \
    --cc=richard.henderson@linaro.org \
    --cc=thuth@redhat.com \
    --cc=ziyao@disroot.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).