#
# 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 "segment" "-al"
    run_list_test "inval-seg" "-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_list_test "intelbad" ""
    run_dump_test "intelok"
    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 "sub"
    run_dump_test "prescott"
    run_dump_test "sib"
    run_dump_test "vmx"
    run_dump_test "suffix"
    run_dump_test "immed32"

    if {![istarget "*-*-aix*"]
	&& (![is_elf_format] || [istarget "*-*-linux*"]
	    || [istarget "*-*-netbsd*"]
	    || [istarget "*-*-freebsd*"]
	    || [istarget "*-*-netware*"]
	    || [istarget "*-*-vxworks*"])} {
	# Don't run this test on targets where '/' starts comments.
	run_dump_test "divide"
    }

    run_dump_test "padlock"
    run_dump_test "crx"
    run_list_test "cr-err" ""
    run_dump_test "svme"

    # These tests require support for 8 and 16 bit relocs,
    # so we only run them for ELF and COFF targets.
    if {[is_elf_format] || [istarget "*-*-coff*"]} then {
	run_dump_test "reloc"
	run_dump_test "jump16"
	run_list_test "white" "-al --listing-lhs-width=3"

	# These tests should in theory work for PE targets as well,
	# but the relocs we currently produce are slightly different
	# from those produced for ELF/COFF based toolchains.
	# So for now we ignore PE targets.
	run_dump_test "pcrel"
	run_dump_test "absrel"
    }

    # ELF specific tests
    if [is_elf_format] then {
	# PIC is only supported on ELF targets.
	run_dump_test "intelpic"

	run_dump_test "relax"
	run_dump_test "gotpc"
	run_dump_test "tlsd"
	run_dump_test "tlspic"
	run_dump_test "tlsnopic"
	run_dump_test "bss"
	run_dump_test "reloc32"
	run_list_test "reloc32" "--defsym _bad_=1"
	run_dump_test "mixed-mode-reloc32"
    }

    # This is a PE specific test.
    if { [istarget "*-*-cygwin*"] || [istarget "*-*-pe"]
	 || [istarget "*-*-mingw*"]
    } then {
	run_dump_test "secrel"
    }

    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-addr32"
    run_dump_test "x86-64-opcode"
    run_dump_test "x86-64-pcrel"
    run_dump_test "x86-64-rip"
    run_dump_test "x86-64-stack"
    run_dump_test "x86-64-stack-intel"
    run_dump_test "x86-64-stack-suffix"
    run_list_test "x86-64-inval" "-al"
    run_list_test "x86-64-segment" "-al"
    run_list_test "x86-64-inval-seg" "-al"
    run_dump_test "x86-64-branch"
    run_dump_test "svme64"
    run_dump_test "x86-64-vmx"
    run_dump_test "immed64"

    # For ELF targets verify that @unwind works.
    if { ([istarget "*-*-elf*"] || [istarget "*-*-linux*"]
	  || [istarget "*-*-solaris2.*"])
	 && ![istarget *-*-linux*aout*]
	 && ![istarget *-*-linux*oldld*] } then {
	run_dump_test "x86-64-unwind"
    }

    # ELF specific tests
    if [is_elf_format] then {
	run_dump_test "reloc64"
	run_list_test "reloc64" "--defsym _bad_=1"
	run_dump_test "mixed-mode-reloc64"
    }

    set ASFLAGS "$old_ASFLAGS"
}
