+2005-10-19 David Ung <davidu@mips.com>
+
+ * config/tc-mips.c (append_insn): Convert MIPS16 jr/jalr jumps
+ into jrc/jalrc versions if ISA_MIPS32+ and not doing the swap,
+ hence avoiding to emit a nop.
+
2005-10-19 Jie Zhang <jie.zhang@analog.com>
* config/tc-bfin.c (md_begin): Let the lex_type of '(' be
sync.p, we can not swap. */
|| (prev_pinfo & INSN_SYNC))
{
- /* We could do even better for unconditional branches to
- portions of this object file; we could pick up the
- instruction at the destination, put it in the delay
- slot, and bump the destination address. */
- insert_into_history (0, 1, ip);
- emit_nop ();
+ if (mips_opts.mips16
+ && (pinfo & INSN_UNCOND_BRANCH_DELAY)
+ && (pinfo & (MIPS16_INSN_READ_X | MIPS16_INSN_READ_31))
+ && (mips_opts.isa == ISA_MIPS32
+ || mips_opts.isa == ISA_MIPS32R2
+ || mips_opts.isa == ISA_MIPS64
+ || mips_opts.isa == ISA_MIPS64R2))
+ {
+ /* Convert MIPS16 jr/jalr into a "compact" jump. */
+ ip->insn_opcode |= 0x0080;
+ install_insn (ip);
+ insert_into_history (0, 1, ip);
+ }
+ else
+ {
+ /* We could do even better for unconditional branches to
+ portions of this object file; we could pick up the
+ instruction at the destination, put it in the delay
+ slot, and bump the destination address. */
+ insert_into_history (0, 1, ip);
+ emit_nop ();
+ }
+
if (mips_relax.sequence)
mips_relax.sizes[mips_relax.sequence - 1] += 4;
}
+2005-10-19 David Ung <davidu@mips.com>
+
+ * gas/mips/mips.exp: Run new test.
+ * gas/testsuite/gas/mips/mips16e-jrc.s: New test for converting
+ jalr/jr to the compact jalrc/jrc instructions.
+ * gas/testsuite/gas/mips/mips16e-jrc.d: New.
+
2005-10-19 Martin Schwidefsky <schwidefsky@de.ibm.com>
* gas/s390/zarch-z9-109.s: Add tests for unnormalized hfp multiply