[PATCH] util/loongarch64: Add clang compiler support

Bibo Mao posted 1 patch 3 weeks, 4 days ago
host/include/loongarch64/host/bufferiszero.c.inc | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
[PATCH] util/loongarch64: Add clang compiler support
Posted by Bibo Mao 3 weeks, 4 days ago
Float register name f0 - f31 is not recognized with clang compiler
with LoongArch64 target, its name should be $f0 - $f31. It is ok
for both gcc and clang compiler.

Signed-off-by: Bibo Mao <maobibo@loongson.cn>
---
 host/include/loongarch64/host/bufferiszero.c.inc | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

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;
 }

base-commit: 661c2e1ab29cd9c4d268ae3f44712e8d421c0e56
-- 
2.39.3
Re: [PATCH] util/loongarch64: Add clang compiler support
Posted by Yao Zi 2 weeks, 3 days ago
On Fri, Mar 07, 2025 at 09:13:39AM +0800, Bibo Mao wrote:
> Float register name f0 - f31 is not recognized with clang compiler
> with LoongArch64 target, its name should be $f0 - $f31. It is ok
> for both gcc and clang compiler.

Sorry I didn't search the list carefully and sent a similar patch[1].

Apart from preventing the disk tools to be built, this issue affects
several headers used by linux-user emulators as well. IMHO this should
be fixed, too, or my patch could be taken.

Sorry for the inconvenience,
Yao Zi

[1]: https://lore.kernel.org/all/20250314033150.53268-3-ziyao@disroot.org/

> Signed-off-by: Bibo Mao <maobibo@loongson.cn>
> ---
>  host/include/loongarch64/host/bufferiszero.c.inc | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> 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;
>  }
> 
> base-commit: 661c2e1ab29cd9c4d268ae3f44712e8d421c0e56
> -- 
> 2.39.3
Re: [PATCH] util/loongarch64: Add clang compiler support
Posted by bibo mao 2 weeks, 1 day ago

On 2025/3/15 上午1:19, Yao Zi wrote:
> On Fri, Mar 07, 2025 at 09:13:39AM +0800, Bibo Mao wrote:
>> Float register name f0 - f31 is not recognized with clang compiler
>> with LoongArch64 target, its name should be $f0 - $f31. It is ok
>> for both gcc and clang compiler.
> 
> Sorry I didn't search the list carefully and sent a similar patch[1].
> 
> Apart from preventing the disk tools to be built, this issue affects
> several headers used by linux-user emulators as well. IMHO this should
> be fixed, too, or my patch could be taken.
Yao,

Thanks for your patch. It is found only if clang is used on LoongArch 
host, and your change log note is clearer than mine. Your patch should 
be taken.

Regards
Bibo Mao
> 
> Sorry for the inconvenience,
> Yao Zi
> 
> [1]: https://lore.kernel.org/all/20250314033150.53268-3-ziyao@disroot.org/
> 
>> Signed-off-by: Bibo Mao <maobibo@loongson.cn>
>> ---
>>   host/include/loongarch64/host/bufferiszero.c.inc | 6 ++++--
>>   1 file changed, 4 insertions(+), 2 deletions(-)
>>
>> 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;
>>   }
>>
>> base-commit: 661c2e1ab29cd9c4d268ae3f44712e8d421c0e56
>> -- 
>> 2.39.3