]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - gas/testsuite/gas/h8300/h8300-elf.exp
Add copyright notices
[thirdparty/binutils-gdb.git] / gas / testsuite / gas / h8300 / h8300-elf.exp
1 # Copyright 2012
2 # Free Software Foundation, Inc.
3
4 # This program is free software; you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License as published by
6 # the Free Software Foundation; either version 3 of the License, or
7 # (at your option) any later version.
8 #
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
13 #
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
17
18 #
19 # Some H8/300 elf tests
20 #
21 proc do_h8300_cbranch {} {
22 set testname "cbranch.s: h8300 conditional branch tests"
23 set x 0
24
25 gas_start "cbranch.s" "-al"
26
27 # Check each instruction bit pattern to verify it got
28 # assembled correctly.
29 while 1 {
30 expect {
31 -re " +\[0-9\]+ 0000 4000\[^\n\]*\n" { set x [expr $x+1] }
32 -re " +\[0-9\]+ 0002 4000\[^\n\]*\n" { set x [expr $x+1] }
33 -re " +\[0-9\]+ 0004 4100\[^\n\]*\n" { set x [expr $x+1] }
34 -re " +\[0-9\]+ 0006 4100\[^\n\]*\n" { set x [expr $x+1] }
35 -re " +\[0-9\]+ 0008 4200\[^\n\]*\n" { set x [expr $x+1] }
36 -re " +\[0-9\]+ 000a 4300\[^\n\]*\n" { set x [expr $x+1] }
37 -re " +\[0-9\]+ 000c 4400\[^\n\]*\n" { set x [expr $x+1] }
38 -re " +\[0-9\]+ 000e 4400\[^\n\]*\n" { set x [expr $x+1] }
39 -re " +\[0-9\]+ 0010 4500\[^\n\]*\n" { set x [expr $x+1] }
40 -re " +\[0-9\]+ 0012 4500\[^\n\]*\n" { set x [expr $x+1] }
41 -re " +\[0-9\]+ 0014 4600\[^\n\]*\n" { set x [expr $x+1] }
42 -re " +\[0-9\]+ 0016 4700\[^\n\]*\n" { set x [expr $x+1] }
43 -re " +\[0-9\]+ 0018 4800\[^\n\]*\n" { set x [expr $x+1] }
44 -re " +\[0-9\]+ 001a 4900\[^\n\]*\n" { set x [expr $x+1] }
45 -re " +\[0-9\]+ 001c 4A00\[^\n\]*\n" { set x [expr $x+1] }
46 -re " +\[0-9\]+ 001e 4B00\[^\n\]*\n" { set x [expr $x+1] }
47 -re " +\[0-9\]+ 0020 4C00\[^\n\]*\n" { set x [expr $x+1] }
48 -re " +\[0-9\]+ 0022 4D00\[^\n\]*\n" { set x [expr $x+1] }
49 -re " +\[0-9\]+ 0024 4E00\[^\n\]*\n" { set x [expr $x+1] }
50 -re " +\[0-9\]+ 0026 4F00\[^\n\]*\n" { set x [expr $x+1] }
51 timeout { perror "timeout\n; break }
52 eof { break }
53 }
54 }
55
56 # This was intended to do any cleanup necessary. It kinda looks like it
57 # isn't needed, but just in case, please keep it in for now.
58 gas_finish
59
60 # Did we find what we were looking for? If not, flunk it.
61 if [expr $x == 20] then { pass $testname } else { fail $testname }
62 }
63
64 proc do_h8300_branch {} {
65 set testname "branch.s: h8300 branch tests"
66 set x 0
67
68 gas_start "branch-elf.s" "-al"
69
70 # Check each instruction bit pattern to verify it got
71 # assembled correctly.
72 while 1 {
73 expect {
74 -re " +\[0-9\]+ 0000 5500\[^\n\]*\n" { set x [expr $x+1] }
75 -re " +\[0-9\]+ 0002 5A000000\[^\n\]*\n" { set x [expr $x+1] }
76 -re " +\[0-9\]+ 0006 5900\[^\n\]*\n" { set x [expr $x+1] }
77 -re " +\[0-9\]+ 0008 5B00\[^\n\]*\n" { set x [expr $x+1] }
78 -re " +\[0-9\]+ 000a 5E000000\[^\n\]*\n" { set x [expr $x+1] }
79 -re " +\[0-9\]+ 000e 5D00\[^\n\]*\n" { set x [expr $x+1] }
80 -re " +\[0-9\]+ 0010 5F00\[^\n\]*\n" { set x [expr $x+1] }
81 timeout { perror "timeout\n; break }
82 eof { break }
83 }
84 }
85
86 # This was intended to do any cleanup necessary. It kinda looks like it
87 # isn't needed, but just in case, please keep it in for now.
88 gas_finish
89
90 # Did we find what we were looking for? If not, flunk it.
91 if [expr $x == 7] then { pass $testname } else { fail $testname }
92 }
93
94 proc do_h8300h_cbranch {} {
95 set testname "cbranchh.s: h8300h conditional branch tests"
96 set x 0
97
98 gas_start "cbranchh.s" "-al"
99
100 # Check each instruction bit pattern to verify it got
101 # assembled correctly.
102 while 1 {
103 expect {
104 -re " +\[0-9\]+ 0000 4000\[^\n\]*\n" { set x [expr $x+1] }
105 -re " +\[0-9\]+ 0002 4000\[^\n\]*\n" { set x [expr $x+1] }
106 -re " +\[0-9\]+ 0004 4100\[^\n\]*\n" { set x [expr $x+1] }
107 -re " +\[0-9\]+ 0006 4100\[^\n\]*\n" { set x [expr $x+1] }
108 -re " +\[0-9\]+ 0008 4200\[^\n\]*\n" { set x [expr $x+1] }
109 -re " +\[0-9\]+ 000a 4300\[^\n\]*\n" { set x [expr $x+1] }
110 -re " +\[0-9\]+ 000c 4400\[^\n\]*\n" { set x [expr $x+1] }
111 -re " +\[0-9\]+ 000e 4400\[^\n\]*\n" { set x [expr $x+1] }
112 -re " +\[0-9\]+ 0010 4500\[^\n\]*\n" { set x [expr $x+1] }
113 -re " +\[0-9\]+ 0012 4500\[^\n\]*\n" { set x [expr $x+1] }
114 -re " +\[0-9\]+ 0014 4600\[^\n\]*\n" { set x [expr $x+1] }
115 -re " +\[0-9\]+ 0016 4700\[^\n\]*\n" { set x [expr $x+1] }
116 -re " +\[0-9\]+ 0018 4800\[^\n\]*\n" { set x [expr $x+1] }
117 -re " +\[0-9\]+ 001a 4900\[^\n\]*\n" { set x [expr $x+1] }
118 -re " +\[0-9\]+ 001c 4A00\[^\n\]*\n" { set x [expr $x+1] }
119 -re " +\[0-9\]+ 001e 4B00\[^\n\]*\n" { set x [expr $x+1] }
120 -re " +\[0-9\]+ 0020 4C00\[^\n\]*\n" { set x [expr $x+1] }
121 -re " +\[0-9\]+ 0022 4D00\[^\n\]*\n" { set x [expr $x+1] }
122 -re " +\[0-9\]+ 0024 4E00\[^\n\]*\n" { set x [expr $x+1] }
123 -re " +\[0-9\]+ 0026 4F00\[^\n\]*\n" { set x [expr $x+1] }
124 -re " +\[0-9\]+ 0028 58000000\[^\n\]*\n" { set x [expr $x+1] }
125 -re " +\[0-9\]+ 002c 58000000\[^\n\]*\n" { set x [expr $x+1] }
126 -re " +\[0-9\]+ 0030 58100000\[^\n\]*\n" { set x [expr $x+1] }
127 -re " +\[0-9\]+ 0034 58100000\[^\n\]*\n" { set x [expr $x+1] }
128 -re " +\[0-9\]+ 0038 58200000\[^\n\]*\n" { set x [expr $x+1] }
129 -re " +\[0-9\]+ 003c 58300000\[^\n\]*\n" { set x [expr $x+1] }
130 -re " +\[0-9\]+ 0040 58400000\[^\n\]*\n" { set x [expr $x+1] }
131 -re " +\[0-9\]+ 0044 58400000\[^\n\]*\n" { set x [expr $x+1] }
132 -re " +\[0-9\]+ 0048 58500000\[^\n\]*\n" { set x [expr $x+1] }
133 -re " +\[0-9\]+ 004c 58500000\[^\n\]*\n" { set x [expr $x+1] }
134 -re " +\[0-9\]+ 0050 58600000\[^\n\]*\n" { set x [expr $x+1] }
135 -re " +\[0-9\]+ 0054 58700000\[^\n\]*\n" { set x [expr $x+1] }
136 -re " +\[0-9\]+ 0058 58800000\[^\n\]*\n" { set x [expr $x+1] }
137 -re " +\[0-9\]+ 005c 58900000\[^\n\]*\n" { set x [expr $x+1] }
138 -re " +\[0-9\]+ 0060 58A00000\[^\n\]*\n" { set x [expr $x+1] }
139 -re " +\[0-9\]+ 0064 58B00000\[^\n\]*\n" { set x [expr $x+1] }
140 -re " +\[0-9\]+ 0068 58C00000\[^\n\]*\n" { set x [expr $x+1] }
141 -re " +\[0-9\]+ 006c 58D00000\[^\n\]*\n" { set x [expr $x+1] }
142 -re " +\[0-9\]+ 0070 58E00000\[^\n\]*\n" { set x [expr $x+1] }
143 -re " +\[0-9\]+ 0074 58F00000\[^\n\]*\n" { set x [expr $x+1] }
144 timeout { perror "timeout\n; break }
145 eof { break }
146 }
147 }
148
149 # This was intended to do any cleanup necessary. It kinda looks like it
150 # isn't needed, but just in case, please keep it in for now.
151 gas_finish
152
153 # Did we find what we were looking for? If not, flunk it.
154 if [expr $x == 40] then { pass $testname } else { fail $testname }
155 }
156
157 proc do_h8300h_branch {} {
158 set testname "branchh.s: h8300h branch tests"
159 set x 0
160
161 gas_start "branchh-elf.s" "-al"
162
163 # Check each instruction bit pattern to verify it got
164 # assembled correctly.
165 while 1 {
166 expect {
167 -re " +\[0-9\]+ 0000 5500\[^\n\]*\n" { set x [expr $x+1] }
168 -re " +\[0-9\]+ 0002 5C000000\[^\n\]*\n" { set x [expr $x+1] }
169 -re " +\[0-9\]+ 0006 5A000000\[^\n\]*\n" { set x [expr $x+1] }
170 -re " +\[0-9\]+ 000a 5900\[^\n\]*\n" { set x [expr $x+1] }
171 -re " +\[0-9\]+ 000c 5B00\[^\n\]*\n" { set x [expr $x+1] }
172 -re " +\[0-9\]+ 000e 5E000000\[^\n\]*\n" { set x [expr $x+1] }
173 -re " +\[0-9\]+ 0012 5D00\[^\n\]*\n" { set x [expr $x+1] }
174 -re " +\[0-9\]+ 0014 5F00\[^\n\]*\n" { set x [expr $x+1] }
175 timeout { perror "timeout\n; break }
176 eof { break }
177 }
178 }
179
180 # This was intended to do any cleanup necessary. It kinda looks like it
181 # isn't needed, but just in case, please keep it in for now.
182 gas_finish
183
184 # Did we find what we were looking for? If not, flunk it.
185 if [expr $x == 8] then { pass $testname } else { fail $testname }
186 }
187
188 proc do_h8300s_cbranch {} {
189 set testname "cbranchs.s: h8300s conditional branch tests"
190 set x 0
191
192 gas_start "cbranchs.s" "-al"
193
194 # Check each instruction bit pattern to verify it got
195 # assembled correctly.
196 while 1 {
197 expect {
198 -re " +\[0-9\]+ 0000 4000\[^\n\]*\n" { set x [expr $x+1] }
199 -re " +\[0-9\]+ 0002 4000\[^\n\]*\n" { set x [expr $x+1] }
200 -re " +\[0-9\]+ 0004 4100\[^\n\]*\n" { set x [expr $x+1] }
201 -re " +\[0-9\]+ 0006 4100\[^\n\]*\n" { set x [expr $x+1] }
202 -re " +\[0-9\]+ 0008 4200\[^\n\]*\n" { set x [expr $x+1] }
203 -re " +\[0-9\]+ 000a 4300\[^\n\]*\n" { set x [expr $x+1] }
204 -re " +\[0-9\]+ 000c 4400\[^\n\]*\n" { set x [expr $x+1] }
205 -re " +\[0-9\]+ 000e 4400\[^\n\]*\n" { set x [expr $x+1] }
206 -re " +\[0-9\]+ 0010 4500\[^\n\]*\n" { set x [expr $x+1] }
207 -re " +\[0-9\]+ 0012 4500\[^\n\]*\n" { set x [expr $x+1] }
208 -re " +\[0-9\]+ 0014 4600\[^\n\]*\n" { set x [expr $x+1] }
209 -re " +\[0-9\]+ 0016 4700\[^\n\]*\n" { set x [expr $x+1] }
210 -re " +\[0-9\]+ 0018 4800\[^\n\]*\n" { set x [expr $x+1] }
211 -re " +\[0-9\]+ 001a 4900\[^\n\]*\n" { set x [expr $x+1] }
212 -re " +\[0-9\]+ 001c 4A00\[^\n\]*\n" { set x [expr $x+1] }
213 -re " +\[0-9\]+ 001e 4B00\[^\n\]*\n" { set x [expr $x+1] }
214 -re " +\[0-9\]+ 0020 4C00\[^\n\]*\n" { set x [expr $x+1] }
215 -re " +\[0-9\]+ 0022 4D00\[^\n\]*\n" { set x [expr $x+1] }
216 -re " +\[0-9\]+ 0024 4E00\[^\n\]*\n" { set x [expr $x+1] }
217 -re " +\[0-9\]+ 0026 4F00\[^\n\]*\n" { set x [expr $x+1] }
218 -re " +\[0-9\]+ 0028 58000000\[^\n\]*\n" { set x [expr $x+1] }
219 -re " +\[0-9\]+ 002c 58000000\[^\n\]*\n" { set x [expr $x+1] }
220 -re " +\[0-9\]+ 0030 58100000\[^\n\]*\n" { set x [expr $x+1] }
221 -re " +\[0-9\]+ 0034 58100000\[^\n\]*\n" { set x [expr $x+1] }
222 -re " +\[0-9\]+ 0038 58200000\[^\n\]*\n" { set x [expr $x+1] }
223 -re " +\[0-9\]+ 003c 58300000\[^\n\]*\n" { set x [expr $x+1] }
224 -re " +\[0-9\]+ 0040 58400000\[^\n\]*\n" { set x [expr $x+1] }
225 -re " +\[0-9\]+ 0044 58400000\[^\n\]*\n" { set x [expr $x+1] }
226 -re " +\[0-9\]+ 0048 58500000\[^\n\]*\n" { set x [expr $x+1] }
227 -re " +\[0-9\]+ 004c 58500000\[^\n\]*\n" { set x [expr $x+1] }
228 -re " +\[0-9\]+ 0050 58600000\[^\n\]*\n" { set x [expr $x+1] }
229 -re " +\[0-9\]+ 0054 58700000\[^\n\]*\n" { set x [expr $x+1] }
230 -re " +\[0-9\]+ 0058 58800000\[^\n\]*\n" { set x [expr $x+1] }
231 -re " +\[0-9\]+ 005c 58900000\[^\n\]*\n" { set x [expr $x+1] }
232 -re " +\[0-9\]+ 0060 58A00000\[^\n\]*\n" { set x [expr $x+1] }
233 -re " +\[0-9\]+ 0064 58B00000\[^\n\]*\n" { set x [expr $x+1] }
234 -re " +\[0-9\]+ 0068 58C00000\[^\n\]*\n" { set x [expr $x+1] }
235 -re " +\[0-9\]+ 006c 58D00000\[^\n\]*\n" { set x [expr $x+1] }
236 -re " +\[0-9\]+ 0070 58E00000\[^\n\]*\n" { set x [expr $x+1] }
237 -re " +\[0-9\]+ 0074 58F00000\[^\n\]*\n" { set x [expr $x+1] }
238 timeout { perror "timeout\n; break }
239 eof { break }
240 }
241 }
242
243 # This was intended to do any cleanup necessary. It kinda looks like it
244 # isn't needed, but just in case, please keep it in for now.
245 gas_finish
246
247 # Did we find what we were looking for? If not, flunk it.
248 if [expr $x == 40] then { pass $testname } else { fail $testname }
249 }
250
251 proc do_h8300s_branch {} {
252 set testname "branchs.s: h8300s branch tests"
253 set x 0
254
255 gas_start "branchs-elf.s" "-al"
256
257 # Check each instruction bit pattern to verify it got
258 # assembled correctly.
259 while 1 {
260 expect {
261 -re " +\[0-9\]+ 0000 5500\[^\n\]*\n" { set x [expr $x+1] }
262 -re " +\[0-9\]+ 0002 5C000000\[^\n\]*\n" { set x [expr $x+1] }
263 -re " +\[0-9\]+ 0006 5A000000\[^\n\]*\n" { set x [expr $x+1] }
264 -re " +\[0-9\]+ 000a 5900\[^\n\]*\n" { set x [expr $x+1] }
265 -re " +\[0-9\]+ 000c 5B00\[^\n\]*\n" { set x [expr $x+1] }
266 -re " +\[0-9\]+ 000e 5E000000\[^\n\]*\n" { set x [expr $x+1] }
267 -re " +\[0-9\]+ 0012 5D00\[^\n\]*\n" { set x [expr $x+1] }
268 -re " +\[0-9\]+ 0014 5F00\[^\n\]*\n" { set x [expr $x+1] }
269 timeout { perror "timeout\n; break }
270 eof { break }
271 }
272 }
273
274 # This was intended to do any cleanup necessary. It kinda looks like it
275 # isn't needed, but just in case, please keep it in for now.
276 gas_finish
277
278 # Did we find what we were looking for? If not, flunk it.
279 if [expr $x == 8] then { pass $testname } else { fail $testname }
280 }
281
282 if [istarget h8300*-*-elf] then {
283 # Test the basic h8300 instruction parser
284 do_h8300_cbranch
285 do_h8300_branch
286
287 # Now test the h8300h instruction parser
288 do_h8300h_cbranch
289 do_h8300h_branch
290
291 # Now test the h8300s instruction parser
292 do_h8300s_cbranch
293 do_h8300s_branch
294
295 # Now some random tests
296 run_dump_test "ffxx1-elf"
297
298 run_dump_test h8sx_disp2
299 run_dump_test h8sx_rtsl
300 run_dump_test h8sx_mov_imm
301 }