summaryrefslogtreecommitdiff
path: root/gas/testsuite/gas/arm/arm.exp
blob: e5ec8be412688bcc8b51bdc9848afd502c18efee (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#
# Some ARM tests
#
proc run_errors_test { name opts tname} {
    global srcdir subdir
    set testname "$tname"
    set file $srcdir/$subdir/$name
    gas_run ${name}.s $opts ">&${name}.out"
    if { [regexp_diff "${name}.out" "${file}.l"] } then {
        fail $testname
        verbose "output is [file_contents "${name}.out"]" 2
        return
    }
    pass $testname
}

if {[istarget *arm*-*-*] || [istarget "xscale-*-*"]} then {

    if {[istarget *-wince-*]} then {
	run_dump_test "wince_inst"
	run_dump_test "wince_ldconst"
	run_dump_test "wince_arm7t"
	run_dump_test "wince_copro"
    } else {
	run_dump_test "inst"
	run_dump_test "ldconst"
	run_dump_test "arm7t"
	run_dump_test "copro"
    }

    run_dump_test "armv1"

    run_errors_test "armv1-bad" "-mcpu=arm7m" "ARM v1 errors"

    gas_test "arm3.s" "-mcpu=arm3" $stdoptlist "Arm 3 instructions"

    gas_test "arm6.s" "-mcpu=arm6" $stdoptlist "Arm 6 instructions"

    gas_test "arm7dm.s" "-mcpu=arm7dm" $stdoptlist "Arm 7DM instructions"

    if {! [istarget arm*-*-aout] && ![istarget arm-*-pe]} then {
	# The arm-aout port does not support Thumb mode.
	gas_test "thumb.s" "-mcpu=arm7t" $stdoptlist "Thumb instructions"
    }

    gas_test "arch4t.s" "-march=armv4t" $stdoptlist "Arm architecture 4t instructions"

    run_dump_test "arch5tej"

    gas_test "immed.s" "" $stdoptlist "immediate expressions"

    gas_test "float.s" "-mcpu=arm7tdmi -mfpu=fpa" $stdoptlist "Core floating point instructions"

    run_dump_test "fpa-monadic"

    run_dump_test "fpa-dyadic"

    run_dump_test "fpa-mem"

    run_dump_test "vfp1xD"

    run_dump_test "vfp1"

    run_dump_test "vfp2"

    run_errors_test "vfp-bad" "-mfpu=vfp" "VFP errors"

    run_dump_test "xscale"

    run_dump_test "adrl"
    
    run_errors_test "req" "-mcpu=arm7m" ".req errors"

    run_dump_test "maverick"
    
    run_dump_test "archv6"

    run_dump_test "thumbv6"

    run_errors_test "r15-bad" "" "Invalid use of r15 errors"

    if {[istarget *-*-elf*] || [istarget *-*-linux*]} then {
	run_dump_test "pic"

	run_dump_test "mapping"
    }

    gas_test "offset.s" "" $stdoptlist "OFFSET_IMM regression"

    run_errors_test "undefined" "" "Undefined local label error"
}

# Not all arm targets are bi-endian, so only run this test on ones
# we know that are.  FIXME: We should probably also key off armeb/armel.

if [istarget arm-*-pe] {
    run_dump_test "le-fpconst"

    # Since big-endian numbers have the normal format, this doesn't exist.
    #run_dump_test "be-fpconst"
}

if [istarget xscale-*] {
    run_dump_test "iwmmxt"
    run_errors_test "iwmmxt-bad" "-mcpu=iwmmxt" "iWMMXt errors"
}