* sim/mips/hilo-hazard-[123].s: New files.
* sim/mips/basic.exp (run_hilo_test): New procedure. (models): Only list models that are included in the configuration. (submodels): New variable, set to submodels of the above. (mips64vr-*-elf, mips64vrel-*-elf): New configuration stanza. Run hilo-hazard-[123].s.
This commit is contained in:
parent
0e1b7197a4
commit
a584aa6330
5 changed files with 107 additions and 4 deletions
|
@ -1,3 +1,12 @@
|
|||
2004-04-29 Richard Sandiford <rsandifo@redhat.com>
|
||||
|
||||
* sim/mips/hilo-hazard-[123].s: New files.
|
||||
* sim/mips/basic.exp (run_hilo_test): New procedure.
|
||||
(models): Only list models that are included in the configuration.
|
||||
(submodels): New variable, set to submodels of the above.
|
||||
(mips64vr-*-elf, mips64vrel-*-elf): New configuration stanza.
|
||||
Run hilo-hazard-[123].s.
|
||||
|
||||
2004-03-01 Richard Sandiford <rsandifo@redhat.com>
|
||||
|
||||
* sim/frv/allinsn.exp (all_machs): Add fr405 and fr450.
|
||||
|
|
|
@ -6,21 +6,60 @@
|
|||
# than the compiler) can't necessarily find.
|
||||
unset_currtarget_info ldscript
|
||||
|
||||
# Do "run_sim_test TESTFILE MODELS" for each combination of the
|
||||
# mf{lo,hi} -> mult/div/mt{lo,hi} hazard described in mips.igen.
|
||||
# Insert NOPS nops after the mflo or mfhi.
|
||||
proc run_hilo_test {testfile models nops} {
|
||||
foreach reg {lo hi} {
|
||||
foreach insn "{mult\t\$4,\$4} {div\t\$0,\$4,\$4} {mt$reg\t\$4}" {
|
||||
set contents ""
|
||||
append contents "\t.macro hilo\n"
|
||||
append contents "\tmf$reg\t\$4\n"
|
||||
append contents "\t.rept\t$nops\n"
|
||||
append contents "\tnop\n"
|
||||
append contents "\t.endr\n"
|
||||
append contents "\t$insn\n"
|
||||
append contents "\t.endm"
|
||||
|
||||
verbose -log "HILO test:\n$contents"
|
||||
set file [open hilo-hazard.inc w]
|
||||
puts $file $contents
|
||||
close $file
|
||||
|
||||
run_sim_test $testfile $models
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# Only test mips*-elf (e.g., no mips-linux), and only test if the target
|
||||
# board really is a simulator (sim tests don't work on real HW).
|
||||
if {[istarget mips*-elf] && [board_info target exists is_simulator]} {
|
||||
|
||||
if {[istarget mipsisa64*-elf]} {
|
||||
set models "mips1 mips2 mips3 mips4 mips32 mips64"
|
||||
set models "mips32 mips64"
|
||||
set submodels "mips1 mips2 mips3 mips4"
|
||||
} elseif {[istarget mipsisa32*-elf]} {
|
||||
set models "mips1 mips2 mips32"
|
||||
set models "mips32"
|
||||
set submodels "mips1 mips2"
|
||||
} elseif {[istarget mips64vr-*-elf] || [istarget mips64vrel-*-elf]} {
|
||||
set models "vr4100 vr4111 vr4120 vr5000 vr5400 vr5500"
|
||||
set submodels "mips1 mips2 mips3 mips4"
|
||||
} elseif {[istarget mips64*-elf]} {
|
||||
set models "mips1 mips2 mips3"
|
||||
set models "mips3"
|
||||
set submodels "mips1 mips2"
|
||||
} else {
|
||||
# fall back to just testing mips1 code.
|
||||
set models "mips1"
|
||||
set submodels ""
|
||||
}
|
||||
append submodels " " $models
|
||||
set cpu_option -march
|
||||
|
||||
run_sim_test sanity.s $models
|
||||
run_sim_test sanity.s $submodels
|
||||
foreach nops {0 1} {
|
||||
run_hilo_test hilo-hazard-1.s $models $nops
|
||||
run_hilo_test hilo-hazard-2.s $models $nops
|
||||
}
|
||||
run_hilo_test hilo-hazard-3.s $models 2
|
||||
}
|
||||
|
|
19
sim/testsuite/sim/mips/hilo-hazard-1.s
Normal file
19
sim/testsuite/sim/mips/hilo-hazard-1.s
Normal file
|
@ -0,0 +1,19 @@
|
|||
# Test for architectures with mf{hi,lo} -> mult/div/mt{hi,lo} hazards.
|
||||
#
|
||||
# mach: mips1 mips2 mips3 mips4 vr4100 vr4111 vr4120 vr5000 vr5400
|
||||
# as: -mabi=eabi
|
||||
# ld: -N -Ttext=0x80010000
|
||||
# output: HILO: * too close to MF at *\\n\\nprogram stopped*\\n
|
||||
# xerror:
|
||||
|
||||
.include "hilo-hazard.inc"
|
||||
.include "testutils.inc"
|
||||
|
||||
setup
|
||||
|
||||
.set noreorder
|
||||
.ent DIAG
|
||||
DIAG:
|
||||
hilo
|
||||
pass
|
||||
.end DIAG
|
18
sim/testsuite/sim/mips/hilo-hazard-2.s
Normal file
18
sim/testsuite/sim/mips/hilo-hazard-2.s
Normal file
|
@ -0,0 +1,18 @@
|
|||
# Test for architectures without mf{hi,lo} -> mult/div/mt{hi,lo} hazards.
|
||||
#
|
||||
# mach: vr5500 mips32 mips64
|
||||
# as: -mabi=eabi
|
||||
# ld: -N -Ttext=0x80010000
|
||||
# output: pass\\n
|
||||
|
||||
.include "hilo-hazard.inc"
|
||||
.include "testutils.inc"
|
||||
|
||||
setup
|
||||
|
||||
.set noreorder
|
||||
.ent DIAG
|
||||
DIAG:
|
||||
hilo
|
||||
pass
|
||||
.end DIAG
|
18
sim/testsuite/sim/mips/hilo-hazard-3.s
Normal file
18
sim/testsuite/sim/mips/hilo-hazard-3.s
Normal file
|
@ -0,0 +1,18 @@
|
|||
# Test for mf{hi,lo} -> mult/div/mt{hi,lo} with 2 nops inbetween.
|
||||
#
|
||||
# mach: all
|
||||
# as: -mabi=eabi
|
||||
# ld: -N -Ttext=0x80010000
|
||||
# output: pass\\n
|
||||
|
||||
.include "hilo-hazard.inc"
|
||||
.include "testutils.inc"
|
||||
|
||||
setup
|
||||
|
||||
.set noreorder
|
||||
.ent DIAG
|
||||
DIAG:
|
||||
hilo
|
||||
pass
|
||||
.end DIAG
|
Loading…
Reference in a new issue