# The architecture includes the instructions defined
# by that MIPS ISA.
#
+# gpr_ilocks
+# The architecture interlocks GPRs accesses. (That is,
+# there are no load delay slots.)
+#
# mips3d The architecture includes the MIPS-3D ASE.
#
# ror The architecture includes hardware rotate instructions.
# based on the target of the assembler being built. If always has
# empty "as_flags" and "objdump_flags."
+# mips_arch_init
+#
+# This function initializes the architecture data array ("mips_arches")
+# to be empty.
+proc mips_arch_init {} {
+ global mips_arches
+
+ # Catch becuase the variable won't be set the first time through.
+ catch {unset mips_arches}
+}
+
# mips_arch_create ARCH GPRSIZE EXTENDS PROPS AS_FLAGS OBJDUMP_FLAGS \
# (optional:) DEFAULT_FOR_TARGETS
#
# Note that several targets pick default CPU based on ABI. We
# can't easily handle that; do NOT list those targets as defaulting
# to any architecture.
+mips_arch_init
mips_arch_create mips1 32 {} {} \
{ -march=mips1 -mtune=mips1 } { -mmips:3000 }
-mips_arch_create mips2 32 mips1 {} \
+mips_arch_create mips2 32 mips1 { gpr_ilocks } \
{ -march=mips2 -mtune=mips2 } { -mmips:6000 }
mips_arch_create mips3 64 mips2 {} \
{ -march=mips3 -mtune=mips3 } { -mmips:4000 }
mips_arch_create mips64 64 mips5 { mips32 } \
{ -march=mips64 -mtune=mips64 } { -mmips:isa64 } \
{ mipsisa64-*-* mipsisa64el-*-* }
+mips_arch_create mips64r2 64 mips64 { mips32r2 ror } \
+ { -march=mips64r2 -mtune=mips64r2 } \
+ { -mmips:isa64r2 } \
+ { mipsisa64r2-*-* mipsisa64r2el-*-* }
mips_arch_create r3000 32 mips1 {} \
{ -march=r3000 -mtune=r3000 } { -mmips:3000 }
-mips_arch_create r3900 32 mips1 {} \
+mips_arch_create r3900 32 mips1 { gpr_ilocks } \
{ -march=r3900 -mtune=r3900 } { -mmips:3900 } \
{ mipstx39-*-* mipstx39el-*-* }
mips_arch_create r4000 64 mips3 {} \
set aout [expr [istarget *-*-bsd*] || [istarget *-*-openbsd*] ]
set ilocks [istarget mipstx39*-*-*]
set gpr_ilocks [expr [istarget mipstx39*-*-*]]
- set addr32 [expr [istarget mipstx39*-*-*]]
+ set addr32 [expr [istarget mipstx39*-*-*] || [istarget mips-*-linux*] || [istarget mipsel-*-linux*]]
set has_newabi [expr [istarget *-*-irix6*] || [istarget mips64*-*-linux*]]
if { [istarget "mips*-*-*linux*"] } then {
set tmips ""
}
if [istarget mips*el-*-*] {
- set el el
+ set el "el"
} {
set el ""
}
run_dump_test_arches "blt" [mips_arch_list_matching mips2]
run_dump_test_arches "bltu" [mips_arch_list_matching mips2]
run_dump_test_arches "branch-misc-1" [mips_arch_list_matching mips1]
- run_list_test_arches "branch-misc-2" "" [mips_arch_list_matching mips1]
+ run_list_test_arches "branch-misc-2" "-32 -non_shared" [mips_arch_list_matching mips1]
+ run_list_test_arches "branch-misc-2pic" "-32 -call_shared" [mips_arch_list_matching mips1]
if $ilocks {
run_dump_test "div-ilocks"
} else {
run_dump_test "div"
}
- run_dump_test_arches "dli" [mips_arch_list_matching mips3]
+ if { !$addr32 } {
+ run_dump_test_arches "dli" [mips_arch_list_matching mips3]
+ }
if $elf {
run_dump_test_arches "elf-jal" [mips_arch_list_matching mips1]
} else {
run_dump_test_arches "jal-empic-elf-2" [mips_arch_list_matching mips1]
run_dump_test_arches "jal-empic-elf-3" [mips_arch_list_matching mips1]
}
- run_list_test_arches "jal-range" "" [mips_arch_list_matching mips1]
+ run_list_test_arches "jal-range" "-32" [mips_arch_list_matching mips1]
+ if $has_newabi { run_dump_test "jal-newabi" }
if !$aout { run_dump_test "la" }
if $elf { run_dump_test "la-svr4pic" }
if $elf { run_dump_test "la-xgot" }
# 2000-03-12 00:00 UTC.
if $ecoff { run_dump_test "lif-empic" }
run_dump_test_arches "mips4" [mips_arch_list_matching mips4]
+ run_dump_test_arches "mips5" [mips_arch_list_matching mips5]
if $ilocks {
run_dump_test "mul-ilocks"
} else {
if !$aout { run_dump_test "sb" }
run_dump_test "trunc"
if !$aout { run_dump_test "ulh" }
+ run_dump_test_arches "ulh2-eb" [mips_arch_list_matching mips1]
+ run_dump_test_arches "ulh2-el" [mips_arch_list_matching mips1]
if $elf { run_dump_test "ulh-svr4pic" }
if $elf { run_dump_test "ulh-xgot" }
if $ecoff { run_dump_test "ulh-empic" }
run_dump_test "usw"
run_dump_test "usd"
}
+ run_dump_test_arches "ulw2-eb" [mips_arch_list_matching !gpr_ilocks]
+ run_dump_test_arches "ulw2-eb-ilocks" [mips_arch_list_matching gpr_ilocks]
+ run_dump_test_arches "ulw2-el" [mips_arch_list_matching !gpr_ilocks]
+ run_dump_test_arches "ulw2-el-ilocks" [mips_arch_list_matching gpr_ilocks]
+
+ run_dump_test_arches "uld2-eb" [mips_arch_list_matching mips3]
+ run_dump_test_arches "uld2-el" [mips_arch_list_matching mips3]
+
# The mips16 test can only be run on ELF, because only ELF
# supports the necessary mips16 reloc.
if { $elf && !$no_mips16 } {
run_dump_test "mips16-jalx"
run_dump_test "mips-jalx"
}
- run_list_test "mips-no-jalx" ""
+ run_list_test "mips-no-jalx" "-32"
run_dump_test "delay"
run_dump_test "nodelay"
run_dump_test "mips4010"
run_dump_test "vr4122"
run_dump_test "vr5400"
run_dump_test "vr5500"
+ run_dump_test "rm7000"
run_dump_test "perfcount"
run_dump_test "lineno"
run_dump_test "sync"
run_dump_test_arches "mips32" [mips_arch_list_matching mips32]
run_dump_test_arches "mips32r2" [mips_arch_list_matching mips32r2]
- run_list_test_arches "mips32r2-ill" "" [mips_arch_list_matching mips32r2]
+ run_list_test_arches "mips32r2-ill" "-32" \
+ [mips_arch_list_matching mips32r2 gpr32]
+ run_list_test_arches "mips32r2-ill-fp64" "-mabi=o64" \
+ [mips_arch_list_matching mips32r2 gpr64]
run_dump_test_arches "mips64" [mips_arch_list_matching mips64]
- run_dump_test "mips64-mips3d"
- run_dump_test_arches "mips64-mips3d-incl" [mips_arch_list_matching mips3d]
+ run_dump_test_arches "mips64r2" [mips_arch_list_matching mips64r2]
+ run_list_test_arches "mips64r2-ill" "" [mips_arch_list_matching mips64r2]
- run_dump_test "mips64-mdmx"
- run_dump_test "sb1-ext-mdmx"
- run_dump_test "sb1-ext-ps"
+ run_dump_test "set-arch"
+
+ if { !$addr32 } {
+ run_dump_test "mips64-mips3d"
+ run_dump_test_arches "mips64-mips3d-incl" [mips_arch_list_matching mips3d]
+
+ run_dump_test "mips64-mdmx"
+ run_dump_test "sb1-ext-mdmx"
+ run_dump_test "sb1-ext-ps"
+ }
run_dump_test "relax"
- run_list_test "illegal" ""
- run_list_test "baddata1" ""
+ run_list_test "illegal" "-32"
+ run_list_test "baddata1" "-32"
# LOSE: As of 2002-02-08, the next 4 tests fail for target mips-ecoff.
# It's unknown whether they _should_ pass as-is, or whether different
run_dump_test "elf_arch_mips32"
run_dump_test "elf_arch_mips32r2"
run_dump_test "elf_arch_mips64"
+ run_dump_test "elf_arch_mips64r2"
# Verify that ASE markings are handled properly.
if { !$no_mips16 } { run_dump_test "elf_ase_mips16" }
run_dump_test "elf-rel10"
run_dump_test "elf-rel11"
}
+ run_dump_test "elf-rel12"
+ run_dump_test "elf-rel13"
+ run_dump_test "elf-rel14"
+
+ if $has_newabi {
+ run_dump_test "elf-rel15"
+
+ run_dump_test "elf-rel-got-n32"
+ run_dump_test "elf-rel-xgot-n32"
+ run_dump_test "elf-rel-got-n64"
+ run_dump_test "elf-rel-xgot-n64"
+ }
+
run_dump_test "${tmips}${el}empic"
run_dump_test "empic2"
run_dump_test "empic3_e"
run_dump_test "cp0-names-mips32"
run_dump_test "cp0-names-mips32r2"
run_dump_test "cp0-names-mips64"
+ run_dump_test "cp0-names-mips64r2"
run_dump_test "cp0-names-sb1"
run_dump_test "cp0sel-names-numeric"
run_dump_test "cp0sel-names-mips32"
run_dump_test "cp0sel-names-mips32r2"
run_dump_test "cp0sel-names-mips64"
+ run_dump_test "cp0sel-names-mips64r2"
run_dump_test "cp0sel-names-sb1"
run_dump_test "hwr-names-numeric"
run_dump_test "hwr-names-mips32r2"
+ run_dump_test "hwr-names-mips64r2"
}