| # |
| # i386 tests |
| # |
| proc run_list_test { name opts } { |
| global srcdir subdir |
| set testname "i386 $name" |
| set file $srcdir/$subdir/$name |
| gas_run ${name}.s $opts ">&dump.out" |
| if { [regexp_diff "dump.out" "${file}.l"] } then { |
| fail $testname |
| verbose "output is [file_contents "dump.out"]" 2 |
| return |
| } |
| pass $testname |
| } |
| |
| proc gas_64_check { } { |
| global NM |
| global NMFLAGS |
| global srcdir |
| |
| catch "exec $srcdir/lib/run $NM $NMFLAGS --help" nm_help |
| return [regexp "targets:.*x86-64" $nm_help]; |
| } |
| |
| proc gas_32_check { } { |
| global NM |
| global NMFLAGS |
| global srcdir |
| |
| catch "exec $srcdir/lib/run $NM $NMFLAGS --help" nm_help |
| return [regexp "targets:.*i386" $nm_help]; |
| } |
| |
| |
| if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_32_check]] then { |
| |
| global ASFLAGS |
| set old_ASFLAGS "$ASFLAGS" |
| set ASFLAGS "$ASFLAGS --32" |
| |
| run_list_test "float" "-al" |
| run_list_test "general" "-al --listing-lhs-width=2" |
| run_list_test "inval" "-al" |
| run_list_test "modrm" "-al --listing-lhs-width=2" |
| run_dump_test "naked" |
| run_dump_test "opcode" |
| run_dump_test "intel" |
| run_dump_test "prefix" |
| run_dump_test "amd" |
| run_dump_test "katmai" |
| run_dump_test "jump" |
| run_dump_test "ssemmx2" |
| run_dump_test "sse2" |
| |
| # These tests require support for 8 and 16 bit relocs, |
| # so we only run them for ELF and COFF targets. |
| if {[istarget "*-*-elf*"] || [istarget "*-*-linux*"] || [istarget "*-*-coff*"]} then { |
| run_dump_test "reloc" |
| run_dump_test "jump16" |
| run_list_test "white" "-al --listing-lhs-width=3" |
| } |
| set ASFLAGS "$old_ASFLAGS" |
| } |
| |
| if [gas_64_check] then { |
| |
| global ASFLAGS |
| set old_ASFLAGS "$ASFLAGS" |
| set ASFLAGS "$ASFLAGS --64" |
| |
| run_dump_test "x86_64" |
| |
| set ASFLAGS "$old_ASFLAGS" |
| } |