[PATCH 2/2] LoongArch: Fix the mnemonics of ll.acq.[wd] and sc.rel.[wd]
WANG Xuerui
i.swmail@xen0n.name
Sun Mar 23 09:30:39 GMT 2025
From: WANG Xuerui <git@xen0n.name>
Previously the instructions are named llacq.[wd] and screl.[wd]
respectively, but according to LoongArch ISA manual v1.10, a dot is
missing before the acq/rel prefix.
Because there may already exist software using the older mnemonics,
make them aliases to the correct ones to preserve compatibility.
Signed-off-by: WANG Xuerui <git@xen0n.name>
---
gas/testsuite/gas/loongarch/insn_int64.d | 16 ++--
gas/testsuite/gas/loongarch/insn_int64.s | 16 ++--
gas/testsuite/gas/loongarch/load_store_op.d | 88 +++++++++++----------
gas/testsuite/gas/loongarch/load_store_op.s | 8 ++
opcodes/loongarch-opc.c | 24 ++++--
5 files changed, 88 insertions(+), 64 deletions(-)
diff --git a/gas/testsuite/gas/loongarch/insn_int64.d b/gas/testsuite/gas/loongarch/insn_int64.d
index 360b840d415..a7333cab274 100644
--- a/gas/testsuite/gas/loongarch/insn_int64.d
+++ b/gas/testsuite/gas/loongarch/insn_int64.d
@@ -370,14 +370,14 @@ Disassembly of section .text:
59c: 387f98a4 stle.d \$a0, \$a1, \$a2
5a0: 385714c4 sc.q \$a0, \$a1, \$a2
5a4: 385714c4 sc.q \$a0, \$a1, \$a2
- 5a8: 385780a4 llacq.w \$a0, \$a1
- 5ac: 385780a4 llacq.w \$a0, \$a1
- 5b0: 385784a4 screl.w \$a0, \$a1
- 5b4: 385784a4 screl.w \$a0, \$a1
- 5b8: 385788a4 llacq.d \$a0, \$a1
- 5bc: 385788a4 llacq.d \$a0, \$a1
- 5c0: 38578ca4 screl.d \$a0, \$a1
- 5c4: 38578ca4 screl.d \$a0, \$a1
+ 5a8: 385780a4 ll.acq.w \$a0, \$a1
+ 5ac: 385780a4 ll.acq.w \$a0, \$a1
+ 5b0: 385784a4 sc.rel.w \$a0, \$a1
+ 5b4: 385784a4 sc.rel.w \$a0, \$a1
+ 5b8: 385788a4 ll.acq.d \$a0, \$a1
+ 5bc: 385788a4 ll.acq.d \$a0, \$a1
+ 5c0: 38578ca4 sc.rel.d \$a0, \$a1
+ 5c4: 38578ca4 sc.rel.d \$a0, \$a1
5c8: 385814c4 amcas.b \$a0, \$a1, \$a2
5cc: 385818a4 amcas.b \$a0, \$a2, \$a1
5d0: 385894c4 amcas.h \$a0, \$a1, \$a2
diff --git a/gas/testsuite/gas/loongarch/insn_int64.s b/gas/testsuite/gas/loongarch/insn_int64.s
index f80895178d4..fdd0486d90f 100644
--- a/gas/testsuite/gas/loongarch/insn_int64.s
+++ b/gas/testsuite/gas/loongarch/insn_int64.s
@@ -379,14 +379,14 @@ stle.w $r4,$r5,$r6
stle.d $r4,$r5,$r6
sc.q $r4,$r5,$r6,0
sc.q $r4,$r5,$r6
-llacq.w $r4,$r5,0
-llacq.w $r4,$r5
-screl.w $r4,$r5,0
-screl.w $r4,$r5
-llacq.d $r4,$r5,0
-llacq.d $r4,$r5
-screl.d $r4,$r5,0
-screl.d $r4,$r5
+ll.acq.w $r4,$r5,0
+ll.acq.w $r4,$r5
+sc.rel.w $r4,$r5,0
+sc.rel.w $r4,$r5
+ll.acq.d $r4,$r5,0
+ll.acq.d $r4,$r5
+sc.rel.d $r4,$r5,0
+sc.rel.d $r4,$r5
amcas.b $r4,$r5,$r6,0
amcas.b $r4,$r6,$r5
amcas.h $r4,$r5,$r6,0
diff --git a/gas/testsuite/gas/loongarch/load_store_op.d b/gas/testsuite/gas/loongarch/load_store_op.d
index 0ad83167bbc..6ad755760ca 100644
--- a/gas/testsuite/gas/loongarch/load_store_op.d
+++ b/gas/testsuite/gas/loongarch/load_store_op.d
@@ -178,43 +178,51 @@ Disassembly of section .text:
2a0:[ ]+387f98a4 [ ]+stle.d[ ]+[ ]+\$a0, \$a1, \$a2
2a4:[ ]+385714c4 [ ]+sc.q[ ]+[ ]+\$a0, \$a1, \$a2
2a8:[ ]+385714c4 [ ]+sc.q[ ]+[ ]+\$a0, \$a1, \$a2
- 2ac:[ ]+385780a4 [ ]+llacq.w[ ]+[ ]+\$a0, \$a1
- 2b0:[ ]+385780a4 [ ]+llacq.w[ ]+[ ]+\$a0, \$a1
- 2b4:[ ]+385784a4 [ ]+screl.w[ ]+[ ]+\$a0, \$a1
- 2b8:[ ]+385784a4 [ ]+screl.w[ ]+[ ]+\$a0, \$a1
- 2bc:[ ]+385788a4 [ ]+llacq.d[ ]+[ ]+\$a0, \$a1
- 2c0:[ ]+385788a4 [ ]+llacq.d[ ]+[ ]+\$a0, \$a1
- 2c4:[ ]+38578ca4 [ ]+screl.d[ ]+[ ]+\$a0, \$a1
- 2c8:[ ]+38578ca4 [ ]+screl.d[ ]+[ ]+\$a0, \$a1
- 2cc:[ ]+385814c4 [ ]+amcas.b[ ]+[ ]+\$a0, \$a1, \$a2
- 2d0:[ ]+385818a4 [ ]+amcas.b[ ]+[ ]+\$a0, \$a2, \$a1
- 2d4:[ ]+385894c4 [ ]+amcas.h[ ]+[ ]+\$a0, \$a1, \$a2
- 2d8:[ ]+385898a4 [ ]+amcas.h[ ]+[ ]+\$a0, \$a2, \$a1
- 2dc:[ ]+385914c4 [ ]+amcas.w[ ]+[ ]+\$a0, \$a1, \$a2
- 2e0:[ ]+385918a4 [ ]+amcas.w[ ]+[ ]+\$a0, \$a2, \$a1
- 2e4:[ ]+385994c4 [ ]+amcas.d[ ]+[ ]+\$a0, \$a1, \$a2
- 2e8:[ ]+385998a4 [ ]+amcas.d[ ]+[ ]+\$a0, \$a2, \$a1
- 2ec:[ ]+385a14c4 [ ]+amcas_db.b[ ]+[ ]+\$a0, \$a1, \$a2
- 2f0:[ ]+385a18a4 [ ]+amcas_db.b[ ]+[ ]+\$a0, \$a2, \$a1
- 2f4:[ ]+385a94c4 [ ]+amcas_db.h[ ]+[ ]+\$a0, \$a1, \$a2
- 2f8:[ ]+385a98a4 [ ]+amcas_db.h[ ]+[ ]+\$a0, \$a2, \$a1
- 2fc:[ ]+385b14c4 [ ]+amcas_db.w[ ]+[ ]+\$a0, \$a1, \$a2
- 300:[ ]+385b18a4 [ ]+amcas_db.w[ ]+[ ]+\$a0, \$a2, \$a1
- 304:[ ]+385b94c4 [ ]+amcas_db.d[ ]+[ ]+\$a0, \$a1, \$a2
- 308:[ ]+385b98a4 [ ]+amcas_db.d[ ]+[ ]+\$a0, \$a2, \$a1
- 30c:[ ]+385c14c4 [ ]+amswap.b[ ]+[ ]+\$a0, \$a1, \$a2
- 310:[ ]+385c18a4 [ ]+amswap.b[ ]+[ ]+\$a0, \$a2, \$a1
- 314:[ ]+385c94c4 [ ]+amswap.h[ ]+[ ]+\$a0, \$a1, \$a2
- 318:[ ]+385c98a4 [ ]+amswap.h[ ]+[ ]+\$a0, \$a2, \$a1
- 31c:[ ]+385d14c4 [ ]+amadd.b[ ]+[ ]+\$a0, \$a1, \$a2
- 320:[ ]+385d18a4 [ ]+amadd.b[ ]+[ ]+\$a0, \$a2, \$a1
- 324:[ ]+385d94c4 [ ]+amadd.h[ ]+[ ]+\$a0, \$a1, \$a2
- 328:[ ]+385d98a4 [ ]+amadd.h[ ]+[ ]+\$a0, \$a2, \$a1
- 32c:[ ]+385e14c4 [ ]+amswap_db.b[ ]+[ ]+\$a0, \$a1, \$a2
- 330:[ ]+385e18a4 [ ]+amswap_db.b[ ]+[ ]+\$a0, \$a2, \$a1
- 334:[ ]+385e94c4 [ ]+amswap_db.h[ ]+[ ]+\$a0, \$a1, \$a2
- 338:[ ]+385e98a4 [ ]+amswap_db.h[ ]+[ ]+\$a0, \$a2, \$a1
- 33c:[ ]+385f14c4 [ ]+amadd_db.b[ ]+[ ]+\$a0, \$a1, \$a2
- 340:[ ]+385f18a4 [ ]+amadd_db.b[ ]+[ ]+\$a0, \$a2, \$a1
- 344:[ ]+385f94c4 [ ]+amadd_db.h[ ]+[ ]+\$a0, \$a1, \$a2
- 348:[ ]+385f98a4 [ ]+amadd_db.h[ ]+[ ]+\$a0, \$a2, \$a1
+ 2ac:[ ]+385780a4 [ ]+ll.acq.w[ ]+[ ]+\$a0, \$a1
+ 2b0:[ ]+385780a4 [ ]+ll.acq.w[ ]+[ ]+\$a0, \$a1
+ 2b4:[ ]+385780a4 [ ]+ll.acq.w[ ]+[ ]+\$a0, \$a1
+ 2b8:[ ]+385780a4 [ ]+ll.acq.w[ ]+[ ]+\$a0, \$a1
+ 2bc:[ ]+385784a4 [ ]+sc.rel.w[ ]+[ ]+\$a0, \$a1
+ 2c0:[ ]+385784a4 [ ]+sc.rel.w[ ]+[ ]+\$a0, \$a1
+ 2c4:[ ]+385784a4 [ ]+sc.rel.w[ ]+[ ]+\$a0, \$a1
+ 2c8:[ ]+385784a4 [ ]+sc.rel.w[ ]+[ ]+\$a0, \$a1
+ 2cc:[ ]+385788a4 [ ]+ll.acq.d[ ]+[ ]+\$a0, \$a1
+ 2d0:[ ]+385788a4 [ ]+ll.acq.d[ ]+[ ]+\$a0, \$a1
+ 2d4:[ ]+385788a4 [ ]+ll.acq.d[ ]+[ ]+\$a0, \$a1
+ 2d8:[ ]+385788a4 [ ]+ll.acq.d[ ]+[ ]+\$a0, \$a1
+ 2dc:[ ]+38578ca4 [ ]+sc.rel.d[ ]+[ ]+\$a0, \$a1
+ 2e0:[ ]+38578ca4 [ ]+sc.rel.d[ ]+[ ]+\$a0, \$a1
+ 2e4:[ ]+38578ca4 [ ]+sc.rel.d[ ]+[ ]+\$a0, \$a1
+ 2e8:[ ]+38578ca4 [ ]+sc.rel.d[ ]+[ ]+\$a0, \$a1
+ 2ec:[ ]+385814c4 [ ]+amcas.b[ ]+[ ]+\$a0, \$a1, \$a2
+ 2f0:[ ]+385818a4 [ ]+amcas.b[ ]+[ ]+\$a0, \$a2, \$a1
+ 2f4:[ ]+385894c4 [ ]+amcas.h[ ]+[ ]+\$a0, \$a1, \$a2
+ 2f8:[ ]+385898a4 [ ]+amcas.h[ ]+[ ]+\$a0, \$a2, \$a1
+ 2fc:[ ]+385914c4 [ ]+amcas.w[ ]+[ ]+\$a0, \$a1, \$a2
+ 300:[ ]+385918a4 [ ]+amcas.w[ ]+[ ]+\$a0, \$a2, \$a1
+ 304:[ ]+385994c4 [ ]+amcas.d[ ]+[ ]+\$a0, \$a1, \$a2
+ 308:[ ]+385998a4 [ ]+amcas.d[ ]+[ ]+\$a0, \$a2, \$a1
+ 30c:[ ]+385a14c4 [ ]+amcas_db.b[ ]+[ ]+\$a0, \$a1, \$a2
+ 310:[ ]+385a18a4 [ ]+amcas_db.b[ ]+[ ]+\$a0, \$a2, \$a1
+ 314:[ ]+385a94c4 [ ]+amcas_db.h[ ]+[ ]+\$a0, \$a1, \$a2
+ 318:[ ]+385a98a4 [ ]+amcas_db.h[ ]+[ ]+\$a0, \$a2, \$a1
+ 31c:[ ]+385b14c4 [ ]+amcas_db.w[ ]+[ ]+\$a0, \$a1, \$a2
+ 320:[ ]+385b18a4 [ ]+amcas_db.w[ ]+[ ]+\$a0, \$a2, \$a1
+ 324:[ ]+385b94c4 [ ]+amcas_db.d[ ]+[ ]+\$a0, \$a1, \$a2
+ 328:[ ]+385b98a4 [ ]+amcas_db.d[ ]+[ ]+\$a0, \$a2, \$a1
+ 32c:[ ]+385c14c4 [ ]+amswap.b[ ]+[ ]+\$a0, \$a1, \$a2
+ 330:[ ]+385c18a4 [ ]+amswap.b[ ]+[ ]+\$a0, \$a2, \$a1
+ 334:[ ]+385c94c4 [ ]+amswap.h[ ]+[ ]+\$a0, \$a1, \$a2
+ 338:[ ]+385c98a4 [ ]+amswap.h[ ]+[ ]+\$a0, \$a2, \$a1
+ 33c:[ ]+385d14c4 [ ]+amadd.b[ ]+[ ]+\$a0, \$a1, \$a2
+ 340:[ ]+385d18a4 [ ]+amadd.b[ ]+[ ]+\$a0, \$a2, \$a1
+ 344:[ ]+385d94c4 [ ]+amadd.h[ ]+[ ]+\$a0, \$a1, \$a2
+ 348:[ ]+385d98a4 [ ]+amadd.h[ ]+[ ]+\$a0, \$a2, \$a1
+ 34c:[ ]+385e14c4 [ ]+amswap_db.b[ ]+[ ]+\$a0, \$a1, \$a2
+ 350:[ ]+385e18a4 [ ]+amswap_db.b[ ]+[ ]+\$a0, \$a2, \$a1
+ 354:[ ]+385e94c4 [ ]+amswap_db.h[ ]+[ ]+\$a0, \$a1, \$a2
+ 358:[ ]+385e98a4 [ ]+amswap_db.h[ ]+[ ]+\$a0, \$a2, \$a1
+ 35c:[ ]+385f14c4 [ ]+amadd_db.b[ ]+[ ]+\$a0, \$a1, \$a2
+ 360:[ ]+385f18a4 [ ]+amadd_db.b[ ]+[ ]+\$a0, \$a2, \$a1
+ 364:[ ]+385f94c4 [ ]+amadd_db.h[ ]+[ ]+\$a0, \$a1, \$a2
+ 368:[ ]+385f98a4 [ ]+amadd_db.h[ ]+[ ]+\$a0, \$a2, \$a1
diff --git a/gas/testsuite/gas/loongarch/load_store_op.s b/gas/testsuite/gas/loongarch/load_store_op.s
index 7912adb1090..972a51d125e 100644
--- a/gas/testsuite/gas/loongarch/load_store_op.s
+++ b/gas/testsuite/gas/loongarch/load_store_op.s
@@ -171,12 +171,20 @@ sc.q $r4,$r5,$r6,0
sc.q $r4,$r5,$r6
llacq.w $r4,$r5,0
llacq.w $r4,$r5
+ll.acq.w $r4,$r5,0
+ll.acq.w $r4,$r5
screl.w $r4,$r5,0
screl.w $r4,$r5
+sc.rel.w $r4,$r5,0
+sc.rel.w $r4,$r5
llacq.d $r4,$r5,0
llacq.d $r4,$r5
+ll.acq.d $r4,$r5,0
+ll.acq.d $r4,$r5
screl.d $r4,$r5,0
screl.d $r4,$r5
+sc.rel.d $r4,$r5,0
+sc.rel.d $r4,$r5
amcas.b $r4,$r5,$r6,0
amcas.b $r4,$r6,$r5
amcas.h $r4,$r5,$r6,0
diff --git a/opcodes/loongarch-opc.c b/opcodes/loongarch-opc.c
index fa53021cfae..c2fc9afe9f3 100644
--- a/opcodes/loongarch-opc.c
+++ b/opcodes/loongarch-opc.c
@@ -936,14 +936,22 @@ static struct loongarch_opcode loongarch_load_store_opcodes[] =
{ 0x382c0000, 0xffff8000, "preldx", "u0:5,r5:5,r10:5", 0, 0, 0, 0 },
{ 0x0, 0x0, "sc.q", "r,r,r,u0:0", "sc.q %1,%2,%3", 0, 0, 0 },
{ 0x38570000, 0xffff8000, "sc.q", "r0:5,r10:5,r5:5", 0, 0, 0, 0 },
- { 0x0, 0x0, "llacq.w", "r,r,u0:0", "llacq.w %1,%2", 0, 0, 0 },
- { 0x38578000, 0xfffffc00, "llacq.w", "r0:5,r5:5", 0, 0, 0, 0 },
- { 0x0, 0x0, "screl.w", "r,r,u0:0", "screl.w %1,%2", 0, 0, 0 },
- { 0x38578400, 0xfffffc00, "screl.w", "r0:5,r5:5", 0, 0, 0, 0 },
- { 0x0, 0x0, "llacq.d", "r,r,u0:0", "llacq.d %1,%2", 0, 0, 0 },
- { 0x38578800, 0xfffffc00, "llacq.d", "r0:5,r5:5", 0, 0, 0, 0 },
- { 0x0, 0x0, "screl.d", "r,r,u0:0", "screl.d %1,%2", 0, 0, 0 },
- { 0x38578c00, 0xfffffc00, "screl.d", "r0:5,r5:5", 0, 0, 0, 0 },
+ { 0x0, 0x0, "llacq.w", "r,r,u0:0", "ll.acq.w %1,%2", 0, 0, 0 },
+ { 0x0, 0x0, "llacq.w", "r0:5,r5:5", "ll.acq.w %1,%2", 0, 0, 0 },
+ { 0x0, 0x0, "ll.acq.w", "r,r,u0:0", "ll.acq.w %1,%2", 0, 0, 0 },
+ { 0x38578000, 0xfffffc00, "ll.acq.w", "r0:5,r5:5", 0, 0, 0, 0 },
+ { 0x0, 0x0, "screl.w", "r,r,u0:0", "sc.rel.w %1,%2", 0, 0, 0 },
+ { 0x0, 0x0, "screl.w", "r0:5,r5:5", "sc.rel.w %1,%2", 0, 0, 0 },
+ { 0x0, 0x0, "sc.rel.w", "r,r,u0:0", "sc.rel.w %1,%2", 0, 0, 0 },
+ { 0x38578400, 0xfffffc00, "sc.rel.w", "r0:5,r5:5", 0, 0, 0, 0 },
+ { 0x0, 0x0, "llacq.d", "r,r,u0:0", "ll.acq.d %1,%2", 0, 0, 0 },
+ { 0x0, 0x0, "llacq.d", "r0:5,r5:5", "ll.acq.d %1,%2", 0, 0, 0 },
+ { 0x0, 0x0, "ll.acq.d", "r,r,u0:0", "ll.acq.d %1,%2", 0, 0, 0 },
+ { 0x38578800, 0xfffffc00, "ll.acq.d", "r0:5,r5:5", 0, 0, 0, 0 },
+ { 0x0, 0x0, "screl.d", "r,r,u0:0", "sc.rel.d %1,%2", 0, 0, 0 },
+ { 0x0, 0x0, "screl.d", "r0:5,r5:5", "sc.rel.d %1,%2", 0, 0, 0 },
+ { 0x0, 0x0, "sc.rel.d", "r,r,u0:0", "sc.rel.d %1,%2", 0, 0, 0 },
+ { 0x38578c00, 0xfffffc00, "sc.rel.d", "r0:5,r5:5", 0, 0, 0, 0 },
{ 0x0, 0x0, "amcas.b", "r,r,r,u0:0", "amcas.b %1,%2,%3", 0, 0, 0 },
{ 0x38580000, 0xffff8000, "amcas.b", "r0:5,r10:5,r5:5", 0, 0, 0, 0 },
{ 0x0, 0x0, "amcas.h", "r,r,r,u0:0", "amcas.h %1,%2,%3", 0, 0, 0 },
--
2.48.1
More information about the Binutils
mailing list