MIPS/GAS: Respect the `insn32' mode in branch relaxation
authorMaciej W. Rozycki <macro@imgtec.com>
Tue, 26 Jul 2016 16:50:55 +0000 (17:50 +0100)
committerMaciej W. Rozycki <macro@imgtec.com>
Tue, 26 Jul 2016 19:00:49 +0000 (20:00 +0100)
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.

gas/ChangeLog
gas/config/tc-mips.c
gas/testsuite/gas/mips/micromips-branch-relax-insn32-pic.d [new file with mode: 0644]
gas/testsuite/gas/mips/micromips-branch-relax-insn32-pic.l [new file with mode: 0644]
gas/testsuite/gas/mips/micromips-branch-relax-insn32.d [new file with mode: 0644]
gas/testsuite/gas/mips/micromips-branch-relax-insn32.l [new file with mode: 0644]
gas/testsuite/gas/mips/micromips-branch-relax-pic.l
gas/testsuite/gas/mips/micromips-branch-relax.l
gas/testsuite/gas/mips/micromips-branch-relax.s
gas/testsuite/gas/mips/mips.exp

index 7fc57e82ccaebbde47105cb14f8b1c041c9468f4..617fccdb1cb4287c061a7db366ecdaa9f353596d 100644 (file)
@@ -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.
 2016-07-21  H.J. Lu  <hongjiu.lu@intel.com>
 
        * configure: Regenerated.
index daa23d892f9f3d1f782118e1ef1126f8b1986f6e..5768f186b07afc1d8a824c17de48e52457672ba1 100644 (file)
@@ -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
 
    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)                                      \
                               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_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)
 
 /* 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,
       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);
                                                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 compact_known = fragp != NULL;
       bfd_boolean compact = FALSE;
+      bfd_boolean insn32 = TRUE;
       bfd_boolean uncond;
       bfd_boolean uncond;
+      int short_insn_size;
 
 
-      if (compact_known)
-       compact = RELAX_MICROMIPS_COMPACT (fragp->fr_subtype);
       if (fragp)
       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;
       else
        uncond = update < 0;
+      short_insn_size = insn32 ? 4 : 2;
 
       /* If label is out of range, we turn branch <br>:
 
 
       /* 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
          into:
 
                j       label                   # 4 bytes
-               nop                             # 2 bytes if compact && !PIC
+               nop                             # 2/4 bytes if
+                                               #  compact && (!PIC || insn32)
            0:
        */
            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:
 
 
       /* 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
 
                        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)
        */
       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
 
       /* 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)
        */
       if (!uncond)
-       length += (compact_known && compact) ? 4 : 6;
+       length += (compact_known && compact) ? 4 : 4 + short_insn_size;
     }
 
   return length;
     }
 
   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);
     {
       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;
       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);
 
          /* Branch over the jump.  */
          buf = write_compressed_insn (buf, insn, 4);
+
          if (!compact)
          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)
        }
 
       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);
          fixp->fx_line = fragp->fr_line;
 
          buf = write_compressed_insn (buf, insn, 4);
+
          if (compact)
          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);
        }
       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;
 
          /* 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);
 
 
          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);
        }
 
       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 (file)
index 0000000..07551e3
--- /dev/null
@@ -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 (file)
index 0000000..75a5652
--- /dev/null
@@ -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 (file)
index 0000000..89dfb34
--- /dev/null
@@ -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 (file)
index 0000000..7a7fcca
--- /dev/null
@@ -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
index 7cb5f8d65023e5da596d0be6caecabb68abc5d84..8690f255a7dffd32f7091ca6beab6d9b18b6a37c 100644 (file)
@@ -1,16 +1,10 @@
 .*: Assembler messages:
 .*: 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
 .*: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
 .*: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
 .*: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
 .*: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
 .*: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
 .*: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
 .*: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
index b8057274916b77836c77aff391c45f6aa97523fb..e57e934e8643bb98b75f68569692b906843ea89e 100644 (file)
@@ -1,14 +1,8 @@
 .*: Assembler messages:
 .*: 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
 .*: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
 .*: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
 .*: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
 .*: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
 .*: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
 .*: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
index 6cf2c473e08b139dab12c299a8bd1f66aae334e2..421d1db8f5cb1fdfa9fa05f3768cf41a4747aeeb 100644 (file)
@@ -14,44 +14,54 @@ test:
        addu    $3, $4, $5
        bal     test
        addu    $3, $4, $5
        addu    $3, $4, $5
        bal     test
        addu    $3, $4, $5
+       .ifndef insn32
        bals    test
        addu    $3, $4, $5
        bals    test
        addu    $3, $4, $5
+       .endif
        beqz    $3, test
        addu    $3, $4, $5
        bnez    $3, test
        addu    $3, $4, $5
        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
        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
        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
        bals    test2
        addu    $3, $4, $5
+       .endif
        beqz    $3, test2
        addu    $3, $4, $5
        bnez    $3, test2
        addu    $3, $4, $5
        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
        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
        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
        bals32  test2
        addu    $3, $4, $5
+       .endif
        beqz32  $3, test2
        addu    $3, $4, $5
        bnez32  $3, test2
        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
        addu    $3, $4, $5
        bal     test3
        addu    $3, $4, $5
+       .ifndef insn32
        bals    test3
        addu    $3, $4, $5
        bals    test3
        addu    $3, $4, $5
+       .endif
        beq     $3, $4, test3
        addu    $3, $4, $5
        bne     $3, $4, test3
        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
        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
        bgezals $30, test3
        addu    $3, $4, $5
        bltzals $30, test3
        addu    $3, $4, $5
+       .endif
        bc1f    test3
        addu    $3, $4, $5
        bc1t    test3
        bc1f    test3
        addu    $3, $4, $5
        bc1t    test3
index 9e896f52bf7860c9fed05cedea2af7e3b74276a0..c4345acb87245076351a09a47d278be8bf11f8b4 100644 (file)
@@ -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-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"
     run_dump_test "micromips-branch-delay"
     run_dump_test "micromips-warn-branch-delay"
     run_dump_test "micromips-warn-branch-delay-1"
This page took 0.058449 seconds and 4 git commands to generate.