[PATCH v2 4/5] LoongArch: Add support for LA32 in sysdeps/unix/sysv/linux/loongarch
mengqinggang
mengqinggang@loongson.cn
Fri Dec 19 02:00:22 GMT 2025
在 2025/12/18 22:21, WANG Xuerui 写道:
> On 12/18/25 21:05, Adhemerval Zanella Netto wrote:
>>
>>
>> On 18/12/25 09:30, mengqinggang wrote:
>>> [snip]
>>> @@ -54,7 +54,7 @@ ENTRY (__clone)
>>> syscall 0
>>> blt a0, zero ,L (error)
>>> - beqz a0,L (thread_start)
>>> + beq a0, zero, L (thread_start)
>>> /* Successful return from the parent. */
>>> ret
>>
>> Does it meant that loongarch32 does not support all the branch
>> instruction from loongarch64? Or that binutils is not recognizing
>> beqz as a alias for beq reg, zero ?
>
> It is a bit interesting: b{eq,ne}z are *different* instructions in
> LA64 and LA32S so that an additional 5 bits becomes free for encoding
> the offset. The reduced subset, LA32R, doesn't have them for
> simplicity reasons.
>
> We may be able to make "b{eq,ne}z x, y" aliases for "b{eq,ne} x, zero,
> y" respectively for LA32R, and this won't affect compatibility because
> one has to use up-to-date binutils anyway to get any LA32 support at all.
Just only make "b{eq,ne}z" aliases for "b{eq,ne}" on LA32R?
>
> I don't know if doing this would create confusion for someone
> deliberately choosing beqz for a big offset that isn't expressible
> with beq, but I guess the case is contrived because beq already can
> reach +/-128KiB which is more than enough for conditional branches.
> Maybe someone from Loongson would prepare a patch for binutils, or I
> can do it later (next week or so).
More information about the Libc-alpha
mailing list