X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gas%2Ftestsuite%2Fgas%2Fmips%2Fmips.exp;h=5d91aeff6c8f4a29956a67a9970e9072c96dd16a;hb=fbdd3712c9896a56c4ec074d69dff4f4307da207;hp=e3aade423e704b8efc2ba2fab3716b3158e69389;hpb=4d2ad3b06d0951856569e528340b4bb960bbdbca;p=deliverable%2Fbinutils-gdb.git diff --git a/gas/testsuite/gas/mips/mips.exp b/gas/testsuite/gas/mips/mips.exp index e3aade423e..5d91aeff6c 100644 --- a/gas/testsuite/gas/mips/mips.exp +++ b/gas/testsuite/gas/mips/mips.exp @@ -55,6 +55,10 @@ # The architecture includes the instructions defined # by that MIPS ISA. # +# fpisa3, fpisa4, fpisa5 +# The architecture includes the floating-point +# instructions defined by that MIPS ISA. +# # gpr_ilocks # The architecture interlocks GPRs accesses. (That is, # there are no load delay slots.) @@ -194,9 +198,12 @@ proc mips_arch_displayname {arch} { # mips_arch_properties ARCH (optional:) INCLUDE_GPRSIZE # # This function returns the property list associated with ARCH in the -# architecture data array. If INCLUDE_GPRSIZE is non-zero, an additional -# "gpr32" or "gpr64" property will be returned as part of the list based -# on the architecture's GPR size. +# architecture data array, including the "canonical" target name as the +# first element. +# +# If INCLUDE_GPRSIZE is non-zero, an additional "gpr32" or "gpr64" +# property will be returned as part of the list based on the +# architecture's GPR size. proc mips_arch_properties {arch {include_gprsize 1}} { array set archdata [mips_arch_data $arch] set props $archdata(props) @@ -283,12 +290,30 @@ proc mips_arch_list_matching {args} { # # Invoke "run_dump_test" for test NAME, with extra assembler and # disassembler flags to test architecture ARCH. +# +# You can override the expected output for particular architectures +# and file formats. The possible test names are, in order of preference: +# +# 1. CARCH@FORMAT@NAME.d +# 2. CARCH@NAME.d +# 3. FORMAT@NAME.d +# 4. NAME.d +# +# where CARCH is the "canonical" name of architecture ARCH as recorded +# in its associated property list, and where FORMAT is the target's +# file format (one of "elf", "ecoff" or "aout"). proc run_dump_test_arch { name arch } { + upvar elf elf ecoff ecoff aout aout global subdir srcdir - set archname "${arch}@${name}" - if { [file exists "$srcdir/$subdir/${archname}.d"] } { - set name $archname + set format [expr { $elf ? "elf" : $ecoff ? "ecoff" : "aout" }] + set proparch [lindex [mips_arch_properties $arch 0] 0] + foreach prefix [list ${proparch}@${format}@ ${proparch}@ ${format}@] { + set archname ${prefix}${name} + if { [file exists "$srcdir/$subdir/${archname}.d"] } { + set name $archname + break + } } if [catch {run_dump_test $name \ @@ -305,6 +330,7 @@ proc run_dump_test_arch { name arch } { # Invoke "run_dump_test_arch" for test NAME, for each architecture # listed in ARCH_LIST. proc run_dump_test_arches { name arch_list } { + upvar elf elf ecoff ecoff aout aout foreach arch $arch_list { run_dump_test_arch "$name" "$arch" } @@ -347,16 +373,16 @@ mips_arch_create mips1 32 {} {} \ { -march=mips1 -mtune=mips1 } { -mmips:3000 } mips_arch_create mips2 32 mips1 { gpr_ilocks } \ { -march=mips2 -mtune=mips2 } { -mmips:6000 } -mips_arch_create mips3 64 mips2 {} \ +mips_arch_create mips3 64 mips2 { fpisa3 } \ { -march=mips3 -mtune=mips3 } { -mmips:4000 } -mips_arch_create mips4 64 mips3 {} \ +mips_arch_create mips4 64 mips3 { fpisa4 } \ { -march=mips4 -mtune=mips4 } { -mmips:8000 } -mips_arch_create mips5 64 mips4 {} \ +mips_arch_create mips5 64 mips4 { fpisa5 } \ { -march=mips5 -mtune=mips5 } { -mmips:mips5 } mips_arch_create mips32 32 mips2 {} \ { -march=mips32 -mtune=mips32 } { -mmips:isa32 } \ { mipsisa32-*-* mipsisa32el-*-* } -mips_arch_create mips32r2 32 mips32 { ror } \ +mips_arch_create mips32r2 32 mips32 { fpisa3 fpisa4 fpisa5 ror } \ { -march=mips32r2 -mtune=mips32r2 } \ { -mmips:isa32r2 } \ { mipsisa32r2-*-* mipsisa32r2el-*-* } @@ -369,6 +395,8 @@ mips_arch_create mips64r2 64 mips64 { mips32r2 ror } \ { mipsisa64r2-*-* mipsisa64r2el-*-* } mips_arch_create mips16 32 {} {} \ { -march=mips1 -mips16 } { -mmips:16 } +mips_arch_create micromips 64 mips64r2 {} \ + { -march=mips64 -mmicromips } {} mips_arch_create r3000 32 mips1 {} \ { -march=r3000 -mtune=r3000 } { -mmips:3000 } mips_arch_create r3900 32 mips1 { gpr_ilocks } \ @@ -397,13 +425,13 @@ if { [istarget mips*-*-vxworks*] } { run_dump_test "vxworks1-el" run_dump_test "vxworks1-xgot-el" } elseif { [istarget mips*-*-*] } { - set no_mips16 0 set elf [expr [istarget *-*-elf*] || [istarget *-*-irix5*] || [istarget *-*-irix6* ] || [istarget *-*-linux*] || [istarget *-*-netbsd*] ] set ecoff [expr [istarget *-*-ecoff*] || [istarget *-*-ultrix*] || [istarget *-*-irix\[1-4\]*] ] set aout [expr [istarget *-*-bsd*] || [istarget *-*-openbsd*] ] - set gpr_ilocks [expr [istarget mipstx39*-*-*]] set addr32 [expr [istarget mipstx39*-*-*] || [istarget mips-*-linux*] || [istarget mipsel-*-linux*] || [istarget mips*-*-ecoff]] set has_newabi [expr [istarget *-*-irix6*] || [istarget mips64*-*-linux*]] + set no_mips16 [expr !$elf] + set no_micromips [expr !$elf] if { [istarget "mips*-*-*linux*"] || [istarget "mips*-sde-elf*"] } then { set tmips "t" @@ -415,12 +443,12 @@ if { [istarget mips*-*-vxworks*] } { } { set el "" } - if { $ecoff } { - set no_mips16 1 - } if { $no_mips16 } { mips_arch_destroy mips16 } + if { $no_micromips } { + mips_arch_destroy micromips + } run_dump_test_arches "abs" [mips_arch_list_matching mips1] run_dump_test_arches "add" [mips_arch_list_matching mips1] @@ -458,13 +486,45 @@ if { [istarget mips*-*-vxworks*] } { } else { run_dump_test "jal" } + run_dump_test_arches "jal-mask-11" [mips_arch_list_matching mips1] + run_dump_test_arches "jal-mask-12" [mips_arch_list_matching mips1] + run_dump_test_arches "jal-mask-21" [mips_arch_list_matching micromips] + run_dump_test_arches "jal-mask-22" [mips_arch_list_matching micromips] run_dump_test "eret-1" run_dump_test "eret-2" run_dump_test "eret-3" + run_dump_test_arches "24k-branch-delay-1" \ + [mips_arch_list_matching mips1] + run_dump_test_arches "24k-triple-stores-1" \ + [mips_arch_list_matching fpisa5 !octeon] + run_dump_test_arches "24k-triple-stores-2" \ + [mips_arch_list_matching mips2] + run_dump_test_arches "24k-triple-stores-3" \ + [mips_arch_list_matching mips2] + run_dump_test_arches "24k-triple-stores-4" \ + [mips_arch_list_matching mips2] + run_dump_test_arches "24k-triple-stores-5" \ + [mips_arch_list_matching mips1] + run_dump_test_arches "24k-triple-stores-6" \ + [mips_arch_list_matching mips2] + run_dump_test_arches "24k-triple-stores-7" \ + [mips_arch_list_matching mips2] + run_dump_test_arches "24k-triple-stores-8" \ + [mips_arch_list_matching mips1] + run_dump_test_arches "24k-triple-stores-9" \ + [mips_arch_list_matching mips1] + run_dump_test_arches "24k-triple-stores-10" \ + [mips_arch_list_matching mips1] + if $elf { + run_dump_test_arches "24k-triple-stores-11" \ + [mips_arch_list_matching mips1] + } if $elf { run_dump_test_arches "jal-svr4pic" \ [mips_arch_list_matching mips1] + run_dump_test_arches "jal-svr4pic-noreorder" \ + [mips_arch_list_matching mips1] } if $elf { run_dump_test "jal-xgot" } run_list_test_arches "jal-range" "-32" [mips_arch_list_matching mips1] @@ -491,15 +551,74 @@ if { [istarget mips*-*-vxworks*] } { run_dump_test "lb-xgot-ilocks" } if !$aout { - if !$gpr_ilocks { - run_dump_test "ld" - } else { - if !$addr32 { - run_dump_test "ld-ilocks" - } else { - run_dump_test "ld-ilocks-addr32" - } - } + run_dump_test_arches "ld" [mips_arch_list_matching mips1] + run_dump_test_arches "ld-forward" \ + [mips_arch_list_matching mips1] + run_dump_test_arches "sd" [mips_arch_list_matching mips1] + run_dump_test_arches "sd-forward" \ + [mips_arch_list_matching mips1] + run_dump_test_arches "l_d" [mips_arch_list_matching mips1] + run_dump_test_arches "l_d-forward" \ + [mips_arch_list_matching mips1] + run_dump_test_arches "s_d" [mips_arch_list_matching mips1] + run_dump_test_arches "s_d-forward" \ + [mips_arch_list_matching mips1] + run_dump_test_arches "ldc1" [mips_arch_list_matching mips2] + run_dump_test_arches "ldc1-forward" \ + [mips_arch_list_matching mips2] + run_dump_test_arches "sdc1" [mips_arch_list_matching mips2] + run_dump_test_arches "sdc1-forward" \ + [mips_arch_list_matching mips2] + if $has_newabi { + run_dump_test_arches "ld-n32" \ + [mips_arch_list_matching mips3] + run_dump_test_arches "ld-forward-n32" \ + [mips_arch_list_matching mips3] + run_dump_test_arches "sd-n32" \ + [mips_arch_list_matching mips3] + run_dump_test_arches "sd-forward-n32" \ + [mips_arch_list_matching mips3] + run_dump_test_arches "l_d-n32" \ + [mips_arch_list_matching mips3] + run_dump_test_arches "l_d-forward-n32" \ + [mips_arch_list_matching mips3] + run_dump_test_arches "s_d-n32" \ + [mips_arch_list_matching mips3] + run_dump_test_arches "s_d-forward-n32" \ + [mips_arch_list_matching mips3] + run_dump_test_arches "ldc1-n32" \ + [mips_arch_list_matching mips3] + run_dump_test_arches "ldc1-forward-n32" \ + [mips_arch_list_matching mips3] + run_dump_test_arches "sdc1-n32" \ + [mips_arch_list_matching mips3] + run_dump_test_arches "sdc1-forward-n32" \ + [mips_arch_list_matching mips3] + run_dump_test_arches "ld-n64" \ + [mips_arch_list_matching mips3] + run_dump_test_arches "ld-forward-n64" \ + [mips_arch_list_matching mips3] + run_dump_test_arches "sd-n64" \ + [mips_arch_list_matching mips3] + run_dump_test_arches "sd-forward-n64" \ + [mips_arch_list_matching mips3] + run_dump_test_arches "l_d-n64" \ + [mips_arch_list_matching mips3] + run_dump_test_arches "l_d-forward-n64" \ + [mips_arch_list_matching mips3] + run_dump_test_arches "s_d-n64" \ + [mips_arch_list_matching mips3] + run_dump_test_arches "s_d-forward-n64" \ + [mips_arch_list_matching mips3] + run_dump_test_arches "ldc1-n64" \ + [mips_arch_list_matching mips3] + run_dump_test_arches "ldc1-forward-n64" \ + [mips_arch_list_matching mips3] + run_dump_test_arches "sdc1-n64" \ + [mips_arch_list_matching mips3] + run_dump_test_arches "sdc1-forward-n64" \ + [mips_arch_list_matching mips3] + } } if $elf { run_dump_test "ld-svr4pic" } if $elf { run_dump_test "ld-xgot" } @@ -508,14 +627,14 @@ if { [istarget mips*-*-vxworks*] } { if $elf { run_dump_test "lif-svr4pic" } if $elf { run_dump_test "lif-xgot" } run_dump_test_arches "mips4" [mips_arch_list_matching mips4] - run_dump_test_arches "mips4-fp" [mips_arch_list_matching mips4] + run_dump_test_arches "mips4-fp" [mips_arch_list_matching fpisa4] run_list_test_arches "mips4-fp" "-32 -msoft-float" \ - [mips_arch_list_matching mips4] + [mips_arch_list_matching fpisa4] run_dump_test_arches "mips4-branch-likely" \ [mips_arch_list_matching mips4] run_list_test_arches "mips4-branch-likely" "-32 -msoft-float" \ [mips_arch_list_matching mips4] - run_dump_test_arches "mips5" [mips_arch_list_matching mips5] + run_dump_test_arches "mips5-fp" [mips_arch_list_matching fpisa5] run_dump_test "mul" run_dump_test_arches "rol" [mips_arch_list_matching mips1 !ror] @@ -554,7 +673,8 @@ if { [istarget mips*-*-vxworks*] } { run_dump_test "mips16" run_dump_test "mips16-64" # Check MIPS16e extensions - run_dump_test_arches "mips16e" [mips_arch_list_matching mips32] + run_dump_test_arches "mips16e" \ + [mips_arch_list_matching mips32 !micromips] # Check jalx handling run_dump_test "mips16-jalx" run_dump_test "mips-jalx" @@ -583,6 +703,7 @@ if { [istarget mips*-*-vxworks*] } { run_dump_test "sync" run_dump_test_arches "mips32" [mips_arch_list_matching mips32] + run_dump_test_arches "mips32-imm" [mips_arch_list_matching mips32] run_dump_test_arches "mips32-sf32" [mips_arch_list_matching mips32] run_list_test_arches "mips32-sf32" "-32 -msoft-float" \ @@ -623,10 +744,15 @@ if { [istarget mips*-*-vxworks*] } { run_dump_test "xlr-ext" } - run_dump_test "relax" + run_dump_test_arches "relax" [mips_arch_list_matching mips2] + run_dump_test_arches "relax-at" [mips_arch_list_matching mips2] run_dump_test "relax-swap1-mips1" run_dump_test "relax-swap1-mips2" run_dump_test "relax-swap2" + run_dump_test_arches "relax-swap3" [mips_arch_list_all] + run_list_test_arches "relax-bposge" "-mdsp -relax-branch" \ + [mips_arch_list_matching mips64r2 \ + !micromips] run_list_test "illegal" "-32" run_list_test "baddata1" "-32" @@ -664,7 +790,14 @@ if { [istarget mips*-*-vxworks*] } { run_dump_test "elf_arch_mips64r2" # Verify that ASE markings are handled properly. - if { !$no_mips16 } { run_dump_test "elf_ase_mips16" } + if { !$no_mips16 } { + run_dump_test "elf_ase_mips16" + run_dump_test "elf_ase_mips16-2" + } + if { !$no_micromips } { + run_dump_test "elf_ase_micromips" + run_dump_test "elf_ase_micromips-2" + } run_dump_test "mips-gp32-fp32-pic" run_dump_test "mips-gp32-fp64-pic" @@ -731,6 +864,11 @@ if { [istarget mips*-*-vxworks*] } { run_dump_test_arches "elf-rel27" [mips_arch_list_all] + if $has_newabi { + run_dump_test "elf-rel28-n32" + run_dump_test "elf-rel28-n64" + } + if { !$no_mips16 } { run_dump_test "${tmips}mips${el}16-e" run_dump_test "${tmips}mips${el}16-f" @@ -741,6 +879,18 @@ if { [istarget mips*-*-vxworks*] } { run_list_test "tls-ill" "-32" run_dump_test "tls-o32" run_dump_test "jalr2" + + run_dump_test_arches "aent" [mips_arch_list_matching mips1] + + run_dump_test_arches "branch-misc-4" \ + [mips_arch_list_matching mips1] + run_dump_test_arches "branch-misc-4-64" \ + [mips_arch_list_matching mips3] + + run_dump_test_arches "loc-swap" [mips_arch_list_all] + run_dump_test_arches "loc-swap-dis" \ + [mips_arch_list_all] + run_dump_test_arches "loc-swap-2" [mips_arch_list_all] } if $has_newabi { @@ -826,9 +976,14 @@ if { [istarget mips*-*-vxworks*] } { run_dump_test "loongson-2f-2" run_dump_test "loongson-2f-3" + run_dump_test "loongson-3a" + run_dump_test "loongson-3a-2" + run_dump_test "loongson-3a-3" + run_dump_test_arches "octeon" [mips_arch_list_matching octeon] run_list_test_arches "octeon-ill" "" \ [mips_arch_list_matching octeon] + run_dump_test_arches "octeon-pref" [mips_arch_list_matching octeon] run_dump_test "smartmips" run_dump_test "mips32-dsp" @@ -875,8 +1030,34 @@ if { [istarget mips*-*-vxworks*] } { run_dump_test "mips16-vis-1" run_dump_test "call-nonpic-1" run_dump_test "mips32-sync" + run_dump_test_arches "mips32r2-sync" \ + [mips_arch_list_matching mips32r2] + run_dump_test_arches "alnv_ps-swap" [mips_arch_list_matching fpisa5] + run_dump_test_arches "cache" [lsort -dictionary -unique [concat \ + [mips_arch_list_matching mips3] \ + [mips_arch_list_matching mips32] ] ] + run_dump_test_arches "daddi" [mips_arch_list_matching mips3] + run_dump_test_arches "pref" [lsort -dictionary -unique [concat \ + [mips_arch_list_matching mips4] \ + [mips_arch_list_matching mips32] ] ] if $has_newabi { run_dump_test "cfi-n64-1" } - run_dump_test_arches "aent" [mips_arch_list_matching mips1] + run_dump_test "pr12915" + run_dump_test "reginfo-1a" + run_dump_test "reginfo-1b" + + if { !$no_micromips } { + run_dump_test "micromips" + run_dump_test "micromips-trap" + run_list_test "micromips-size-0" \ + "-32 -march=mips64 -mmicromips" "microMIPS instruction size 0" + run_dump_test "micromips-size-1" + run_dump_test "micromips-branch-relax" + run_dump_test "micromips-branch-relax-pic" + run_dump_test "micromips-branch-delay" + } + + run_dump_test_arches "mcu" [mips_arch_list_matching mips32r2 \ + !octeon] }