mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-10-12 10:28:59 +08:00
* 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. * 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.
This commit is contained in:
@ -1,3 +1,9 @@
|
|||||||
|
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>
|
2005-10-19 Jie Zhang <jie.zhang@analog.com>
|
||||||
|
|
||||||
* config/tc-bfin.c (md_begin): Let the lex_type of '(' be
|
* config/tc-bfin.c (md_begin): Let the lex_type of '(' be
|
||||||
|
@ -2693,12 +2693,29 @@ append_insn (struct mips_cl_insn *ip, expressionS *address_expr,
|
|||||||
sync.p, we can not swap. */
|
sync.p, we can not swap. */
|
||||||
|| (prev_pinfo & INSN_SYNC))
|
|| (prev_pinfo & INSN_SYNC))
|
||||||
{
|
{
|
||||||
/* We could do even better for unconditional branches to
|
if (mips_opts.mips16
|
||||||
portions of this object file; we could pick up the
|
&& (pinfo & INSN_UNCOND_BRANCH_DELAY)
|
||||||
instruction at the destination, put it in the delay
|
&& (pinfo & (MIPS16_INSN_READ_X | MIPS16_INSN_READ_31))
|
||||||
slot, and bump the destination address. */
|
&& (mips_opts.isa == ISA_MIPS32
|
||||||
insert_into_history (0, 1, ip);
|
|| mips_opts.isa == ISA_MIPS32R2
|
||||||
emit_nop ();
|
|| 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)
|
if (mips_relax.sequence)
|
||||||
mips_relax.sizes[mips_relax.sequence - 1] += 4;
|
mips_relax.sizes[mips_relax.sequence - 1] += 4;
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
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>
|
2005-10-19 Martin Schwidefsky <schwidefsky@de.ibm.com>
|
||||||
|
|
||||||
* gas/s390/zarch-z9-109.s: Add tests for unnormalized hfp multiply
|
* gas/s390/zarch-z9-109.s: Add tests for unnormalized hfp multiply
|
||||||
|
@ -771,4 +771,5 @@ if { [istarget mips*-*-*] } then {
|
|||||||
run_dump_test "mips16-dwarf2-n32"
|
run_dump_test "mips16-dwarf2-n32"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if { !$no_mips16 } { run_dump_test "mips16e-jrc" }
|
||||||
}
|
}
|
||||||
|
14
gas/testsuite/gas/mips/mips16e-jrc.d
Normal file
14
gas/testsuite/gas/mips/mips16e-jrc.d
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#objdump: -dr -mmips:isa32 -mmips:16
|
||||||
|
#as: -march=mips32 -mips16
|
||||||
|
#name: mips16e jalrc/jrc
|
||||||
|
.*: file format .*
|
||||||
|
Disassembly of section .text:
|
||||||
|
00000000 <.text>:
|
||||||
|
0: eac0 jalrc v0
|
||||||
|
2: e8a0 jrc ra
|
||||||
|
4: 6a01 li v0,1
|
||||||
|
6: 6500 nop
|
||||||
|
8: 6500 nop
|
||||||
|
a: 6500 nop
|
||||||
|
c: 6500 nop
|
||||||
|
e: 6500 nop
|
6
gas/testsuite/gas/mips/mips16e-jrc.s
Normal file
6
gas/testsuite/gas/mips/mips16e-jrc.s
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
# Test the generation of jalrc/jrc opcodes
|
||||||
|
jalr $31,$2
|
||||||
|
jr $31
|
||||||
|
li $2,1
|
||||||
|
|
||||||
|
.p2align 4
|
Reference in New Issue
Block a user