public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [PATCH v3] Add support for "pcaddi rd, symbol"
@ 2023-09-18 10:00 mengqinggang
  0 siblings, 0 replies; only message in thread
From: mengqinggang @ 2023-09-18 10:00 UTC (permalink / raw)
  To: binutils
  Cc: xuchenghua, chenglulu, liuzhensong, xry111, i.swmail, maskray,
	wanglei, mengqinggang

Add a macro pcaddi instruction to support "pcaddi rd, symbol".

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                    |   4 +-
 gas/testsuite/gas/loongarch/imm_ins.d    | 137 ++++++++++++-----------
 gas/testsuite/gas/loongarch/imm_ins_32.d |  91 +++++++--------
 gas/testsuite/gas/loongarch/imm_op.d     |  82 +++++++-------
 gas/testsuite/gas/loongarch/imm_op.s     |   2 +-
 gas/testsuite/gas/loongarch/pcaddi.d     |  13 +++
 gas/testsuite/gas/loongarch/pcaddi.s     |   4 +
 opcodes/loongarch-opc.c                  |   2 +-
 8 files changed, 177 insertions(+), 158 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..0a595eb87d5 100644
--- a/bfd/elfxx-loongarch.c
+++ b/bfd/elfxx-loongarch.c
@@ -1415,7 +1415,7 @@ static loongarch_reloc_howto_type loongarch_howto_table[] =
 	 NULL,					/* adjust_reloc_bits.  */
 	 NULL),					/* larch_reloc_type_name.  */
 
