OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [binutils-2.18.50/] [gas/] [testsuite/] [gas/] [m68hc11/] [m68hc11.exp] - Blame information for rev 449

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 38 julius
#
2
# Some generic m68HC11 tests
3
#
4
if ![istarget "m68hc11-*-*"] then {
5
    if ![istarget "m6811-*-*"] then {
6
        if ![istarget "m68hc12-*-*"] then {
7
            if ![istarget "m6812-*-*"] then {
8
                return
9
            }
10
        }
11
    }
12
}
13
 
14
# Simple test for --print-opcodes (list of supported opcodes)
15
# We don't check the list result but just the syntax and the
16
# number it
17
proc gas_m68hc11_opcode_list { flags expect_count } {
18
    global comp_output
19
 
20
    set testname "Opcode list generation \[$flags\]"
21
    gas_run "x.s" "--print-opcodes $flags" ""
22
 
23
    set lines [split $comp_output "\n"]
24
    set cnt [llength $lines]
25
    verbose -log "Found $cnt opcodes"
26
    if { $cnt == $expect_count } then {
27
        pass $testname
28
    } else {
29
        fail $testname
30
    }
31
}
32
 
33
gas_m68hc11_opcode_list "-m68hc11" 149
34
gas_m68hc11_opcode_list "-m68hc12" 192
35
gas_m68hc11_opcode_list "-m68hcs12" 192
36
 
37
 
38
# Test for a message produced when assembling a file
39
proc gas_m68hc11_message { kind options line expect } {
40
    global srcdir
41
    global subdir
42
 
43
    regsub -all "\n" "$line: $expect" " " title
44
 
45
    # Make a file containing the instructions to assemble.
46
    set fd [open "$srcdir/$subdir/tst-m68hc1x.s" "w"]
47
    puts -nonewline $fd "$line"
48
    close $fd
49
 
50
    verbose -log "Test: $title"
51
    gas_start "tst-m68hc1x.s" "$options"
52
    set ok 0
53
    while 1 {
54
        expect {
55
            -re ".*: Assembler messages:\n" { }
56
            -re ".*1: $kind: $expect" { incr ok; break }
57
            timeout       { perror "timeout\n"; break }
58
            eof           { verbose "EOF from gas"; break }
59
        }
60
    }
61
    #sleep 1 # Uncomment this line when using gcov
62
    gas_finish
63
    if { $ok > 0 } then {
64
        pass $title
65
    } else {
66
        fail $title
67
    }
68
    catch "exec rm -f $srcdir/$subdir/tst-m68hc1x.s"
69
}
70
 
71
# Test for an error message produced by gas
72
proc gas_m68hc11_error { options line expect } {
73
    gas_m68hc11_message "Error" $options $line $expect
74
}
75
 
76
# Test for a warning message produced by gas
77
proc gas_m68hc11_warning { options line expect } {
78
    gas_m68hc11_message "Warning" $options $line $expect
79
}
80
 
81
# ------------------
82
# 68HC11 error tests
83
gas_m68hc11_error "" "puld\n" "Opcode .puld. is not recognized"
84
gas_m68hc11_error "" "ldab\n" "Invalid operand for .ldab."
85
gas_m68hc11_error "" "ldab 256,x\n" "Operand out of 8-bit range:.*256"
86
gas_m68hc11_error "" "ldab 257,y\n" "Operand out of 8-bit range:.*257"
87
gas_m68hc11_error "" "ldab -1,y\n" "Operand out of 8-bit range:.*-1"
88
gas_m68hc11_error "" "ldab bar,y\nbar=300" "value of 300 too large for field of 1 byte"
89
gas_m68hc11_error "" "jmp \#23\n" "Immediate operand is not allowed"
90
gas_m68hc11_error "" "ldab \[d,pc\]\n" "Indirect indexed addressing is not valid for 68HC11"
91
gas_m68hc11_error "" "ldab ,t\n" "Spurious .,. or bad indirect register"
92
gas_m68hc11_error "" "ldab 1,t\n" "Garbage at end of instruction:.*,t"
93
gas_m68hc11_error "" "ldab 1,,x\n" "Garbage at end of instruction:.*,x"
94
gas_m68hc11_error "" "ldab 1,+x\n" "Pre-increment mode is not valid"
95
gas_m68hc11_error "" "ldab 1,-x\n" "Pre-increment mode is not valid"
96
gas_m68hc11_error "" "ldab 1,x+\n" "Post-increment mode is not valid"
97
gas_m68hc11_error "" "ldab 1,x-\n" "Post-decrement mode is not valid"
98
gas_m68hc11_error "" "ldd \#65536\n" "Operand out of 16-bit range"
99
gas_m68hc11_error "--short-branchs" "bne 200\n" \
100
    "Operand out of range for a relative branch"
101
gas_m68hc11_error "" "bar\n" "Opcode .bar. is not recognized."
102
gas_m68hc11_error "--print-insn-syntax" "bne\n" \
103
    "Instruction formats for .bne..*"
104
 
