Files
binutils-gdb/sim/testsuite/mips/basic.exp
Mike Frysinger b42f20d2ac sim: testsuite: drop most specific istarget checks
We'll rely on the toolchain probing to determine whether each arch's
tests can be run rather the current configure target.  This allows
testing all of the ports in a multitarget configuration.

For now, we don't reformat the files entirely to make it easier to
review, and in case we need to make adjustments.  Once this feels
like it's stable, we can flatten the code a bit by removing the if
statement entirely.
2021-11-28 21:55:16 -05:00

106 lines
3.2 KiB
Plaintext

# MIPS simulator instruction tests
sim_init
# 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
}
}
}
# Runs micromips tests by adding -mmicromips to as options
proc run_micromips_test { name requested_machs } {
global ASFLAGS_FOR_TARGET
set ASFLAGS_FOR_TARGET "-mmicromips"
run_sim_test $name $requested_machs
unset ASFLAGS_FOR_TARGET
}
# Runs all specified tests
proc run_sim_tests { name requested_machs { requested_micromips_machs "" } } {
run_sim_test $name $requested_machs
run_micromips_test $name $requested_micromips_machs
}
if {[istarget *]} {
set dspmodels ""
set mdmxmodels ""
set micromipsmodels ""
set micromipsdspmodels ""
if {[istarget mipsisa64sb1*-*-elf]} {
set models "sb1"
set submodels "mips1 mips2 mips3 mips4 mips32 mips64"
append mdmxmodels " mips64"
} elseif {[istarget mipsisa64*-*-elf]} {
set models "mips32 mips64 mips32r2 mips64r2"
set submodels "mips1 mips2 mips3 mips4"
append dspmodels " mips32r2 mips64r2"
append mdmxmodels " mips64 mips32r2 mips64r2"
} elseif {[istarget mips*-sde-elf*] || [istarget mips*-mti-elf*]} {
set models "mips32 mips64 mips32r2 mips64r2"
set submodels ""
append dspmodels " mips32r2 mips64r2"
append mdmxmodels " mips64 mips32r2 mips64r2"
append micromipsmodels " mips32r2"
append micromipsdspmodels " mips32r2 mips64r2"
} elseif {[istarget mipsisa32*-*-elf]} {
set models "mips32 mips32r2"
set submodels "mips1 mips2"
append dspmodels " mips32r2"
append mdmxmodels " mips32r2"
append micromipsmodels " mips32r2"
append micromipsdspmodels " mips32r2"
} elseif {[istarget mips64vr*-*-elf]} {
set models "vr4100 vr4111 vr4120 vr5000 vr5400 vr5500"
set submodels "mips1 mips2 mips3 mips4"
} elseif {[istarget mips64*-*-elf]} {
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_tests sanity.s $submodels $micromipsmodels
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
run_hilo_test hilo-hazard-4.s $micromipsmodels 2
run_sim_test fpu64-ps.s $submodels
run_sim_test fpu64-ps-sb1.s $submodels
run_sim_test mdmx-ob.s $mdmxmodels
run_sim_test mdmx-ob-sb1.s $mdmxmodels
run_sim_tests mips32-dsp.s $dspmodels $micromipsdspmodels
run_sim_tests mips32-dsp2.s $dspmodels $micromipsdspmodels
}