[PATCH 1/2] LoongArch: Support LA32R aliases rdcnt{vl,vh,id}.w
Lulu Cai
cailulu@loongson.cn
Tue Apr 15 01:25:41 GMT 2025
Test case fixed and pushed.
On 4/11/25 9:48 AM, Lulu Cai wrote:
> On 4/2/25 2:47 PM, Lulu Cai wrote:
>> On 3/23/25 5:30 PM, WANG Xuerui wrote:
>>> From: WANG Xuerui <git@xen0n.name>
>>>
>>> These LA32R instructions are in fact special cases of the LA32S/LA64
>>> rdtime{l,h}.w (with only one output operand instead of two, the other
>>> one being forced to $zero), but are named differently in the LA32R
>>> ISA manual nevertheless.
>>>
>>> As the LA32R names are more memorable to a degree (especially for those
>>> having difficulties remembering which operand corresponds to the node
>>> ID), support them by making them aliases of the corresponding
>>> LA32S/LA64
>>> instruction respectively, and make them render as such in disassembly.
>>>
>>> Signed-off-by: WANG Xuerui <git@xen0n.name>
>>> ---
>>> gas/testsuite/gas/loongarch/fix_op.d | 3 +++
>>> gas/testsuite/gas/loongarch/fix_op.s | 5 +++++
>>> gas/testsuite/gas/loongarch/insn_alias_32.d | 3 +++
>>> gas/testsuite/gas/loongarch/insn_alias_32.s | 5 +++++
>>> opcodes/loongarch-opc.c | 6 ++++++
>>> 5 files changed, 22 insertions(+)
>>>
>>> diff --git a/gas/testsuite/gas/loongarch/fix_op.d
>>> b/gas/testsuite/gas/loongarch/fix_op.d
>>> index 7125f2e3309..05e7403d15c 100644
>>> --- a/gas/testsuite/gas/loongarch/fix_op.d
>>> +++ b/gas/testsuite/gas/loongarch/fix_op.d
>>> @@ -132,3 +132,6 @@ Disassembly of section .text:
>>> [ ]+1e8:[ ]+00df04a4 [ ]+bstrpick.d[ ]+[ ]+\$a0,
>>> \$a1, 0x1f, 0x1
>>> [ ]+1ec:[ ]+00e000a4 [ ]+bstrpick.d[ ]+[ ]+\$a0,
>>> \$a1, 0x20, 0x0
>>> [ ]+1f0:[ ]+00ff00a4 [ ]+bstrpick.d[ ]+[ ]+\$a0,
>>> \$a1, 0x3f, 0x0
>>> +[ ]+1f4:[ ]+00006004 [ ]+rdcntvl.w[ ]+[ ]+\$a0
>>> +[ ]+1f8:[ ]+000060a0 [ ]+rdcntid.w[ ]+[ ]+\$a1
>>> +[ ]+1fc:[ ]+00006404 [ ]+rdcntvh.w[ ]+[ ]+\$a0
>>> diff --git a/gas/testsuite/gas/loongarch/fix_op.s
>>> b/gas/testsuite/gas/loongarch/fix_op.s
>>> index d0523f959fb..876913bfdfb 100644
>>> --- a/gas/testsuite/gas/loongarch/fix_op.s
>>> +++ b/gas/testsuite/gas/loongarch/fix_op.s
>>> @@ -123,3 +123,8 @@ bstrpick.d $r4,$r5,0,0
>>> bstrpick.d $r4,$r5,31,1
>>> bstrpick.d $r4,$r5,32,0
>>> bstrpick.d $r4,$r5,63,0
>>> +
>>> +# LA32R aliases
>>> +rdcntvl.w $r4
>>> +rdcntid.w $r5
>>> +rdcntvh.w $r4
>>> diff --git a/gas/testsuite/gas/loongarch/insn_alias_32.d
>>> b/gas/testsuite/gas/loongarch/insn_alias_32.d
>>> index 753eae7a8f9..d0e0679541e 100644
>>> --- a/gas/testsuite/gas/loongarch/insn_alias_32.d
>>> +++ b/gas/testsuite/gas/loongarch/insn_alias_32.d
>>> @@ -17,3 +17,6 @@ Disassembly of section .text:
>>> 18: 60000080 blt \$a0, \$zero, 0 # 18
>>> <L1\+0x18>
>>> 1c: 64000080 bge \$a0, \$zero, 0 # 1c
>>> <L1\+0x1c>
>>> 20: 64000004 bge \$zero, \$a0, 0 # 20
>>> <L1\+0x20>
>>> + 24: 00006004 rdtimel.w $a0, $zero
>>> + 28: 000060a0 rdtimel.w $zero, $a1
>>> + 2c: 00006406 rdtimeh.w $a2, $zero
>>
>> A '\' is required before '$'.
>>
> ping.
>
More information about the Binutils
mailing list