-  /* pcala_hi20 + pcala_lo12 relaxed to pcrel20_s2.  */
+  /* For pcaddi and pcala_hi20 + pcala_lo12 can relax to pcrel_20.  */
   LOONGARCH_HOWTO (R_LARCH_PCREL20_S2,		/* type (103).  */
 	 2,					/* rightshift.  */
 	 4,					/* size.  */
@@ -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.  */
+	 "pcrel_20"),				/* 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_ins_32.d b/gas/testsuite/gas/loongarch/imm_ins_32.d
index dc2eeb9ed51..3662fddaee6 100644
--- a/gas/testsuite/gas/loongarch/imm_ins_32.d
+++ b/gas/testsuite/gas/loongarch/imm_ins_32.d
@@ -7,51 +7,52 @@
 
 Disassembly of section .text:
 
-00000000.* <.text>:
-[ 	]+0:[ 	]+03848c0c[ 	]+li.w[ 	]+\$t0,[ 	]+0x123
-[ 	]+4:[ 	]+0004b58b[ 	]+alsl.w[ 	]+\$a7,[ 	]+\$t0,[ 	]+\$t1,[ 	]+0x2
-[ 	]+8:[ 	]+0006b58b[ 	]+alsl.wu[ 	]+\$a7,[ 	]+\$t0,[ 	]+\$t1,[ 	]+0x2
-[ 	]+c:[ 	]+0009358b[ 	]+bytepick.w[ 	]+\$a7,[ 	]+\$t0,[ 	]+\$t1,[ 	]+0x2
+.* <.text>:
+[ 	]+0:[ 	]+03848c0c[ 	]+li.w[ 	]+\$t0, 0x123
+[ 	]+4:[ 	]+0004b58b[ 	]+alsl.w[ 	]+\$a7, \$t0, \$t1, 0x2
+[ 	]+8:[ 	]+0006b58b[ 	]+alsl.wu[ 	]+\$a7, \$t0, \$t1, 0x2
+[ 	]+c:[ 	]+0009358b[ 	]+bytepick.w[ 	]+\$a7, \$t0, \$t1, 0x2
 [ 	]+10:[ 	]+002a0002[ 	]+break[ 	]+0x2
 [ 	]+14:[ 	]+002a8002[ 	]+dbcl[ 	]+0x2
 [ 	]+18:[ 	]+002b0002[ 	]+syscall[ 	]+0x2
-[ 	]+1c:[ 	]+0040898b[ 	]+slli.w[ 	]+\$a7,[ 	]+\$t0,[ 	]+0x2
-[ 	]+20:[ 	]+0044898b[ 	]+srli.w[ 	]+\$a7,[ 	]+\$t0,[ 	]+0x2
-[ 	]+24:[ 	]+004889ac[ 	]+srai.w[ 	]+\$t0,[ 	]+\$t1,[ 	]+0x2
-[ 	]+28:[ 	]+006209ac[ 	]+bstrins.w[ 	]+\$t0,[ 	]+\$t1,[ 	]+0x2,[ 	]+0x2
-[ 	]+2c:[ 	]+02048dac[ 	]+slti[ 	]+\$t0,[ 	]+\$t1,[ 	]+291
-[ 	]+30:[ 	]+02448dac[ 	]+sltui[ 	]+\$t0,[ 	]+\$t1,[ 	]+291
-[ 	]+34:[ 	]+02848dac[ 	]+addi.w[ 	]+\$t0,[ 	]+\$t1,[ 	]+291
-[ 	]+38:[ 	]+034009ac[ 	]+andi[ 	]+\$t0,[ 	]+\$t1,[ 	]+0x2
-[ 	]+3c:[ 	]+038009ac[ 	]+ori[ 	]+\$t0,[ 	]+\$t1,[ 	]+0x2
-[ 	]+40:[ 	]+03c009ac[ 	]+xori[ 	]+\$t0,[ 	]+\$t1,[ 	]+0x2
-[ 	]+44:[ 	]+1400246c[ 	]+lu12i.w[ 	]+\$t0,[ 	]+291
-[ 	]+48:[ 	]+1800246c[ 	]+pcaddi[ 	]+\$t0,[ 	]+291
-[ 	]+4c:[ 	]+1a00246c[ 	]+pcalau12i[ 	]+\$t0,[ 	]+291
-[ 	]+50:[ 	]+1c00246c[ 	]+pcaddu12i[ 	]+\$t0,[ 	]+291
-[ 	]+54:[ 	]+1e00246c[ 	]+pcaddu18i[ 	]+\$t0,[ 	]+291
-[ 	]+58:[ 	]+04048c0c[ 	]+csrrd[ 	]+\$t0,[ 	]+0x123
-[ 	]+5c:[ 	]+04048c2c[ 	]+csrwr[ 	]+\$t0,[ 	]+0x123
-[ 	]+60:[ 	]+040009ac[ 	]+csrxchg[ 	]+\$t0,[ 	]+\$t1,[ 	]+0x2
-[ 	]+64:[ 	]+060009a2[ 	]+cacop[ 	]+0x2,[ 	]+\$t1,[ 	]+2
-[ 	]+68:[ 	]+064009ac[ 	]+lddir[ 	]+\$t0,[ 	]+\$t1,[ 	]+0x2
-[ 	]+6c:[ 	]+06440980[ 	]+ldpte[ 	]+\$t0,[ 	]+0x2
-[ 	]+70:[ 	]+0649b9a2[ 	]+invtlb[ 	]+0x2,[ 	]+\$t1,[ 	]+\$t2
-[ 	]+74:[ 	]+200101ac[ 	]+ll.w[ 	]+\$t0,[ 	]+\$t1,[ 	]+256
-[ 	]+78:[ 	]+210101ac[ 	]+sc.w[ 	]+\$t0,[ 	]+\$t1,[ 	]+256
-[ 	]+7c:[ 	]+220101ac[ 	]+ll.d[ 	]+\$t0,[ 	]+\$t1,[ 	]+256
-[ 	]+80:[ 	]+230101ac[ 	]+sc.d[ 	]+\$t0,[ 	]+\$t1,[ 	]+256
-[ 	]+84:[ 	]+240101ac[ 	]+ldptr.w[ 	]+\$t0,[ 	]+\$t1,[ 	]+256
-[ 	]+88:[ 	]+250101ac[ 	]+stptr.w[ 	]+\$t0,[ 	]+\$t1,[ 	]+256
-[ 	]+8c:[ 	]+284401ac[ 	]+ld.h[ 	]+\$t0,[ 	]+\$t1,[ 	]+256
-[ 	]+90:[ 	]+288401ac[ 	]+ld.w[ 	]+\$t0,[ 	]+\$t1,[ 	]+256
-[ 	]+94:[ 	]+290401ac[ 	]+st.b[ 	]+\$t0,[ 	]+\$t1,[ 	]+256
-[ 	]+98:[ 	]+294401ac[ 	]+st.h[ 	]+\$t0,[ 	]+\$t1,[ 	]+256
-[ 	]+9c:[ 	]+298401ac[ 	]+st.w[ 	]+\$t0,[ 	]+\$t1,[ 	]+256
-[ 	]+a0:[ 	]+2a0401ac[ 	]+ld.bu[ 	]+\$t0,[ 	]+\$t1,[ 	]+256
-[ 	]+a4:[ 	]+2a4401ac[ 	]+ld.hu[ 	]+\$t0,[ 	]+\$t1,[ 	]+256
-[ 	]+a8:[ 	]+2a8401ac[ 	]+ld.wu[ 	]+\$t0,[ 	]+\$t1,[ 	]+256
-[ 	]+ac:[ 	]+2ac401a2[ 	]+preld[ 	]+0x2,[ 	]+\$t1,[ 	]+256
-[ 	]+b0:[ 	]+382c39a2[ 	]+preldx[ 	]+0x2,[ 	]+\$t1,[ 	]+\$t2
-[ 	]+b4:[ 	]+2b048d8a[ 	]+fld.s[ 	]+\$ft2,[ 	]+\$t0,[ 	]+291
-[ 	]+b8:[ 	]+2b448d8a[ 	]+fst.s[ 	]+\$ft2,[ 	]+\$t0,[ 	]+291
+[ 	]+1c:[ 	]+0040898b[ 	]+slli.w[ 	]+\$a7, \$t0, 0x2
+[ 	]+20:[ 	]+0044898b[ 	]+srli.w[ 	]+\$a7, \$t0, 0x2
+[ 	]+24:[ 	]+004889ac[ 	]+srai.w[ 	]+\$t0, \$t1, 0x2
+[ 	]+28:[ 	]+006209ac[ 	]+bstrins.w[ 	]+\$t0, \$t1, 0x2, 0x2
+[ 	]+2c:[ 	]+02048dac[ 	]+slti[ 	]+\$t0, \$t1, 291
+[ 	]+30:[ 	]+02448dac[ 	]+sltui[ 	]+\$t0, \$t1, 291
+[ 	]+34:[ 	]+02848dac[ 	]+addi.w[ 	]+\$t0, \$t1, 291
+[ 	]+38:[ 	]+034009ac[ 	]+andi[ 	]+\$t0, \$t1, 0x2
+[ 	]+3c:[ 	]+038009ac[ 	]+ori[ 	]+\$t0, \$t1, 0x2
+[ 	]+40:[ 	]+03c009ac[ 	]+xori[ 	]+\$t0, \$t1, 0x2
+[ 	]+44:[ 	]+1400246c[ 	]+lu12i.w[ 	]+\$t0, 291
+[ 	]+48:[ 	]+1800000c[ 	]+pcaddi[ 	]+\$t0, 0
+[ 	]+48: R_LARCH_PCREL20_S2[ 	]+\*ABS\*\+0x123
+[ 	]+4c:[ 	]+1a00246c[ 	]+pcalau12i[ 	]+\$t0, 291
+[ 	]+50:[ 	]+1c00246c[ 	]+pcaddu12i[ 	]+\$t0, 291
+[ 	]+54:[ 	]+1e00246c[ 	]+pcaddu18i[ 	]+\$t0, 291
+[ 	]+58:[ 	]+04048c0c[ 	]+csrrd[ 	]+\$t0, 0x123
+[ 	]+5c:[ 	]+04048c2c[ 	]+csrwr[ 	]+\$t0, 0x123
+[ 	]+60:[ 	]+040009ac[ 	]+csrxchg[ 	]+\$t0, \$t1, 0x2
+[ 	]+64:[ 	]+060009a2[ 	]+cacop[ 	]+0x2, \$t1, 2
+[ 	]+68:[ 	]+064009ac[ 	]+lddir[ 	]+\$t0, \$t1, 0x2
+[ 	]+6c:[ 	]+06440980[ 	]+ldpte[ 	]+\$t0, 0x2
+[ 	]+70:[ 	]+0649b9a2[ 	]+invtlb[ 	]+0x2, \$t1, \$t2
+[ 	]+74:[ 	]+200101ac[ 	]+ll.w[ 	]+\$t0, \$t1, 256
+[ 	]+78:[ 	]+210101ac[ 	]+sc.w[ 	]+\$t0, \$t1, 256
+[ 	]+7c:[ 	]+220101ac[ 	]+ll.d[ 	]+\$t0, \$t1, 256
+[ 	]+80:[ 	]+230101ac[ 	]+sc.d[ 	]+\$t0, \$t1, 256
+[ 	]+84:[ 	]+240101ac[ 	]+ldptr.w[ 	]+\$t0, \$t1, 256
+[ 	]+88:[ 	]+250101ac[ 	]+stptr.w[ 	]+\$t0, \$t1, 256
+[ 	]+8c:[ 	]+284401ac[ 	]+ld.h[ 	]+\$t0, \$t1, 256
+[ 	]+90:[ 	]+288401ac[ 	]+ld.w[ 	]+\$t0, \$t1, 256
+[ 	]+94:[ 	]+290401ac[ 	]+st.b[ 	]+\$t0, \$t1, 256
+[ 	]+98:[ 	]+294401ac[ 	]+st.h[ 	]+\$t0, \$t1, 256
+[ 	]+9c:[ 	]+298401ac[ 	]+st.w[ 	]+\$t0, \$t1, 256
+[ 	]+a0:[ 	]+2a0401ac[ 	]+ld.bu[ 	]+\$t0, \$t1, 256
+[ 	]+a4:[ 	]+2a4401ac[ 	]+ld.hu[ 	]+\$t0, \$t1, 256
+[ 	]+a8:[ 	]+2a8401ac[ 	]+ld.wu[ 	]+\$t0, \$t1, 256
+[ 	]+ac:[ 	]+2ac401a2[ 	]+preld[ 	]+0x2, \$t1, 256
+[ 	]+b0:[ 	]+382c39a2[ 	]+preldx[ 	]+0x2, \$t1, \$t2
+[ 	]+b4:[ 	]+2b048d8a[ 	]+fld.s[ 	]+\$ft2, \$t0, 291
+[ 	]+b8:[ 	]+2b448d8a[ 	]+fst.s[ 	]+\$ft2, \$t0, 291
diff --git a/gas/testsuite/gas/loongarch/imm_op.d b/gas/testsuite/gas/loongarch/imm_op.d
index 3d4cba45586..2885fc96233 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
+.* <.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:[ 	]+19000004[ 	]+pcaddi[ 	]+\$a0, -524288
+[ 	]+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..eae18260c7f 100644
--- a/gas/testsuite/gas/loongarch/imm_op.s
+++ b/gas/testsuite/gas/loongarch/imm_op.s
@@ -27,7 +27,7 @@ lu12i.w  $r4,0x7ffff
 lu32i.d  $r4,-0x7ffff
 pcaddi  $r4,0
 pcaddi  $r4,0x7ffff
-pcaddi  $r4,-0x7ffff
+pcaddi  $r4,-0x80000
 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..3ddbbba5d36
--- /dev/null
+++ b/gas/testsuite/gas/loongarch/pcaddi.d
@@ -0,0 +1,13 @@
+#as:
+#objdump: -dr
+
+.*:[    ]+file format .*
+
+
+Disassembly of section .text:
+
+.* <.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..10d23e84676
--- /dev/null
+++ b/gas/testsuite/gas/loongarch/pcaddi.s
@@ -0,0 +1,4 @@
+.L1:
+  pcaddi $r12, .L1
+  pcaddi $r12, .L2
+.L2:
diff --git a/opcodes/loongarch-opc.c b/opcodes/loongarch-opc.c
index 2f02e33dbec..362b6581c76 100644
--- a/opcodes/loongarch-opc.c
+++ b/opcodes/loongarch-opc.c
@@ -340,7 +340,7 @@ static struct loongarch_opcode loongarch_macro_opcodes[] =
   { 0, 0, "la.tls.gd",	"r,l",	  INSN_LA_TLS_GD64,		0 },
   { 0, 0, "la.tls.gd",	"r,l",	  INSN_LA_TLS_GD64_LARGE_ABS,	0 },
   { 0, 0, "la.tls.gd",	"r,r,l",  INSN_LA_TLS_GD64_LARGE_PCREL,	0 },
-
+  { 0, 0, "pcaddi",	"r,la",	  "pcaddi %1, %%pcrel_20(%2)",	&LARCH_opts.ase_ilp32, 0, 0 },
   { 0, 0, 0, 0, 0, 0, 0, 0 } /* Terminate the list.  */
 };
 
-- 
2.36.0


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2023-09-18 10:00 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-09-18 10:00 [PATCH v3] Add support for "pcaddi rd, symbol" mengqinggang

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).