From d455268f737c65cc7c12aadaf93001d6bcbb20ba Mon Sep 17 00:00:00 2001 From: "Maciej W. Rozycki" Date: Mon, 28 Feb 2011 16:26:46 +0000 Subject: gas/ * config/tc-mips.c (append_insn): Disable branch relaxation for DSP instructions. gas/testsuite/ * gas/mips/relax-bposge.l: New test for DSP branch relaxation. * gas/mips/relax-bposge.s: Source for the new test. * gas/mips/mips.exp: Run the new test. --- gas/ChangeLog | 5 +++++ gas/config/tc-mips.c | 2 ++ gas/testsuite/ChangeLog | 6 ++++++ gas/testsuite/gas/mips/mips.exp | 2 ++ gas/testsuite/gas/mips/relax-bposge.l | 5 +++++ gas/testsuite/gas/mips/relax-bposge.s | 12 ++++++++++++ 6 files changed, 32 insertions(+) create mode 100644 gas/testsuite/gas/mips/relax-bposge.l create mode 100644 gas/testsuite/gas/mips/relax-bposge.s diff --git a/gas/ChangeLog b/gas/ChangeLog index 17ec424..29f3684 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,5 +1,10 @@ 2011-02-28 Maciej W. Rozycki + * config/tc-mips.c (append_insn): Disable branch relaxation for + DSP instructions. + +2011-02-28 Maciej W. Rozycki + * config/tc-mips.c (macro): Handle M_PREF_AB. 2011-02-28 Maciej W. Rozycki diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index 1c3010b..4374ed9 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -2933,6 +2933,8 @@ append_insn (struct mips_cl_insn *ip, expressionS *address_expr, out that the branch was out-of-range, we'll get an error. */ && !mips_opts.warn_about_macros && (mips_opts.at || mips_pic == NO_PIC) + /* Don't relax BPOSGE32/64 as they have no complementing branches. */ + && !(ip->insn_mo->membership & (INSN_DSP64 | INSN_DSP)) && !mips_opts.mips16) { relaxed_branch = TRUE; diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 564e627..c3cb1e3 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,5 +1,11 @@ 2011-02-28 Maciej W. Rozycki + * gas/mips/relax-bposge.l: New test for DSP branch relaxation. + * gas/mips/relax-bposge.s: Source for the new test. + * gas/mips/mips.exp: Run the new test. + +2011-02-28 Maciej W. Rozycki + * gas/mips/relax-at.d: New test for branch relaxation with .set at. * gas/mips/relax.s: Update to support the new test. diff --git a/gas/testsuite/gas/mips/mips.exp b/gas/testsuite/gas/mips/mips.exp index 67ee44c..3fc5b61 100644 --- a/gas/testsuite/gas/mips/mips.exp +++ b/gas/testsuite/gas/mips/mips.exp @@ -707,6 +707,8 @@ if { [istarget mips*-*-vxworks*] } { run_dump_test "relax-swap1-mips1" run_dump_test "relax-swap1-mips2" run_dump_test "relax-swap2" + run_list_test_arches "relax-bposge" "-mdsp -relax-branch" \ + [mips_arch_list_matching mips64r2] run_list_test "illegal" "-32" run_list_test "baddata1" "-32" diff --git a/gas/testsuite/gas/mips/relax-bposge.l b/gas/testsuite/gas/mips/relax-bposge.l new file mode 100644 index 0000000..ab3c846 --- /dev/null +++ b/gas/testsuite/gas/mips/relax-bposge.l @@ -0,0 +1,5 @@ +.*: Assembler messages: +.*:6: Warning: Relaxed out-of-range branch into a jump +.*:9: Warning: Relaxed out-of-range branch into a jump +.*:7: Error: Branch out of range +.*:8: Error: Branch out of range diff --git a/gas/testsuite/gas/mips/relax-bposge.s b/gas/testsuite/gas/mips/relax-bposge.s new file mode 100644 index 0000000..028ae05 --- /dev/null +++ b/gas/testsuite/gas/mips/relax-bposge.s @@ -0,0 +1,12 @@ +# Source file to test branch relaxation with the BPOSGE32 and BPOSGE64 +# instructions. + + .text +foo: + b bar + bposge32 bar + bposge64 bar + bal bar + + .space 0x20000 +bar: -- cgit v1.1