# Some generic SPARC and SPARC64 tests

# FIXME: The tests here aren't really bullet proof.  A mistake in the opcode
# table can slip through since we use the same table for assembly and
# disassembly.  The way to fix this is to include a hex dump of the insns
# and test that as well.  Later.

# Find out if these binutils are either sparc64*-*-* or
# sparc*-*-* with --enable-targets=sparc64-*-*
proc gas_64_check { } {
    global NM
    global NMFLAGS
    global srcdir

    catch "exec $srcdir/lib/run $NM $NMFLAGS --help" nm_help
    return [regexp "elf64\[_-\]sparc" $nm_help]
}

proc sparc_elf_setup { } {
    setup_xfail "sparc*-*-*aout*" "sparc*-*-sunos4*" "sparc*-*-vxworks*"
    setup_xfail "sparc*-fujitsu-none" "sparc*-*-*n*bsd*"
    setup_xfail "sparc*-*-coff" "sparc*-*-lynxos*"
    clear_xfail "sparc64*-*-*n*bsd*"
    clear_xfail "sparc*-*-netbsdelf*"
}

if [istarget sparc*-*-*] {
    run_dump_test "synth"
    # The next three tests are ELF only.
    sparc_elf_setup
    run_dump_test "unalign"
    sparc_elf_setup
    run_dump_test "pcrel"
    sparc_elf_setup
    run_dump_test "plt"
    if [gas_64_check] {
	run_dump_test "asi"
	run_dump_test "membar"
	run_dump_test "prefetch"
	run_dump_test "set64"
	run_dump_test "synth64"
	run_dump_test "rdpr"
	run_dump_test "wrpr"
	run_dump_test "reloc64"
	run_dump_test "pcrel64"
	run_dump_test "plt64"
    }
}

if [istarget sparclet*-*-*] {
    run_dump_test "splet"
    run_dump_test "splet-2"
}
