#
# 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 "intel16"
    run_dump_test "prefix"
    run_dump_test "amd"
    run_dump_test "katmai"
    run_dump_test "jump"
    run_dump_test "ssemmx2"
    run_dump_test "sse2"
    run_dump_test "absrel"
    run_dump_test "pcrel"

    # PIC is only supported on ELF targets.
    if { ([istarget "*-*-elf*"] || [istarget "*-*-linux*"] )
	 && ![istarget *-*-linux*aout*]
	 && ![istarget *-*-linux*oldld*] } then {
	run_dump_test "intelpic"
    }

    # 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"
    }

    # Do they only work for ELF?
    if { ([istarget "*-*-elf*"]		
	  || [istarget "*-*-linux*"]
	 && ![istarget *-*-linux*aout*]
	 && ![istarget *-*-linux*oldld*])
    } then {
	run_dump_test "relax"
	run_dump_test "gotpc"
	run_dump_test "tlsd"
	run_dump_test "tlspic"
	run_dump_test "tlsnopic"
    }

    set ASFLAGS "$old_ASFLAGS"
}

if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_64_check]] then {

    global ASFLAGS
    set old_ASFLAGS "$ASFLAGS"
    set ASFLAGS "$ASFLAGS --64"

    run_dump_test "x86_64"
    run_dump_test "x86-64-opcode"
    run_list_test "x86-64-inval" "-al"

    set ASFLAGS "$old_ASFLAGS"
}
