Update release-README after completing the 2.43 release.
[binutils-gdb.git] / sim / testsuite / mips / basic.exp
blobdb297121e933237bbfbe553ad1a9741e3ae33604
1 # MIPS simulator instruction tests
3 sim_init
5 # Do "run_sim_test TESTFILE MODELS" for each combination of the
6 # mf{lo,hi} -> mult/div/mt{lo,hi} hazard described in mips.igen.
7 # Insert NOPS nops after the mflo or mfhi.
8 proc run_hilo_test {testfile models nops} {
9     foreach reg {lo hi} {
10         foreach insn "{mult\t\$4,\$4} {div\t\$0,\$4,\$4} {mt$reg\t\$4}" {
11             set contents ""
12             append contents "\t.macro hilo\n"
13             append contents "\tmf$reg\t\$4\n"
14             append contents "\t.rept\t$nops\n"
15             append contents "\tnop\n"
16             append contents "\t.endr\n"
17             append contents "\t$insn\n"
18             append contents "\t.endm"
20             verbose -log "HILO test:\n$contents"
21             set file [open hilo-hazard.inc w]
22             puts $file $contents
23             close $file
25             run_sim_test $testfile $models
26         }
27     }
30 # Runs micromips tests by adding -mmicromips to as options
31 proc run_micromips_test { name requested_machs } {
32     global ASFLAGS_FOR_TARGET
33     set ASFLAGS_FOR_TARGET "-mmicromips"
34     run_sim_test $name $requested_machs
35     unset ASFLAGS_FOR_TARGET
38 # Runs endian tests
39 proc run_endian_tests { name requested_machs } {
40     global ASFLAGS_FOR_TARGET
41     global LDFLAGS_FOR_TARGET
42     run_sim_test $name $requested_machs
43     set ASFLAGS_FOR_TARGET "-EL"
44     set LDFLAGS_FOR_TARGET "-EL"
45     run_sim_test $name $requested_machs
46     unset ASFLAGS_FOR_TARGET
47     unset LDFLAGS_FOR_TARGET
50 # Runs all specified tests
51 proc run_sim_tests { name requested_machs { requested_micromips_machs "" } } {
52     run_sim_test $name $requested_machs
53     run_micromips_test $name $requested_micromips_machs
57 # Runs the combination of instructions removed in R6 through the testsuite
58 proc run_r6_removed_test {testfile models} {
59     global subdir srcdir
60     set fd [open "$srcdir/$subdir/r6-removed.csv" r]
61     set file_data [read $fd]
62     close $fd
63     set data [split $file_data "\n"]
64     foreach line $data {
65         set line_contents [split $line ","]
66         set mnemonic [lindex $line_contents 0]
67         set insn [lindex $line_contents 1]
69         if {[string compare $insn ""] == 1} {
71             set contents ""
72             append contents ".macro removed_instr\n"
73             append contents ".word $insn\n"
74             append contents "nop\n"
75             append contents ".endm"
77             verbose -log "r6-removed test: $mnemonic\n$contents"
78             set file [open r6-removed.inc w]
79             puts $file $contents
80             close $file
82             run_sim_test $testfile $models
83         }
84     }
88 if {[istarget *]} {
89     # Used to locate the `run` program.
90     global arch
91     set arch "mips"
93     set dspmodels ""
94     set mdmxmodels ""
95     set micromipsmodels ""
96     set micromipsdspmodels ""
98     if {[istarget mipsisa64sb1*-*-elf]} {
99         set models "sb1"
100         set submodels "mips1 mips2 mips3 mips4 mips32 mips64"
101         append mdmxmodels " mips64"
102     } elseif {[istarget mipsisa64r6*-*-elf]} {
103         set models "mips32r6 mips64r6"
104         set submodels ""
105     } elseif {[istarget mipsisa64*-*-elf]} {
106         set models "mips32 mips64 mips32r2 mips64r2"
107         set submodels "mips1 mips2 mips3 mips4"
108         append dspmodels " mips32r2 mips64r2"
109         append mdmxmodels " mips64 mips32r2 mips64r2"
110     } elseif {[istarget mips*-sde-elf*] || [istarget mips*-mti-elf*]} {
111         set models "mips32 mips64 mips32r2 mips64r2 mips32r6 mips64r6"
112         set submodels ""
113         append dspmodels " mips32r2 mips64r2 mips32r6 mips64r6"
114         append mdmxmodels " mips64 mips32r2 mips64r2 mips32r6 mips64r6"
115         append micromipsmodels " mips32r2 mips64r2"
116         append micromipsdspmodels " mips32r2 mips64r2"
117     } elseif {[istarget mipsisa32r6*-*-elf]} {
118         set models "mips32r6"
119         set submodels ""
120     } elseif {[istarget mipsisa32*-*-elf]} {
121         set models "mips32 mips32r2"
122         set submodels "mips1 mips2"
123         append dspmodels " mips32r2"
124         append mdmxmodels " mips32r2"
125         append micromipsmodels " mips32r2"
126         append micromipsdspmodels " mips32r2"
127     } elseif {[istarget mips64vr*-*-elf]} {
128         set models "vr4100 vr4111 vr4120 vr5000 vr5400 vr5500"
129         set submodels "mips1 mips2 mips3 mips4"
130     } elseif {[istarget mips64*-*-elf]} {
131         set models "mips3"
132         set submodels "mips1 mips2"
133     } else {
134         # fall back to just testing mips1 code.
135         set models "mips1"
136         set submodels ""
137     }
138     append submodels " " $models
139     set cpu_option -march
141     run_sim_tests sanity.s $submodels $micromipsmodels
143     foreach nops {0 1} {
144         run_hilo_test hilo-hazard-1.s $models $nops
145         run_hilo_test hilo-hazard-2.s $models $nops
146     }
147     run_hilo_test hilo-hazard-3.s $models 2
148     run_hilo_test hilo-hazard-4.s $micromipsmodels 2
150     run_sim_test fpu64-ps.s $submodels
151     run_sim_test fpu64-ps-sb1.s $submodels
153     run_sim_test mdmx-ob.s $mdmxmodels
154     run_sim_test mdmx-ob-sb1.s $mdmxmodels
156     run_sim_tests mips32-dsp.s $dspmodels $micromipsdspmodels
157     run_sim_tests mips32-dsp2.s $dspmodels $micromipsdspmodels
159     run_sim_test r2-fpu.s $models
161     run_sim_test r6-fpu.s $models
162     run_sim_test r6.s $models
163     run_sim_test r6-forbidden.s $models
164     run_r6_removed_test r6-removed.s $models
165     run_sim_test r6-64.s $models
166     run_sim_test r6-branch.s $models
167     run_endian_tests r6-llsc-wp.s $models
168     run_endian_tests r6-llsc-dp.s $models