[PATCH 1/2] LoongArch: Support LA32R aliases rdcnt{vl,vh,id}.w
Lulu Cai
cailulu@loongson.cn
Wed Apr 2 06:47:26 GMT 2025
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 '$'.
More information about the Binutils
mailing list