1# Some generic SPARC and SPARC64 tests
2
3# FIXME: The tests here aren't really bullet proof.  A mistake in the opcode
4# table can slip through since we use the same table for assembly and
5# disassembly.  The way to fix this is to include a hex dump of the insns
6# and test that as well.  Later.
7
8# Find out if these binutils are either sparc64*-*-* or
9# sparc*-*-* with --enable-targets=sparc64-*-*
10proc gas_64_check { } {
11    global NM
12    global NMFLAGS
13    global srcdir
14
15    catch "exec $srcdir/lib/run $NM $NMFLAGS --help" nm_help
16    return [regexp "elf64\[_-\]sparc" $nm_help];
17}
18
19proc sparc_elf_setup { } {
20    setup_xfail "sparc*-*-*aout*" "sparc*-*-sunos4*" "sparc*-*-vxworks*"
21    setup_xfail "sparc*-fujitsu-none" "sparc*-*-*n*bsd*"
22    setup_xfail "sparc*-*-coff" "sparc*-*-lynxos*"
23    clear_xfail "sparc64*-*-*n*bsd*"
24    clear_xfail "sparc*-*-netbsdelf*"
25}
26
27if [istarget sparc*-*-*] {
28    run_dump_test "synth"
29    # The next three tests are ELF only.
30    sparc_elf_setup
31    run_dump_test "unalign"
32    sparc_elf_setup
33    run_dump_test "pcrel"
34    sparc_elf_setup
35    run_dump_test "plt"
36    if [gas_64_check] {
37	run_dump_test "asi"
38	run_dump_test "membar"
39	run_dump_test "prefetch"
40	run_dump_test "set64"
41	run_dump_test "synth64"
42	run_dump_test "rdpr"
43	run_dump_test "wrpr"
44	run_dump_test "reloc64"
45	run_dump_test "pcrel64"
46	run_dump_test "plt64"
47    }
48}
49
50if [istarget sparclet*-*-*] {
51    run_dump_test "splet"
52    run_dump_test "splet-2"
53}
54