105
# ------------------
106
# 68HC12 error tests
107
gas_m68hc11_error "-m68hc12" "ldab x,y\n" "Invalid accumulator register"
108
gas_m68hc11_error "-m68hc12" "ldab \[d,y\n" \
109
    "Missing .\]. to close indexed-indirect mode"
110
gas_m68hc11_error "-m68hc12" "ldab 0,\n" "Garbage at end of instruction: .,."
111
gas_m68hc11_error "-m68hc12" "ldab \[d\]\n" \
112
    "Missing second register or offset for indexed-indirect mode"
113
gas_m68hc11_error "-m68hc12" "ldab \[d x\]\n" \
114
    "Missing second register for indexed-indirect mode"
115
gas_m68hc11_error "-m68hc12" "ldab \[d d\]\n" \
116
    "Missing second register for indexed-indirect mode"
117
gas_m68hc11_error "-m68hc12" "ldab \[pc d\]\n" \
118
    "Missing second register for indexed-indirect mode"
119
gas_m68hc11_error "-m68hc12" "ldab 65536,x\n" \
120
    "Offset out of 16-bit range:"
121
gas_m68hc11_error "-m68hc12 -S" "ibeq d,500\n" \
122
    "Operand out of range for a relative branch"
123
gas_m68hc11_error "-m68hc12" "ibeq pc,3\n" \
124
    "Invalid register for dbcc/tbcc instruction"
125
gas_m68hc11_error "-m68hc12 -S" "ibeq pc,500\n" \
126
    "Invalid register for dbcc/tbcc instruction"
127
gas_m68hc11_error "-m68hc12" "orab 9,+x\n" \
128
    "Increment/decrement value is out of range"
129
gas_m68hc11_error "-m68hc12" "orab -9,x-\n" \
130
    "Increment/decrement value is out of range"
131
gas_m68hc11_error "-m68hc12" "orab -3,-pc\n" \
132
    "Invalid register for post/pre increment"
133
gas_m68hc11_error "-m68hc12" "trap \#0\n" "Trap id .0. is out of range"
134
gas_m68hc11_error "-m68hc12" "trap \#300\n" "Trap id .300. is out of range"
135
gas_m68hc11_error "-m68hc12" "trap \#bar\n" "The trap id must be a constant"
136
gas_m68hc11_error "-m68hc12" "sex x,d\n" \
137
    "Invalid source register for this instruction, use .tfr."
138
gas_m68hc11_error "-m68hc12" "tfr pc,a\n" "Invalid source register"
139
gas_m68hc11_error "-m68hc12" "movb 200,x,3,y\n" \
140
    "Offset out of 5-bit range for movw/movb insn: 200"
141
gas_m68hc11_error "-m68hc12" "movb 2,x,300,y\n" \
142
    "Offset out of 5-bit range for movw/movb insn: 300"
143
gas_m68hc11_error "-m68hc12" "movb 2,x,bar,y\nbar=300\n" \
144
    "Offset out of 5-bit range for movw/movb insn: 300"
145
gas_m68hc11_error "-m68hc12" "movb bar,y,2,x\nbar=300\n" \
146
    "Offset out of 5-bit range for movw/movb insn: 300"
147
gas_m68hc11_error "-m68hc12" "movb 200,pc,3,y\n" \
148
    "Offset out of 5-bit range for movw/movb insn: 200"
149
gas_m68hc11_error "-m68hc12" "movb 2,x,300,pc\n" \
150
    "Offset out of 5-bit range for movw/movb insn: 300"
151
gas_m68hc11_error "-m68hc12" "movb 2,x,bar,pc\nbar=300\n" \
152
    "Offset out of 5-bit range for movw/movb insn: 300"
153
gas_m68hc11_error "-m68hc12" "movb bar,pc,2,x\nbar=300\n" \
154
    "Offset out of 5-bit range for movw/movb insn: 300"
155
 
156
# ------------------
157
# Specific commands
158
gas_m68hc11_warning "" ".mode \"bar\"\n" "Invalid mode: .bar."
159
gas_m68hc11_error "" ".relax 23\n" "bad .relax format"
160
gas_m68hc11_error "" ".relax bar-23\n" "bad .relax format"
161
gas_m68hc11_error "" ".far bar bar\n" "junk at end of line"
162
 
163
 
164
run_dump_test insns
165
run_dump_test lbranch
166
run_dump_test all_insns
167
run_dump_test insns-dwarf2
168
run_dump_test lbranch-dwarf2
169
run_dump_test abi-m68hc11-16-64
170
run_dump_test abi-m68hc11-16-32
171
run_dump_test abi-m68hc11-32-64
172
 
173
# Compliance with Motorola Assembly Language Input Standard
174
run_dump_test malis
175
 
176
# Some 68HC12 tests
177
run_dump_test opers12
178
run_dump_test opers12-dwarf2
179
run_dump_test branchs12
180
run_dump_test insns12
181
run_dump_test indexed12
182
run_dump_test bug-1825
183
run_dump_test movb

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.