Add support for "pcaddi rd, symbol"
authormengqinggang <mengqinggang@loongson.cn>
Mon, 18 Sep 2023 10:00:21 +0000 (18:00 +0800)
committerliuzhensong <liuzhensong@loongson.cn>
Wed, 27 Sep 2023 07:07:51 +0000 (15:07 +0800)
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
gas/testsuite/gas/loongarch/imm_ins.d
gas/testsuite/gas/loongarch/imm_ins_32.d
gas/testsuite/gas/loongarch/imm_op.d
gas/testsuite/gas/loongarch/imm_op.s
gas/testsuite/gas/loongarch/pcaddi.d [new file with mode: 0644]
gas/testsuite/gas/loongarch/pcaddi.s [new file with mode: 0644]
opcodes/loongarch-opc.c

index f27c9fdba6af5e64dbbe612c1b8e25bc1c8218a5..0a595eb87d52a4e31ac2cee9a19b744e07c44bf2 100644 (file)
@@ -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).  */
index f00110cd8a36210c69c36e27059aa92caf5ec263..b54df8735a8b307ad5a547b6898eeeb0f40d1575 100644 (file)
@@ -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
index dc2eeb9ed5170762384cdc5fd22c9e8a00da66a3..3662fddaee65c66f678292b6ccab5a8186ad48d7 100644 (file)
@@ -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
index 3d4cba45586eac9d7666c95ead4686fdaa3577bf..2885fc962331d93c8d14cb31528b96bcb25d4cc2 100644 (file)
@@ -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
index 7e1c5518cbaba226fab30b841d155bada2eb6d30..eae18260c7fbdf640f741b348d3232f9efb9bdf0 100644 (file)
@@ -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 (file)
index 0000000..3ddbbba
--- /dev/null
@@ -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 (file)
index 0000000..10d23e8
--- /dev/null
@@ -0,0 +1,4 @@
+.L1:
+  pcaddi $r12, .L1
+  pcaddi $r12, .L2
+.L2:
index 2f02e33dbec80bb900b3bd1a1b30fda8192a4e67..362b6581c76cc92a8f2e859d4c6abb0477d558a3 100644 (file)
@@ -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.  */
 };