]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
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.
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
-   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 (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:
-.*: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
 .*: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:
-.*: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
 .*: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
+       .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
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-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"