summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaciej W. Rozycki <macro@imgtec.com>2016-07-26 17:50:55 +0100
committerMaciej W. Rozycki <macro@imgtec.com>2016-07-26 20:00:49 +0100
commit8484fb75874eb9ef35710ac6579433f062ddba18 (patch)
treebfeecae7f1efaa3b56eefccde04849ebbf22b919
parent54806ffa85643c3a1ee721d5c3f5586d32f86ee1 (diff)
downloadbinutils-gdb-8484fb75874eb9ef35710ac6579433f062ddba18.tar.gz
MIPS/GAS: Respect the `insn32' mode in branch relaxation
Complement: commit 833794fc12d98139fc33f6b0b85feb03471007b7 Author: Maciej W. Rozycki <macro@linux-mips.org> Date: Tue Jun 25 18:02:34 2013 +0000 <https://sourceware.org/ml/binutils/2013-06/msg00104.html>, ("microMIPS insn32 mode support"), and fix an issue with microMIPS branch relaxation producing 16-bit instructions in the `insn32' mode. Use equivalent 32-bit instruction sequences. gas/ * config/tc-mips.c (RELAX_MICROMIPS_ENCODE): Add `insn32' flag. (RELAX_MICROMIPS_INSN32): New macro. (RELAX_MICROMIPS_UNCOND, RELAX_MICROMIPS_COMPACT) (RELAX_MICROMIPS_LINK, RELAX_MICROMIPS_RELAX32) (RELAX_MICROMIPS_TOOFAR16, RELAX_MICROMIPS_MARK_TOOFAR16) (RELAX_MICROMIPS_CLEAR_TOOFAR16, RELAX_MICROMIPS_TOOFAR32) (RELAX_MICROMIPS_MARK_TOOFAR32, RELAX_MICROMIPS_CLEAR_TOOFAR32): Shift bits. (append_insn): Record `mips_opts.insn32' with relaxed microMIPS branches. (relaxed_micromips_32bit_branch_length): Handle the `insn32' mode. (md_convert_frag): Likewise. * testsuite/gas/mips/micromips-branch-relax.s: Add `insn32' conditionals. * testsuite/gas/mips/micromips-branch-relax.l: Update line numbers accordingly. * testsuite/gas/mips/micromips-branch-relax-pic.l: Likewise. * testsuite/gas/mips/micromips-branch-relax-insn32.d: New test. * testsuite/gas/mips/micromips-branch-relax-insn32-pic.d: New test. * testsuite/gas/mips/micromips-branch-relax-insn32.l: New stderr output. * testsuite/gas/mips/micromips-branch-relax-insn32-pic.l: New stderr output. * testsuite/gas/mips/mips.exp: Run the new tests.
-rw-r--r--gas/ChangeLog29
-rw-r--r--gas/config/tc-mips.c130
-rw-r--r--gas/testsuite/gas/mips/micromips-branch-relax-insn32-pic.d572
-rw-r--r--gas/testsuite/gas/mips/micromips-branch-relax-insn32-pic.l47
-rw-r--r--gas/testsuite/gas/mips/micromips-branch-relax-insn32.d433
-rw-r--r--gas/testsuite/gas/mips/micromips-branch-relax-insn32.l45
-rw-r--r--gas/testsuite/gas/mips/micromips-branch-relax-pic.l22
-rw-r--r--gas/testsuite/gas/mips/micromips-branch-relax.l20
-rw-r--r--gas/testsuite/gas/mips/micromips-branch-relax.s14
-rw-r--r--gas/testsuite/gas/mips/mips.exp2
10 files changed, 1248 insertions, 66 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 7fc57e82cca..617fccdb1cb 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,32 @@
+2016-07-26 Maciej W. Rozycki <macro@imgtec.com>
+
+ * config/tc-mips.c (RELAX_MICROMIPS_ENCODE): Add `insn32' flag.
+ (RELAX_MICROMIPS_INSN32): New macro.
+ (RELAX_MICROMIPS_UNCOND, RELAX_MICROMIPS_COMPACT)
+ (RELAX_MICROMIPS_LINK, RELAX_MICROMIPS_RELAX32)
+ (RELAX_MICROMIPS_TOOFAR16, RELAX_MICROMIPS_MARK_TOOFAR16)
+ (RELAX_MICROMIPS_CLEAR_TOOFAR16, RELAX_MICROMIPS_TOOFAR32)
+ (RELAX_MICROMIPS_MARK_TOOFAR32, RELAX_MICROMIPS_CLEAR_TOOFAR32):
+ Shift bits.
+ (append_insn): Record `mips_opts.insn32' with relaxed microMIPS
+ branches.
+ (relaxed_micromips_32bit_branch_length): Handle the `insn32'
+ mode.
+ (md_convert_frag): Likewise.
+ * testsuite/gas/mips/micromips-branch-relax.s: Add `insn32'
+ conditionals.
+ * testsuite/gas/mips/micromips-branch-relax.l: Update line
+ numbers accordingly.
+ * testsuite/gas/mips/micromips-branch-relax-pic.l: Likewise.
+ * testsuite/gas/mips/micromips-branch-relax-insn32.d: New test.
+ * testsuite/gas/mips/micromips-branch-relax-insn32-pic.d: New
+ test.
+ * testsuite/gas/mips/micromips-branch-relax-insn32.l: New
+ stderr output.
+ * testsuite/gas/mips/micromips-branch-relax-insn32-pic.l: New
+ stderr output.
+ * testsuite/gas/mips/mips.exp: Run the new tests.
+
2016-07-21 H.J. Lu <hongjiu.lu@intel.com>
* configure: Regenerated.
diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c
index daa23d892f9..5768f186b07 100644
--- a/gas/config/tc-mips.c
+++ b/gas/config/tc-mips.c
@@ -1151,37 +1151,41 @@ static int mips_relax_branch;
The information we store for this type of relaxation is the argument
code found in the opcode file for this relocation, the register
- selected as the assembler temporary, whether the branch is
- unconditional, whether it is compact, whether it stores the link
- address implicitly in $ra, whether relaxation of out-of-range 32-bit
- branches to a sequence of instructions is enabled, and whether the
- displacement of a branch is too large to fit as an immediate argument
- of a 16-bit and a 32-bit branch, respectively. */
-#define RELAX_MICROMIPS_ENCODE(type, at, uncond, compact, link, \
+ selected as the assembler temporary, whether in the 32-bit
+ instruction mode, whether the branch is unconditional, whether it is
+ compact, whether it stores the link address implicitly in $ra,
+ whether relaxation of out-of-range 32-bit branches to a sequence of
+ instructions is enabled, and whether the displacement of a branch is
+ too large to fit as an immediate argument of a 16-bit and a 32-bit
+ branch, respectively. */
+#define RELAX_MICROMIPS_ENCODE(type, at, insn32, \
+ uncond, compact, link, \
relax32, toofar16, toofar32) \
(0x40000000 \
| ((type) & 0xff) \
| (((at) & 0x1f) << 8) \
- | ((uncond) ? 0x2000 : 0) \
- | ((compact) ? 0x4000 : 0) \
- | ((link) ? 0x8000 : 0) \
- | ((relax32) ? 0x10000 : 0) \
- | ((toofar16) ? 0x20000 : 0) \
- | ((toofar32) ? 0x40000 : 0))
+ | ((insn32) ? 0x2000 : 0) \
+ | ((uncond) ? 0x4000 : 0) \
+ | ((compact) ? 0x8000 : 0) \
+ | ((link) ? 0x10000 : 0) \
+ | ((relax32) ? 0x20000 : 0) \
+ | ((toofar16) ? 0x40000 : 0) \
+ | ((toofar32) ? 0x80000 : 0))
#define RELAX_MICROMIPS_P(i) (((i) & 0xc0000000) == 0x40000000)
#define RELAX_MICROMIPS_TYPE(i) ((i) & 0xff)
#define RELAX_MICROMIPS_AT(i) (((i) >> 8) & 0x1f)
-#define RELAX_MICROMIPS_UNCOND(i) (((i) & 0x2000) != 0)
-#define RELAX_MICROMIPS_COMPACT(i) (((i) & 0x4000) != 0)
-#define RELAX_MICROMIPS_LINK(i) (((i) & 0x8000) != 0)
-#define RELAX_MICROMIPS_RELAX32(i) (((i) & 0x10000) != 0)
-
-#define RELAX_MICROMIPS_TOOFAR16(i) (((i) & 0x20000) != 0)
-#define RELAX_MICROMIPS_MARK_TOOFAR16(i) ((i) | 0x20000)
-#define RELAX_MICROMIPS_CLEAR_TOOFAR16(i) ((i) & ~0x20000)
-#define RELAX_MICROMIPS_TOOFAR32(i) (((i) & 0x40000) != 0)
-#define RELAX_MICROMIPS_MARK_TOOFAR32(i) ((i) | 0x40000)
-#define RELAX_MICROMIPS_CLEAR_TOOFAR32(i) ((i) & ~0x40000)
+#define RELAX_MICROMIPS_INSN32(i) (((i) & 0x2000) != 0)
+#define RELAX_MICROMIPS_UNCOND(i) (((i) & 0x4000) != 0)
+#define RELAX_MICROMIPS_COMPACT(i) (((i) & 0x8000) != 0)
+#define RELAX_MICROMIPS_LINK(i) (((i) & 0x10000) != 0)
+#define RELAX_MICROMIPS_RELAX32(i) (((i) & 0x20000) != 0)
+
+#define RELAX_MICROMIPS_TOOFAR16(i) (((i) & 0x40000) != 0)
+#define RELAX_MICROMIPS_MARK_TOOFAR16(i) ((i) | 0x40000)
+#define RELAX_MICROMIPS_CLEAR_TOOFAR16(i) ((i) & ~0x40000)
+#define RELAX_MICROMIPS_TOOFAR32(i) (((i) & 0x80000) != 0)
+#define RELAX_MICROMIPS_MARK_TOOFAR32(i) ((i) | 0x80000)
+#define RELAX_MICROMIPS_CLEAR_TOOFAR32(i) ((i) & ~0x80000)
/* Sign-extend 16-bit value X. */
#define SEXT_16BIT(X) ((((X) + 0x8000) & 0xffff) - 0x8000)
@@ -7302,7 +7306,8 @@ append_insn (struct mips_cl_insn *ip, expressionS *address_expr,
relaxed_branch = TRUE;
length32 = relaxed_micromips_32bit_branch_length (NULL, NULL, uncond);
add_relaxed_insn (ip, relax32 ? length32 : 4, relax16 ? 2 : 4,
- RELAX_MICROMIPS_ENCODE (type, AT, uncond, compact, al,
+ RELAX_MICROMIPS_ENCODE (type, AT, mips_opts.insn32,
+ uncond, compact, al,
relax32, 0, 0),
address_expr->X_add_symbol,
address_expr->X_add_number);
@@ -17228,14 +17233,19 @@ relaxed_micromips_32bit_branch_length (fragS *fragp, asection *sec, int update)
{
bfd_boolean compact_known = fragp != NULL;
bfd_boolean compact = FALSE;
+ bfd_boolean insn32 = TRUE;
bfd_boolean uncond;
+ int short_insn_size;
- if (compact_known)
- compact = RELAX_MICROMIPS_COMPACT (fragp->fr_subtype);
if (fragp)
- uncond = RELAX_MICROMIPS_UNCOND (fragp->fr_subtype);
+ {
+ compact = RELAX_MICROMIPS_COMPACT (fragp->fr_subtype);
+ uncond = RELAX_MICROMIPS_UNCOND (fragp->fr_subtype);
+ insn32 = RELAX_MICROMIPS_INSN32 (fragp->fr_subtype);
+ }
else
uncond = update < 0;
+ short_insn_size = insn32 ? 4 : 2;
/* If label is out of range, we turn branch <br>:
@@ -17245,11 +17255,12 @@ relaxed_micromips_32bit_branch_length (fragS *fragp, asection *sec, int update)
into:
j label # 4 bytes
- nop # 2 bytes if compact && !PIC
+ nop # 2/4 bytes if
+ # compact && (!PIC || insn32)
0:
*/
- if (mips_pic == NO_PIC && (!compact_known || compact))
- length += 2;
+ if ((mips_pic == NO_PIC || insn32) && (!compact_known || compact))
+ length += short_insn_size;
/* If assembling PIC code, we further turn:
@@ -17259,18 +17270,18 @@ relaxed_micromips_32bit_branch_length (fragS *fragp, asection *sec, int update)
lw/ld at, %got(label)(gp) # 4 bytes
d/addiu at, %lo(label) # 4 bytes
- jr/c at # 2 bytes
+ jr/c at # 2/4 bytes
*/
if (mips_pic != NO_PIC)
- length += 6;
+ length += 4 + short_insn_size;
/* If branch <br> is conditional, we prepend negated branch <brneg>:
<brneg> 0f # 4 bytes
- nop # 2 bytes if !compact
+ nop # 2/4 bytes if !compact
*/
if (!uncond)
- length += (compact_known && compact) ? 4 : 6;
+ length += (compact_known && compact) ? 4 : 4 + short_insn_size;
}
return length;
@@ -17835,6 +17846,7 @@ md_convert_frag (bfd *abfd ATTRIBUTE_UNUSED, segT asec, fragS *fragp)
{
char *buf = fragp->fr_literal + fragp->fr_fix;
bfd_boolean compact = RELAX_MICROMIPS_COMPACT (fragp->fr_subtype);
+ bfd_boolean insn32 = RELAX_MICROMIPS_INSN32 (fragp->fr_subtype);
bfd_boolean al = RELAX_MICROMIPS_LINK (fragp->fr_subtype);
int type = RELAX_MICROMIPS_TYPE (fragp->fr_subtype);
bfd_boolean short_ds;
@@ -17982,9 +17994,15 @@ md_convert_frag (bfd *abfd ATTRIBUTE_UNUSED, segT asec, fragS *fragp)
/* Branch over the jump. */
buf = write_compressed_insn (buf, insn, 4);
+
if (!compact)
- /* nop */
- buf = write_compressed_insn (buf, 0x0c00, 2);
+ {
+ /* nop */
+ if (insn32)
+ buf = write_compressed_insn (buf, 0x00000000, 4);
+ else
+ buf = write_compressed_insn (buf, 0x0c00, 2);
+ }
}
if (mips_pic == NO_PIC)
@@ -18000,15 +18018,19 @@ md_convert_frag (bfd *abfd ATTRIBUTE_UNUSED, segT asec, fragS *fragp)
fixp->fx_line = fragp->fr_line;
buf = write_compressed_insn (buf, insn, 4);
+
if (compact)
- /* nop */
- buf = write_compressed_insn (buf, 0x0c00, 2);
+ {
+ /* nop */
+ if (insn32)
+ buf = write_compressed_insn (buf, 0x00000000, 4);
+ else
+ buf = write_compressed_insn (buf, 0x0c00, 2);
+ }
}
else
{
unsigned long at = RELAX_MICROMIPS_AT (fragp->fr_subtype);
- unsigned long jalr = short_ds ? 0x45e0 : 0x45c0; /* jalr/s */
- unsigned long jr = compact ? 0x45a0 : 0x4580; /* jr/c */
/* lw/ld $at, <sym>($gp) R_MICROMIPS_GOT16 */
insn = HAVE_64BIT_ADDRESSES ? 0xdc1c0000 : 0xfc1c0000;
@@ -18038,11 +18060,29 @@ md_convert_frag (bfd *abfd ATTRIBUTE_UNUSED, segT asec, fragS *fragp)
buf = write_compressed_insn (buf, insn, 4);
- /* jr/jrc/jalr/jalrs $at */
- insn = al ? jalr : jr;
- insn |= at << MICROMIPSOP_SH_MJ;
+ if (insn32)
+ {
+ /* jr/jalr $at */
+ insn = 0x00000f3c | (al ? RA : ZERO) << MICROMIPSOP_SH_RT;
+ insn |= at << MICROMIPSOP_SH_RS;
+
+ buf = write_compressed_insn (buf, insn, 4);
- buf = write_compressed_insn (buf, insn, 2);
+ if (compact)
+ /* nop */
+ buf = write_compressed_insn (buf, 0x00000000, 4);
+ }
+ else
+ {
+ /* jr/jrc/jalr/jalrs $at */
+ unsigned long jalr = short_ds ? 0x45e0 : 0x45c0; /* jalr/s */
+ unsigned long jr = compact ? 0x45a0 : 0x4580; /* jr/c */
+
+ insn = al ? jalr : jr;
+ insn |= at << MICROMIPSOP_SH_MJ;
+
+ buf = write_compressed_insn (buf, insn, 2);
+ }
}
gas_assert (buf == fragp->fr_literal + fragp->fr_fix);
diff --git a/gas/testsuite/gas/mips/micromips-branch-relax-insn32-pic.d b/gas/testsuite/gas/mips/micromips-branch-relax-insn32-pic.d
new file mode 100644
index 00000000000..07551e3abb9
--- /dev/null
+++ b/gas/testsuite/gas/mips/micromips-branch-relax-insn32-pic.d
@@ -0,0 +1,572 @@
+#objdump: -dr --show-raw-insn
+#name: Relax microMIPS branches (insn32 mode, pic)
+#as: -mips32r2 -32 -relax-branch -KPIC -minsn32 --defsym insn32=1
+#stderr: micromips-branch-relax-insn32-pic.l
+#source: micromips-branch-relax.s
+
+.*: +file format .*mips.*
+
+Disassembly of section \.text:
+
+[0-9a-f]+ <test>:
+[ 0-9a-f]+: 9400 fffe b [0-9a-f]+ <.*>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 9403 fffe beqz v1,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: b403 fffe bnez v1,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 9400 fffe b [0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 40e0 fffe bc [0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 4060 fffe bal [0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 9403 fffe beqz v1,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: b403 fffe bnez v1,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 9400 fffe b [0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 40e0 fffe bc [0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 4060 fffe bal [0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 9403 fffe beqz v1,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: b403 fffe bnez v1,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 9400 fffe b [0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 40e0 fffe bc [0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 4060 fffe bal [0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 9403 fffe beqz v1,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: b403 fffe bnez v1,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: ff3c 0001 lw t9,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3339 04fb addiu t9,t9,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 03f9 0f3c jalr t9
+[ ]*[0-9a-f]+: R_MICROMIPS_JALR test3
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 03e1 0f3c jalr at
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: b483 fffe bne v1,a0,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 9483 fffe beq v1,a0,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 4043 fffe bgez v1,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 4003 fffe bltz v1,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 40d4 fffe bgtz s4,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 4094 fffe blez s4,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 40a3 fffe bnezc v1,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+[ 0-9a-f]+: 0000 0000 nop
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 40e3 fffe beqzc v1,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+[ 0-9a-f]+: 0000 0000 nop
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 401e fffe bltz s8,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 03e1 0f3c jalr at
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 405e fffe bgez s8,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 03e1 0f3c jalr at
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 43a0 fffe bc1t [0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 4380 fffe bc1f [0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 42a0 fffe bc2t [0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 4280 fffe bc2f [0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: b483 fffe bne v1,a0,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: b403 fffe bnez v1,[0-9a-f]+ <.*>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+[ 0-9a-f]+: 0083 0b50 slt at,v1,a0
+[ 0-9a-f]+: b401 fffe bnez at,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+[ 0-9a-f]+: 0083 0b50 slt at,v1,a0
+[ 0-9a-f]+: b401 fffe bnez at,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 0083 0b90 sltu at,v1,a0
+[ 0-9a-f]+: b401 fffe bnez at,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+[ 0-9a-f]+: 0083 0b90 sltu at,v1,a0
+[ 0-9a-f]+: b401 fffe bnez at,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 4003 fffe bltz v1,[0-9a-f]+ <.*>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 03e1 0f3c jalr at
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 4003 fffe bltz v1,[0-9a-f]+ <.*>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 0064 0b50 slt at,a0,v1
+[ 0-9a-f]+: 9401 fffe beqz at,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+[ 0-9a-f]+: 0064 0b50 slt at,a0,v1
+[ 0-9a-f]+: 9401 fffe beqz at,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 0064 0b90 sltu at,a0,v1
+[ 0-9a-f]+: 9401 fffe beqz at,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+[ 0-9a-f]+: 0064 0b90 sltu at,a0,v1
+[ 0-9a-f]+: 9401 fffe beqz at,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 4083 fffe blez v1,[0-9a-f]+ <.*>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 0064 0b50 slt at,a0,v1
+[ 0-9a-f]+: b401 fffe bnez at,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+[ 0-9a-f]+: 0064 0b50 slt at,a0,v1
+[ 0-9a-f]+: b401 fffe bnez at,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 0064 0b90 sltu at,a0,v1
+[ 0-9a-f]+: b401 fffe bnez at,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+[ 0-9a-f]+: 0064 0b90 sltu at,a0,v1
+[ 0-9a-f]+: b401 fffe bnez at,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 40c3 fffe bgtz v1,[0-9a-f]+ <.*>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 0083 0b50 slt at,v1,a0
+[ 0-9a-f]+: 9401 fffe beqz at,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+[ 0-9a-f]+: 0083 0b50 slt at,v1,a0
+[ 0-9a-f]+: 9401 fffe beqz at,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 0083 0b90 sltu at,v1,a0
+[ 0-9a-f]+: 9401 fffe beqz at,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+[ 0-9a-f]+: 0083 0b90 sltu at,v1,a0
+[ 0-9a-f]+: 9401 fffe beqz at,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 4043 fffe bgez v1,[0-9a-f]+ <.*>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 03e1 0f3c jalr at
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 4043 fffe bgez v1,[0-9a-f]+ <.*>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 9483 fffe beq v1,a0,[0-9a-f]+ <.*>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 9403 fffe beqz v1,[0-9a-f]+ <.*>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+[ 0-9a-f]+: 9403 fffe beqz v1,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: fc3c 0001 lw at,1\(gp\)
+[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text
+[ 0-9a-f]+: 3021 04fb addiu at,at,1275
+[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text
+[ 0-9a-f]+: 0001 0f3c jr at
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+
+[0-9a-f]+ <.*>:
+ \.\.\.
+
+[0-9a-f]+ <test2>:
+ \.\.\.
+
+[0-9a-f]+ <test3>:
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+ \.\.\.
diff --git a/gas/testsuite/gas/mips/micromips-branch-relax-insn32-pic.l b/gas/testsuite/gas/mips/micromips-branch-relax-insn32-pic.l
new file mode 100644
index 00000000000..75a56525342
--- /dev/null
+++ b/gas/testsuite/gas/mips/micromips-branch-relax-insn32-pic.l
@@ -0,0 +1,47 @@
+.*: Assembler messages:
+.*:71: Warning: no .cprestore pseudo-op used in PIC code
+.*:69: Warning: relaxed out-of-range branch into a jump
+.*:73: Warning: relaxed out-of-range branch into a jump
+.*:75: Warning: relaxed out-of-range branch into a jump
+.*:77: Warning: relaxed out-of-range branch into a jump
+.*:83: Warning: relaxed out-of-range branch into a jump
+.*:85: Warning: relaxed out-of-range branch into a jump
+.*:87: Warning: relaxed out-of-range branch into a jump
+.*:89: Warning: relaxed out-of-range branch into a jump
+.*:91: Warning: relaxed out-of-range branch into a jump
+.*:93: Warning: relaxed out-of-range branch into a jump
+.*:95: Warning: relaxed out-of-range branch into a jump
+.*:97: Warning: relaxed out-of-range branch into a jump
+.*:99: Warning: relaxed out-of-range branch into a jump
+.*:101: Warning: relaxed out-of-range branch into a jump
+.*:109: Warning: relaxed out-of-range branch into a jump
+.*:111: Warning: relaxed out-of-range branch into a jump
+.*:113: Warning: relaxed out-of-range branch into a jump
+.*:115: Warning: relaxed out-of-range branch into a jump
+.*:117: Warning: relaxed out-of-range branch into a jump
+.*:119: Warning: relaxed out-of-range branch into a jump
+.*:121: Warning: relaxed out-of-range branch into a jump
+.*:123: Warning: relaxed out-of-range branch into a jump
+.*:125: Warning: relaxed out-of-range branch into a jump
+.*:127: Warning: relaxed out-of-range branch into a jump
+.*:129: Warning: relaxed out-of-range branch into a jump
+.*:131: Warning: relaxed out-of-range branch into a jump
+.*:133: Warning: relaxed out-of-range branch into a jump
+.*:135: Warning: relaxed out-of-range branch into a jump
+.*:137: Warning: relaxed out-of-range branch into a jump
+.*:139: Warning: relaxed out-of-range branch into a jump
+.*:141: Warning: relaxed out-of-range branch into a jump
+.*:143: Warning: relaxed out-of-range branch into a jump
+.*:145: Warning: relaxed out-of-range branch into a jump
+.*:147: Warning: relaxed out-of-range branch into a jump
+.*:149: Warning: relaxed out-of-range branch into a jump
+.*:151: Warning: relaxed out-of-range branch into a jump
+.*:153: Warning: relaxed out-of-range branch into a jump
+.*:155: Warning: relaxed out-of-range branch into a jump
+.*:157: Warning: relaxed out-of-range branch into a jump
+.*:159: Warning: relaxed out-of-range branch into a jump
+.*:161: Warning: relaxed out-of-range branch into a jump
+.*:163: Warning: relaxed out-of-range branch into a jump
+.*:165: Warning: relaxed out-of-range branch into a jump
+.*:167: Warning: relaxed out-of-range branch into a jump
+.*:169: Warning: relaxed out-of-range branch into a jump
diff --git a/gas/testsuite/gas/mips/micromips-branch-relax-insn32.d b/gas/testsuite/gas/mips/micromips-branch-relax-insn32.d
new file mode 100644
index 00000000000..89dfb34d662
--- /dev/null
+++ b/gas/testsuite/gas/mips/micromips-branch-relax-insn32.d
@@ -0,0 +1,433 @@
+#objdump: -dr --show-raw-insn
+#name: Relax microMIPS branches (insn32 mode)
+#as: -mips32r2 -32 -relax-branch -minsn32 --defsym insn32=1
+#stderr: micromips-branch-relax-insn32.l
+#source: micromips-branch-relax.s
+
+.*: +file format .*mips.*
+
+Disassembly of section \.text:
+
+[0-9a-f]+ <test>:
+[ 0-9a-f]+: 9400 fffe b [0-9a-f]+ <.*>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 9403 fffe beqz v1,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: b403 fffe bnez v1,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 9400 fffe b [0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 40e0 fffe bc [0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 4060 fffe bal [0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 9403 fffe beqz v1,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: b403 fffe bnez v1,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 9400 fffe b [0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 40e0 fffe bc [0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 4060 fffe bal [0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 9403 fffe beqz v1,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: b403 fffe bnez v1,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 9400 fffe b [0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 40e0 fffe bc [0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 4060 fffe bal [0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 9403 fffe beqz v1,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: b403 fffe bnez v1,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: f400 0000 jal 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: f400 0000 jal 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: b483 fffe bne v1,a0,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 9483 fffe beq v1,a0,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 4043 fffe bgez v1,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 4003 fffe bltz v1,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 40d4 fffe bgtz s4,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 4094 fffe blez s4,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 40a3 fffe bnezc v1,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+[ 0-9a-f]+: 0000 0000 nop
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 40e3 fffe beqzc v1,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+[ 0-9a-f]+: 0000 0000 nop
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 401e fffe bltz s8,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: f400 0000 jal 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 405e fffe bgez s8,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: f400 0000 jal 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 43a0 fffe bc1t [0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 4380 fffe bc1f [0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 42a0 fffe bc2t [0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: 4280 fffe bc2f [0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+[ 0-9a-f]+: b483 fffe bne v1,a0,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: b403 fffe bnez v1,[0-9a-f]+ <.*>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+[ 0-9a-f]+: 0083 0b50 slt at,v1,a0
+[ 0-9a-f]+: b401 fffe bnez at,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+[ 0-9a-f]+: 0083 0b50 slt at,v1,a0
+[ 0-9a-f]+: b401 fffe bnez at,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 0083 0b90 sltu at,v1,a0
+[ 0-9a-f]+: b401 fffe bnez at,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+[ 0-9a-f]+: 0083 0b90 sltu at,v1,a0
+[ 0-9a-f]+: b401 fffe bnez at,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 4003 fffe bltz v1,[0-9a-f]+ <.*>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: f400 0000 jal 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 4003 fffe bltz v1,[0-9a-f]+ <.*>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 0064 0b50 slt at,a0,v1
+[ 0-9a-f]+: 9401 fffe beqz at,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+[ 0-9a-f]+: 0064 0b50 slt at,a0,v1
+[ 0-9a-f]+: 9401 fffe beqz at,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 0064 0b90 sltu at,a0,v1
+[ 0-9a-f]+: 9401 fffe beqz at,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+[ 0-9a-f]+: 0064 0b90 sltu at,a0,v1
+[ 0-9a-f]+: 9401 fffe beqz at,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 4083 fffe blez v1,[0-9a-f]+ <.*>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 0064 0b50 slt at,a0,v1
+[ 0-9a-f]+: b401 fffe bnez at,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+[ 0-9a-f]+: 0064 0b50 slt at,a0,v1
+[ 0-9a-f]+: b401 fffe bnez at,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 0064 0b90 sltu at,a0,v1
+[ 0-9a-f]+: b401 fffe bnez at,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+[ 0-9a-f]+: 0064 0b90 sltu at,a0,v1
+[ 0-9a-f]+: b401 fffe bnez at,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 40c3 fffe bgtz v1,[0-9a-f]+ <.*>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 0083 0b50 slt at,v1,a0
+[ 0-9a-f]+: 9401 fffe beqz at,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+[ 0-9a-f]+: 0083 0b50 slt at,v1,a0
+[ 0-9a-f]+: 9401 fffe beqz at,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 0083 0b90 sltu at,v1,a0
+[ 0-9a-f]+: 9401 fffe beqz at,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+[ 0-9a-f]+: 0083 0b90 sltu at,v1,a0
+[ 0-9a-f]+: 9401 fffe beqz at,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 4043 fffe bgez v1,[0-9a-f]+ <.*>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: f400 0000 jal 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 4043 fffe bgez v1,[0-9a-f]+ <.*>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 9483 fffe beq v1,a0,[0-9a-f]+ <.*>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 9403 fffe beqz v1,[0-9a-f]+ <.*>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+
+[0-9a-f]+ <.*>:
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+[ 0-9a-f]+: 9403 fffe beqz v1,[0-9a-f]+ <.*\+0x[0-9a-f]+>
+[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 .*
+[ 0-9a-f]+: 0000 0000 nop
+[ 0-9a-f]+: d400 0000 j 0 <test>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 test3
+[ 0-9a-f]+: 00a4 1b10 xor v1,a0,a1
+
+[0-9a-f]+ <.*>:
+ \.\.\.
+
+[0-9a-f]+ <test2>:
+ \.\.\.
+
+[0-9a-f]+ <test3>:
+[ 0-9a-f]+: 00a4 1950 addu v1,a0,a1
+ \.\.\.
diff --git a/gas/testsuite/gas/mips/micromips-branch-relax-insn32.l b/gas/testsuite/gas/mips/micromips-branch-relax-insn32.l
new file mode 100644
index 00000000000..7a7fccaa490
--- /dev/null
+++ b/gas/testsuite/gas/mips/micromips-branch-relax-insn32.l
@@ -0,0 +1,45 @@
+.*: Assembler messages:
+.*:73: Warning: relaxed out-of-range branch into a jump
+.*:75: Warning: relaxed out-of-range branch into a jump
+.*:77: Warning: relaxed out-of-range branch into a jump
+.*:83: Warning: relaxed out-of-range branch into a jump
+.*:85: Warning: relaxed out-of-range branch into a jump
+.*:87: Warning: relaxed out-of-range branch into a jump
+.*:89: Warning: relaxed out-of-range branch into a jump
+.*:91: Warning: relaxed out-of-range branch into a jump
+.*:93: Warning: relaxed out-of-range branch into a jump
+.*:95: Warning: relaxed out-of-range branch into a jump
+.*:97: Warning: relaxed out-of-range branch into a jump
+.*:99: Warning: relaxed out-of-range branch into a jump
+.*:101: Warning: relaxed out-of-range branch into a jump
+.*:109: Warning: relaxed out-of-range branch into a jump
+.*:111: Warning: relaxed out-of-range branch into a jump
+.*:113: Warning: relaxed out-of-range branch into a jump
+.*:115: Warning: relaxed out-of-range branch into a jump
+.*:117: Warning: relaxed out-of-range branch into a jump
+.*:119: Warning: relaxed out-of-range branch into a jump
+.*:121: Warning: relaxed out-of-range branch into a jump
+.*:123: Warning: relaxed out-of-range branch into a jump
+.*:125: Warning: relaxed out-of-range branch into a jump
+.*:127: Warning: relaxed out-of-range branch into a jump
+.*:129: Warning: relaxed out-of-range branch into a jump
+.*:131: Warning: relaxed out-of-range branch into a jump
+.*:133: Warning: relaxed out-of-range branch into a jump
+.*:135: Warning: relaxed out-of-range branch into a jump
+.*:137: Warning: relaxed out-of-range branch into a jump
+.*:139: Warning: relaxed out-of-range branch into a jump
+.*:141: Warning: relaxed out-of-range branch into a jump
+.*:143: Warning: relaxed out-of-range branch into a jump
+.*:145: Warning: relaxed out-of-range branch into a jump
+.*:147: Warning: relaxed out-of-range branch into a jump
+.*:149: Warning: relaxed out-of-range branch into a jump
+.*:151: Warning: relaxed out-of-range branch into a jump
+.*:153: Warning: relaxed out-of-range branch into a jump
+.*:155: Warning: relaxed out-of-range branch into a jump
+.*:157: Warning: relaxed out-of-range branch into a jump
+.*:159: Warning: relaxed out-of-range branch into a jump
+.*:161: Warning: relaxed out-of-range branch into a jump
+.*:163: Warning: relaxed out-of-range branch into a jump
+.*:165: Warning: relaxed out-of-range branch into a jump
+.*:167: Warning: relaxed out-of-range branch into a jump
+.*:169: Warning: relaxed out-of-range branch into a jump
diff --git a/gas/testsuite/gas/mips/micromips-branch-relax-pic.l b/gas/testsuite/gas/mips/micromips-branch-relax-pic.l
index 7cb5f8d6502..8690f255a7d 100644
--- a/gas/testsuite/gas/mips/micromips-branch-relax-pic.l
+++ b/gas/testsuite/gas/mips/micromips-branch-relax-pic.l
@@ -1,16 +1,10 @@
.*: Assembler messages:
-.*:61: Warning: no .cprestore pseudo-op used in PIC code
-.*:59: Warning: relaxed out-of-range branch into a jump
-.*:63: Warning: relaxed out-of-range branch into a jump
-.*:65: Warning: relaxed out-of-range branch into a jump
-.*:67: Warning: relaxed out-of-range branch into a jump
+.*:71: Warning: no .cprestore pseudo-op used in PIC code
.*:69: Warning: relaxed out-of-range branch into a jump
-.*:71: Warning: relaxed out-of-range branch into a jump
.*:73: Warning: relaxed out-of-range branch into a jump
.*:75: Warning: relaxed out-of-range branch into a jump
.*:77: Warning: relaxed out-of-range branch into a jump
-.*:79: Warning: relaxed out-of-range branch into a jump
-.*:81: Warning: relaxed out-of-range branch into a jump
+.*:80: Warning: relaxed out-of-range branch into a jump
.*:83: Warning: relaxed out-of-range branch into a jump
.*:85: Warning: relaxed out-of-range branch into a jump
.*:87: Warning: relaxed out-of-range branch into a jump
@@ -21,9 +15,8 @@
.*:97: Warning: relaxed out-of-range branch into a jump
.*:99: Warning: relaxed out-of-range branch into a jump
.*:101: Warning: relaxed out-of-range branch into a jump
-.*:103: Warning: relaxed out-of-range branch into a jump
-.*:105: Warning: relaxed out-of-range branch into a jump
-.*:107: Warning: relaxed out-of-range branch into a jump
+.*:104: Warning: relaxed out-of-range branch into a jump
+.*:106: Warning: relaxed out-of-range branch into a jump
.*:109: Warning: relaxed out-of-range branch into a jump
.*:111: Warning: relaxed out-of-range branch into a jump
.*:113: Warning: relaxed out-of-range branch into a jump
@@ -48,3 +41,10 @@
.*:151: Warning: relaxed out-of-range branch into a jump
.*:153: Warning: relaxed out-of-range branch into a jump
.*:155: Warning: relaxed out-of-range branch into a jump
+.*:157: Warning: relaxed out-of-range branch into a jump
+.*:159: Warning: relaxed out-of-range branch into a jump
+.*:161: Warning: relaxed out-of-range branch into a jump
+.*:163: Warning: relaxed out-of-range branch into a jump
+.*:165: Warning: relaxed out-of-range branch into a jump
+.*:167: Warning: relaxed out-of-range branch into a jump
+.*:169: Warning: relaxed out-of-range branch into a jump
diff --git a/gas/testsuite/gas/mips/micromips-branch-relax.l b/gas/testsuite/gas/mips/micromips-branch-relax.l
index b8057274916..e57e934e864 100644
--- a/gas/testsuite/gas/mips/micromips-branch-relax.l
+++ b/gas/testsuite/gas/mips/micromips-branch-relax.l
@@ -1,14 +1,8 @@
.*: Assembler messages:
-.*:63: Warning: relaxed out-of-range branch into a jump
-.*:65: Warning: relaxed out-of-range branch into a jump
-.*:67: Warning: relaxed out-of-range branch into a jump
-.*:69: Warning: relaxed out-of-range branch into a jump
-.*:71: Warning: relaxed out-of-range branch into a jump
.*:73: Warning: relaxed out-of-range branch into a jump
.*:75: Warning: relaxed out-of-range branch into a jump
.*:77: Warning: relaxed out-of-range branch into a jump
-.*:79: Warning: relaxed out-of-range branch into a jump
-.*:81: Warning: relaxed out-of-range branch into a jump
+.*:80: Warning: relaxed out-of-range branch into a jump
.*:83: Warning: relaxed out-of-range branch into a jump
.*:85: Warning: relaxed out-of-range branch into a jump
.*:87: Warning: relaxed out-of-range branch into a jump
@@ -19,9 +13,8 @@
.*:97: Warning: relaxed out-of-range branch into a jump
.*:99: Warning: relaxed out-of-range branch into a jump
.*:101: Warning: relaxed out-of-range branch into a jump
-.*:103: Warning: relaxed out-of-range branch into a jump
-.*:105: Warning: relaxed out-of-range branch into a jump
-.*:107: Warning: relaxed out-of-range branch into a jump
+.*:104: Warning: relaxed out-of-range branch into a jump
+.*:106: Warning: relaxed out-of-range branch into a jump
.*:109: Warning: relaxed out-of-range branch into a jump
.*:111: Warning: relaxed out-of-range branch into a jump
.*:113: Warning: relaxed out-of-range branch into a jump
@@ -46,3 +39,10 @@
.*:151: Warning: relaxed out-of-range branch into a jump
.*:153: Warning: relaxed out-of-range branch into a jump
.*:155: Warning: relaxed out-of-range branch into a jump
+.*:157: Warning: relaxed out-of-range branch into a jump
+.*:159: Warning: relaxed out-of-range branch into a jump
+.*:161: Warning: relaxed out-of-range branch into a jump
+.*:163: Warning: relaxed out-of-range branch into a jump
+.*:165: Warning: relaxed out-of-range branch into a jump
+.*:167: Warning: relaxed out-of-range branch into a jump
+.*:169: Warning: relaxed out-of-range branch into a jump
diff --git a/gas/testsuite/gas/mips/micromips-branch-relax.s b/gas/testsuite/gas/mips/micromips-branch-relax.s
index 6cf2c473e08..421d1db8f5c 100644
--- a/gas/testsuite/gas/mips/micromips-branch-relax.s
+++ b/gas/testsuite/gas/mips/micromips-branch-relax.s
@@ -14,44 +14,54 @@ test:
addu $3, $4, $5
bal test
addu $3, $4, $5
+ .ifndef insn32
bals test
addu $3, $4, $5
+ .endif
beqz $3, test
addu $3, $4, $5
bnez $3, test
addu $3, $4, $5
+ .ifndef insn32
b16 test2
addu $3, $4, $5
beqz16 $3, test2
addu $3, $4, $5
bnez16 $3, test2
addu $3, $4, $5
+ .endif
b test2
addu $3, $4, $5
bc test2
addu $3, $4, $5
bal test2
addu $3, $4, $5
+ .ifndef insn32
bals test2
addu $3, $4, $5
+ .endif
beqz $3, test2
addu $3, $4, $5
bnez $3, test2
addu $3, $4, $5
+ .ifndef insn32
b16 test3
addu $3, $4, $5
beqz16 $3, test3
addu $3, $4, $5
bnez16 $3, test3
addu $3, $4, $5
+ .endif
b32 test2
addu $3, $4, $5
bc32 test2
addu $3, $4, $5
bal32 test2
addu $3, $4, $5
+ .ifndef insn32
bals32 test2
addu $3, $4, $5
+ .endif
beqz32 $3, test2
addu $3, $4, $5
bnez32 $3, test2
@@ -66,8 +76,10 @@ test:
addu $3, $4, $5
bal test3
addu $3, $4, $5
+ .ifndef insn32
bals test3
addu $3, $4, $5
+ .endif
beq $3, $4, test3
addu $3, $4, $5
bne $3, $4, test3
@@ -88,10 +100,12 @@ test:
addu $3, $4, $5
bltzal $30, test3
addu $3, $4, $5
+ .ifndef insn32
bgezals $30, test3
addu $3, $4, $5
bltzals $30, test3
addu $3, $4, $5
+ .endif
bc1f test3
addu $3, $4, $5
bc1t test3
diff --git a/gas/testsuite/gas/mips/mips.exp b/gas/testsuite/gas/mips/mips.exp
index 9e896f52bf7..c4345acb872 100644
--- a/gas/testsuite/gas/mips/mips.exp
+++ b/gas/testsuite/gas/mips/mips.exp
@@ -1354,6 +1354,8 @@ if { [istarget mips*-*-vxworks*] } {
run_dump_test "micromips-size-1"
run_dump_test "micromips-branch-relax"
run_dump_test "micromips-branch-relax-pic"
+ run_dump_test "micromips-branch-relax-insn32"
+ run_dump_test "micromips-branch-relax-insn32-pic"
run_dump_test "micromips-branch-delay"
run_dump_test "micromips-warn-branch-delay"
run_dump_test "micromips-warn-branch-delay-1"