diff options
Diffstat (limited to 'sim/testsuite/mips/basic.exp')
-rw-r--r-- | sim/testsuite/mips/basic.exp | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/sim/testsuite/mips/basic.exp b/sim/testsuite/mips/basic.exp new file mode 100644 index 0000000..f810741 --- /dev/null +++ b/sim/testsuite/mips/basic.exp @@ -0,0 +1,106 @@ +# MIPS simulator instruction tests + +# 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 global_as_options; + set gas_old $global_as_options; + append global_as_options " -mmicromips " + run_sim_test $name $requested_machs + set global_as_options $gas_old +} + +# 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 +} + +# Only test mips*-*-elf (e.g., no mips*-*-linux) +if {[istarget mips*-*-elf]} { + + 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 + +} |