Correct test for fpr pairs.
This commit is contained in:
parent
ded64db806
commit
68952421e6
7 changed files with 126 additions and 5 deletions
|
@ -1,3 +1,7 @@
|
|||
Tue Apr 15 18:11:44 1997 Gavin Koch <gavin@cygnus.com>
|
||||
|
||||
* config/tc-mips.c (insn_uses_reg): Correct test for fpr pairs.
|
||||
|
||||
Tue Apr 15 13:04:47 1997 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* Makefile.in (srcroot): Remove.
|
||||
|
|
|
@ -1211,11 +1211,11 @@ insn_uses_reg (ip, reg, class)
|
|||
because there is no instruction that sets both $f0 and $f1
|
||||
and requires a delay. */
|
||||
if ((ip->insn_mo->pinfo & INSN_READ_FPR_S)
|
||||
&& (((ip->insn_opcode >> OP_SH_FS) & OP_MASK_FS)
|
||||
&& ((((ip->insn_opcode >> OP_SH_FS) & OP_MASK_FS) &~(unsigned)1)
|
||||
== (reg &~ (unsigned) 1)))
|
||||
return 1;
|
||||
if ((ip->insn_mo->pinfo & INSN_READ_FPR_T)
|
||||
&& (((ip->insn_opcode >> OP_SH_FT) & OP_MASK_FT)
|
||||
&& ((((ip->insn_opcode >> OP_SH_FT) & OP_MASK_FT) &~(unsigned)1)
|
||||
== (reg &~ (unsigned) 1)))
|
||||
return 1;
|
||||
}
|
||||
|
@ -1306,7 +1306,7 @@ mips16_mark_labels ()
|
|||
|
||||
for (l = insn_labels; l != NULL; l = l->next)
|
||||
{
|
||||
#ifdef S_SET_OTHER
|
||||
#ifdef OBJ_ELF
|
||||
if (OUTPUT_FLAVOR == bfd_target_elf_flavour)
|
||||
S_SET_OTHER (l->label, STO_MIPS16);
|
||||
#endif
|
||||
|
@ -8711,7 +8711,7 @@ md_apply_fix (fixP, valueP)
|
|||
|
||||
/* If we aren't adjusting this fixup to be against the section
|
||||
symbol, we need to adjust the value. */
|
||||
#ifdef S_GET_OTHER
|
||||
#ifdef OBJ_ELF
|
||||
if (fixP->fx_addsy != NULL
|
||||
&& OUTPUT_FLAVOR == bfd_target_elf_flavour
|
||||
&& S_GET_OTHER (fixP->fx_addsy) == STO_MIPS16)
|
||||
|
@ -10100,7 +10100,7 @@ mips_fix_adjustable (fixp)
|
|||
return 0;
|
||||
if (fixp->fx_addsy == NULL)
|
||||
return 1;
|
||||
#ifdef S_GET_OTHER
|
||||
#ifdef OBJ_ELF
|
||||
if (OUTPUT_FLAVOR == bfd_target_elf_flavour
|
||||
&& S_GET_OTHER (fixp->fx_addsy) == STO_MIPS16
|
||||
&& fixp->fx_subsy == NULL)
|
||||
|
|
|
@ -1,3 +1,11 @@
|
|||
Tue Apr 15 18:10:01 1997 Gavin Koch <gavin@cygnus.com>
|
||||
|
||||
* gas/mips/{delay.d,nodelay.d}: added.
|
||||
|
||||
Mon Apr 7 12:57:45 1997 Doug Evans <dje@canuck.cygnus.com>
|
||||
|
||||
* gas/m32r/allinsn.d: Update to new objdump output style.
|
||||
|
||||
Fri Apr 4 13:19:39 1997 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* gas/all/float.s: Put a tab before .text, to keep the PA happy.
|
||||
|
|
20
gas/testsuite/gas/mips/delay.d
Normal file
20
gas/testsuite/gas/mips/delay.d
Normal file
|
@ -0,0 +1,20 @@
|
|||
#objdump: -dr --prefix-addresses
|
||||
#name: MIPS delay
|
||||
#as: -mips3
|
||||
|
||||
#
|
||||
# Gas should produce nop's after mtc1 and related
|
||||
# insn's if the target fpr is used in the
|
||||
# immediatly following insn. See also nodelay.d.
|
||||
#
|
||||
|
||||
.*: +file format .*mips.*
|
||||
|
||||
Disassembly of section .text:
|
||||
0+0000 <[^>]*> mtc1 \$zero,\$f0
|
||||
0+0004 <[^>]*> nop
|
||||
0+0008 <[^>]*> cvt.d.w \$f0,\$f0
|
||||
0+000c <[^>]*> mtc1 \$zero,\$f1
|
||||
0+0010 <[^>]*> nop
|
||||
0+0014 <[^>]*> cvt.d.w \$f1,\$f1
|
||||
...
|
8
gas/testsuite/gas/mips/delay.s
Normal file
8
gas/testsuite/gas/mips/delay.s
Normal file
|
@ -0,0 +1,8 @@
|
|||
# Source file used to test the abs macro.
|
||||
foo:
|
||||
mtc1 $0,$f0
|
||||
cvt.d.w $f0,$f0
|
||||
mtc1 $0,$f1
|
||||
cvt.d.w $f1,$f1
|
||||
.space 8
|
||||
|
62
gas/testsuite/gas/mips/mips.exp
Normal file
62
gas/testsuite/gas/mips/mips.exp
Normal file
|
@ -0,0 +1,62 @@
|
|||
#
|
||||
# Some generic MIPS tests
|
||||
#
|
||||
if [istarget mips*-*-*] then {
|
||||
set svr4pic [expr [istarget *-*-elf*] || [istarget *-*-irix5*] ]
|
||||
set empic [expr [istarget *-*-ecoff*] || [istarget *-*-ultrix*] || [istarget *-*-irix\[1-4\]*] ]
|
||||
set aout [expr [istarget *-*-bsd*] || [istarget *-*-netbsd*]]
|
||||
set ilocks [expr [istarget mips64vr4300*-*-*] || [istarget mips64vr4100*-*-*]]
|
||||
|
||||
run_dump_test "abs"
|
||||
run_dump_test "add"
|
||||
run_dump_test "and"
|
||||
run_dump_test "beq"
|
||||
run_dump_test "bge"
|
||||
run_dump_test "bgeu"
|
||||
run_dump_test "blt"
|
||||
run_dump_test "bltu"
|
||||
if !$ilocks { run_dump_test "div" } else { run_dump_test "div-ilocks" }
|
||||
run_dump_test "dli"
|
||||
run_dump_test "jal"
|
||||
if $svr4pic { run_dump_test "jal-svr4pic" }
|
||||
if $svr4pic { run_dump_test "jal-xgot" }
|
||||
if $empic { run_dump_test "jal-empic" }
|
||||
if !$aout { run_dump_test "la" }
|
||||
if $svr4pic { run_dump_test "la-svr4pic" }
|
||||
if $svr4pic { run_dump_test "la-xgot" }
|
||||
if $empic { run_dump_test "la-empic" }
|
||||
if !$aout { run_dump_test "lb" }
|
||||
if $svr4pic { run_dump_test "lb-svr4pic" }
|
||||
if $svr4pic { run_dump_test "lb-xgot" }
|
||||
if $empic { run_dump_test "lb-empic" }
|
||||
if !$aout { run_dump_test "ld" }
|
||||
if $svr4pic { run_dump_test "ld-svr4pic" }
|
||||
if $svr4pic { run_dump_test "ld-xgot" }
|
||||
if $empic { run_dump_test "ld-empic" }
|
||||
run_dump_test "li"
|
||||
if !$aout { run_dump_test "lifloat" }
|
||||
if $svr4pic { run_dump_test "lif-svr4pic" }
|
||||
if $svr4pic { run_dump_test "lif-xgot" }
|
||||
if $empic { run_dump_test "lif-empic" }
|
||||
run_dump_test "mips4"
|
||||
if !$ilocks { run_dump_test "mul" } else { run_dump_test "mul-ilocks" }
|
||||
run_dump_test "rol"
|
||||
if !$aout { run_dump_test "sb" }
|
||||
run_dump_test "trunc"
|
||||
if !$aout { run_dump_test "ulh" }
|
||||
if $svr4pic { run_dump_test "ulh-svr4pic" }
|
||||
if $svr4pic { run_dump_test "ulh-xgot" }
|
||||
if $empic { run_dump_test "ulh-empic" }
|
||||
if !$aout {
|
||||
run_dump_test "ulw"
|
||||
run_dump_test "uld"
|
||||
run_dump_test "ush"
|
||||
run_dump_test "usw"
|
||||
run_dump_test "usd"
|
||||
}
|
||||
# The mips16 test can only be run on ELF, because only ELF
|
||||
# supports the necessary mips16 reloc.
|
||||
if $svr4pic { run_dump_test "mips16" }
|
||||
run_dump_test "delay"
|
||||
run_dump_test "nodelay"
|
||||
}
|
19
gas/testsuite/gas/mips/nodelay.d
Normal file
19
gas/testsuite/gas/mips/nodelay.d
Normal file
|
@ -0,0 +1,19 @@
|
|||
#objdump: -dr --prefix-addresses
|
||||
#name: MIPS nodelay
|
||||
#as: -mips4
|
||||
#source: delay.s
|
||||
|
||||
# For -mips4
|
||||
# Gas should *not* produce nop's after mtc1 and related
|
||||
# insn's if the target fpr is used in the immediatly
|
||||
# following insn. See also delay.d.
|
||||
#
|
||||
|
||||
.*: +file format .*mips.*
|
||||
|
||||
Disassembly of section .text:
|
||||
0+0000 <[^>]*> mtc1 \$zero,\$f0
|
||||
0+0004 <[^>]*> cvt.d.w \$f0,\$f0
|
||||
0+0008 <[^>]*> mtc1 \$zero,\$f1
|
||||
0+000c <[^>]*> cvt.d.w \$f1,\$f1
|
||||
...
|
Loading…
Reference in a new issue