* [PATCH 1/2] LoongArch: Fix pcaddi format string
@ 2023-08-08 11:45 mengqinggang
2023-08-08 11:45 ` [PATCH 2/2] LoongArch: Add support for "pcaddi rd, label" mengqinggang
0 siblings, 1 reply; 3+ messages in thread
From: mengqinggang @ 2023-08-08 11:45 UTC (permalink / raw)
To: binutils
Cc: xuchenghua, chenglulu, liuzhensong, xry111, i.swmail, maskray,
mengqinggang
Add "<<2" for pcaddi format string
---
opcodes/loongarch-opc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/opcodes/loongarch-opc.c b/opcodes/loongarch-opc.c
index 2f02e33dbec..7d110683e93 100644
--- a/opcodes/loongarch-opc.c
+++ b/opcodes/loongarch-opc.c
@@ -564,7 +564,7 @@ static struct loongarch_opcode loongarch_imm_opcodes[] =
{ 0x10000000, 0xfc000000, "addu16i.d", "r0:5,r5:5,s10:16", 0, 0, 0, 0 },
{ 0x14000000, 0xfe000000, "lu12i.w", "r0:5,s5:20", 0, 0, 0, 0 },
{ 0x16000000, 0xfe000000, "lu32i.d", "r0:5,s5:20", 0, 0, 0, 0 },
- { 0x18000000, 0xfe000000, "pcaddi", "r0:5,s5:20", 0, 0, 0, 0 },
+ { 0x18000000, 0xfe000000, "pcaddi", "r0:5,s5:20<<2", 0, 0, 0, 0 },
{ 0x1a000000, 0xfe000000, "pcalau12i", "r0:5,s5:20", 0, 0, 0, 0 },
{ 0x1c000000, 0xfe000000, "pcaddu12i", "r0:5,s5:20", 0, 0, 0, 0 },
{ 0x1e000000, 0xfe000000, "pcaddu18i", "r0:5,s5:20", 0, 0, 0, 0 },
--
2.36.0
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH 2/2] LoongArch: Add support for "pcaddi rd, label"
2023-08-08 11:45 [PATCH 1/2] LoongArch: Fix pcaddi format string mengqinggang
@ 2023-08-08 11:45 ` mengqinggang
2023-08-08 12:01 ` WANG Xuerui
0 siblings, 1 reply; 3+ messages in thread
From: mengqinggang @ 2023-08-08 11:45 UTC (permalink / raw)
To: binutils
Cc: xuchenghua, chenglulu, liuzhensong, xry111, i.swmail, maskray,
mengqinggang
Add a macro pcaddi instruction to support "pcaddi rd, label".
pcaddi has a 20-bit signed immediate, it can address a +/- 2MB pc relative
address, and the address should be 4-byte aligned.
---
bfd/elfxx-loongarch.c | 2 +-
gas/testsuite/gas/loongarch/imm_ins.d | 137 +++++++++++++-------------
gas/testsuite/gas/loongarch/imm_op.d | 82 +++++++--------
gas/testsuite/gas/loongarch/imm_op.s | 4 +-
gas/testsuite/gas/loongarch/pcaddi.d | 13 +++
gas/testsuite/gas/loongarch/pcaddi.s | 4 +
opcodes/loongarch-opc.c | 1 +
7 files changed, 131 insertions(+), 112 deletions(-)
create mode 100644 gas/testsuite/gas/loongarch/pcaddi.d
create mode 100644 gas/testsuite/gas/loongarch/pcaddi.s
diff --git a/bfd/elfxx-loongarch.c b/bfd/elfxx-loongarch.c
index f27c9fdba6a..683e771af90 100644
--- a/bfd/elfxx-loongarch.c
+++ b/bfd/elfxx-loongarch.c
@@ -1431,7 +1431,7 @@ static loongarch_reloc_howto_type loongarch_howto_table[] =
false, /* pcrel_offset. */
BFD_RELOC_LARCH_PCREL20_S2, /* bfd_reloc_code_real_type. */
reloc_sign_bits, /* adjust_reloc_bits. */
- NULL), /* larch_reloc_type_name. */
+ "pc20"), /* larch_reloc_type_name. */
/* Canonical Frame Address. */
LOONGARCH_HOWTO (R_LARCH_CFA, /* type (104). */
diff --git a/gas/testsuite/gas/loongarch/imm_ins.d b/gas/testsuite/gas/loongarch/imm_ins.d
index f00110cd8a3..b54df8735a8 100644
--- a/gas/testsuite/gas/loongarch/imm_ins.d
+++ b/gas/testsuite/gas/loongarch/imm_ins.d
@@ -7,74 +7,75 @@
Disassembly of section .text:
-00000000.* <.text>:
-[ ]+0:[ ]+03848c0c[ ]+li.w[ ]+\$t0,[ ]+0x123
-[ ]+4:[ ]+15ffe00d[ ]+lu12i.w[ ]+\$t1,[ ]+-256
-[ ]+8:[ ]+16001fed[ ]+lu32i.d[ ]+\$t1,[ ]+255
-[ ]+c:[ ]+02bffc0e[ ]+li.w[ ]+\$t2,[ ]+-1
-[ ]+10:[ ]+1601ffee[ ]+lu32i.d[ ]+\$t2,[ ]+4095
-[ ]+14:[ ]+0004b58b[ ]+alsl.w[ ]+\$a7,[ ]+\$t0,[ ]+\$t1,[ ]+0x2
-[ ]+18:[ ]+0006b58b[ ]+alsl.wu[ ]+\$a7,[ ]+\$t0,[ ]+\$t1,[ ]+0x2
-[ ]+1c:[ ]+0009358b[ ]+bytepick.w[ ]+\$a7,[ ]+\$t0,[ ]+\$t1,[ ]+0x2
-[ ]+20:[ ]+000d358b[ ]+bytepick.d[ ]+\$a7,[ ]+\$t0,[ ]+\$t1,[ ]+0x2
+[ ]*0000000000000000 <.text>:
+[ ]+0:[ ]+03848c0c[ ]+li.w[ ]+\$t0, 0x123
+[ ]+4:[ ]+15ffe00d[ ]+lu12i.w[ ]+\$t1, -256
+[ ]+8:[ ]+16001fed[ ]+lu32i.d[ ]+\$t1, 255
+[ ]+c:[ ]+02bffc0e[ ]+li.w[ ]+\$t2, -1
+[ ]+10:[ ]+1601ffee[ ]+lu32i.d[ ]+\$t2, 4095
+[ ]+14:[ ]+0004b58b[ ]+alsl.w[ ]+\$a7, \$t0, \$t1, 0x2
+[ ]+18:[ ]+0006b58b[ ]+alsl.wu[ ]+\$a7, \$t0, \$t1, 0x2
+[ ]+1c:[ ]+0009358b[ ]+bytepick.w[ ]+\$a7, \$t0, \$t1, 0x2
+[ ]+20:[ ]+000d358b[ ]+bytepick.d[ ]+\$a7, \$t0, \$t1, 0x2
[ ]+24:[ ]+002a0002[ ]+break[ ]+0x2
[ ]+28:[ ]+002a8002[ ]+dbcl[ ]+0x2
[ ]+2c:[ ]+002b0002[ ]+syscall[ ]+0x2
-[ ]+30:[ ]+002cb58b[ ]+alsl.d[ ]+\$a7,[ ]+\$t0,[ ]+\$t1,[ ]+0x2
-[ ]+34:[ ]+0040898b[ ]+slli.w[ ]+\$a7,[ ]+\$t0,[ ]+0x2
-[ ]+38:[ ]+0041098b[ ]+slli.d[ ]+\$a7,[ ]+\$t0,[ ]+0x2
-[ ]+3c:[ ]+0044898b[ ]+srli.w[ ]+\$a7,[ ]+\$t0,[ ]+0x2
-[ ]+40:[ ]+004509ac[ ]+srli.d[ ]+\$t0,[ ]+\$t1,[ ]+0x2
-[ ]+44:[ ]+004889ac[ ]+srai.w[ ]+\$t0,[ ]+\$t1,[ ]+0x2
-[ ]+48:[ ]+004909ac[ ]+srai.d[ ]+\$t0,[ ]+\$t1,[ ]+0x2
-[ ]+4c:[ ]+006209ac[ ]+bstrins.w[ ]+\$t0,[ ]+\$t1,[ ]+0x2,[ ]+0x2
-[ ]+50:[ ]+008209ac[ ]+bstrins.d[ ]+\$t0,[ ]+\$t1,[ ]+0x2,[ ]+0x2
-[ ]+54:[ ]+00c209ac[ ]+bstrpick.d[ ]+\$t0,[ ]+\$t1,[ ]+0x2,[ ]+0x2
-[ ]+58:[ ]+00c209ac[ ]+bstrpick.d[ ]+\$t0,[ ]+\$t1,[ ]+0x2,[ ]+0x2
-[ ]+5c:[ ]+02048dac[ ]+slti[ ]+\$t0,[ ]+\$t1,[ ]+291
-[ ]+60:[ ]+02448dac[ ]+sltui[ ]+\$t0,[ ]+\$t1,[ ]+291
-[ ]+64:[ ]+02848dac[ ]+addi.w[ ]+\$t0,[ ]+\$t1,[ ]+291
-[ ]+68:[ ]+02c48dac[ ]+addi.d[ ]+\$t0,[ ]+\$t1,[ ]+291
-[ ]+6c:[ ]+03048dac[ ]+lu52i.d[ ]+\$t0,[ ]+\$t1,[ ]+291
-[ ]+70:[ ]+034009ac[ ]+andi[ ]+\$t0,[ ]+\$t1,[ ]+0x2
-[ ]+74:[ ]+038009ac[ ]+ori[ ]+\$t0,[ ]+\$t1,[ ]+0x2
-[ ]+78:[ ]+03c009ac[ ]+xori[ ]+\$t0,[ ]+\$t1,[ ]+0x2
-[ ]+7c:[ ]+100009ac[ ]+addu16i.d[ ]+\$t0,[ ]+\$t1,[ ]+2
-[ ]+80:[ ]+1400246c[ ]+lu12i.w[ ]+\$t0,[ ]+291
-[ ]+84:[ ]+1600246c[ ]+lu32i.d[ ]+\$t0,[ ]+291
-[ ]+88:[ ]+1800246c[ ]+pcaddi[ ]+\$t0,[ ]+291
-[ ]+8c:[ ]+1a00246c[ ]+pcalau12i[ ]+\$t0,[ ]+291
-[ ]+90:[ ]+1c00246c[ ]+pcaddu12i[ ]+\$t0,[ ]+291
-[ ]+94:[ ]+1e00246c[ ]+pcaddu18i[ ]+\$t0,[ ]+291
-[ ]+98:[ ]+04048c0c[ ]+csrrd[ ]+\$t0,[ ]+0x123
-[ ]+9c:[ ]+04048c2c[ ]+csrwr[ ]+\$t0,[ ]+0x123
-[ ]+a0:[ ]+040009ac[ ]+csrxchg[ ]+\$t0,[ ]+\$t1,[ ]+0x2
-[ ]+a4:[ ]+060009a2[ ]+cacop[ ]+0x2,[ ]+\$t1,[ ]+2
-[ ]+a8:[ ]+064009ac[ ]+lddir[ ]+\$t0,[ ]+\$t1,[ ]+0x2
-[ ]+ac:[ ]+06440980[ ]+ldpte[ ]+\$t0,[ ]+0x2
-[ ]+b0:[ ]+0649b9a2[ ]+invtlb[ ]+0x2,[ ]+\$t1,[ ]+\$t2
-[ ]+b4:[ ]+200101ac[ ]+ll.w[ ]+\$t0,[ ]+\$t1,[ ]+256
-[ ]+b8:[ ]+210101ac[ ]+sc.w[ ]+\$t0,[ ]+\$t1,[ ]+256
-[ ]+bc:[ ]+220101ac[ ]+ll.d[ ]+\$t0,[ ]+\$t1,[ ]+256
-[ ]+c0:[ ]+230101ac[ ]+sc.d[ ]+\$t0,[ ]+\$t1,[ ]+256
-[ ]+c4:[ ]+240101ac[ ]+ldptr.w[ ]+\$t0,[ ]+\$t1,[ ]+256
-[ ]+c8:[ ]+250101ac[ ]+stptr.w[ ]+\$t0,[ ]+\$t1,[ ]+256
-[ ]+cc:[ ]+260101ac[ ]+ldptr.d[ ]+\$t0,[ ]+\$t1,[ ]+256
-[ ]+d0:[ ]+270101ac[ ]+stptr.d[ ]+\$t0,[ ]+\$t1,[ ]+256
-[ ]+d4:[ ]+280401ac[ ]+ld.b[ ]+\$t0,[ ]+\$t1,[ ]+256
-[ ]+d8:[ ]+284401ac[ ]+ld.h[ ]+\$t0,[ ]+\$t1,[ ]+256
-[ ]+dc:[ ]+288401ac[ ]+ld.w[ ]+\$t0,[ ]+\$t1,[ ]+256
-[ ]+e0:[ ]+28c401ac[ ]+ld.d[ ]+\$t0,[ ]+\$t1,[ ]+256
-[ ]+e4:[ ]+290401ac[ ]+st.b[ ]+\$t0,[ ]+\$t1,[ ]+256
-[ ]+e8:[ ]+294401ac[ ]+st.h[ ]+\$t0,[ ]+\$t1,[ ]+256
-[ ]+ec:[ ]+298401ac[ ]+st.w[ ]+\$t0,[ ]+\$t1,[ ]+256
-[ ]+f0:[ ]+29c401ac[ ]+st.d[ ]+\$t0,[ ]+\$t1,[ ]+256
-[ ]+f4:[ ]+2a0401ac[ ]+ld.bu[ ]+\$t0,[ ]+\$t1,[ ]+256
-[ ]+f8:[ ]+2a4401ac[ ]+ld.hu[ ]+\$t0,[ ]+\$t1,[ ]+256
-[ ]+fc:[ ]+2a8401ac[ ]+ld.wu[ ]+\$t0,[ ]+\$t1,[ ]+256
-[ ]+100:[ ]+2ac401a2[ ]+preld[ ]+0x2,[ ]+\$t1,[ ]+256
-[ ]+104:[ ]+382c39a2[ ]+preldx[ ]+0x2,[ ]+\$t1,[ ]+\$t2
-[ ]+108:[ ]+2b048d8a[ ]+fld.s[ ]+\$ft2,[ ]+\$t0,[ ]+291
-[ ]+10c:[ ]+2b448d8a[ ]+fst.s[ ]+\$ft2,[ ]+\$t0,[ ]+291
-[ ]+110:[ ]+2b848d8a[ ]+fld.d[ ]+\$ft2,[ ]+\$t0,[ ]+291
-[ ]+114:[ ]+2bc48d8a[ ]+fst.d[ ]+\$ft2,[ ]+\$t0,[ ]+291
+[ ]+30:[ ]+002cb58b[ ]+alsl.d[ ]+\$a7, \$t0, \$t1, 0x2
+[ ]+34:[ ]+0040898b[ ]+slli.w[ ]+\$a7, \$t0, 0x2
+[ ]+38:[ ]+0041098b[ ]+slli.d[ ]+\$a7, \$t0, 0x2
+[ ]+3c:[ ]+0044898b[ ]+srli.w[ ]+\$a7, \$t0, 0x2
+[ ]+40:[ ]+004509ac[ ]+srli.d[ ]+\$t0, \$t1, 0x2
+[ ]+44:[ ]+004889ac[ ]+srai.w[ ]+\$t0, \$t1, 0x2
+[ ]+48:[ ]+004909ac[ ]+srai.d[ ]+\$t0, \$t1, 0x2
+[ ]+4c:[ ]+006209ac[ ]+bstrins.w[ ]+\$t0, \$t1, 0x2, 0x2
+[ ]+50:[ ]+008209ac[ ]+bstrins.d[ ]+\$t0, \$t1, 0x2, 0x2
+[ ]+54:[ ]+00c209ac[ ]+bstrpick.d[ ]+\$t0, \$t1, 0x2, 0x2
+[ ]+58:[ ]+00c209ac[ ]+bstrpick.d[ ]+\$t0, \$t1, 0x2, 0x2
+[ ]+5c:[ ]+02048dac[ ]+slti[ ]+\$t0, \$t1, 291
+[ ]+60:[ ]+02448dac[ ]+sltui[ ]+\$t0, \$t1, 291
+[ ]+64:[ ]+02848dac[ ]+addi.w[ ]+\$t0, \$t1, 291
+[ ]+68:[ ]+02c48dac[ ]+addi.d[ ]+\$t0, \$t1, 291
+[ ]+6c:[ ]+03048dac[ ]+lu52i.d[ ]+\$t0, \$t1, 291
+[ ]+70:[ ]+034009ac[ ]+andi[ ]+\$t0, \$t1, 0x2
+[ ]+74:[ ]+038009ac[ ]+ori[ ]+\$t0, \$t1, 0x2
+[ ]+78:[ ]+03c009ac[ ]+xori[ ]+\$t0, \$t1, 0x2
+[ ]+7c:[ ]+100009ac[ ]+addu16i.d[ ]+\$t0, \$t1, 2
+[ ]+80:[ ]+1400246c[ ]+lu12i.w[ ]+\$t0, 291
+[ ]+84:[ ]+1600246c[ ]+lu32i.d[ ]+\$t0, 291
+[ ]+88:[ ]+1800000c[ ]+pcaddi[ ]+\$t0, 0
+[ ]+88: R_LARCH_PCREL20_S2[ ]+\*ABS\*\+0x123
+[ ]+8c:[ ]+1a00246c[ ]+pcalau12i[ ]+\$t0, 291
+[ ]+90:[ ]+1c00246c[ ]+pcaddu12i[ ]+\$t0, 291
+[ ]+94:[ ]+1e00246c[ ]+pcaddu18i[ ]+\$t0, 291
+[ ]+98:[ ]+04048c0c[ ]+csrrd[ ]+\$t0, 0x123
+[ ]+9c:[ ]+04048c2c[ ]+csrwr[ ]+\$t0, 0x123
+[ ]+a0:[ ]+040009ac[ ]+csrxchg[ ]+\$t0, \$t1, 0x2
+[ ]+a4:[ ]+060009a2[ ]+cacop[ ]+0x2, \$t1, 2
+[ ]+a8:[ ]+064009ac[ ]+lddir[ ]+\$t0, \$t1, 0x2
+[ ]+ac:[ ]+06440980[ ]+ldpte[ ]+\$t0, 0x2
+[ ]+b0:[ ]+0649b9a2[ ]+invtlb[ ]+0x2, \$t1, \$t2
+[ ]+b4:[ ]+200101ac[ ]+ll.w[ ]+\$t0, \$t1, 256
+[ ]+b8:[ ]+210101ac[ ]+sc.w[ ]+\$t0, \$t1, 256
+[ ]+bc:[ ]+220101ac[ ]+ll.d[ ]+\$t0, \$t1, 256
+[ ]+c0:[ ]+230101ac[ ]+sc.d[ ]+\$t0, \$t1, 256
+[ ]+c4:[ ]+240101ac[ ]+ldptr.w[ ]+\$t0, \$t1, 256
+[ ]+c8:[ ]+250101ac[ ]+stptr.w[ ]+\$t0, \$t1, 256
+[ ]+cc:[ ]+260101ac[ ]+ldptr.d[ ]+\$t0, \$t1, 256
+[ ]+d0:[ ]+270101ac[ ]+stptr.d[ ]+\$t0, \$t1, 256
+[ ]+d4:[ ]+280401ac[ ]+ld.b[ ]+\$t0, \$t1, 256
+[ ]+d8:[ ]+284401ac[ ]+ld.h[ ]+\$t0, \$t1, 256
+[ ]+dc:[ ]+288401ac[ ]+ld.w[ ]+\$t0, \$t1, 256
+[ ]+e0:[ ]+28c401ac[ ]+ld.d[ ]+\$t0, \$t1, 256
+[ ]+e4:[ ]+290401ac[ ]+st.b[ ]+\$t0, \$t1, 256
+[ ]+e8:[ ]+294401ac[ ]+st.h[ ]+\$t0, \$t1, 256
+[ ]+ec:[ ]+298401ac[ ]+st.w[ ]+\$t0, \$t1, 256
+[ ]+f0:[ ]+29c401ac[ ]+st.d[ ]+\$t0, \$t1, 256
+[ ]+f4:[ ]+2a0401ac[ ]+ld.bu[ ]+\$t0, \$t1, 256
+[ ]+f8:[ ]+2a4401ac[ ]+ld.hu[ ]+\$t0, \$t1, 256
+[ ]+fc:[ ]+2a8401ac[ ]+ld.wu[ ]+\$t0, \$t1, 256
+[ ]+100:[ ]+2ac401a2[ ]+preld[ ]+0x2, \$t1, 256
+[ ]+104:[ ]+382c39a2[ ]+preldx[ ]+0x2, \$t1, \$t2
+[ ]+108:[ ]+2b048d8a[ ]+fld.s[ ]+\$ft2, \$t0, 291
+[ ]+10c:[ ]+2b448d8a[ ]+fst.s[ ]+\$ft2, \$t0, 291
+[ ]+110:[ ]+2b848d8a[ ]+fld.d[ ]+\$ft2, \$t0, 291
+[ ]+114:[ ]+2bc48d8a[ ]+fst.d[ ]+\$ft2, \$t0, 291
diff --git a/gas/testsuite/gas/loongarch/imm_op.d b/gas/testsuite/gas/loongarch/imm_op.d
index 3d4cba45586..4c5cffc7101 100644
--- a/gas/testsuite/gas/loongarch/imm_op.d
+++ b/gas/testsuite/gas/loongarch/imm_op.d
@@ -1,48 +1,48 @@
#as:
#objdump: -dr
-.*:[ ]+file format .*
+.*:[ ]+file format .*
Disassembly of section .text:
-00000000.* <.text>:
-[ ]+0:[ ]+020000a4 [ ]+slti[ ]+[ ]+\$a0, \$a1, 0
-[ ]+4:[ ]+021ffca4 [ ]+slti[ ]+[ ]+\$a0, \$a1, 2047
-[ ]+8:[ ]+022004a4 [ ]+slti[ ]+[ ]+\$a0, \$a1, -2047
-[ ]+c:[ ]+024000a4 [ ]+sltui[ ]+[ ]+\$a0, \$a1, 0
-[ ]+10:[ ]+025ffca4 [ ]+sltui[ ]+[ ]+\$a0, \$a1, 2047
-[ ]+14:[ ]+026004a4 [ ]+sltui[ ]+[ ]+\$a0, \$a1, -2047
-[ ]+18:[ ]+028000a4 [ ]+addi.w[ ]+[ ]+\$a0, \$a1, 0
-[ ]+1c:[ ]+029ffca4 [ ]+addi.w[ ]+[ ]+\$a0, \$a1, 2047
-[ ]+20:[ ]+02a004a4 [ ]+addi.w[ ]+[ ]+\$a0, \$a1, -2047
-[ ]+24:[ ]+02c000a4 [ ]+addi.d[ ]+[ ]+\$a0, \$a1, 0
-[ ]+28:[ ]+02dffca4 [ ]+addi.d[ ]+[ ]+\$a0, \$a1, 2047
-[ ]+2c:[ ]+02e004a4 [ ]+addi.d[ ]+[ ]+\$a0, \$a1, -2047
-[ ]+30:[ ]+030000a4 [ ]+lu52i.d[ ]+[ ]+\$a0, \$a1, 0
-[ ]+34:[ ]+031ffca4 [ ]+lu52i.d[ ]+[ ]+\$a0, \$a1, 2047
-[ ]+38:[ ]+032004a4 [ ]+lu52i.d[ ]+[ ]+\$a0, \$a1, -2047
-[ ]+3c:[ ]+034000a4 [ ]+andi[ ]+[ ]+\$a0, \$a1, 0x0
-[ ]+40:[ ]+035ffca4 [ ]+andi[ ]+[ ]+\$a0, \$a1, 0x7ff
-[ ]+44:[ ]+038000a4 [ ]+ori[ ]+[ ]+\$a0, \$a1, 0x0
-[ ]+48:[ ]+039ffca4 [ ]+ori[ ]+[ ]+\$a0, \$a1, 0x7ff
-[ ]+4c:[ ]+03c000a4 [ ]+xori[ ]+[ ]+\$a0, \$a1, 0x0
-[ ]+50:[ ]+03dffca4 [ ]+xori[ ]+[ ]+\$a0, \$a1, 0x7ff
-[ ]+54:[ ]+100000a4 [ ]+addu16i.d[ ]+[ ]+\$a0, \$a1, 0
-[ ]+58:[ ]+11fffca4 [ ]+addu16i.d[ ]+[ ]+\$a0, \$a1, 32767
-[ ]+5c:[ ]+120004a4 [ ]+addu16i.d[ ]+[ ]+\$a0, \$a1, -32767
-[ ]+60:[ ]+14000004 [ ]+lu12i.w[ ]+[ ]+\$a0, 0
-[ ]+64:[ ]+14ffffe4 [ ]+lu12i.w[ ]+[ ]+\$a0, 524287
-[ ]+68:[ ]+17000024 [ ]+lu32i.d[ ]+[ ]+\$a0, -524287
-[ ]+6c:[ ]+18000004 [ ]+pcaddi[ ]+[ ]+\$a0, 0
-[ ]+70:[ ]+18ffffe4 [ ]+pcaddi[ ]+[ ]+\$a0, 524287
-[ ]+74:[ ]+19000024 [ ]+pcaddi[ ]+[ ]+\$a0, -524287
-[ ]+78:[ ]+1a000004 [ ]+pcalau12i[ ]+[ ]+\$a0, 0
-[ ]+7c:[ ]+1affffe4 [ ]+pcalau12i[ ]+[ ]+\$a0, 524287
-[ ]+80:[ ]+1b000024 [ ]+pcalau12i[ ]+[ ]+\$a0, -524287
-[ ]+84:[ ]+1c000004 [ ]+pcaddu12i[ ]+[ ]+\$a0, 0
-[ ]+88:[ ]+1cffffe4 [ ]+pcaddu12i[ ]+[ ]+\$a0, 524287
-[ ]+8c:[ ]+1d000024 [ ]+pcaddu12i[ ]+[ ]+\$a0, -524287
-[ ]+90:[ ]+1e000004 [ ]+pcaddu18i[ ]+[ ]+\$a0, 0
-[ ]+94:[ ]+1effffe4 [ ]+pcaddu18i[ ]+[ ]+\$a0, 524287
-[ ]+98:[ ]+1f000024 [ ]+pcaddu18i[ ]+[ ]+\$a0, -524287
+[ ]*0000000000000000 <.text>:
+[ ]+0:[ ]+020000a4[ ]+slti[ ]+\$a0, \$a1, 0
+[ ]+4:[ ]+021ffca4[ ]+slti[ ]+\$a0, \$a1, 2047
+[ ]+8:[ ]+022004a4[ ]+slti[ ]+\$a0, \$a1, -2047
+[ ]+c:[ ]+024000a4[ ]+sltui[ ]+\$a0, \$a1, 0
+[ ]+10:[ ]+025ffca4[ ]+sltui[ ]+\$a0, \$a1, 2047
+[ ]+14:[ ]+026004a4[ ]+sltui[ ]+\$a0, \$a1, -2047
+[ ]+18:[ ]+028000a4[ ]+addi.w[ ]+\$a0, \$a1, 0
+[ ]+1c:[ ]+029ffca4[ ]+addi.w[ ]+\$a0, \$a1, 2047
+[ ]+20:[ ]+02a004a4[ ]+addi.w[ ]+\$a0, \$a1, -2047
+[ ]+24:[ ]+02c000a4[ ]+addi.d[ ]+\$a0, \$a1, 0
+[ ]+28:[ ]+02dffca4[ ]+addi.d[ ]+\$a0, \$a1, 2047
+[ ]+2c:[ ]+02e004a4[ ]+addi.d[ ]+\$a0, \$a1, -2047
+[ ]+30:[ ]+030000a4[ ]+lu52i.d[ ]+\$a0, \$a1, 0
+[ ]+34:[ ]+031ffca4[ ]+lu52i.d[ ]+\$a0, \$a1, 2047
+[ ]+38:[ ]+032004a4[ ]+lu52i.d[ ]+\$a0, \$a1, -2047
+[ ]+3c:[ ]+034000a4[ ]+andi[ ]+\$a0, \$a1, 0x0
+[ ]+40:[ ]+035ffca4[ ]+andi[ ]+\$a0, \$a1, 0x7ff
+[ ]+44:[ ]+038000a4[ ]+ori[ ]+\$a0, \$a1, 0x0
+[ ]+48:[ ]+039ffca4[ ]+ori[ ]+\$a0, \$a1, 0x7ff
+[ ]+4c:[ ]+03c000a4[ ]+xori[ ]+\$a0, \$a1, 0x0
+[ ]+50:[ ]+03dffca4[ ]+xori[ ]+\$a0, \$a1, 0x7ff
+[ ]+54:[ ]+100000a4[ ]+addu16i.d[ ]+\$a0, \$a1, 0
+[ ]+58:[ ]+11fffca4[ ]+addu16i.d[ ]+\$a0, \$a1, 32767
+[ ]+5c:[ ]+120004a4[ ]+addu16i.d[ ]+\$a0, \$a1, -32767
+[ ]+60:[ ]+14000004[ ]+lu12i.w[ ]+\$a0, 0
+[ ]+64:[ ]+14ffffe4[ ]+lu12i.w[ ]+\$a0, 524287
+[ ]+68:[ ]+17000024[ ]+lu32i.d[ ]+\$a0, -524287
+[ ]+6c:[ ]+18000004[ ]+pcaddi[ ]+\$a0, 0
+[ ]+70:[ ]+18ffffe4[ ]+pcaddi[ ]+\$a0, 2097148
+[ ]+74:[ ]+19000004[ ]+pcaddi[ ]+\$a0, -2097152
+[ ]+78:[ ]+1a000004[ ]+pcalau12i[ ]+\$a0, 0
+[ ]+7c:[ ]+1affffe4[ ]+pcalau12i[ ]+\$a0, 524287
+[ ]+80:[ ]+1b000024[ ]+pcalau12i[ ]+\$a0, -524287
+[ ]+84:[ ]+1c000004[ ]+pcaddu12i[ ]+\$a0, 0
+[ ]+88:[ ]+1cffffe4[ ]+pcaddu12i[ ]+\$a0, 524287
+[ ]+8c:[ ]+1d000024[ ]+pcaddu12i[ ]+\$a0, -524287
+[ ]+90:[ ]+1e000004[ ]+pcaddu18i[ ]+\$a0, 0
+[ ]+94:[ ]+1effffe4[ ]+pcaddu18i[ ]+\$a0, 524287
+[ ]+98:[ ]+1f000024[ ]+pcaddu18i[ ]+\$a0, -524287
diff --git a/gas/testsuite/gas/loongarch/imm_op.s b/gas/testsuite/gas/loongarch/imm_op.s
index 7e1c5518cba..329486cad55 100644
--- a/gas/testsuite/gas/loongarch/imm_op.s
+++ b/gas/testsuite/gas/loongarch/imm_op.s
@@ -26,8 +26,8 @@ lu12i.w $r4,0
lu12i.w $r4,0x7ffff
lu32i.d $r4,-0x7ffff
pcaddi $r4,0
-pcaddi $r4,0x7ffff
-pcaddi $r4,-0x7ffff
+pcaddi $r4,0x1ffffc
+pcaddi $r4,-0x200000
pcalau12i $r4,0
pcalau12i $r4,0x7ffff
pcalau12i $r4,-0x7ffff
diff --git a/gas/testsuite/gas/loongarch/pcaddi.d b/gas/testsuite/gas/loongarch/pcaddi.d
new file mode 100644
index 00000000000..06dcee1a60c
--- /dev/null
+++ b/gas/testsuite/gas/loongarch/pcaddi.d
@@ -0,0 +1,13 @@
+#as:
+#objdump: -dr
+
+.*:[ ]+file format .*
+
+
+Disassembly of section .text:
+
+[ ]*0000000000000000 <.L1>:
+[ ]+0:[ ]+1800000c[ ]+pcaddi[ ]+\$t0, 0
+[ ]+0: R_LARCH_PCREL20_S2[ ]+.L1
+[ ]+4:[ ]+1800000c[ ]+pcaddi[ ]+\$t0, 0
+[ ]+4: R_LARCH_PCREL20_S2[ ]+.L2
diff --git a/gas/testsuite/gas/loongarch/pcaddi.s b/gas/testsuite/gas/loongarch/pcaddi.s
new file mode 100644
index 00000000000..46b56306ce4
--- /dev/null
+++ b/gas/testsuite/gas/loongarch/pcaddi.s
@@ -0,0 +1,4 @@
+.L1:
+ pcaddi $t0, .L1
+ pcaddi $t0, .L2
+.L2:
diff --git a/opcodes/loongarch-opc.c b/opcodes/loongarch-opc.c
index 7d110683e93..072c138472f 100644
--- a/opcodes/loongarch-opc.c
+++ b/opcodes/loongarch-opc.c
@@ -564,6 +564,7 @@ static struct loongarch_opcode loongarch_imm_opcodes[] =
{ 0x10000000, 0xfc000000, "addu16i.d", "r0:5,r5:5,s10:16", 0, 0, 0, 0 },
{ 0x14000000, 0xfe000000, "lu12i.w", "r0:5,s5:20", 0, 0, 0, 0 },
{ 0x16000000, 0xfe000000, "lu32i.d", "r0:5,s5:20", 0, 0, 0, 0 },
+ { 0x0, 0x0, "pcaddi", "r,la", "pcaddi %1, %%pc20(%2)", 0, 0, 0 },
{ 0x18000000, 0xfe000000, "pcaddi", "r0:5,s5:20<<2", 0, 0, 0, 0 },
{ 0x1a000000, 0xfe000000, "pcalau12i", "r0:5,s5:20", 0, 0, 0, 0 },
{ 0x1c000000, 0xfe000000, "pcaddu12i", "r0:5,s5:20", 0, 0, 0, 0 },
--
2.36.0
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH 2/2] LoongArch: Add support for "pcaddi rd, label"
2023-08-08 11:45 ` [PATCH 2/2] LoongArch: Add support for "pcaddi rd, label" mengqinggang
@ 2023-08-08 12:01 ` WANG Xuerui
0 siblings, 0 replies; 3+ messages in thread
From: WANG Xuerui @ 2023-08-08 12:01 UTC (permalink / raw)
To: mengqinggang, binutils
Cc: xuchenghua, chenglulu, liuzhensong, xry111, i.swmail, maskray
On 2023/8/8 19:45, mengqinggang wrote:
> Add a macro pcaddi instruction to support "pcaddi rd, label".
>
> pcaddi has a 20-bit signed immediate, it can address a +/- 2MB pc relative
> address, and the address should be 4-byte aligned.
> ---
> bfd/elfxx-loongarch.c | 2 +-
> gas/testsuite/gas/loongarch/imm_ins.d | 137 +++++++++++++-------------
> gas/testsuite/gas/loongarch/imm_op.d | 82 +++++++--------
> gas/testsuite/gas/loongarch/imm_op.s | 4 +-
> gas/testsuite/gas/loongarch/pcaddi.d | 13 +++
> gas/testsuite/gas/loongarch/pcaddi.s | 4 +
> opcodes/loongarch-opc.c | 1 +
> 7 files changed, 131 insertions(+), 112 deletions(-)
> create mode 100644 gas/testsuite/gas/loongarch/pcaddi.d
> create mode 100644 gas/testsuite/gas/loongarch/pcaddi.s
>
> diff --git a/bfd/elfxx-loongarch.c b/bfd/elfxx-loongarch.c
> index f27c9fdba6a..683e771af90 100644
> --- a/bfd/elfxx-loongarch.c
> +++ b/bfd/elfxx-loongarch.c
> @@ -1431,7 +1431,7 @@ static loongarch_reloc_howto_type loongarch_howto_table[] =
> false, /* pcrel_offset. */
> BFD_RELOC_LARCH_PCREL20_S2, /* bfd_reloc_code_real_type. */
> reloc_sign_bits, /* adjust_reloc_bits. */
> - NULL), /* larch_reloc_type_name. */
> + "pc20"), /* larch_reloc_type_name. */
>
> /* Canonical Frame Address. */
> LOONGARCH_HOWTO (R_LARCH_CFA, /* type (104). */
> diff --git a/gas/testsuite/gas/loongarch/imm_ins.d b/gas/testsuite/gas/loongarch/imm_ins.d
> index f00110cd8a3..b54df8735a8 100644
> --- a/gas/testsuite/gas/loongarch/imm_ins.d
> +++ b/gas/testsuite/gas/loongarch/imm_ins.d
> @@ -7,74 +7,75 @@
>
> Disassembly of section .text:
>
> -00000000.* <.text>:
> -[ ]+0:[ ]+03848c0c[ ]+li.w[ ]+\$t0,[ ]+0x123
> -[ ]+4:[ ]+15ffe00d[ ]+lu12i.w[ ]+\$t1,[ ]+-256
> -[ ]+8:[ ]+16001fed[ ]+lu32i.d[ ]+\$t1,[ ]+255
> -[ ]+c:[ ]+02bffc0e[ ]+li.w[ ]+\$t2,[ ]+-1
> -[ ]+10:[ ]+1601ffee[ ]+lu32i.d[ ]+\$t2,[ ]+4095
> -[ ]+14:[ ]+0004b58b[ ]+alsl.w[ ]+\$a7,[ ]+\$t0,[ ]+\$t1,[ ]+0x2
> -[ ]+18:[ ]+0006b58b[ ]+alsl.wu[ ]+\$a7,[ ]+\$t0,[ ]+\$t1,[ ]+0x2
> -[ ]+1c:[ ]+0009358b[ ]+bytepick.w[ ]+\$a7,[ ]+\$t0,[ ]+\$t1,[ ]+0x2
> -[ ]+20:[ ]+000d358b[ ]+bytepick.d[ ]+\$a7,[ ]+\$t0,[ ]+\$t1,[ ]+0x2
> +[ ]*0000000000000000 <.text>:
> +[ ]+0:[ ]+03848c0c[ ]+li.w[ ]+\$t0, 0x123
> +[ ]+4:[ ]+15ffe00d[ ]+lu12i.w[ ]+\$t1, -256
> +[ ]+8:[ ]+16001fed[ ]+lu32i.d[ ]+\$t1, 255
> +[ ]+c:[ ]+02bffc0e[ ]+li.w[ ]+\$t2, -1
> +[ ]+10:[ ]+1601ffee[ ]+lu32i.d[ ]+\$t2, 4095
> +[ ]+14:[ ]+0004b58b[ ]+alsl.w[ ]+\$a7, \$t0, \$t1, 0x2
> +[ ]+18:[ ]+0006b58b[ ]+alsl.wu[ ]+\$a7, \$t0, \$t1, 0x2
> +[ ]+1c:[ ]+0009358b[ ]+bytepick.w[ ]+\$a7, \$t0, \$t1, 0x2
> +[ ]+20:[ ]+000d358b[ ]+bytepick.d[ ]+\$a7, \$t0, \$t1, 0x2
> [ ]+24:[ ]+002a0002[ ]+break[ ]+0x2
> [ ]+28:[ ]+002a8002[ ]+dbcl[ ]+0x2
> [ ]+2c:[ ]+002b0002[ ]+syscall[ ]+0x2
> -[ ]+30:[ ]+002cb58b[ ]+alsl.d[ ]+\$a7,[ ]+\$t0,[ ]+\$t1,[ ]+0x2
> -[ ]+34:[ ]+0040898b[ ]+slli.w[ ]+\$a7,[ ]+\$t0,[ ]+0x2
> -[ ]+38:[ ]+0041098b[ ]+slli.d[ ]+\$a7,[ ]+\$t0,[ ]+0x2
> -[ ]+3c:[ ]+0044898b[ ]+srli.w[ ]+\$a7,[ ]+\$t0,[ ]+0x2
> -[ ]+40:[ ]+004509ac[ ]+srli.d[ ]+\$t0,[ ]+\$t1,[ ]+0x2
> -[ ]+44:[ ]+004889ac[ ]+srai.w[ ]+\$t0,[ ]+\$t1,[ ]+0x2
> -[ ]+48:[ ]+004909ac[ ]+srai.d[ ]+\$t0,[ ]+\$t1,[ ]+0x2
> -[ ]+4c:[ ]+006209ac[ ]+bstrins.w[ ]+\$t0,[ ]+\$t1,[ ]+0x2,[ ]+0x2
> -[ ]+50:[ ]+008209ac[ ]+bstrins.d[ ]+\$t0,[ ]+\$t1,[ ]+0x2,[ ]+0x2
> -[ ]+54:[ ]+00c209ac[ ]+bstrpick.d[ ]+\$t0,[ ]+\$t1,[ ]+0x2,[ ]+0x2
> -[ ]+58:[ ]+00c209ac[ ]+bstrpick.d[ ]+\$t0,[ ]+\$t1,[ ]+0x2,[ ]+0x2
> -[ ]+5c:[ ]+02048dac[ ]+slti[ ]+\$t0,[ ]+\$t1,[ ]+291
> -[ ]+60:[ ]+02448dac[ ]+sltui[ ]+\$t0,[ ]+\$t1,[ ]+291
> -[ ]+64:[ ]+02848dac[ ]+addi.w[ ]+\$t0,[ ]+\$t1,[ ]+291
> -[ ]+68:[ ]+02c48dac[ ]+addi.d[ ]+\$t0,[ ]+\$t1,[ ]+291
> -[ ]+6c:[ ]+03048dac[ ]+lu52i.d[ ]+\$t0,[ ]+\$t1,[ ]+291
> -[ ]+70:[ ]+034009ac[ ]+andi[ ]+\$t0,[ ]+\$t1,[ ]+0x2
> -[ ]+74:[ ]+038009ac[ ]+ori[ ]+\$t0,[ ]+\$t1,[ ]+0x2
> -[ ]+78:[ ]+03c009ac[ ]+xori[ ]+\$t0,[ ]+\$t1,[ ]+0x2
> -[ ]+7c:[ ]+100009ac[ ]+addu16i.d[ ]+\$t0,[ ]+\$t1,[ ]+2
> -[ ]+80:[ ]+1400246c[ ]+lu12i.w[ ]+\$t0,[ ]+291
> -[ ]+84:[ ]+1600246c[ ]+lu32i.d[ ]+\$t0,[ ]+291
> -[ ]+88:[ ]+1800246c[ ]+pcaddi[ ]+\$t0,[ ]+291
> -[ ]+8c:[ ]+1a00246c[ ]+pcalau12i[ ]+\$t0,[ ]+291
> -[ ]+90:[ ]+1c00246c[ ]+pcaddu12i[ ]+\$t0,[ ]+291
> -[ ]+94:[ ]+1e00246c[ ]+pcaddu18i[ ]+\$t0,[ ]+291
> -[ ]+98:[ ]+04048c0c[ ]+csrrd[ ]+\$t0,[ ]+0x123
> -[ ]+9c:[ ]+04048c2c[ ]+csrwr[ ]+\$t0,[ ]+0x123
> -[ ]+a0:[ ]+040009ac[ ]+csrxchg[ ]+\$t0,[ ]+\$t1,[ ]+0x2
> -[ ]+a4:[ ]+060009a2[ ]+cacop[ ]+0x2,[ ]+\$t1,[ ]+2
> -[ ]+a8:[ ]+064009ac[ ]+lddir[ ]+\$t0,[ ]+\$t1,[ ]+0x2
> -[ ]+ac:[ ]+06440980[ ]+ldpte[ ]+\$t0,[ ]+0x2
> -[ ]+b0:[ ]+0649b9a2[ ]+invtlb[ ]+0x2,[ ]+\$t1,[ ]+\$t2
> -[ ]+b4:[ ]+200101ac[ ]+ll.w[ ]+\$t0,[ ]+\$t1,[ ]+256
> -[ ]+b8:[ ]+210101ac[ ]+sc.w[ ]+\$t0,[ ]+\$t1,[ ]+256
> -[ ]+bc:[ ]+220101ac[ ]+ll.d[ ]+\$t0,[ ]+\$t1,[ ]+256
> -[ ]+c0:[ ]+230101ac[ ]+sc.d[ ]+\$t0,[ ]+\$t1,[ ]+256
> -[ ]+c4:[ ]+240101ac[ ]+ldptr.w[ ]+\$t0,[ ]+\$t1,[ ]+256
> -[ ]+c8:[ ]+250101ac[ ]+stptr.w[ ]+\$t0,[ ]+\$t1,[ ]+256
> -[ ]+cc:[ ]+260101ac[ ]+ldptr.d[ ]+\$t0,[ ]+\$t1,[ ]+256
> -[ ]+d0:[ ]+270101ac[ ]+stptr.d[ ]+\$t0,[ ]+\$t1,[ ]+256
> -[ ]+d4:[ ]+280401ac[ ]+ld.b[ ]+\$t0,[ ]+\$t1,[ ]+256
> -[ ]+d8:[ ]+284401ac[ ]+ld.h[ ]+\$t0,[ ]+\$t1,[ ]+256
> -[ ]+dc:[ ]+288401ac[ ]+ld.w[ ]+\$t0,[ ]+\$t1,[ ]+256
> -[ ]+e0:[ ]+28c401ac[ ]+ld.d[ ]+\$t0,[ ]+\$t1,[ ]+256
> -[ ]+e4:[ ]+290401ac[ ]+st.b[ ]+\$t0,[ ]+\$t1,[ ]+256
> -[ ]+e8:[ ]+294401ac[ ]+st.h[ ]+\$t0,[ ]+\$t1,[ ]+256
> -[ ]+ec:[ ]+298401ac[ ]+st.w[ ]+\$t0,[ ]+\$t1,[ ]+256
> -[ ]+f0:[ ]+29c401ac[ ]+st.d[ ]+\$t0,[ ]+\$t1,[ ]+256
> -[ ]+f4:[ ]+2a0401ac[ ]+ld.bu[ ]+\$t0,[ ]+\$t1,[ ]+256
> -[ ]+f8:[ ]+2a4401ac[ ]+ld.hu[ ]+\$t0,[ ]+\$t1,[ ]+256
> -[ ]+fc:[ ]+2a8401ac[ ]+ld.wu[ ]+\$t0,[ ]+\$t1,[ ]+256
> -[ ]+100:[ ]+2ac401a2[ ]+preld[ ]+0x2,[ ]+\$t1,[ ]+256
> -[ ]+104:[ ]+382c39a2[ ]+preldx[ ]+0x2,[ ]+\$t1,[ ]+\$t2
> -[ ]+108:[ ]+2b048d8a[ ]+fld.s[ ]+\$ft2,[ ]+\$t0,[ ]+291
> -[ ]+10c:[ ]+2b448d8a[ ]+fst.s[ ]+\$ft2,[ ]+\$t0,[ ]+291
> -[ ]+110:[ ]+2b848d8a[ ]+fld.d[ ]+\$ft2,[ ]+\$t0,[ ]+291
> -[ ]+114:[ ]+2bc48d8a[ ]+fst.d[ ]+\$ft2,[ ]+\$t0,[ ]+291
> +[ ]+30:[ ]+002cb58b[ ]+alsl.d[ ]+\$a7, \$t0, \$t1, 0x2
> +[ ]+34:[ ]+0040898b[ ]+slli.w[ ]+\$a7, \$t0, 0x2
> +[ ]+38:[ ]+0041098b[ ]+slli.d[ ]+\$a7, \$t0, 0x2
> +[ ]+3c:[ ]+0044898b[ ]+srli.w[ ]+\$a7, \$t0, 0x2
> +[ ]+40:[ ]+004509ac[ ]+srli.d[ ]+\$t0, \$t1, 0x2
> +[ ]+44:[ ]+004889ac[ ]+srai.w[ ]+\$t0, \$t1, 0x2
> +[ ]+48:[ ]+004909ac[ ]+srai.d[ ]+\$t0, \$t1, 0x2
> +[ ]+4c:[ ]+006209ac[ ]+bstrins.w[ ]+\$t0, \$t1, 0x2, 0x2
> +[ ]+50:[ ]+008209ac[ ]+bstrins.d[ ]+\$t0, \$t1, 0x2, 0x2
> +[ ]+54:[ ]+00c209ac[ ]+bstrpick.d[ ]+\$t0, \$t1, 0x2, 0x2
> +[ ]+58:[ ]+00c209ac[ ]+bstrpick.d[ ]+\$t0, \$t1, 0x2, 0x2
> +[ ]+5c:[ ]+02048dac[ ]+slti[ ]+\$t0, \$t1, 291
> +[ ]+60:[ ]+02448dac[ ]+sltui[ ]+\$t0, \$t1, 291
> +[ ]+64:[ ]+02848dac[ ]+addi.w[ ]+\$t0, \$t1, 291
> +[ ]+68:[ ]+02c48dac[ ]+addi.d[ ]+\$t0, \$t1, 291
> +[ ]+6c:[ ]+03048dac[ ]+lu52i.d[ ]+\$t0, \$t1, 291
> +[ ]+70:[ ]+034009ac[ ]+andi[ ]+\$t0, \$t1, 0x2
> +[ ]+74:[ ]+038009ac[ ]+ori[ ]+\$t0, \$t1, 0x2
> +[ ]+78:[ ]+03c009ac[ ]+xori[ ]+\$t0, \$t1, 0x2
> +[ ]+7c:[ ]+100009ac[ ]+addu16i.d[ ]+\$t0, \$t1, 2
> +[ ]+80:[ ]+1400246c[ ]+lu12i.w[ ]+\$t0, 291
> +[ ]+84:[ ]+1600246c[ ]+lu32i.d[ ]+\$t0, 291
> +[ ]+88:[ ]+1800000c[ ]+pcaddi[ ]+\$t0, 0
> +[ ]+88: R_LARCH_PCREL20_S2[ ]+\*ABS\*\+0x123
> +[ ]+8c:[ ]+1a00246c[ ]+pcalau12i[ ]+\$t0, 291
> +[ ]+90:[ ]+1c00246c[ ]+pcaddu12i[ ]+\$t0, 291
> +[ ]+94:[ ]+1e00246c[ ]+pcaddu18i[ ]+\$t0, 291
> +[ ]+98:[ ]+04048c0c[ ]+csrrd[ ]+\$t0, 0x123
> +[ ]+9c:[ ]+04048c2c[ ]+csrwr[ ]+\$t0, 0x123
> +[ ]+a0:[ ]+040009ac[ ]+csrxchg[ ]+\$t0, \$t1, 0x2
> +[ ]+a4:[ ]+060009a2[ ]+cacop[ ]+0x2, \$t1, 2
> +[ ]+a8:[ ]+064009ac[ ]+lddir[ ]+\$t0, \$t1, 0x2
> +[ ]+ac:[ ]+06440980[ ]+ldpte[ ]+\$t0, 0x2
> +[ ]+b0:[ ]+0649b9a2[ ]+invtlb[ ]+0x2, \$t1, \$t2
> +[ ]+b4:[ ]+200101ac[ ]+ll.w[ ]+\$t0, \$t1, 256
> +[ ]+b8:[ ]+210101ac[ ]+sc.w[ ]+\$t0, \$t1, 256
> +[ ]+bc:[ ]+220101ac[ ]+ll.d[ ]+\$t0, \$t1, 256
> +[ ]+c0:[ ]+230101ac[ ]+sc.d[ ]+\$t0, \$t1, 256
> +[ ]+c4:[ ]+240101ac[ ]+ldptr.w[ ]+\$t0, \$t1, 256
> +[ ]+c8:[ ]+250101ac[ ]+stptr.w[ ]+\$t0, \$t1, 256
> +[ ]+cc:[ ]+260101ac[ ]+ldptr.d[ ]+\$t0, \$t1, 256
> +[ ]+d0:[ ]+270101ac[ ]+stptr.d[ ]+\$t0, \$t1, 256
> +[ ]+d4:[ ]+280401ac[ ]+ld.b[ ]+\$t0, \$t1, 256
> +[ ]+d8:[ ]+284401ac[ ]+ld.h[ ]+\$t0, \$t1, 256
> +[ ]+dc:[ ]+288401ac[ ]+ld.w[ ]+\$t0, \$t1, 256
> +[ ]+e0:[ ]+28c401ac[ ]+ld.d[ ]+\$t0, \$t1, 256
> +[ ]+e4:[ ]+290401ac[ ]+st.b[ ]+\$t0, \$t1, 256
> +[ ]+e8:[ ]+294401ac[ ]+st.h[ ]+\$t0, \$t1, 256
> +[ ]+ec:[ ]+298401ac[ ]+st.w[ ]+\$t0, \$t1, 256
> +[ ]+f0:[ ]+29c401ac[ ]+st.d[ ]+\$t0, \$t1, 256
> +[ ]+f4:[ ]+2a0401ac[ ]+ld.bu[ ]+\$t0, \$t1, 256
> +[ ]+f8:[ ]+2a4401ac[ ]+ld.hu[ ]+\$t0, \$t1, 256
> +[ ]+fc:[ ]+2a8401ac[ ]+ld.wu[ ]+\$t0, \$t1, 256
> +[ ]+100:[ ]+2ac401a2[ ]+preld[ ]+0x2, \$t1, 256
> +[ ]+104:[ ]+382c39a2[ ]+preldx[ ]+0x2, \$t1, \$t2
> +[ ]+108:[ ]+2b048d8a[ ]+fld.s[ ]+\$ft2, \$t0, 291
> +[ ]+10c:[ ]+2b448d8a[ ]+fst.s[ ]+\$ft2, \$t0, 291
> +[ ]+110:[ ]+2b848d8a[ ]+fld.d[ ]+\$ft2, \$t0, 291
> +[ ]+114:[ ]+2bc48d8a[ ]+fst.d[ ]+\$ft2, \$t0, 291
> diff --git a/gas/testsuite/gas/loongarch/imm_op.d b/gas/testsuite/gas/loongarch/imm_op.d
> index 3d4cba45586..4c5cffc7101 100644
> --- a/gas/testsuite/gas/loongarch/imm_op.d
> +++ b/gas/testsuite/gas/loongarch/imm_op.d
> @@ -1,48 +1,48 @@
> #as:
> #objdump: -dr
>
> -.*:[ ]+file format .*
> +.*:[ ]+file format .*
>
>
> Disassembly of section .text:
>
> -00000000.* <.text>:
> -[ ]+0:[ ]+020000a4 [ ]+slti[ ]+[ ]+\$a0, \$a1, 0
> -[ ]+4:[ ]+021ffca4 [ ]+slti[ ]+[ ]+\$a0, \$a1, 2047
> -[ ]+8:[ ]+022004a4 [ ]+slti[ ]+[ ]+\$a0, \$a1, -2047
> -[ ]+c:[ ]+024000a4 [ ]+sltui[ ]+[ ]+\$a0, \$a1, 0
> -[ ]+10:[ ]+025ffca4 [ ]+sltui[ ]+[ ]+\$a0, \$a1, 2047
> -[ ]+14:[ ]+026004a4 [ ]+sltui[ ]+[ ]+\$a0, \$a1, -2047
> -[ ]+18:[ ]+028000a4 [ ]+addi.w[ ]+[ ]+\$a0, \$a1, 0
> -[ ]+1c:[ ]+029ffca4 [ ]+addi.w[ ]+[ ]+\$a0, \$a1, 2047
> -[ ]+20:[ ]+02a004a4 [ ]+addi.w[ ]+[ ]+\$a0, \$a1, -2047
> -[ ]+24:[ ]+02c000a4 [ ]+addi.d[ ]+[ ]+\$a0, \$a1, 0
> -[ ]+28:[ ]+02dffca4 [ ]+addi.d[ ]+[ ]+\$a0, \$a1, 2047
> -[ ]+2c:[ ]+02e004a4 [ ]+addi.d[ ]+[ ]+\$a0, \$a1, -2047
> -[ ]+30:[ ]+030000a4 [ ]+lu52i.d[ ]+[ ]+\$a0, \$a1, 0
> -[ ]+34:[ ]+031ffca4 [ ]+lu52i.d[ ]+[ ]+\$a0, \$a1, 2047
> -[ ]+38:[ ]+032004a4 [ ]+lu52i.d[ ]+[ ]+\$a0, \$a1, -2047
> -[ ]+3c:[ ]+034000a4 [ ]+andi[ ]+[ ]+\$a0, \$a1, 0x0
> -[ ]+40:[ ]+035ffca4 [ ]+andi[ ]+[ ]+\$a0, \$a1, 0x7ff
> -[ ]+44:[ ]+038000a4 [ ]+ori[ ]+[ ]+\$a0, \$a1, 0x0
> -[ ]+48:[ ]+039ffca4 [ ]+ori[ ]+[ ]+\$a0, \$a1, 0x7ff
> -[ ]+4c:[ ]+03c000a4 [ ]+xori[ ]+[ ]+\$a0, \$a1, 0x0
> -[ ]+50:[ ]+03dffca4 [ ]+xori[ ]+[ ]+\$a0, \$a1, 0x7ff
> -[ ]+54:[ ]+100000a4 [ ]+addu16i.d[ ]+[ ]+\$a0, \$a1, 0
> -[ ]+58:[ ]+11fffca4 [ ]+addu16i.d[ ]+[ ]+\$a0, \$a1, 32767
> -[ ]+5c:[ ]+120004a4 [ ]+addu16i.d[ ]+[ ]+\$a0, \$a1, -32767
> -[ ]+60:[ ]+14000004 [ ]+lu12i.w[ ]+[ ]+\$a0, 0
> -[ ]+64:[ ]+14ffffe4 [ ]+lu12i.w[ ]+[ ]+\$a0, 524287
> -[ ]+68:[ ]+17000024 [ ]+lu32i.d[ ]+[ ]+\$a0, -524287
> -[ ]+6c:[ ]+18000004 [ ]+pcaddi[ ]+[ ]+\$a0, 0
> -[ ]+70:[ ]+18ffffe4 [ ]+pcaddi[ ]+[ ]+\$a0, 524287
> -[ ]+74:[ ]+19000024 [ ]+pcaddi[ ]+[ ]+\$a0, -524287
> -[ ]+78:[ ]+1a000004 [ ]+pcalau12i[ ]+[ ]+\$a0, 0
> -[ ]+7c:[ ]+1affffe4 [ ]+pcalau12i[ ]+[ ]+\$a0, 524287
> -[ ]+80:[ ]+1b000024 [ ]+pcalau12i[ ]+[ ]+\$a0, -524287
> -[ ]+84:[ ]+1c000004 [ ]+pcaddu12i[ ]+[ ]+\$a0, 0
> -[ ]+88:[ ]+1cffffe4 [ ]+pcaddu12i[ ]+[ ]+\$a0, 524287
> -[ ]+8c:[ ]+1d000024 [ ]+pcaddu12i[ ]+[ ]+\$a0, -524287
> -[ ]+90:[ ]+1e000004 [ ]+pcaddu18i[ ]+[ ]+\$a0, 0
> -[ ]+94:[ ]+1effffe4 [ ]+pcaddu18i[ ]+[ ]+\$a0, 524287
> -[ ]+98:[ ]+1f000024 [ ]+pcaddu18i[ ]+[ ]+\$a0, -524287
> +[ ]*0000000000000000 <.text>:
> +[ ]+0:[ ]+020000a4[ ]+slti[ ]+\$a0, \$a1, 0
> +[ ]+4:[ ]+021ffca4[ ]+slti[ ]+\$a0, \$a1, 2047
> +[ ]+8:[ ]+022004a4[ ]+slti[ ]+\$a0, \$a1, -2047
> +[ ]+c:[ ]+024000a4[ ]+sltui[ ]+\$a0, \$a1, 0
> +[ ]+10:[ ]+025ffca4[ ]+sltui[ ]+\$a0, \$a1, 2047
> +[ ]+14:[ ]+026004a4[ ]+sltui[ ]+\$a0, \$a1, -2047
> +[ ]+18:[ ]+028000a4[ ]+addi.w[ ]+\$a0, \$a1, 0
> +[ ]+1c:[ ]+029ffca4[ ]+addi.w[ ]+\$a0, \$a1, 2047
> +[ ]+20:[ ]+02a004a4[ ]+addi.w[ ]+\$a0, \$a1, -2047
> +[ ]+24:[ ]+02c000a4[ ]+addi.d[ ]+\$a0, \$a1, 0
> +[ ]+28:[ ]+02dffca4[ ]+addi.d[ ]+\$a0, \$a1, 2047
> +[ ]+2c:[ ]+02e004a4[ ]+addi.d[ ]+\$a0, \$a1, -2047
> +[ ]+30:[ ]+030000a4[ ]+lu52i.d[ ]+\$a0, \$a1, 0
> +[ ]+34:[ ]+031ffca4[ ]+lu52i.d[ ]+\$a0, \$a1, 2047
> +[ ]+38:[ ]+032004a4[ ]+lu52i.d[ ]+\$a0, \$a1, -2047
> +[ ]+3c:[ ]+034000a4[ ]+andi[ ]+\$a0, \$a1, 0x0
> +[ ]+40:[ ]+035ffca4[ ]+andi[ ]+\$a0, \$a1, 0x7ff
> +[ ]+44:[ ]+038000a4[ ]+ori[ ]+\$a0, \$a1, 0x0
> +[ ]+48:[ ]+039ffca4[ ]+ori[ ]+\$a0, \$a1, 0x7ff
> +[ ]+4c:[ ]+03c000a4[ ]+xori[ ]+\$a0, \$a1, 0x0
> +[ ]+50:[ ]+03dffca4[ ]+xori[ ]+\$a0, \$a1, 0x7ff
> +[ ]+54:[ ]+100000a4[ ]+addu16i.d[ ]+\$a0, \$a1, 0
> +[ ]+58:[ ]+11fffca4[ ]+addu16i.d[ ]+\$a0, \$a1, 32767
> +[ ]+5c:[ ]+120004a4[ ]+addu16i.d[ ]+\$a0, \$a1, -32767
> +[ ]+60:[ ]+14000004[ ]+lu12i.w[ ]+\$a0, 0
> +[ ]+64:[ ]+14ffffe4[ ]+lu12i.w[ ]+\$a0, 524287
> +[ ]+68:[ ]+17000024[ ]+lu32i.d[ ]+\$a0, -524287
> +[ ]+6c:[ ]+18000004[ ]+pcaddi[ ]+\$a0, 0
> +[ ]+70:[ ]+18ffffe4[ ]+pcaddi[ ]+\$a0, 2097148
> +[ ]+74:[ ]+19000004[ ]+pcaddi[ ]+\$a0, -2097152
> +[ ]+78:[ ]+1a000004[ ]+pcalau12i[ ]+\$a0, 0
> +[ ]+7c:[ ]+1affffe4[ ]+pcalau12i[ ]+\$a0, 524287
> +[ ]+80:[ ]+1b000024[ ]+pcalau12i[ ]+\$a0, -524287
> +[ ]+84:[ ]+1c000004[ ]+pcaddu12i[ ]+\$a0, 0
> +[ ]+88:[ ]+1cffffe4[ ]+pcaddu12i[ ]+\$a0, 524287
> +[ ]+8c:[ ]+1d000024[ ]+pcaddu12i[ ]+\$a0, -524287
> +[ ]+90:[ ]+1e000004[ ]+pcaddu18i[ ]+\$a0, 0
> +[ ]+94:[ ]+1effffe4[ ]+pcaddu18i[ ]+\$a0, 524287
> +[ ]+98:[ ]+1f000024[ ]+pcaddu18i[ ]+\$a0, -524287
> diff --git a/gas/testsuite/gas/loongarch/imm_op.s b/gas/testsuite/gas/loongarch/imm_op.s
> index 7e1c5518cba..329486cad55 100644
> --- a/gas/testsuite/gas/loongarch/imm_op.s
> +++ b/gas/testsuite/gas/loongarch/imm_op.s
> @@ -26,8 +26,8 @@ lu12i.w $r4,0
> lu12i.w $r4,0x7ffff
> lu32i.d $r4,-0x7ffff
> pcaddi $r4,0
> -pcaddi $r4,0x7ffff
> -pcaddi $r4,-0x7ffff
> +pcaddi $r4,0x1ffffc
> +pcaddi $r4,-0x200000
> pcalau12i $r4,0
> pcalau12i $r4,0x7ffff
> pcalau12i $r4,-0x7ffff
> diff --git a/gas/testsuite/gas/loongarch/pcaddi.d b/gas/testsuite/gas/loongarch/pcaddi.d
> new file mode 100644
> index 00000000000..06dcee1a60c
> --- /dev/null
> +++ b/gas/testsuite/gas/loongarch/pcaddi.d
> @@ -0,0 +1,13 @@
> +#as:
> +#objdump: -dr
> +
> +.*:[ ]+file format .*
> +
> +
> +Disassembly of section .text:
> +
> +[ ]*0000000000000000 <.L1>:
> +[ ]+0:[ ]+1800000c[ ]+pcaddi[ ]+\$t0, 0
> +[ ]+0: R_LARCH_PCREL20_S2[ ]+.L1
> +[ ]+4:[ ]+1800000c[ ]+pcaddi[ ]+\$t0, 0
> +[ ]+4: R_LARCH_PCREL20_S2[ ]+.L2
> diff --git a/gas/testsuite/gas/loongarch/pcaddi.s b/gas/testsuite/gas/loongarch/pcaddi.s
> new file mode 100644
> index 00000000000..46b56306ce4
> --- /dev/null
> +++ b/gas/testsuite/gas/loongarch/pcaddi.s
> @@ -0,0 +1,4 @@
> +.L1:
> + pcaddi $t0, .L1
> + pcaddi $t0, .L2
> +.L2:
> diff --git a/opcodes/loongarch-opc.c b/opcodes/loongarch-opc.c
> index 7d110683e93..072c138472f 100644
> --- a/opcodes/loongarch-opc.c
> +++ b/opcodes/loongarch-opc.c
> @@ -564,6 +564,7 @@ static struct loongarch_opcode loongarch_imm_opcodes[] =
> { 0x10000000, 0xfc000000, "addu16i.d", "r0:5,r5:5,s10:16", 0, 0, 0, 0 },
> { 0x14000000, 0xfe000000, "lu12i.w", "r0:5,s5:20", 0, 0, 0, 0 },
> { 0x16000000, 0xfe000000, "lu32i.d", "r0:5,s5:20", 0, 0, 0, 0 },
> + { 0x0, 0x0, "pcaddi", "r,la", "pcaddi %1, %%pc20(%2)", 0, 0, 0 },
So the relocation operator is "%pc20"? Maybe that's a bit asymmetric --
others are mostly in the "%pc_{lo,hi}*" form, and they obey "PC-aligned"
semantics instead of PC-relative. I'd suggest something like "%pcrel_20"
for better contrast...
> { 0x18000000, 0xfe000000, "pcaddi", "r0:5,s5:20<<2", 0, 0, 0, 0 },
> { 0x1a000000, 0xfe000000, "pcalau12i", "r0:5,s5:20", 0, 0, 0, 0 },
> { 0x1c000000, 0xfe000000, "pcaddu12i", "r0:5,s5:20", 0, 0, 0, 0 },
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-08-08 12:01 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-08-08 11:45 [PATCH 1/2] LoongArch: Fix pcaddi format string mengqinggang
2023-08-08 11:45 ` [PATCH 2/2] LoongArch: Add support for "pcaddi rd, label" mengqinggang
2023-08-08 12:01 ` WANG Xuerui
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).