[binutils-gdb] LoongArch: Emit fewer relocations for label subtraction
liu zhensong via Binutils-cvs <[email protected]> Fri, 10 Jul 2026 07:01:48 +0000 (GMT)
| Newsgroups | gmane.comp.gnu.binutils.cvs |
|---|---|
| Message-ID | <[email protected]> |
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=eb2be880c89506ddc619af484121df1c9538e8e8 commit eb2be880c89506ddc619af484121df1c9538e8e8 Author: mengqinggang <[email protected]> Date: Sat Jun 6 11:43:57 2026 +0800 LoongArch: Emit fewer relocations for label subtraction Mark the frag and section to indicate if they have a relaxed instruction. For label subtraction, if there are no relaxed instructions between addsy and subsy, do not emit relocations. Diff: --- gas/config/tc-loongarch.c | 111 ++++++-- gas/config/tc-loongarch.h | 11 + gas/testsuite/gas/all/gas.exp | 2 +- gas/testsuite/gas/all/relax.d | 4 - gas/testsuite/gas/loongarch/insn_int32.d | 279 ++++++++++----------- gas/testsuite/gas/loongarch/insn_int64.d | 29 ++- gas/testsuite/gas/loongarch/jmp_op.d | 94 ++++--- gas/testsuite/gas/loongarch/jmp_op.s | 2 +- gas/testsuite/gas/loongarch/la_branch_relax_1.d | 118 +++++---- gas/testsuite/gas/loongarch/la_branch_relax_1.s | 2 + gas/testsuite/gas/loongarch/la_branch_relax_2.d | 64 ++--- gas/testsuite/gas/loongarch/la_branch_relax_2.s | 23 +- gas/testsuite/gas/loongarch/relax-uleb128.d | 9 + gas/testsuite/gas/loongarch/relax-uleb128.s | 18 ++ gas/testsuite/gas/loongarch/uleb128.d | 36 --- gas/testsuite/gas/loongarch/uleb128.s | 20 -- ld/testsuite/ld-loongarch-elf/jmp_op.d | 50 ---- ld/testsuite/ld-loongarch-elf/jmp_op.s | 23 -- ld/testsuite/ld-loongarch-elf/ld-loongarch-elf.exp | 2 - 19 files changed, 429 insertions(+), 468 deletions(-) diff --git a/gas/config/tc-loongarch.c b/gas/config/tc-loongarch.c index de862f07a6c..ed5d47a0360 100644 --- a/gas/config/tc-loongarch.c +++ b/gas/config/tc-loongarch.c @@ -1187,6 +1187,13 @@ move_insn (struct loongarch_cl_insn *insn, fragS *frag, long where) } } install_insn (insn); + + /* Mark the current section and frag as linker relaxable. */ + if (insn->linker_relax) + { + now_seg->sec_flg1 = true; + insn->frag->tc_frag_data.linker_relax = true; + } } /* Add INSN to the end of the output. */ @@ -1598,21 +1605,57 @@ loongarch_force_relocation_sub_local (fixS *fixp, segT sec ATTRIBUTE_UNUSED) || (S_GET_SEGMENT (fixp->fx_subsy)->flags & SEC_CODE) == 0)); } -/* Postpone text-section label subtraction calculation until linking, - since linker relaxations might change the deltas. */ -bool -loongarch_force_relocation_sub_same(fixS *fixp ATTRIBUTE_UNUSED, segT sec) + +/* Whether emit relocations for label subtraction in same section. */ +static bool +_loongarch_force_relocation_sub_same (segT sec, + fragS *addfrag, + fragS *subfrag) { - fragS *add_frag = symbol_get_frag (fixp->fx_addsy); - fragS *sub_frag = symbol_get_frag (fixp->fx_subsy); + if (!LARCH_opts.relax) + return false; + + /* Not emit relocation if section has no relaxable frag. */ + if (!sec->sec_flg1) + return false; /* Not emit relocation if addsy and subsy are in the same frag. */ - if (add_frag == sub_frag) + if (addfrag == subfrag) return false; - return LARCH_opts.relax && (sec->flags & SEC_CODE) != 0; + /* Emit relocation if find a frag is relaxable from addsy to subsy. */ + fragS *s; + for (s = subfrag; s != NULL && s != addfrag; s = s->fr_next) + { + if (s->tc_frag_data.linker_relax) + return true; + } + if (s == addfrag) + return false; + + for (s = addfrag; s != NULL && s != subfrag; s = s->fr_next) + { + if (s->tc_frag_data.linker_relax) + return true; + } + if (s == subfrag) + return false; + + return true; } + +/* Postpone text-section label subtraction calculation until linking, + since linker relaxations might change the deltas. */ +bool +loongarch_force_relocation_sub_same (fixS *fixp ATTRIBUTE_UNUSED, segT sec) +{ + fragS *addfrag = symbol_get_frag (fixp->fx_addsy); + fragS *subfrag = symbol_get_frag (fixp->fx_subsy); + return _loongarch_force_relocation_sub_same (sec, addfrag, subfrag); +} + + static void fix_reloc_insn (fixS *fixP, bfd_vma reloc_val, char *buf) { reloc_howto_type *howto; @@ -1840,6 +1883,16 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) break; case BFD_RELOC_LARCH_CFA: + unsigned int subtype; + fragS *opfrag = (fragS *) fixP->fx_frag->fr_opcode; + subtype = bfd_get_8 (NULL, opfrag->fr_literal + fixP->fx_where); + + /* Update to the real size after relax_segment. */ + if (subtype == DW_CFA_advance_loc2) + fixP->fx_size = 2; + if (subtype == DW_CFA_advance_loc4) + fixP->fx_size = 4; + if (fixP->fx_addsy && fixP->fx_subsy) { fixP->fx_next = xmemdup (fixP, sizeof (*fixP), sizeof (*fixP)); @@ -1848,10 +1901,7 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) fixP->fx_next->fx_offset = 0; fixP->fx_subsy = NULL; - unsigned int subtype; offsetT loc; - fragS *opfrag = (fragS *) fixP->fx_frag->fr_opcode; - subtype = bfd_get_8 (NULL, opfrag->fr_literal + fixP->fx_where); loc = fixP->fx_frag->fr_fix - (subtype & 7); switch (subtype) { @@ -1864,8 +1914,6 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) break; case DW_CFA_advance_loc2: - fixP->fx_size = 2; - fixP->fx_next->fx_size = 2; fixP->fx_where = loc + 1; fixP->fx_next->fx_where = loc + 1; fixP->fx_r_type = BFD_RELOC_LARCH_ADD16; @@ -1874,8 +1922,6 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) break; case DW_CFA_advance_loc4: - fixP->fx_size = 4; - fixP->fx_next->fx_size = 4; fixP->fx_where = loc; fixP->fx_next->fx_where = loc; fixP->fx_r_type = BFD_RELOC_LARCH_ADD32; @@ -1898,6 +1944,9 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) break; } } + + if (fixP->fx_addsy == NULL) + fixP->fx_done = 1; break; case BFD_RELOC_LARCH_B16: @@ -1917,7 +1966,10 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) /* If relax, symbol value may change at link time, so reloc need to be saved. */ - if (!LARCH_opts.relax) + fragS *addfrag = symbol_get_frag (fixP->fx_addsy); + if (! _loongarch_force_relocation_sub_same (seg, + addfrag, + fixP->fx_frag)) fixP->fx_done = 1; } break; @@ -2074,6 +2126,8 @@ loongarch_pre_output_hook (void) frag chains have been chained together. */ subseg_set (s, frch->frch_subseg); + /* Set the size to 1 temporary. The size may change in + relax_segment. Update to the real size in md_apply_fix. */ fix_new_exp (frag, (int) frag->fr_offset, 1, &exp, 0, BFD_RELOC_LARCH_CFA); } @@ -2138,6 +2192,10 @@ loongarch_frag_align_code (int n, int max) frag_wane (frag_now); frag_new (0); + /* Mark the current section and frag as linker relaxable. */ + now_seg->sec_flg1 = true; + frag_now->tc_frag_data.linker_relax = true; + /* If max <= 0, ignore max. If max >= worst_case_bytes, max has no effect. Similar to gas/write.c relax_segment function rs_align_code case: @@ -2227,6 +2285,24 @@ loongarch_handle_align (fragS *fragp) fragp->fr_var = size; } + +/* Whether force relocation for label subtraction calculation, + sincc linker relaxation might change the deltas. */ + +static bool +loongarch_force_reloc_sub (symbolS *addsy, symbolS *subsy) +{ + segT addsec = S_GET_SEGMENT (addsy); + segT subsec = S_GET_SEGMENT (subsy); + if (addsec != subsec) + return true; + + fragS *addfrag = symbol_get_frag (addsy); + fragS *subfrag = symbol_get_frag (subsy); + return _loongarch_force_relocation_sub_same (addsec, addfrag, subfrag); +} + + /* Scan uleb128 subtraction expressions and insert fixups for them. e.g., .uleb128 .L1 - .L0 Because relaxation may change the value of the subtraction, we @@ -2258,6 +2334,9 @@ loongarch_insert_uleb128_fixes (bfd *abfd ATTRIBUTE_UNUSED, if (fragP->fr_subtype != 0) continue; + if (! loongarch_force_reloc_sub (exp->X_add_symbol, exp->X_op_symbol)) + continue; + exp_dup = xmemdup (exp, sizeof (*exp), sizeof (*exp)); exp_dup->X_op = O_symbol; exp_dup->X_op_symbol = NULL; diff --git a/gas/config/tc-loongarch.h b/gas/config/tc-loongarch.h index 5587ac1bb86..146844e772e 100644 --- a/gas/config/tc-loongarch.h +++ b/gas/config/tc-loongarch.h @@ -148,4 +148,15 @@ extern void loongarch_md_finish (void); /* The target supports Object Attributes v1. */ #define TC_OBJ_ATTR_v1 1 + +/* Define target fragment type. */ +#define TC_FRAG_TYPE struct loongarch_frag_type +struct loongarch_frag_type +{ + bool linker_relax; +}; + +#define TC_FRAG_INIT(FRAGP, MAX_BYTES) \ + do { (FRAGP)->tc_frag_data.linker_relax = false; } while (0) + #endif diff --git a/gas/testsuite/gas/all/gas.exp b/gas/testsuite/gas/all/gas.exp index 940df901167..46451fb5a90 100644 --- a/gas/testsuite/gas/all/gas.exp +++ b/gas/testsuite/gas/all/gas.exp @@ -293,7 +293,7 @@ if { ![istarget *c30*-*-*] && ![istarget h8300*-*-*] && ![istarget hppa*-*-*] } then { # msp430, mn10[23]00 and riscv emit two relocs to handle the difference of two symbols. - setup_xfail "am3*-*-*" "loongarch*-*-*" "mn10200-*-*" "mn10300*-*-*" "msp430*-*-*" "riscv*-*-*" + setup_xfail "am3*-*-*" "mn10200-*-*" "mn10300*-*-*" "msp430*-*-*" "riscv*-*-*" do_930509a } diff --git a/gas/testsuite/gas/all/relax.d b/gas/testsuite/gas/all/relax.d index 00fba6d62cd..f394043b017 100644 --- a/gas/testsuite/gas/all/relax.d +++ b/gas/testsuite/gas/all/relax.d @@ -4,10 +4,6 @@ # because symbol values are not known until after linker relaxation has been # performed. #notarget : riscv*-*-* -# LoongArch doesn't resolve .uleb operands that are the difference of two -# symbols because gas write zero to object file and generate add_uleb128 and -# sub_uleb128 reloc pair. -#xfail: loongarch*-*-* .*: .* diff --git a/gas/testsuite/gas/loongarch/insn_int32.d b/gas/testsuite/gas/loongarch/insn_int32.d index d90dbe402c4..43a7f05be6c 100644 --- a/gas/testsuite/gas/loongarch/insn_int32.d +++ b/gas/testsuite/gas/loongarch/insn_int32.d @@ -2,146 +2,139 @@ #objdump: -d -M no-aliases #skip: loongarch64-*-* -.*: file format .* - - -Disassembly of section .text: - -0+ <.*>: - 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: 034000a4 andi \$a0, \$a1, 0x0 - 28: 035ffca4 andi \$a0, \$a1, 0x7ff - 2c: 038000a4 ori \$a0, \$a1, 0x0 - 30: 039ffca4 ori \$a0, \$a1, 0x7ff - 34: 03c000a4 xori \$a0, \$a1, 0x0 - 38: 03dffca4 xori \$a0, \$a1, 0x7ff - 3c: 14000004 lu12i.w \$a0, 0 - 40: 14ffffe4 lu12i.w \$a0, 524287 - 44: 1c000004 pcaddu12i \$a0, 0 - 48: 1cffffe4 pcaddu12i \$a0, 524287 - 4c: 1d000024 pcaddu12i \$a0, -524287 - 50: 0004b58b alsl.w \$a7, \$t0, \$t1, 0x2 - 54: 0006b58b alsl.wu \$a7, \$t0, \$t1, 0x2 - 58: 002a0002 break 0x2 - 5c: 002a8002 dbcl 0x2 - 60: 002b0002 syscall 0x2 - 64: 0040898b slli.w \$a7, \$t0, 0x2 - 68: 0044898b srli.w \$a7, \$t0, 0x2 - 6c: 004889ac srai.w \$t0, \$t1, 0x2 - 70: 02048dac slti \$t0, \$t1, 291 - 74: 02448dac sltui \$t0, \$t1, 291 - 78: 02848dac addi.w \$t0, \$t1, 291 - 7c: 034009ac andi \$t0, \$t1, 0x2 - 80: 038009ac ori \$t0, \$t1, 0x2 - 84: 03c009ac xori \$t0, \$t1, 0x2 - 88: 1400246c lu12i.w \$t0, 291 - 8c: 1c00246c pcaddu12i \$t0, 291 - 90: 04048c0c csrrd \$t0, 0x123 - 94: 04048c2c csrwr \$t0, 0x123 - 98: 040009ac csrxchg \$t0, \$t1, 0x2 - 9c: 060009a2 cacop 0x2, \$t1, 2 - a0: 064009ac lddir \$t0, \$t1, 0x2 - a4: 06440980 ldpte \$t0, 0x2 - a8: 0649b9a2 invtlb 0x2, \$t1, \$t2 - ac: 000060a4 rdtimel.w \$a0, \$a1 - b0: 000064a4 rdtimeh.w \$a0, \$a1 - b4: 000418a4 alsl.w \$a0, \$a1, \$a2, 0x1 - b8: 000598a4 alsl.w \$a0, \$a1, \$a2, 0x4 - bc: 000618a4 alsl.wu \$a0, \$a1, \$a2, 0x1 - c0: 000798a4 alsl.wu \$a0, \$a1, \$a2, 0x4 - c4: 001018a4 add.w \$a0, \$a1, \$a2 - c8: 001118a4 sub.w \$a0, \$a1, \$a2 - cc: 001218a4 slt \$a0, \$a1, \$a2 - d0: 001298a4 sltu \$a0, \$a1, \$a2 - d4: 001418a4 nor \$a0, \$a1, \$a2 - d8: 001498a4 and \$a0, \$a1, \$a2 - dc: 001518a4 or \$a0, \$a1, \$a2 - e0: 001598a4 xor \$a0, \$a1, \$a2 - e4: 001718a4 sll.w \$a0, \$a1, \$a2 - e8: 001798a4 srl.w \$a0, \$a1, \$a2 - ec: 001818a4 sra.w \$a0, \$a1, \$a2 - f0: 001c18a4 mul.w \$a0, \$a1, \$a2 - f4: 001c98a4 mulh.w \$a0, \$a1, \$a2 - f8: 001d18a4 mulh.wu \$a0, \$a1, \$a2 - fc: 002018a4 div.w \$a0, \$a1, \$a2 - 100: 002098a4 mod.w \$a0, \$a1, \$a2 - 104: 002118a4 div.wu \$a0, \$a1, \$a2 - 108: 002198a4 mod.wu \$a0, \$a1, \$a2 - 10c: 002a0000 break 0x0 - 110: 002a7fff break 0x7fff - 114: 002a8000 dbcl 0x0 - 118: 002affff dbcl 0x7fff - 11c: 004080a4 slli.w \$a0, \$a1, 0x0 - 120: 004084a4 slli.w \$a0, \$a1, 0x1 - 124: 0040fca4 slli.w \$a0, \$a1, 0x1f - 128: 004480a4 srli.w \$a0, \$a1, 0x0 - 12c: 004484a4 srli.w \$a0, \$a1, 0x1 - 130: 0044fca4 srli.w \$a0, \$a1, 0x1f - 134: 004880a4 srai.w \$a0, \$a1, 0x0 - 138: 004884a4 srai.w \$a0, \$a1, 0x1 - 13c: 0048fca4 srai.w \$a0, \$a1, 0x1f - 140: 200000a4 ll.w \$a0, \$a1, 0 - 144: 203ffca4 ll.w \$a0, \$a1, 16380 - 148: 210000a4 sc.w \$a0, \$a1, 0 - 14c: 213ffca4 sc.w \$a0, \$a1, 16380 - 150: 280000a4 ld.b \$a0, \$a1, 0 - 154: 281ffca4 ld.b \$a0, \$a1, 2047 - 158: 282004a4 ld.b \$a0, \$a1, -2047 - 15c: 284000a4 ld.h \$a0, \$a1, 0 - 160: 285ffca4 ld.h \$a0, \$a1, 2047 - 164: 286004a4 ld.h \$a0, \$a1, -2047 - 168: 288000a4 ld.w \$a0, \$a1, 0 - 16c: 289ffca4 ld.w \$a0, \$a1, 2047 - 170: 28a004a4 ld.w \$a0, \$a1, -2047 - 174: 290000a4 st.b \$a0, \$a1, 0 - 178: 291ffca4 st.b \$a0, \$a1, 2047 - 17c: 292004a4 st.b \$a0, \$a1, -2047 - 180: 294000a4 st.h \$a0, \$a1, 0 - 184: 295ffca4 st.h \$a0, \$a1, 2047 - 188: 296004a4 st.h \$a0, \$a1, -2047 - 18c: 298000a4 st.w \$a0, \$a1, 0 - 190: 299ffca4 st.w \$a0, \$a1, 2047 - 194: 29a004a4 st.w \$a0, \$a1, -2047 - 198: 2a0000a4 ld.bu \$a0, \$a1, 0 - 19c: 2a1ffca4 ld.bu \$a0, \$a1, 2047 - 1a0: 2a2004a4 ld.bu \$a0, \$a1, -2047 - 1a4: 2a4000a4 ld.hu \$a0, \$a1, 0 - 1a8: 2a5ffca4 ld.hu \$a0, \$a1, 2047 - 1ac: 2a6004a4 ld.hu \$a0, \$a1, -2047 - 1b0: 2ac000a0 preld 0x0, \$a1, 0 - 1b4: 2adffcbf preld 0x1f, \$a1, 2047 - 1b8: 2ae004bf preld 0x1f, \$a1, -2047 - 1bc: 385714c4 sc.q \$a0, \$a1, \$a2 - 1c0: 385714c4 sc.q \$a0, \$a1, \$a2 - 1c4: 385780a4 llacq.w \$a0, \$a1 - 1c8: 385780a4 llacq.w \$a0, \$a1 - 1cc: 385784a4 screl.w \$a0, \$a1 - 1d0: 385784a4 screl.w \$a0, \$a1 - 1d4: 38720000 dbar 0x0 - 1d8: 38727fff dbar 0x7fff - 1dc: 38728000 ibar 0x0 - 1e0: 3872ffff ibar 0x7fff - -0+1e4 <.L1>: - 1e4: 03400000 andi \$zero, \$zero, 0x0 - 1e8: 53ffffff b -4 # 1e4 <.L1> - 1ec: 57fffbff bl -8 # 1e4 <.L1> - 1f0: 5bfff485 beq \$a0, \$a1, -12 # 1e4 <.L1> - 1f4: 5ffff085 bne \$a0, \$a1, -16 # 1e4 <.L1> - 1f8: 63ffec85 blt \$a0, \$a1, -20 # 1e4 <.L1> - 1fc: 63ffe8a4 blt \$a1, \$a0, -24 # 1e4 <.L1> - 200: 67ffe485 bge \$a0, \$a1, -28 # 1e4 <.L1> - 204: 67ffe0a4 bge \$a1, \$a0, -32 # 1e4 <.L1> - 208: 6bffdc85 bltu \$a0, \$a1, -36 # 1e4 <.L1> - 20c: 6bffd8a4 bltu \$a1, \$a0, -40 # 1e4 <.L1> - 210: 6fffd485 bgeu \$a0, \$a1, -44 # 1e4 <.L1> - 214: 6fffd0a4 bgeu \$a1, \$a0, -48 # 1e4 <.L1> - 218: 4c000080 jirl \$zero, \$a0, 0 +#... +[ ]+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:[ ]+034000a4[ ]+andi[ ]+\$a0,[ ]+\$a1,[ ]+0x0 +[ ]+28:[ ]+035ffca4[ ]+andi[ ]+\$a0,[ ]+\$a1,[ ]+0x7ff +[ ]+2c:[ ]+038000a4[ ]+ori[ ]+\$a0,[ ]+\$a1,[ ]+0x0 +[ ]+30:[ ]+039ffca4[ ]+ori[ ]+\$a0,[ ]+\$a1,[ ]+0x7ff +[ ]+34:[ ]+03c000a4[ ]+xori[ ]+\$a0,[ ]+\$a1,[ ]+0x0 +[ ]+38:[ ]+03dffca4[ ]+xori[ ]+\$a0,[ ]+\$a1,[ ]+0x7ff +[ ]+3c:[ ]+14000004[ ]+lu12i.w[ ]+\$a0,[ ]+0 +[ ]+40:[ ]+14ffffe4[ ]+lu12i.w[ ]+\$a0,[ ]+524287 +[ ]+44:[ ]+1c000004[ ]+pcaddu12i[ ]+\$a0,[ ]+0 +[ ]+48:[ ]+1cffffe4[ ]+pcaddu12i[ ]+\$a0,[ ]+524287 +[ ]+4c:[ ]+1d000024[ ]+pcaddu12i[ ]+\$a0,[ ]+-524287 +[ ]+50:[ ]+0004b58b[ ]+alsl.w[ ]+\$a7,[ ]+\$t0,[ ]+\$t1,[ ]+0x2 +[ ]+54:[ ]+0006b58b[ ]+alsl.wu[ ]+\$a7,[ ]+\$t0,[ ]+\$t1,[ ]+0x2 +[ ]+58:[ ]+002a0002[ ]+break[ ]+0x2 +[ ]+5c:[ ]+002a8002[ ]+dbcl[ ]+0x2 +[ ]+60:[ ]+002b0002[ ]+syscall[ ]+0x2 +[ ]+64:[ ]+0040898b[ ]+slli.w[ ]+\$a7,[ ]+\$t0,[ ]+0x2 +[ ]+68:[ ]+0044898b[ ]+srli.w[ ]+\$a7,[ ]+\$t0,[ ]+0x2 +[ ]+6c:[ ]+004889ac[ ]+srai.w[ ]+\$t0,[ ]+\$t1,[ ]+0x2 +[ ]+70:[ ]+02048dac[ ]+slti[ ]+\$t0,[ ]+\$t1,[ ]+291 +[ ]+74:[ ]+02448dac[ ]+sltui[ ]+\$t0,[ ]+\$t1,[ ]+291 +[ ]+78:[ ]+02848dac[ ]+addi.w[ ]+\$t0,[ ]+\$t1,[ ]+291 +[ ]+7c:[ ]+034009ac[ ]+andi[ ]+\$t0,[ ]+\$t1,[ ]+0x2 +[ ]+80:[ ]+038009ac[ ]+ori[ ]+\$t0,[ ]+\$t1,[ ]+0x2 +[ ]+84:[ ]+03c009ac[ ]+xori[ ]+\$t0,[ ]+\$t1,[ ]+0x2 +[ ]+88:[ ]+1400246c[ ]+lu12i.w[ ]+\$t0,[ ]+291 +[ ]+8c:[ ]+1c00246c[ ]+pcaddu12i[ ]+\$t0,[ ]+291 +[ ]+90:[ ]+04048c0c[ ]+csrrd[ ]+\$t0,[ ]+0x123 +[ ]+94:[ ]+04048c2c[ ]+csrwr[ ]+\$t0,[ ]+0x123 +[ ]+98:[ ]+040009ac[ ]+csrxchg[ ]+\$t0,[ ]+\$t1,[ ]+0x2 +[ ]+9c:[ ]+060009a2[ ]+cacop[ ]+0x2,[ ]+\$t1,[ ]+2 +[ ]+a0:[ ]+064009ac[ ]+lddir[ ]+\$t0,[ ]+\$t1,[ ]+0x2 +[ ]+a4:[ ]+06440980[ ]+ldpte[ ]+\$t0,[ ]+0x2 +[ ]+a8:[ ]+0649b9a2[ ]+invtlb[ ]+0x2,[ ]+\$t1,[ ]+\$t2 +[ ]+ac:[ ]+000060a4[ ]+rdtimel.w[ ]+\$a0,[ ]+\$a1 +[ ]+b0:[ ]+000064a4[ ]+rdtimeh.w[ ]+\$a0,[ ]+\$a1 +[ ]+b4:[ ]+000418a4[ ]+alsl.w[ ]+\$a0,[ ]+\$a1,[ ]+\$a2,[ ]+0x1 +[ ]+b8:[ ]+000598a4[ ]+alsl.w[ ]+\$a0,[ ]+\$a1,[ ]+\$a2,[ ]+0x4 +[ ]+bc:[ ]+000618a4[ ]+alsl.wu[ ]+\$a0,[ ]+\$a1,[ ]+\$a2,[ ]+0x1 +[ ]+c0:[ ]+000798a4[ ]+alsl.wu[ ]+\$a0,[ ]+\$a1,[ ]+\$a2,[ ]+0x4 +[ ]+c4:[ ]+001018a4[ ]+add.w[ ]+\$a0,[ ]+\$a1,[ ]+\$a2 +[ ]+c8:[ ]+001118a4[ ]+sub.w[ ]+\$a0,[ ]+\$a1,[ ]+\$a2 +[ ]+cc:[ ]+001218a4[ ]+slt[ ]+\$a0,[ ]+\$a1,[ ]+\$a2 +[ ]+d0:[ ]+001298a4[ ]+sltu[ ]+\$a0,[ ]+\$a1,[ ]+\$a2 +[ ]+d4:[ ]+001418a4[ ]+nor[ ]+\$a0,[ ]+\$a1,[ ]+\$a2 +[ ]+d8:[ ]+001498a4[ ]+and[ ]+\$a0,[ ]+\$a1,[ ]+\$a2 +[ ]+dc:[ ]+001518a4[ ]+or[ ]+\$a0,[ ]+\$a1,[ ]+\$a2 +[ ]+e0:[ ]+001598a4[ ]+xor[ ]+\$a0,[ ]+\$a1,[ ]+\$a2 +[ ]+e4:[ ]+001718a4[ ]+sll.w[ ]+\$a0,[ ]+\$a1,[ ]+\$a2 +[ ]+e8:[ ]+001798a4[ ]+srl.w[ ]+\$a0,[ ]+\$a1,[ ]+\$a2 +[ ]+ec:[ ]+001818a4[ ]+sra.w[ ]+\$a0,[ ]+\$a1,[ ]+\$a2 +[ ]+f0:[ ]+001c18a4[ ]+mul.w[ ]+\$a0,[ ]+\$a1,[ ]+\$a2 +[ ]+f4:[ ]+001c98a4[ ]+mulh.w[ ]+\$a0,[ ]+\$a1,[ ]+\$a2 +[ ]+f8:[ ]+001d18a4[ ]+mulh.wu[ ]+\$a0,[ ]+\$a1,[ ]+\$a2 +[ ]+fc:[ ]+002018a4[ ]+div.w[ ]+\$a0,[ ]+\$a1,[ ]+\$a2 +[ ]+100:[ ]+002098a4[ ]+mod.w[ ]+\$a0,[ ]+\$a1,[ ]+\$a2 +[ ]+104:[ ]+002118a4[ ]+div.wu[ ]+\$a0,[ ]+\$a1,[ ]+\$a2 +[ ]+108:[ ]+002198a4[ ]+mod.wu[ ]+\$a0,[ ]+\$a1,[ ]+\$a2 +[ ]+10c:[ ]+002a0000[ ]+break[ ]+0x0 +[ ]+110:[ ]+002a7fff[ ]+break[ ]+0x7fff +[ ]+114:[ ]+002a8000[ ]+dbcl[ ]+0x0 +[ ]+118:[ ]+002affff[ ]+dbcl[ ]+0x7fff +[ ]+11c:[ ]+004080a4[ ]+slli.w[ ]+\$a0,[ ]+\$a1,[ ]+0x0 +[ ]+120:[ ]+004084a4[ ]+slli.w[ ]+\$a0,[ ]+\$a1,[ ]+0x1 +[ ]+124:[ ]+0040fca4[ ]+slli.w[ ]+\$a0,[ ]+\$a1,[ ]+0x1f +[ ]+128:[ ]+004480a4[ ]+srli.w[ ]+\$a0,[ ]+\$a1,[ ]+0x0 +[ ]+12c:[ ]+004484a4[ ]+srli.w[ ]+\$a0,[ ]+\$a1,[ ]+0x1 +[ ]+130:[ ]+0044fca4[ ]+srli.w[ ]+\$a0,[ ]+\$a1,[ ]+0x1f +[ ]+134:[ ]+004880a4[ ]+srai.w[ ]+\$a0,[ ]+\$a1,[ ]+0x0 +[ ]+138:[ ]+004884a4[ ]+srai.w[ ]+\$a0,[ ]+\$a1,[ ]+0x1 +[ ]+13c:[ ]+0048fca4[ ]+srai.w[ ]+\$a0,[ ]+\$a1,[ ]+0x1f +[ ]+140:[ ]+200000a4[ ]+ll.w[ ]+\$a0,[ ]+\$a1,[ ]+0 +[ ]+144:[ ]+203ffca4[ ]+ll.w[ ]+\$a0,[ ]+\$a1,[ ]+16380 +[ ]+148:[ ]+210000a4[ ]+sc.w[ ]+\$a0,[ ]+\$a1,[ ]+0 +[ ]+14c:[ ]+213ffca4[ ]+sc.w[ ]+\$a0,[ ]+\$a1,[ ]+16380 +[ ]+150:[ ]+280000a4[ ]+ld.b[ ]+\$a0,[ ]+\$a1,[ ]+0 +[ ]+154:[ ]+281ffca4[ ]+ld.b[ ]+\$a0,[ ]+\$a1,[ ]+2047 +[ ]+158:[ ]+282004a4[ ]+ld.b[ ]+\$a0,[ ]+\$a1,[ ]+-2047 +[ ]+15c:[ ]+284000a4[ ]+ld.h[ ]+\$a0,[ ]+\$a1,[ ]+0 +[ ]+160:[ ]+285ffca4[ ]+ld.h[ ]+\$a0,[ ]+\$a1,[ ]+2047 +[ ]+164:[ ]+286004a4[ ]+ld.h[ ]+\$a0,[ ]+\$a1,[ ]+-2047 +[ ]+168:[ ]+288000a4[ ]+ld.w[ ]+\$a0,[ ]+\$a1,[ ]+0 +[ ]+16c:[ ]+289ffca4[ ]+ld.w[ ]+\$a0,[ ]+\$a1,[ ]+2047 +[ ]+170:[ ]+28a004a4[ ]+ld.w[ ]+\$a0,[ ]+\$a1,[ ]+-2047 +[ ]+174:[ ]+290000a4[ ]+st.b[ ]+\$a0,[ ]+\$a1,[ ]+0 +[ ]+178:[ ]+291ffca4[ ]+st.b[ ]+\$a0,[ ]+\$a1,[ ]+2047 +[ ]+17c:[ ]+292004a4[ ]+st.b[ ]+\$a0,[ ]+\$a1,[ ]+-2047 +[ ]+180:[ ]+294000a4[ ]+st.h[ ]+\$a0,[ ]+\$a1,[ ]+0 +[ ]+184:[ ]+295ffca4[ ]+st.h[ ]+\$a0,[ ]+\$a1,[ ]+2047 +[ ]+188:[ ]+296004a4[ ]+st.h[ ]+\$a0,[ ]+\$a1,[ ]+-2047 +[ ]+18c:[ ]+298000a4[ ]+st.w[ ]+\$a0,[ ]+\$a1,[ ]+0 +[ ]+190:[ ]+299ffca4[ ]+st.w[ ]+\$a0,[ ]+\$a1,[ ]+2047 +[ ]+194:[ ]+29a004a4[ ]+st.w[ ]+\$a0,[ ]+\$a1,[ ]+-2047 +[ ]+198:[ ]+2a0000a4[ ]+ld.bu[ ]+\$a0,[ ]+\$a1,[ ]+0 +[ ]+19c:[ ]+2a1ffca4[ ]+ld.bu[ ]+\$a0,[ ]+\$a1,[ ]+2047 +[ ]+1a0:[ ]+2a2004a4[ ]+ld.bu[ ]+\$a0,[ ]+\$a1,[ ]+-2047 +[ ]+1a4:[ ]+2a4000a4[ ]+ld.hu[ ]+\$a0,[ ]+\$a1,[ ]+0 +[ ]+1a8:[ ]+2a5ffca4[ ]+ld.hu[ ]+\$a0,[ ]+\$a1,[ ]+2047 +[ ]+1ac:[ ]+2a6004a4[ ]+ld.hu[ ]+\$a0,[ ]+\$a1,[ ]+-2047 +[ ]+1b0:[ ]+2ac000a0[ ]+preld[ ]+0x0,[ ]+\$a1,[ ]+0 +[ ]+1b4:[ ]+2adffcbf[ ]+preld[ ]+0x1f,[ ]+\$a1,[ ]+2047 +[ ]+1b8:[ ]+2ae004bf[ ]+preld[ ]+0x1f,[ ]+\$a1,[ ]+-2047 +[ ]+1bc:[ ]+385714c4[ ]+sc.q[ ]+\$a0,[ ]+\$a1,[ ]+\$a2 +[ ]+1c0:[ ]+385714c4[ ]+sc.q[ ]+\$a0,[ ]+\$a1,[ ]+\$a2 +[ ]+1c4:[ ]+385780a4[ ]+llacq.w[ ]+\$a0,[ ]+\$a1 +[ ]+1c8:[ ]+385780a4[ ]+llacq.w[ ]+\$a0,[ ]+\$a1 +[ ]+1cc:[ ]+385784a4[ ]+screl.w[ ]+\$a0,[ ]+\$a1 +[ ]+1d0:[ ]+385784a4[ ]+screl.w[ ]+\$a0,[ ]+\$a1 +[ ]+1d4:[ ]+38720000[ ]+dbar[ ]+0x0 +[ ]+1d8:[ ]+38727fff[ ]+dbar[ ]+0x7fff +[ ]+1dc:[ ]+38728000[ ]+ibar[ ]+0x0 +[ ]+1e0:[ ]+3872ffff[ ]+ibar[ ]+0x7fff +[ ]+1e4:[ ]+03400000[ ]+andi[ ]+\$zero,[ ]+\$zero,[ ]+0x0 +[ ]+1e8:[ ]+53ffffff[ ]+b[ ]+-4[ ]+#[ ]+1e4[ ]+<a\+0xc1> +[ ]+1ec:[ ]+57fffbff[ ]+bl[ ]+-8[ ]+#[ ]+1e4[ ]+<a\+0xc1> +[ ]+1f0:[ ]+5bfff485[ ]+beq[ ]+\$a0,[ ]+\$a1,[ ]+-12[ ]+#[ ]+1e4[ ]+<a\+0xc1> +[ ]+1f4:[ ]+5ffff085[ ]+bne[ ]+\$a0,[ ]+\$a1,[ ]+-16[ ]+#[ ]+1e4[ ]+<a\+0xc1> +[ ]+1f8:[ ]+63ffec85[ ]+blt[ ]+\$a0,[ ]+\$a1,[ ]+-20[ ]+#[ ]+1e4[ ]+<a\+0xc1> +[ ]+1fc:[ ]+63ffe8a4[ ]+blt[ ]+\$a1,[ ]+\$a0,[ ]+-24[ ]+#[ ]+1e4[ ]+<a\+0xc1> +[ ]+200:[ ]+67ffe485[ ]+bge[ ]+\$a0,[ ]+\$a1,[ ]+-28[ ]+#[ ]+1e4[ ]+<a\+0xc1> +[ ]+204:[ ]+67ffe0a4[ ]+bge[ ]+\$a1,[ ]+\$a0,[ ]+-32[ ]+#[ ]+1e4[ ]+<a\+0xc1> +[ ]+208:[ ]+6bffdc85[ ]+bltu[ ]+\$a0,[ ]+\$a1,[ ]+-36[ ]+#[ ]+1e4[ ]+<a\+0xc1> +[ ]+20c:[ ]+6bffd8a4[ ]+bltu[ ]+\$a1,[ ]+\$a0,[ ]+-40[ ]+#[ ]+1e4[ ]+<a\+0xc1> +[ ]+210:[ ]+6fffd485[ ]+bgeu[ ]+\$a0,[ ]+\$a1,[ ]+-44[ ]+#[ ]+1e4[ ]+<a\+0xc1> +[ ]+214:[ ]+6fffd0a4[ ]+bgeu[ ]+\$a1,[ ]+\$a0,[ ]+-48[ ]+#[ ]+1e4[ ]+<a\+0xc1> +[ ]+218:[ ]+4c000080[ ]+jirl[ ]+\$zero,[ ]+\$a0,[ ]+0 diff --git a/gas/testsuite/gas/loongarch/insn_int64.d b/gas/testsuite/gas/loongarch/insn_int64.d index 360b840d415..dcfeaac8e52 100644 --- a/gas/testsuite/gas/loongarch/insn_int64.d +++ b/gas/testsuite/gas/loongarch/insn_int64.d @@ -411,20 +411,19 @@ Disassembly of section .text: 640: 385f94c4 amadd_db.h \$a0, \$a1, \$a2 644: 385f98a4 amadd_db.h \$a0, \$a2, \$a1 -0+648 <.L1>: 648: 03400000 andi \$zero, \$zero, 0x0 - 64c: 43fffc9f beqz \$a0, -4 # 648 <.L1> - 650: 47fff89f bnez \$a0, -8 # 648 <.L1> - 654: 53fff7ff b -12 # 648 <.L1> - 658: 57fff3ff bl -16 # 648 <.L1> - 65c: 5bffec85 beq \$a0, \$a1, -20 # 648 <.L1> - 660: 5fffe885 bne \$a0, \$a1, -24 # 648 <.L1> - 664: 63ffe485 blt \$a0, \$a1, -28 # 648 <.L1> - 668: 63ffe0a4 blt \$a1, \$a0, -32 # 648 <.L1> - 66c: 67ffdc85 bge \$a0, \$a1, -36 # 648 <.L1> - 670: 67ffd8a4 bge \$a1, \$a0, -40 # 648 <.L1> - 674: 6bffd485 bltu \$a0, \$a1, -44 # 648 <.L1> - 678: 6bffd0a4 bltu \$a1, \$a0, -48 # 648 <.L1> - 67c: 6fffcc85 bgeu \$a0, \$a1, -52 # 648 <.L1> - 680: 6fffc8a4 bgeu \$a1, \$a0, -56 # 648 <.L1> + 64c: 43fffc9f beqz \$a0, -4.* + 650: 47fff89f bnez \$a0, -8.* + 654: 53fff7ff b -12.* + 658: 57fff3ff bl -16.* + 65c: 5bffec85 beq \$a0, \$a1, -20.* + 660: 5fffe885 bne \$a0, \$a1, -24.* + 664: 63ffe485 blt \$a0, \$a1, -28.* + 668: 63ffe0a4 blt \$a1, \$a0, -32.* + 66c: 67ffdc85 bge \$a0, \$a1, -36.* + 670: 67ffd8a4 bge \$a1, \$a0, -40.* + 674: 6bffd485 bltu \$a0, \$a1, -44.* + 678: 6bffd0a4 bltu \$a1, \$a0, -48.* + 67c: 6fffcc85 bgeu \$a0, \$a1, -52.* + 680: 6fffc8a4 bgeu \$a1, \$a0, -56.* 684: 4c000080 jirl \$zero, \$a0, 0 diff --git a/gas/testsuite/gas/loongarch/jmp_op.d b/gas/testsuite/gas/loongarch/jmp_op.d index 21576072aab..1a552b2c7b5 100644 --- a/gas/testsuite/gas/loongarch/jmp_op.d +++ b/gas/testsuite/gas/loongarch/jmp_op.d @@ -1,50 +1,48 @@ -#as: +#as: -mrelax #objdump: -dr -.*:[ ]+file format .* - - -Disassembly of section .text: - -00000000.* <.L1>: -[ ]+0:[ ]+03400000[ ]+nop -[ ]+4:[ ]+63fffc04[ ]+bgtz[ ]+\$a0,[ ]+-4[ ]+#[ ]+0[ ]+<\.L1> -[ ]+4:[ ]+R_LARCH_B16[ ]+\.L1 -[ ]+8:[ ]+67fff880[ ]+bgez[ ]+\$a0,[ ]+-8[ ]+#[ ]+0[ ]+<\.L1> -[ ]+8:[ ]+R_LARCH_B16[ ]+\.L1 -[ ]+c:[ ]+67fff404[ ]+blez[ ]+\$a0,[ ]+-12[ ]+#[ ]+0[ ]+<\.L1> -[ ]+c:[ ]+R_LARCH_B16[ ]+\.L1 -[ ]+10:[ ]+43fff09f[ ]+beqz[ ]+\$a0,[ ]+-16[ ]+#[ ]+0[ ]+<\.L1> -[ ]+10:[ ]+R_LARCH_B21[ ]+\.L1 -[ ]+14:[ ]+47ffec9f[ ]+bnez[ ]+\$a0,[ ]+-20[ ]+#[ ]+0[ ]+<\.L1> -[ ]+14:[ ]+R_LARCH_B21[ ]+\.L1 -[ ]+18:[ ]+4bffe81f[ ]+bceqz[ ]+\$fcc0,[ ]+-24[ ]+#[ ]+0[ ]+<\.L1> -[ ]+18:[ ]+R_LARCH_B21[ ]+\.L1 -[ ]+1c:[ ]+4bffe51f[ ]+bcnez[ ]+\$fcc0,[ ]+-28[ ]+#[ ]+0[ ]+<\.L1> -[ ]+1c:[ ]+R_LARCH_B21[ ]+\.L1 -[ ]+20:[ ]+4c000080[ ]+jr[ ]+\$a0 -[ ]+24:[ ]+53ffdfff[ ]+b[ ]+-36[ ]+#[ ]+0[ ]+<\.L1> -[ ]+24:[ ]+R_LARCH_B26[ ]+\.L1 -[ ]+28:[ ]+57ffdbff[ ]+bl[ ]+-40[ ]+#[ ]+0[ ]+<\.L1> -[ ]+28:[ ]+R_LARCH_B26[ ]+\.L1 -[ ]+2c:[ ]+5bffd485[ ]+beq[ ]+\$a0,[ ]+\$a1,[ ]+-44[ ]+#[ ]+0[ ]+<\.L1> -[ ]+2c:[ ]+R_LARCH_B16[ ]+\.L1 -[ ]+30:[ ]+5fffd085[ ]+bne[ ]+\$a0,[ ]+\$a1,[ ]+-48[ ]+#[ ]+0[ ]+<\.L1> -[ ]+30:[ ]+R_LARCH_B16[ ]+\.L1 -[ ]+34:[ ]+63ffcc85[ ]+blt[ ]+\$a0,[ ]+\$a1,[ ]+-52[ ]+#[ ]+0[ ]+<\.L1> -[ ]+34:[ ]+R_LARCH_B16[ ]+\.L1 -[ ]+38:[ ]+63ffc8a4[ ]+blt[ ]+\$a1,[ ]+\$a0,[ ]+-56[ ]+#[ ]+0[ ]+<\.L1> -[ ]+38:[ ]+R_LARCH_B16[ ]+\.L1 -[ ]+3c:[ ]+67ffc485[ ]+bge[ ]+\$a0,[ ]+\$a1,[ ]+-60[ ]+#[ ]+0[ ]+<\.L1> -[ ]+3c:[ ]+R_LARCH_B16[ ]+\.L1 -[ ]+40:[ ]+67ffc0a4[ ]+bge[ ]+\$a1,[ ]+\$a0,[ ]+-64[ ]+#[ ]+0[ ]+<\.L1> -[ ]+40:[ ]+R_LARCH_B16[ ]+\.L1 -[ ]+44:[ ]+6bffbc85[ ]+bltu[ ]+\$a0,[ ]+\$a1,[ ]+-68[ ]+#[ ]+0[ ]+<\.L1> -[ ]+44:[ ]+R_LARCH_B16[ ]+\.L1 -[ ]+48:[ ]+6bffb8a4[ ]+bltu[ ]+\$a1,[ ]+\$a0,[ ]+-72[ ]+#[ ]+0[ ]+<\.L1> -[ ]+48:[ ]+R_LARCH_B16[ ]+\.L1 -[ ]+4c:[ ]+6fffb485[ ]+bgeu[ ]+\$a0,[ ]+\$a1,[ ]+-76[ ]+#[ ]+0[ ]+<\.L1> -[ ]+4c:[ ]+R_LARCH_B16[ ]+\.L1 -[ ]+50:[ ]+6fffb0a4[ ]+bgeu[ ]+\$a1,[ ]+\$a0,[ ]+-80[ ]+#[ ]+0[ ]+<\.L1> -[ ]+50:[ ]+R_LARCH_B16[ ]+\.L1 -[ ]+54:[ ]+4c000020[ ]+ret +#... +[ ]+0:[ ]+1e000001[ ]+pcaddu18i[ ]+\$ra,[ ]+0 +[ ]+0:[ ]+R_LARCH_CALL36[ ]+.L1 +[ ]+0:[ ]+R_LARCH_RELAX[ ]+\*ABS\* +[ ]+4:[ ]+4c000021[ ]+jirl[ ]+\$ra,[ ]+\$ra,[ ]+0 +[ ]+8:[ ]+63fff804[ ]+bgtz[ ]+\$a0,[ ]+-8[ ]+#[ ]+0[ ]+<.L1> +[ ]+8:[ ]+R_LARCH_B16[ ]+.L1 +[ ]+c:[ ]+67fff480[ ]+bgez[ ]+\$a0,[ ]+-12[ ]+#[ ]+0[ ]+<.L1> +[ ]+c:[ ]+R_LARCH_B16[ ]+.L1 +[ ]+10:[ ]+67fff004[ ]+blez[ ]+\$a0,[ ]+-16[ ]+#[ ]+0[ ]+<.L1> +[ ]+10:[ ]+R_LARCH_B16[ ]+.L1 +[ ]+14:[ ]+43ffec9f[ ]+beqz[ ]+\$a0,[ ]+-20[ ]+#[ ]+0[ ]+<.L1> +[ ]+14:[ ]+R_LARCH_B21[ ]+.L1 +[ ]+18:[ ]+47ffe89f[ ]+bnez[ ]+\$a0,[ ]+-24[ ]+#[ ]+0[ ]+<.L1> +[ ]+18:[ ]+R_LARCH_B21[ ]+.L1 +[ ]+1c:[ ]+4bffe41f[ ]+bceqz[ ]+\$fcc0,[ ]+-28[ ]+#[ ]+0[ ]+<.L1> +[ ]+1c:[ ]+R_LARCH_B21[ ]+.L1 +[ ]+20:[ ]+4bffe11f[ ]+bcnez[ ]+\$fcc0,[ ]+-32[ ]+#[ ]+0[ ]+<.L1> +[ ]+20:[ ]+R_LARCH_B21[ ]+.L1 +[ ]+24:[ ]+4c000080[ ]+jr[ ]+\$a0 +[ ]+28:[ ]+53ffdbff[ ]+b[ ]+-40[ ]+#[ ]+0[ ]+<.L1> +[ ]+28:[ ]+R_LARCH_B26[ ]+.L1 +[ ]+2c:[ ]+57ffd7ff[ ]+bl[ ]+-44[ ]+#[ ]+0[ ]+<.L1> +[ ]+2c:[ ]+R_LARCH_B26[ ]+.L1 +[ ]+30:[ ]+5bffd085[ ]+beq[ ]+\$a0,[ ]+\$a1,[ ]+-48[ ]+#[ ]+0[ ]+<.L1> +[ ]+30:[ ]+R_LARCH_B16[ ]+.L1 +[ ]+34:[ ]+5fffcc85[ ]+bne[ ]+\$a0,[ ]+\$a1,[ ]+-52[ ]+#[ ]+0[ ]+<.L1> +[ ]+34:[ ]+R_LARCH_B16[ ]+.L1 +[ ]+38:[ ]+63ffc885[ ]+blt[ ]+\$a0,[ ]+\$a1,[ ]+-56[ ]+#[ ]+0[ ]+<.L1> +[ ]+38:[ ]+R_LARCH_B16[ ]+.L1 +[ ]+3c:[ ]+63ffc4a4[ ]+blt[ ]+\$a1,[ ]+\$a0,[ ]+-60[ ]+#[ ]+0[ ]+<.L1> +[ ]+3c:[ ]+R_LARCH_B16[ ]+.L1 +[ ]+40:[ ]+67ffc085[ ]+bge[ ]+\$a0,[ ]+\$a1,[ ]+-64[ ]+#[ ]+0[ ]+<.L1> +[ ]+40:[ ]+R_LARCH_B16[ ]+.L1 +[ ]+44:[ ]+67ffbca4[ ]+bge[ ]+\$a1,[ ]+\$a0,[ ]+-68[ ]+#[ ]+0[ ]+<.L1> +[ ]+44:[ ]+R_LARCH_B16[ ]+.L1 +[ ]+48:[ ]+6bffb885[ ]+bltu[ ]+\$a0,[ ]+\$a1,[ ]+-72[ ]+#[ ]+0[ ]+<.L1> +[ ]+48:[ ]+R_LARCH_B16[ ]+.L1 +[ ]+4c:[ ]+6bffb4a4[ ]+bltu[ ]+\$a1,[ ]+\$a0,[ ]+-76[ ]+#[ ]+0[ ]+<.L1> +[ ]+4c:[ ]+R_LARCH_B16[ ]+.L1 +[ ]+50:[ ]+6fffb085[ ]+bgeu[ ]+\$a0,[ ]+\$a1,[ ]+-80[ ]+#[ ]+0[ ]+<.L1> +[ ]+50:[ ]+R_LARCH_B16[ ]+.L1 +[ ]+54:[ ]+6fffaca4[ ]+bgeu[ ]+\$a1,[ ]+\$a0,[ ]+-84[ ]+#[ ]+0[ ]+<.L1> +[ ]+54:[ ]+R_LARCH_B16[ ]+.L1 +[ ]+58:[ ]+4c000020[ ]+ret diff --git a/gas/testsuite/gas/loongarch/jmp_op.s b/gas/testsuite/gas/loongarch/jmp_op.s index 56f986784e2..9630ca82a6f 100644 --- a/gas/testsuite/gas/loongarch/jmp_op.s +++ b/gas/testsuite/gas/loongarch/jmp_op.s @@ -1,5 +1,5 @@ .L1: -nop +call36 .L1 bgtz $r4,.L1 bgez $r4,.L1 blez $r4,.L1 diff --git a/gas/testsuite/gas/loongarch/la_branch_relax_1.d b/gas/testsuite/gas/loongarch/la_branch_relax_1.d index 7984b6dfca5..b2c90641267 100644 --- a/gas/testsuite/gas/loongarch/la_branch_relax_1.d +++ b/gas/testsuite/gas/loongarch/la_branch_relax_1.d @@ -1,64 +1,58 @@ -#as: +#as: -mrelax #objdump: -dr -.*:[ ]+file format .* - - -Disassembly of section .text: - -0* <.L1>: -[ ]+... -[ ]+48d158:[ ]+5c00098d[ ]+bne[ ]+\$t0, \$t1, 8[ ]+# 48d160 <.L1\+0x48d160> -[ ]+48d15c:[ ]+532ea7ed[ ]+b[ ]+-4772188[ ]+# 0 <.L1> -[ ]+48d15c: R_LARCH_B26[ ]+.L1 -[ ]+48d160:[ ]+5800098d[ ]+beq[ ]+\$t0, \$t1, 8[ ]+# 48d168 <.L1\+0x48d168> -[ ]+48d164:[ ]+532e9fed[ ]+b[ ]+-4772196[ ]+# 0 <.L1> -[ ]+48d164: R_LARCH_B26[ ]+.L1 -[ ]+48d168:[ ]+6400098d[ ]+bge[ ]+\$t0, \$t1, 8[ ]+# 48d170 <.L1\+0x48d170> -[ ]+48d16c:[ ]+532e97ed[ ]+b[ ]+-4772204[ ]+# 0 <.L1> -[ ]+48d16c: R_LARCH_B26[ ]+.L1 -[ ]+48d170:[ ]+640009ac[ ]+bge[ ]+\$t1, \$t0, 8[ ]+# 48d178 <.L1\+0x48d178> -[ ]+48d174:[ ]+532e8fed[ ]+b[ ]+-4772212[ ]+# 0 <.L1> -[ ]+48d174: R_LARCH_B26[ ]+.L1 -[ ]+48d178:[ ]+64000980[ ]+bgez[ ]+\$t0, 8[ ]+# 48d180 <.L1\+0x48d180> -[ ]+48d17c:[ ]+532e87ed[ ]+b[ ]+-4772220[ ]+# 0 <.L1> -[ ]+48d17c: R_LARCH_B26[ ]+.L1 -[ ]+48d180:[ ]+6400080c[ ]+blez[ ]+\$t0, 8[ ]+# 48d188 <.L1\+0x48d188> -[ ]+48d184:[ ]+532e7fed[ ]+b[ ]+-4772228[ ]+# 0 <.L1> -[ ]+48d184: R_LARCH_B26[ ]+.L1 -[ ]+48d188:[ ]+600009ac[ ]+blt[ ]+\$t1, \$t0, 8[ ]+# 48d190 <.L1\+0x48d190> -[ ]+48d18c:[ ]+532e77ed[ ]+b[ ]+-4772236[ ]+# 0 <.L1> -[ ]+48d18c: R_LARCH_B26[ ]+.L1 -[ ]+48d190:[ ]+6000098d[ ]+blt[ ]+\$t0, \$t1, 8[ ]+# 48d198 <.L1\+0x48d198> -[ ]+48d194:[ ]+532e6fed[ ]+b[ ]+-4772244[ ]+# 0 <.L1> -[ ]+48d194: R_LARCH_B26[ ]+.L1 -[ ]+48d198:[ ]+6000080c[ ]+bgtz[ ]+\$t0, 8[ ]+# 48d1a0 <.L1\+0x48d1a0> -[ ]+48d19c:[ ]+532e67ed[ ]+b[ ]+-4772252[ ]+# 0 <.L1> -[ ]+48d19c: R_LARCH_B26[ ]+.L1 -[ ]+48d1a0:[ ]+60000980[ ]+bltz[ ]+\$t0, 8[ ]+# 48d1a8 <.L1\+0x48d1a8> -[ ]+48d1a4:[ ]+532e5fed[ ]+b[ ]+-4772260[ ]+# 0 <.L1> -[ ]+48d1a4: R_LARCH_B26[ ]+.L1 -[ ]+48d1a8:[ ]+6c00098d[ ]+bgeu[ ]+\$t0, \$t1, 8[ ]+# 48d1b0 <.L1\+0x48d1b0> -[ ]+48d1ac:[ ]+532e57ed[ ]+b[ ]+-4772268[ ]+# 0 <.L1> -[ ]+48d1ac: R_LARCH_B26[ ]+.L1 -[ ]+48d1b0:[ ]+6c0009ac[ ]+bgeu[ ]+\$t1, \$t0, 8[ ]+# 48d1b8 <.L1\+0x48d1b8> -[ ]+48d1b4:[ ]+532e4fed[ ]+b[ ]+-4772276[ ]+# 0 <.L1> -[ ]+48d1b4: R_LARCH_B26[ ]+.L1 -[ ]+48d1b8:[ ]+680009ac[ ]+bltu[ ]+\$t1, \$t0, 8[ ]+# 48d1c0 <.L1\+0x48d1c0> -[ ]+48d1bc:[ ]+532e47ed[ ]+b[ ]+-4772284[ ]+# 0 <.L1> -[ ]+48d1bc: R_LARCH_B26[ ]+.L1 -[ ]+48d1c0:[ ]+6800098d[ ]+bltu[ ]+\$t0, \$t1, 8[ ]+# 48d1c8 <.L1\+0x48d1c8> -[ ]+48d1c4:[ ]+532e3fed[ ]+b[ ]+-4772292[ ]+# 0 <.L1> -[ ]+48d1c4: R_LARCH_B26[ ]+.L1 -[ ]+48d1c8:[ ]+44000980[ ]+bnez[ ]+\$t0, 8[ ]+# 48d1d0 <.L1\+0x48d1d0> -[ ]+48d1cc:[ ]+532e37ed[ ]+b[ ]+-4772300[ ]+# 0 <.L1> -[ ]+48d1cc: R_LARCH_B26[ ]+.L1 -[ ]+48d1d0:[ ]+40000980[ ]+beqz[ ]+\$t0, 8[ ]+# 48d1d8 <.L1\+0x48d1d8> -[ ]+48d1d4:[ ]+532e2fed[ ]+b[ ]+-4772308[ ]+# 0 <.L1> -[ ]+48d1d4: R_LARCH_B26[ ]+.L1 -[ ]+48d1d8:[ ]+48000900[ ]+bcnez[ ]+\$fcc0, 8[ ]+# 48d1e0 <.L1\+0x48d1e0> -[ ]+48d1dc:[ ]+532e27ed[ ]+b[ ]+-4772316[ ]+# 0 <.L1> -[ ]+48d1dc: R_LARCH_B26[ ]+.L1 -[ ]+48d1e0:[ ]+48000800[ ]+bceqz[ ]+\$fcc0, 8[ ]+# 48d1e8 <.L1\+0x48d1e8> -[ ]+48d1e4:[ ]+532e1fed[ ]+b[ ]+-4772324[ ]+# 0 <.L1> -[ ]+48d1e4: R_LARCH_B26[ ]+.L1 +#... +[ ]+48d160:[ ]+5c00098d[ ]+bne[ ]+\$t0,[ ]+\$t1,[ ]+8[ ]+#[ ]+48d168[ ]+<.L1\+0x48d168> +[ ]+48d164:[ ]+532e9fed[ ]+b[ ]+-4772196[ ]+#[ ]+0[ ]+<.L1> +[ ]+48d164:[ ]+R_LARCH_B26[ ]+.L1 +[ ]+48d168:[ ]+5800098d[ ]+beq[ ]+\$t0,[ ]+\$t1,[ ]+8[ ]+#[ ]+48d170[ ]+<.L1\+0x48d170> +[ ]+48d16c:[ ]+532e97ed[ ]+b[ ]+-4772204[ ]+#[ ]+0[ ]+<.L1> +[ ]+48d16c:[ ]+R_LARCH_B26[ ]+.L1 +[ ]+48d170:[ ]+6400098d[ ]+bge[ ]+\$t0,[ ]+\$t1,[ ]+8[ ]+#[ ]+48d178[ ]+<.L1\+0x48d178> +[ ]+48d174:[ ]+532e8fed[ ]+b[ ]+-4772212[ ]+#[ ]+0[ ]+<.L1> +[ ]+48d174:[ ]+R_LARCH_B26[ ]+.L1 +[ ]+48d178:[ ]+640009ac[ ]+bge[ ]+\$t1,[ ]+\$t0,[ ]+8[ ]+#[ ]+48d180[ ]+<.L1\+0x48d180> +[ ]+48d17c:[ ]+532e87ed[ ]+b[ ]+-4772220[ ]+#[ ]+0[ ]+<.L1> +[ ]+48d17c:[ ]+R_LARCH_B26[ ]+.L1 +[ ]+48d180:[ ]+64000980[ ]+bgez[ ]+\$t0,[ ]+8[ ]+#[ ]+48d188[ ]+<.L1\+0x48d188> +[ ]+48d184:[ ]+532e7fed[ ]+b[ ]+-4772228[ ]+#[ ]+0[ ]+<.L1> +[ ]+48d184:[ ]+R_LARCH_B26[ ]+.L1 +[ ]+48d188:[ ]+6400080c[ ]+blez[ ]+\$t0,[ ]+8[ ]+#[ ]+48d190[ ]+<.L1\+0x48d190> +[ ]+48d18c:[ ]+532e77ed[ ]+b[ ]+-4772236[ ]+#[ ]+0[ ]+<.L1> +[ ]+48d18c:[ ]+R_LARCH_B26[ ]+.L1 +[ ]+48d190:[ ]+600009ac[ ]+blt[ ]+\$t1,[ ]+\$t0,[ ]+8[ ]+#[ ]+48d198[ ]+<.L1\+0x48d198> +[ ]+48d194:[ ]+532e6fed[ ]+b[ ]+-4772244[ ]+#[ ]+0[ ]+<.L1> +[ ]+48d194:[ ]+R_LARCH_B26[ ]+.L1 +[ ]+48d198:[ ]+6000098d[ ]+blt[ ]+\$t0,[ ]+\$t1,[ ]+8[ ]+#[ ]+48d1a0[ ]+<.L1\+0x48d1a0> +[ ]+48d19c:[ ]+532e67ed[ ]+b[ ]+-4772252[ ]+#[ ]+0[ ]+<.L1> +[ ]+48d19c:[ ]+R_LARCH_B26[ ]+.L1 +[ ]+48d1a0:[ ]+6000080c[ ]+bgtz[ ]+\$t0,[ ]+8[ ]+#[ ]+48d1a8[ ]+<.L1\+0x48d1a8> +[ ]+48d1a4:[ ]+532e5fed[ ]+b[ ]+-4772260[ ]+#[ ]+0[ ]+<.L1> +[ ]+48d1a4:[ ]+R_LARCH_B26[ ]+.L1 +[ ]+48d1a8:[ ]+60000980[ ]+bltz[ ]+\$t0,[ ]+8[ ]+#[ ]+48d1b0[ ]+<.L1\+0x48d1b0> +[ ]+48d1ac:[ ]+532e57ed[ ]+b[ ]+-4772268[ ]+#[ ]+0[ ]+<.L1> +[ ]+48d1ac:[ ]+R_LARCH_B26[ ]+.L1 +[ ]+48d1b0:[ ]+6c00098d[ ]+bgeu[ ]+\$t0,[ ]+\$t1,[ ]+8[ ]+#[ ]+48d1b8[ ]+<.L1\+0x48d1b8> +[ ]+48d1b4:[ ]+532e4fed[ ]+b[ ]+-4772276[ ]+#[ ]+0[ ]+<.L1> +[ ]+48d1b4:[ ]+R_LARCH_B26[ ]+.L1 +[ ]+48d1b8:[ ]+6c0009ac[ ]+bgeu[ ]+\$t1,[ ]+\$t0,[ ]+8[ ]+#[ ]+48d1c0[ ]+<.L1\+0x48d1c0> +[ ]+48d1bc:[ ]+532e47ed[ ]+b[ ]+-4772284[ ]+#[ ]+0[ ]+<.L1> +[ ]+48d1bc:[ ]+R_LARCH_B26[ ]+.L1 +[ ]+48d1c0:[ ]+680009ac[ ]+bltu[ ]+\$t1,[ ]+\$t0,[ ]+8[ ]+#[ ]+48d1c8[ ]+<.L1\+0x48d1c8> +[ ]+48d1c4:[ ]+532e3fed[ ]+b[ ]+-4772292[ ]+#[ ]+0[ ]+<.L1> +[ ]+48d1c4:[ ]+R_LARCH_B26[ ]+.L1 +[ ]+48d1c8:[ ]+6800098d[ ]+bltu[ ]+\$t0,[ ]+\$t1,[ ]+8[ ]+#[ ]+48d1d0[ ]+<.L1\+0x48d1d0> +[ ]+48d1cc:[ ]+532e37ed[ ]+b[ ]+-4772300[ ]+#[ ]+0[ ]+<.L1> +[ ]+48d1cc:[ ]+R_LARCH_B26[ ]+.L1 +[ ]+48d1d0:[ ]+44000980[ ]+bnez[ ]+\$t0,[ ]+8[ ]+#[ ]+48d1d8[ ]+<.L1\+0x48d1d8> +[ ]+48d1d4:[ ]+532e2fed[ ]+b[ ]+-4772308[ ]+#[ ]+0[ ]+<.L1> +[ ]+48d1d4:[ ]+R_LARCH_B26[ ]+.L1 +[ ]+48d1d8:[ ]+40000980[ ]+beqz[ ]+\$t0,[ ]+8[ ]+#[ ]+48d1e0[ ]+<.L1\+0x48d1e0> +[ ]+48d1dc:[ ]+532e27ed[ ]+b[ ]+-4772316[ ]+#[ ]+0[ ]+<.L1> +[ ]+48d1dc:[ ]+R_LARCH_B26[ ]+.L1 +[ ]+48d1e0:[ ]+48000900[ ]+bcnez[ ]+\$fcc0,[ ]+8[ ]+#[ ]+48d1e8[ ]+<.L1\+0x48d1e8> +[ ]+48d1e4:[ ]+532e1fed[ ]+b[ ]+-4772324[ ]+#[ ]+0[ ]+<.L1> +[ ]+48d1e4:[ ]+R_LARCH_B26[ ]+.L1 +[ ]+48d1e8:[ ]+48000800[ ]+bceqz[ ]+\$fcc0,[ ]+8[ ]+#[ ]+48d1f0[ ]+<.L1\+0x48d1f0> +[ ]+48d1ec:[ ]+532e17ed[ ]+b[ ]+-4772332[ ]+#[ ]+0[ ]+<.L1> +[ ]+48d1ec:[ ]+R_LARCH_B26[ ]+.L1 diff --git a/gas/testsuite/gas/loongarch/la_branch_relax_1.s b/gas/testsuite/gas/loongarch/la_branch_relax_1.s index 53288f25013..233a1774c41 100644 --- a/gas/testsuite/gas/loongarch/la_branch_relax_1.s +++ b/gas/testsuite/gas/loongarch/la_branch_relax_1.s @@ -1,8 +1,10 @@ # Instruction and Relocation generating tests +.text .L1: .fill 0x123456, 4, 0x0 + call .L1 # R_LARCH_B16 beq $r12, $r13, .L1 bne $r12, $r13, .L1 diff --git a/gas/testsuite/gas/loongarch/la_branch_relax_2.d b/gas/testsuite/gas/loongarch/la_branch_relax_2.d index 4a3c6384d9c..00357d10cb3 100644 --- a/gas/testsuite/gas/loongarch/la_branch_relax_2.d +++ b/gas/testsuite/gas/loongarch/la_branch_relax_2.d @@ -1,40 +1,28 @@ -#as: +#as: -mrelax #objdump: -dr -.*:[ ]+file format .* - - -Disassembly of section .text: - -0* <.L1>: -[ ]+... -[ ]+20000:[ ]+5a00018d[ ]+beq[ ]+\$t0, \$t1, -131072[ ]+# 0 <.L1> -[ ]+20000: R_LARCH_B16[ ]+.L1 -[ ]+20004:[ ]+5c00098d[ ]+bne[ ]+\$t0, \$t1, 8[ ]+# 2000c <.L1\+0x2000c> -[ ]+20008:[ ]+51fffbff[ ]+b[ ]+-131080[ ]+# 0 <.L1> -[ ]+20008: R_LARCH_B26[ ]+.L1 -[ ]+2000c:[ ]+5c00098d[ ]+bne[ ]+\$t0, \$t1, 8[ ]+# 20014 <.L1\+0x20014> -[ ]+20010:[ ]+52000000[ ]+b[ ]+131072[ ]+# 40010 <.L2> -[ ]+20010: R_LARCH_B26[ ]+.L2 -[ ]+20014:[ ]+59fffd8d[ ]+beq[ ]+\$t0, \$t1, 131068[ ]+# 40010 <.L2> -[ ]+20014: R_LARCH_B16[ ]+.L2 -[ ]+... -0*40010 <.L2>: -[ ]+... -[ ]+440010:[ ]+40000190[ ]+beqz[ ]+\$t0, -4194304[ ]+# 40010 <.L2> -[ ]+440010: R_LARCH_B21[ ]+.L2 -[ ]+440014:[ ]+44000980[ ]+bnez[ ]+\$t0, 8[ ]+# 44001c <.L2\+0x40000c> -[ ]+440018:[ ]+53fffbef[ ]+b[ ]+-4194312[ ]+# 40010 <.L2> -[ ]+440018: R_LARCH_B26[ ]+.L2 -[ ]+44001c:[ ]+44000980[ ]+bnez[ ]+\$t0, 8[ ]+# 440024 <.L2\+0x400014> -[ ]+440020:[ ]+50000010[ ]+b[ ]+4194304[ ]+# 840020 <.L3> -[ ]+440020: R_LARCH_B26[ ]+.L3 -[ ]+440024:[ ]+43fffd8f[ ]+beqz[ ]+\$t0, 4194300[ ]+# 840020 <.L3> -[ ]+440024: R_LARCH_B21[ ]+.L3 -[ ]+... -0*840020 <.L3>: -[ ]+840020:[ ]+5800018d[ ]+beq[ ]+\$t0, \$t1, 0[ ]+# 840020 <.L3> -[ ]+840020: R_LARCH_B16[ ]+.L4 -0*840024 <.L5>: -[ ]+840024:[ ]+40000180[ ]+beqz[ ]+\$t0, 0[ ]+# 840024 <.L5> -[ ]+840024: R_LARCH_B21[ ]+.L5 +#... +.*beq.* +.*R_LARCH_B16.* +.*bne.* +.*b .* +.*R_LARCH_B26.* +.*bne.* +.*b .* +.*R_LARCH_B26.* +.*beq.* +.*R_LARCH_B16.* +#... +.*beqz.* +.*R_LARCH_B21.* +.*bnez.* +.*b .* +.*R_LARCH_B26.* +.*bnez.* +.*b .* +.*R_LARCH_B26.* +.*beqz.* +.*R_LARCH_B21.* +#... +.*beq.*t0.*t1, 0.* +.*beqz.*t0, 0.* diff --git a/gas/testsuite/gas/loongarch/la_branch_relax_2.s b/gas/testsuite/gas/loongarch/la_branch_relax_2.s index 3e6c5534315..76ccc043a41 100644 --- a/gas/testsuite/gas/loongarch/la_branch_relax_2.s +++ b/gas/testsuite/gas/loongarch/la_branch_relax_2.s @@ -1,22 +1,27 @@ # Immediate boundary value tests +.text .L1: - .fill 0x8000, 4, 0 + .fill 0x7ffe, 4, 0 + call .L1 beq $r12, $r13, .L1 # min imm -0x20000 - beq $r12, $r13, .L1 # out of range - beq $r12, $r13, .L2 # out of range + beq $r12, $r13, .L1 # out of range, chang to bne+b + beq $r12, $r13, .L2 # out of range, change to bne+b beq $r12, $r13, .L2 # max imm 0x1fffc - .fill 0x7ffe, 4, 0 + call .L1 + .fill 0x7ffc, 4, 0 .L2: - .fill 0x100000, 4, 0 + .fill 0xffffe, 4, 0 + call .L1 beqz $r12, .L2 # min imm -0x400000 - beqz $r12, .L2 # out of range - beqz $r12, .L3 # out of range + beqz $r12, .L2 # out of range, change to bnez+b + beqz $r12, .L3 # out of range, change to bnez+b beqz $r12, .L3 # max imm 0x3ffffc - .fill 0xffffe, 4, 0 + call .L1 + .fill 0xffffc, 4, 0 .L3: -# 0 imm +# 0 imm: branch target is current pc .L4: beq $r12, $r13, .L4 .L5: diff --git a/gas/testsuite/gas/loongarch/relax-uleb128.d b/gas/testsuite/gas/loongarch/relax-uleb128.d new file mode 100644 index 00000000000..720caf22e00 --- /dev/null +++ b/gas/testsuite/gas/loongarch/relax-uleb128.d @@ -0,0 +1,9 @@ +#source: relax-uleb128.s +#as: -mrelax +#readelf: -rW + +#... +.*R_LARCH_ADD_ULEB128.*10.*L2.* +.*R_LARCH_SUB_ULEB128.*00.*L1.* +.*R_LARCH_ADD_ULEB128.*1c.*L3.* +.*R_LARCH_SUB_ULEB128.*10.*L2.* diff --git a/gas/testsuite/gas/loongarch/relax-uleb128.s b/gas/testsuite/gas/loongarch/relax-uleb128.s new file mode 100644 index 00000000000..cc5ffe48520 --- /dev/null +++ b/gas/testsuite/gas/loongarch/relax-uleb128.s @@ -0,0 +1,18 @@ +.text +.L1: + nop + call .L1 + nop +.L2: + nop + .p2align 3 + nop +.L3: + nop +.L4: + nop + +.data + .uleb128 .L2-.L1 # Emit add/sub uleb128 relocs. + .uleb128 .L3-.L2 # Emit add/sub uleb128 relocs. + .uleb128 .L4-.L3 # Not emit add/sub uleb128 relocs. diff --git a/gas/testsuite/gas/loongarch/uleb128.d b/gas/testsuite/gas/loongarch/uleb128.d deleted file mode 100644 index 1a6730f3aab..00000000000 --- a/gas/testsuite/gas/loongarch/uleb128.d +++ /dev/null @@ -1,36 +0,0 @@ -#as: -#objdump: -Dr -#skip: loongarch32-*-* - -.*:[ ]+file format .* - - -Disassembly of section .data: - -00000000.* <L1-0x5>: -[ ]*0:[ ]*80030201[ ]*\.word[ ]*0x80030201 -[ ]*3:[ ]*R_LARCH_ADD_ULEB128[ ]*L2 -[ ]*3:[ ]*R_LARCH_SUB_ULEB128[ ]*L1 -[ ]*\.\.\. - -[ ]*0000000000000005[ ]*<L1>: -[ ]*\.\.\. -[ ]*81:[ ]*ff040000[ ]*\.word[ ]*0xff040000 -[ ]*85:[ ]*cacop[ ]*0x1f,[ ]*\$t3,[ ]*1 - -[ ]*0000000000000086[ ]*<L2>: -[ ]*86:[ ]*07060005[ ]*\.word[ ]*0x07060005 -[ ]*8a:[ ]*x86inc\.b[ ]*\$a0 -[ ]*8a:[ ]*R_LARCH_ADD_ULEB128[ ]*L4 -[ ]*8a:[ ]*R_LARCH_SUB_ULEB128[ ]*L3 - -[ ]*000000000000008d[ ]*<L3>: -[ ]*\.\.\. -[ ]*4089:[ ]*ff080000[ ]*\.word[ ]*0xff080000 -[ ]*408d:[ ]*\.word[ ]*0x09ffffff - -[ ]*0000000000004090[ ]*<L4>: -[ ]*4090:[ ]*09090909[ ]*\.word[ ]*0x09090909 -[ ]*4094:[ ]*09090909[ ]*\.word[ ]*0x09090909 -[ ]*4098:[ ]*09090909[ ]*\.word[ ]*0x09090909 -[ ]*409c:[ ]*09090909[ ]*\.word[ ]*0x09090909 diff --git a/gas/testsuite/gas/loongarch/uleb128.s b/gas/testsuite/gas/loongarch/uleb128.s deleted file mode 100644 index 104a8956bd6..00000000000 --- a/gas/testsuite/gas/loongarch/uleb128.s +++ /dev/null @@ -1,20 +0,0 @@ - .data - .byte 1, 2, 3 - .uleb128 L2 - L1 -L1: - .space 128 - 2 - .byte 4 - .p2align 1, 0xff -L2: - .byte 5 - - .p2align 2 - .byte 6, 7 - .uleb128 L4 - L3 -L3: - .space 128*128 - 2 - .byte 8 - .p2align 2, 0xff -L4: - .byte 9 - .p2align 4, 9 diff --git a/ld/testsuite/ld-loongarch-elf/jmp_op.d b/ld/testsuite/ld-loongarch-elf/jmp_op.d deleted file mode 100644 index 231d780923e..00000000000 --- a/ld/testsuite/ld-loongarch-elf/jmp_op.d +++ /dev/null @@ -1,50 +0,0 @@ -#as: -#objdump: -dr -M no-aliases - -.*:[ ]+file format .* - - -Disassembly of section .text: - -00000000.* <.L1>: -[ ]+0:[ ]+03400000[ ]+andi[ ]+\$zero,[ ]+\$zero,[ ]+0x0 -[ ]+4:[ ]+63fffc04[ ]+blt[ ]+\$zero,[ ]+\$a0,[ ]+-4[ ]+#[ ]+0[ ]+<.L1> -[ ]+4:[ ]+R_LARCH_B16[ ]+.L1 -[ ]+8:[ ]+67fff880[ ]+bge[ ]+\$a0,[ ]+\$zero,[ ]+-8[ ]+#[ ]+0[ ]+<.L1> -[ ]+8:[ ]+R_LARCH_B16[ ]+.L1 -[ ]+c:[ ]+67fff404[ ]+bge[ ]+\$zero,[ ]+\$a0,[ ]+-12[ ]+#[ ]+0[ ]+<.L1> -[ ]+c:[ ]+R_LARCH_B16[ ]+.L1 -[ ]+10:[ ]+43fff09f[ ]+beqz[ ]+\$a0,[ ]+-16[ ]+#[ ]+0[ ]+<.L1> -[ ]+10:[ ]+R_LARCH_B21[ ]+.L1 -[ ]+14:[ ]+47ffec9f[ ]+bnez[ ]+\$a0,[ ]+-20[ ]+#[ ]+0[ ]+<.L1> -[ ]+14:[ ]+R_LARCH_B21[ ]+.L1 -[ ]+18:[ ]+4bffe81f[ ]+bceqz[ ]+\$fcc0,[ ]+-24[ ]+#[ ]+0[ ]+<.L1> -[ ]+18:[ ]+R_LARCH_B21[ ]+.L1 -[ ]+1c:[ ]+4bffe51f[ ]+bcnez[ ]+\$fcc0,[ ]+-28[ ]+#[ ]+0[ ]+<.L1> -[ ]+1c:[ ]+R_LARCH_B21[ ]+.L1 -[ ]+20:[ ]+4c000080[ ]+jirl[ ]+\$zero,[ ]+\$a0,[ ]+0 -[ ]+24:[ ]+53ffdfff[ ]+b[ ]+-36[ ]+#[ ]+0[ ]+<.L1> -[ ]+24:[ ]+R_LARCH_B26[ ]+.L1 -[ ]+28:[ ]+57ffdbff[ ]+bl[ ]+-40[ ]+#[ ]+0[ ]+<.L1> -[ ]+28:[ ]+R_LARCH_B26[ ]+.L1 -[ ]+2c:[ ]+5bffd485[ ]+beq[ ]+\$a0,[ ]+\$a1,[ ]+-44[ ]+#[ ]+0[ ]+<.L1> -[ ]+2c:[ ]+R_LARCH_B16[ ]+.L1 -[ ]+30:[ ]+5fffd085[ ]+bne[ ]+\$a0,[ ]+\$a1,[ ]+-48[ ]+#[ ]+0[ ]+<.L1> -[ ]+30:[ ]+R_LARCH_B16[ ]+.L1 -[ ]+34:[ ]+63ffcc85[ ]+blt[ ]+\$a0,[ ]+\$a1,[ ]+-52[ ]+#[ ]+0[ ]+<.L1> -[ ]+34:[ ]+R_LARCH_B16[ ]+.L1 -[ ]+38:[ ]+63ffc8a4[ ]+blt[ ]+\$a1,[ ]+\$a0,[ ]+-56[ ]+#[ ]+0[ ]+<.L1> -[ ]+38:[ ]+R_LARCH_B16[ ]+.L1 -[ ]+3c:[ ]+67ffc485[ ]+bge[ ]+\$a0,[ ]+\$a1,[ ]+-60[ ]+#[ ]+0[ ]+<.L1> -[ ]+3c:[ ]+R_LARCH_B16[ ]+.L1 -[ ]+40:[ ]+67ffc0a4[ ]+bge[ ]+\$a1,[ ]+\$a0,[ ]+-64[ ]+#[ ]+0[ ]+<.L1> -[ ]+40:[ ]+R_LARCH_B16[ ]+.L1 -[ ]+44:[ ]+6bffbc85[ ]+bltu[ ]+\$a0,[ ]+\$a1,[ ]+-68[ ]+#[ ]+0[ ]+<.L1> -[ ]+44:[ ]+R_LARCH_B16[ ]+.L1 -[ ]+48:[ ]+6bffb8a4[ ]+bltu[ ]+\$a1,[ ]+\$a0,[ ]+-72[ ]+#[ ]+0[ ]+<.L1> -[ ]+48:[ ]+R_LARCH_B16[ ]+.L1 -[ ]+4c:[ ]+6fffb485[ ]+bgeu[ ]+\$a0,[ ]+\$a1,[ ]+-76[ ]+#[ ]+0[ ]+<.L1> -[ ]+4c:[ ]+R_LARCH_B16[ ]+.L1 -[ ]+50:[ ]+6fffb0a4[ ]+bgeu[ ]+\$a1,[ ]+\$a0,[ ]+-80[ ]+#[ ]+0[ ]+<.L1> -[ ]+50:[ ]+R_LARCH_B16[ ]+.L1 -[ ]+54:[ ]+4c000020[ ]+jirl[ ]+\$zero,[ ]+\$ra,[ ]+0 diff --git a/ld/testsuite/ld-loongarch-elf/jmp_op.s b/ld/testsuite/ld-loongarch-elf/jmp_op.s deleted file mode 100644 index 56f986784e2..00000000000 --- a/ld/testsuite/ld-loongarch-elf/jmp_op.s +++ /dev/null @@ -1,23 +0,0 @@ -.L1: -nop -bgtz $r4,.L1 -bgez $r4,.L1 -blez $r4,.L1 -beqz $r4,.L1 -bnez $r4,.L1 -bceqz $fcc0,.L1 -bcnez $fcc0,.L1 -jr $r4 -b .L1 -bl .L1 -beq $r4,$r5,.L1 -bne $r4,$r5,.L1 -blt $r4,$r5,.L1 -bgt $r4,$r5,.L1 -bge $r4,$r5,.L1 -ble $r4,$r5,.L1 -bltu $r4,$r5,.L1 -bgtu $r4,$r5,.L1 -bgeu $r4,$r5,.L1 -bleu $r4,$r5,.L1 -ret diff --git a/ld/testsuite/ld-loongarch-elf/ld-loongarch-elf.exp b/ld/testsuite/ld-loongarch-elf/ld-loongarch-elf.exp index d702e5138c6..ce1bf651b5a 100644 --- a/ld/testsuite/ld-loongarch-elf/ld-loongarch-elf.exp +++ b/ld/testsuite/ld-loongarch-elf/ld-loongarch-elf.exp @@ -20,7 +20,6 @@ # if [istarget "loongarch64-*-*"] { - run_dump_test "jmp_op" run_dump_test "macro_op" run_dump_test "syscall" run_dump_test "disas-jirl" @@ -58,7 +57,6 @@ if [istarget "loongarch64-*-*"] { } if [istarget "loongarch32-*-*"] { - run_dump_test "jmp_op" run_dump_test "macro_op_32" run_dump_test "syscall" run_dump_test "disas-jirl-32"