250b4ffaff3ec1cc1eab21bcfd3f94fe9e78d22e
[external/binutils.git] / gas / testsuite / gas / h8300 / h8300.exp
1 # Copyright (C) 2012-2014 Free Software Foundation, Inc.
2
3 # This program is free software; you can redistribute it and/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation; either version 3 of the License, or
6 # (at your option) any later version.
7
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 # GNU General Public License for more details.
12
13 # You should have received a copy of the GNU General Public License
14 # along with this program; if not, write to the Free Software
15 # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  
16
17 #
18 # Some H8/300 tests
19 #
20 proc do_h8300_add_sub {} {
21     set testname "addsub.s: h8300 add/sub tests"
22     set x 0
23
24     gas_start "addsub.s" "-al"
25
26     # Check each instruction bit pattern to verify it got
27     # assembled correctly.
28     while 1 {
29         expect {
30             -re " +\[0-9\]+ 0000 8910\[^\n\]*\n"   { set x [expr $x+1] }
31             -re " +\[0-9\]+ 0002 0819\[^\n\]*\n"   { set x [expr $x+1] }
32             -re " +\[0-9\]+ 0004 0912\[^\n\]*\n"   { set x [expr $x+1] }
33             -re " +\[0-9\]+ 0006 0B04\[^\n\]*\n"   { set x [expr $x+1] }
34             -re " +\[0-9\]+ 0008 0B85\[^\n\]*\n"   { set x [expr $x+1] }
35             -re " +\[0-9\]+ 000a 0E89\[^\n\]*\n"   { set x [expr $x+1] }
36             -re " +\[0-9\]+ 000c 9210\[^\n\]*\n"   { set x [expr $x+1] }
37             -re " +\[0-9\]+ 000e 1889\[^\n\]*\n"   { set x [expr $x+1] }
38             -re " +\[0-9\]+ 0010 1901\[^\n\]*\n"   { set x [expr $x+1] }
39             -re " +\[0-9\]+ 0012 1B04\[^\n\]*\n"   { set x [expr $x+1] }
40             -re " +\[0-9\]+ 0014 1B85\[^\n\]*\n"   { set x [expr $x+1] }
41             -re " +\[0-9\]+ 0016 1E89\[^\n\]*\n"   { set x [expr $x+1] }
42             -re " +\[0-9\]+ 0018 B210\[^\n\]*\n"   { set x [expr $x+1] }
43             timeout                             { perror "timeout\n; break }
44             eof                                 { break }
45         }
46     }
47
48     # This was intended to do any cleanup necessary.  It kinda looks like it
49     # isn't needed, but just in case, please keep it in for now.
50     gas_finish
51
52     # Did we find what we were looking for?  If not, flunk it.
53     if [expr $x == 13] then { pass $testname } else { fail $testname }
54 }
55
56 proc do_h8300_logical {} {
57     set testname "logical.s: h8300 logical tests"
58     set x 0
59
60     gas_start "logical.s" "-al"
61
62     # Check each instruction bit pattern to verify it got
63     # assembled correctly.
64     while 1 {
65         expect {
66             -re " +\[0-9\]+ 0000 E910\[^\n\]*\n"   { set x [expr $x+1] }
67             -re " +\[0-9\]+ 0002 1691\[^\n\]*\n"   { set x [expr $x+1] }
68             -re " +\[0-9\]+ 0004 0610\[^\n\]*\n"   { set x [expr $x+1] }
69             -re " +\[0-9\]+ 0006 C810\[^\n\]*\n"   { set x [expr $x+1] }
70             -re " +\[0-9\]+ 0008 1498\[^\n\]*\n"   { set x [expr $x+1] }
71             -re " +\[0-9\]+ 000a 0410\[^\n\]*\n"   { set x [expr $x+1] }
72             -re " +\[0-9\]+ 000c D810\[^\n\]*\n"   { set x [expr $x+1] }
73             -re " +\[0-9\]+ 000e 1589\[^\n\]*\n"   { set x [expr $x+1] }
74             -re " +\[0-9\]+ 0010 0510\[^\n\]*\n"   { set x [expr $x+1] }
75             -re " +\[0-9\]+ 0012 1788\[^\n\]*\n"   { set x [expr $x+1] }
76             -re " +\[0-9\]+ 0014 1708\[^\n\]*\n"   { set x [expr $x+1] }
77             timeout                             { perror "timeout\n; break }
78             eof                                 { break }
79         }
80     }
81
82     # This was intended to do any cleanup necessary.  It kinda looks like it
83     # isn't needed, but just in case, please keep it in for now.
84     gas_finish
85
86     # Did we find what we were looking for?  If not, flunk it.
87     if [expr $x == 11] then { pass $testname } else { fail $testname }
88 }
89
90 proc do_h8300_cbranch {} {
91     set testname "cbranch.s: h8300 conditional branch tests"
92     set x 0
93
94     gas_start "cbranch.s" "-al"
95
96     # Check each instruction bit pattern to verify it got
97     # assembled correctly.
98     while 1 {
99         expect {
100             -re " +\[0-9\]+ 0000 4000\[^\n\]*\n"   { set x [expr $x+1] }
101             -re " +\[0-9\]+ 0002 4000\[^\n\]*\n"   { set x [expr $x+1] }
102             -re " +\[0-9\]+ 0004 4100\[^\n\]*\n"   { set x [expr $x+1] }
103             -re " +\[0-9\]+ 0006 4100\[^\n\]*\n"   { set x [expr $x+1] }
104             -re " +\[0-9\]+ 0008 4200\[^\n\]*\n"   { set x [expr $x+1] }
105             -re " +\[0-9\]+ 000a 4300\[^\n\]*\n"   { set x [expr $x+1] }
106             -re " +\[0-9\]+ 000c 4400\[^\n\]*\n"   { set x [expr $x+1] }
107             -re " +\[0-9\]+ 000e 4400\[^\n\]*\n"   { set x [expr $x+1] }
108             -re " +\[0-9\]+ 0010 4500\[^\n\]*\n"   { set x [expr $x+1] }
109             -re " +\[0-9\]+ 0012 4500\[^\n\]*\n"   { set x [expr $x+1] }
110             -re " +\[0-9\]+ 0014 4600\[^\n\]*\n"   { set x [expr $x+1] }
111             -re " +\[0-9\]+ 0016 4700\[^\n\]*\n"   { set x [expr $x+1] }
112             -re " +\[0-9\]+ 0018 4800\[^\n\]*\n"   { set x [expr $x+1] }
113             -re " +\[0-9\]+ 001a 4900\[^\n\]*\n"   { set x [expr $x+1] }
114             -re " +\[0-9\]+ 001c 4A00\[^\n\]*\n"   { set x [expr $x+1] }
115             -re " +\[0-9\]+ 001e 4B00\[^\n\]*\n"   { set x [expr $x+1] }
116             -re " +\[0-9\]+ 0020 4C00\[^\n\]*\n"   { set x [expr $x+1] }
117             -re " +\[0-9\]+ 0022 4D00\[^\n\]*\n"   { set x [expr $x+1] }
118             -re " +\[0-9\]+ 0024 4E00\[^\n\]*\n"   { set x [expr $x+1] }
119             -re " +\[0-9\]+ 0026 4F00\[^\n\]*\n"   { set x [expr $x+1] }
120             timeout                             { perror "timeout\n; break }
121             eof                                 { break }
122         }
123     }
124
125     # This was intended to do any cleanup necessary.  It kinda looks like it
126     # isn't needed, but just in case, please keep it in for now.
127     gas_finish
128
129     # Did we find what we were looking for?  If not, flunk it.
130     if [expr $x == 20] then { pass $testname } else { fail $testname }
131 }
132
133 proc do_h8300_bitops1 {} {
134     set testname "bitops1.s: h8300 bitops tests #1"
135     set x 0
136
137     gas_start "bitops1.s" "-al"
138
139     # Check each instruction bit pattern to verify it got
140     # assembled correctly.
141     while 1 {
142         expect {
143             -re " +\[0-9\]+ 0000 7608\[^\n\]*\n"   { set x [expr $x+1] }
144             -re " +\[0-9\]+ 0002 7C007600\[^\n\]*\n"   { set x [expr $x+1] }
145             -re " +\[0-9\]+ 0006 7E407600\[^\n\]*\n"   { set x [expr $x+1] }
146             -re " +\[0-9\]+ 000a 7208\[^\n\]*\n"   { set x [expr $x+1] }
147             -re " +\[0-9\]+ 000c 7D007200\[^\n\]*\n"   { set x [expr $x+1] }
148             -re " +\[0-9\]+ 0010 7F407200\[^\n\]*\n"   { set x [expr $x+1] }
149             -re " +\[0-9\]+ 0014 6298\[^\n\]*\n"   { set x [expr $x+1] }
150             -re " +\[0-9\]+ 0016 7D006290\[^\n\]*\n"   { set x [expr $x+1] }
151             -re " +\[0-9\]+ 001a 7F406290\[^\n\]*\n"   { set x [expr $x+1] }
152             -re " +\[0-9\]+ 001e 7688\[^\n\]*\n"   { set x [expr $x+1] }
153             -re " +\[0-9\]+ 0020 7C007680\[^\n\]*\n"   { set x [expr $x+1] }
154             -re " +\[0-9\]+ 0024 7E407680\[^\n\]*\n"   { set x [expr $x+1] }
155             -re " +\[0-9\]+ 0028 7788\[^\n\]*\n"   { set x [expr $x+1] }
156             -re " +\[0-9\]+ 002a 7C007780\[^\n\]*\n"   { set x [expr $x+1] }
157             -re " +\[0-9\]+ 002e 7E407780\[^\n\]*\n"   { set x [expr $x+1] }
158             timeout                             { perror "timeout\n; break }
159             eof                                 { break }
160         }
161     }
162
163     # This was intended to do any cleanup necessary.  It kinda looks like it
164     # isn't needed, but just in case, please keep it in for now.
165     gas_finish
166
167     # Did we find what we were looking for?  If not, flunk it.
168     if [expr $x == 15] then { pass $testname } else { fail $testname }
169 }
170
171 proc do_h8300_bitops2 {} {
172     set testname "bitops2.s: h8300 bitops tests #2"
173     set x 0
174
175     gas_start "bitops2.s" "-al"
176
177     # Check each instruction bit pattern to verify it got
178     # assembled correctly.
179     while 1 {
180         expect {
181             -re " +\[0-9\]+ 0000 7488\[^\n\]*\n"   { set x [expr $x+1] }
182             -re " +\[0-9\]+ 0002 7C007480\[^\n\]*\n"   { set x [expr $x+1] }
183             -re " +\[0-9\]+ 0006 7E407480\[^\n\]*\n"   { set x [expr $x+1] }
184             -re " +\[0-9\]+ 000a 6788\[^\n\]*\n"   { set x [expr $x+1] }
185             -re " +\[0-9\]+ 000c 7D006780\[^\n\]*\n"   { set x [expr $x+1] }
186             -re " +\[0-9\]+ 0010 7F406780\[^\n\]*\n"   { set x [expr $x+1] }
187             -re " +\[0-9\]+ 0014 7588\[^\n\]*\n"   { set x [expr $x+1] }
188             -re " +\[0-9\]+ 0016 7C007580\[^\n\]*\n"   { set x [expr $x+1] }
189             -re " +\[0-9\]+ 001a 7E407580\[^\n\]*\n"   { set x [expr $x+1] }
190             -re " +\[0-9\]+ 001e 7708\[^\n\]*\n"   { set x [expr $x+1] }
191             -re " +\[0-9\]+ 0020 7C007700\[^\n\]*\n"   { set x [expr $x+1] }
192             -re " +\[0-9\]+ 0024 7E407700\[^\n\]*\n"   { set x [expr $x+1] }
193             timeout                             { perror "timeout\n; break }
194             eof                                 { break }
195         }
196     }
197
198     # This was intended to do any cleanup necessary.  It kinda looks like it
199     # isn't needed, but just in case, please keep it in for now.
200     gas_finish
201
202     # Did we find what we were looking for?  If not, flunk it.
203     if [expr $x == 12] then { pass $testname } else { fail $testname }
204 }
205
206 proc do_h8300_bitops3 {} {
207     set testname "bitops3.s: h8300 bitops tests #3"
208     set x 0
209
210     gas_start "bitops3.s" "-al"
211
212     # Check each instruction bit pattern to verify it got
213     # assembled correctly.
214     while 1 {
215         expect {
216             -re " +\[0-9\]+ 0000 7108\[^\n\]*\n"   { set x [expr $x+1] }
217             -re " +\[0-9\]+ 0002 7D007100\[^\n\]*\n"   { set x [expr $x+1] }
218             -re " +\[0-9\]+ 0006 7F407100\[^\n\]*\n"   { set x [expr $x+1] }
219             -re " +\[0-9\]+ 000a 6198\[^\n\]*\n"   { set x [expr $x+1] }
220             -re " +\[0-9\]+ 000c 7D006190\[^\n\]*\n"   { set x [expr $x+1] }
221             -re " +\[0-9\]+ 0010 7F406190\[^\n\]*\n"   { set x [expr $x+1] }
222             -re " +\[0-9\]+ 0014 7008\[^\n\]*\n"   { set x [expr $x+1] }
223             -re " +\[0-9\]+ 0016 7D007000\[^\n\]*\n"   { set x [expr $x+1] }
224             -re " +\[0-9\]+ 001a 7F407000\[^\n\]*\n"   { set x [expr $x+1] }
225             -re " +\[0-9\]+ 001e 6098\[^\n\]*\n"   { set x [expr $x+1] }
226             -re " +\[0-9\]+ 0020 7D006090\[^\n\]*\n"   { set x [expr $x+1] }
227             -re " +\[0-9\]+ 0024 7F406090\[^\n\]*\n"   { set x [expr $x+1] }
228             timeout                             { perror "timeout\n; break }
229             eof                                 { break }
230         }
231     }
232
233     # This was intended to do any cleanup necessary.  It kinda looks like it
234     # isn't needed, but just in case, please keep it in for now.
235     gas_finish
236
237     # Did we find what we were looking for?  If not, flunk it.
238     if [expr $x == 12] then { pass $testname } else { fail $testname }
239 }
240
241 proc do_h8300_bitops4 {} {
242     set testname "bitops4.s: h8300 bitops tests #4"
243     set x 0
244
245     gas_start "bitops4.s" "-al"
246
247     # Check each instruction bit pattern to verify it got
248     # assembled correctly.
249     while 1 {
250         expect {
251             -re " +\[0-9\]+ 0000 7408\[^\n\]*\n"   { set x [expr $x+1] }
252             -re " +\[0-9\]+ 0002 7C007400\[^\n\]*\n"   { set x [expr $x+1] }
253             -re " +\[0-9\]+ 0006 7E407400\[^\n\]*\n"   { set x [expr $x+1] }
254             -re " +\[0-9\]+ 000a 6708\[^\n\]*\n"   { set x [expr $x+1] }
255             -re " +\[0-9\]+ 000c 7D006700\[^\n\]*\n"   { set x [expr $x+1] }
256             -re " +\[0-9\]+ 0010 7F406700\[^\n\]*\n"   { set x [expr $x+1] }
257             -re " +\[0-9\]+ 0014 7308\[^\n\]*\n"   { set x [expr $x+1] }
258             -re " +\[0-9\]+ 0016 7C007300\[^\n\]*\n"   { set x [expr $x+1] }
259             -re " +\[0-9\]+ 001a 7E407300\[^\n\]*\n"   { set x [expr $x+1] }
260             -re " +\[0-9\]+ 001e 6398\[^\n\]*\n"   { set x [expr $x+1] }
261             -re " +\[0-9\]+ 0020 7C006390\[^\n\]*\n"   { set x [expr $x+1] }
262             -re " +\[0-9\]+ 0024 7E406390\[^\n\]*\n"   { set x [expr $x+1] }
263             -re " +\[0-9\]+ 0028 7508\[^\n\]*\n"   { set x [expr $x+1] }
264             -re " +\[0-9\]+ 002a 7C007500\[^\n\]*\n"   { set x [expr $x+1] }
265             -re " +\[0-9\]+ 002e 7E407500\[^\n\]*\n"   { set x [expr $x+1] }
266             timeout                             { perror "timeout\n; break }
267             eof                                 { break }
268         }
269     }
270
271     # This was intended to do any cleanup necessary.  It kinda looks like it
272     # isn't needed, but just in case, please keep it in for now.
273     gas_finish
274
275     # Did we find what we were looking for?  If not, flunk it.
276     if [expr $x == 15] then { pass $testname } else { fail $testname }
277 }
278
279 proc do_h8300_branch {} {
280     set testname "branch.s: h8300 branch tests"
281     set x 0
282
283     gas_start "branch.s" "-al"
284
285     # Check each instruction bit pattern to verify it got
286     # assembled correctly.
287     while 1 {
288         expect {
289             -re " +\[0-9\]+ 0000 5500\[^\n\]*\n"   { set x [expr $x+1] }
290             -re " +\[0-9\]+ 0002 5A000000\[^\n\]*\n"   { set x [expr $x+1] }
291             -re " +\[0-9\]+ 0006 5900\[^\n\]*\n"   { set x [expr $x+1] }
292             -re " +\[0-9\]+ 0008 5B00\[^\n\]*\n"   { set x [expr $x+1] }
293             -re " +\[0-9\]+ 000a 5E000000\[^\n\]*\n"   { set x [expr $x+1] }
294             -re " +\[0-9\]+ 000e 5D00\[^\n\]*\n"   { set x [expr $x+1] }
295             -re " +\[0-9\]+ 0010 5F00\[^\n\]*\n"   { set x [expr $x+1] }
296             timeout                             { perror "timeout\n; break }
297             eof                                 { break }
298         }
299     }
300
301     # This was intended to do any cleanup necessary.  It kinda looks like it
302     # isn't needed, but just in case, please keep it in for now.
303     gas_finish
304
305     # Did we find what we were looking for?  If not, flunk it.
306     if [expr $x == 7] then { pass $testname } else { fail $testname }
307 }
308
309 proc do_h8300_compare {} {
310     set testname "compare.s: h8300 compare tests"
311     set x 0
312
313     gas_start "compare.s" "-al"
314
315     # Check each instruction bit pattern to verify it got
316     # assembled correctly.
317     while 1 {
318         expect {
319             -re " +\[0-9\]+ 0000 A800\[^\n\]*\n"   { set x [expr $x+1] }
320             -re " +\[0-9\]+ 0002 1C08\[^\n\]*\n"   { set x [expr $x+1] }
321             -re " +\[0-9\]+ 0004 1D01\[^\n\]*\n"   { set x [expr $x+1] }
322             timeout                             { perror "timeout\n; break }
323             eof                                 { break }
324         }
325     }
326
327     # This was intended to do any cleanup necessary.  It kinda looks like it
328     # isn't needed, but just in case, please keep it in for now.
329     gas_finish
330
331     # Did we find what we were looking for?  If not, flunk it.
332     if [expr $x == 3] then { pass $testname } else { fail $testname }
333 }
334
335 proc do_h8300_decimal {} {
336     set testname "decimal.s: h8300 decimal tests"
337     set x 0
338
339     gas_start "decimal.s" "-al"
340
341     # Check each instruction bit pattern to verify it got
342     # assembled correctly.
343     while 1 {
344         expect {
345             -re " +\[0-9\]+ 0000 0F08\[^\n\]*\n"   { set x [expr $x+1] }
346             -re " +\[0-9\]+ 0002 1F08\[^\n\]*\n"   { set x [expr $x+1] }
347             eof                                 { break }
348         }
349     }
350
351     # This was intended to do any cleanup necessary.  It kinda looks like it
352     # isn't needed, but just in case, please keep it in for now.
353     gas_finish
354
355     # Did we find what we were looking for?  If not, flunk it.
356     if [expr $x == 2] then { pass $testname } else { fail $testname }
357 }
358
359 proc do_h8300_incdec {} {
360     set testname "incdec.s: h8300 incdec tests"
361     set x 0
362
363     gas_start "incdec.s" "-al"
364
365     # Check each instruction bit pattern to verify it got
366     # assembled correctly.
367     while 1 {
368         expect {
369             -re " +\[0-9\]+ 0000 1A08\[^\n\]*\n"   { set x [expr $x+1] }
370             -re " +\[0-9\]+ 0002 0A08\[^\n\]*\n"   { set x [expr $x+1] }
371             eof                                 { break }
372         }
373     }
374
375     # This was intended to do any cleanup necessary.  It kinda looks like it
376     # isn't needed, but just in case, please keep it in for now.
377     gas_finish
378
379     # Did we find what we were looking for?  If not, flunk it.
380     if [expr $x == 2] then { pass $testname } else { fail $testname }
381 }
382
383 proc do_h8300_divmul {} {
384     set testname "divmul.s: h8300 divmul tests"
385     set x 0
386
387     gas_start "divmul.s" "-al"
388
389     # Check each instruction bit pattern to verify it got
390     # assembled correctly.
391     while 1 {
392         expect {
393             -re " +\[0-9\]+ 0000 5181\[^\n\]*\n"   { set x [expr $x+1] }
394             -re " +\[0-9\]+ 0002 5081\[^\n\]*\n"   { set x [expr $x+1] }
395             eof                                 { break }
396         }
397     }
398
399     # This was intended to do any cleanup necessary.  It kinda looks like it
400     # isn't needed, but just in case, please keep it in for now.
401     gas_finish
402
403     # Did we find what we were looking for?  If not, flunk it.
404     if [expr $x == 2] then { pass $testname } else { fail $testname }
405 }
406
407 proc do_h8300_misc {} {
408     set testname "misc.s: h8300 misc tests"
409     set x 0
410
411     gas_start "misc.s" "-al"
412
413     # Check each instruction bit pattern to verify it got
414     # assembled correctly.
415     while 1 {
416         expect {
417             -re " +\[0-9\]+ 0000 7B5C598F\[^\n\]*\n"   { set x [expr $x+1] }
418             -re " +\[0-9\]+ 0004 0700\[^\n\]*\n"   { set x [expr $x+1] }
419             -re " +\[0-9\]+ 0006 0308\[^\n\]*\n"   { set x [expr $x+1] }
420             -re " +\[0-9\]+ 0008 0000\[^\n\]*\n"   { set x [expr $x+1] }
421             -re " +\[0-9\]+ 000a 5670\[^\n\]*\n"   { set x [expr $x+1] }
422             -re " +\[0-9\]+ 000c 5470\[^\n\]*\n"   { set x [expr $x+1] }
423             -re " +\[0-9\]+ 000e 0180\[^\n\]*\n"   { set x [expr $x+1] }
424             -re " +\[0-9\]+ 0010 0208\[^\n\]*\n"   { set x [expr $x+1] }
425             eof                                 { break }
426         }
427     }
428
429     # This was intended to do any cleanup necessary.  It kinda looks like it
430     # isn't needed, but just in case, please keep it in for now.
431     gas_finish
432
433     # Did we find what we were looking for?  If not, flunk it.
434     if [expr $x == 8] then { pass $testname } else { fail $testname }
435
436     setup_xfail "h8300*-*-*"
437     fail "h8300 movfpe/movtpe tests"
438 }
439
440 proc do_h8300_movb {} {
441     set testname "movb.s: h8300 movb tests"
442     set x 0
443
444     gas_start "movb.s" "-al"
445
446     # Check each instruction bit pattern to verify it got
447     # assembled correctly.
448     while 1 {
449         expect {
450             -re " +\[0-9\]+ 0000 0C89\[^\n\]*\n"   { set x [expr $x+1] }
451             -re " +\[0-9\]+ 0002 F810\[^\n\]*\n"   { set x [expr $x+1] }
452             -re " +\[0-9\]+ 0004 6818\[^\n\]*\n"   { set x [expr $x+1] }
453             -re " +\[0-9\]+ 0006 6E180010\[^\n\]*\n"   { set x [expr $x+1] }
454             -re " +\[0-9\]+ 000a 6C18\[^\n\]*\n"   { set x [expr $x+1] }
455             -re " +\[0-9\]+ 000c 2810\[^\n\]*\n"   { set x [expr $x+1] }
456             -re " +\[0-9\]+ 000e 6A080000\[^\n\]*\n"   { set x [expr $x+1] }
457             -re " +\[0-9\]+ 0012 6898\[^\n\]*\n"   { set x [expr $x+1] }
458             -re " +\[0-9\]+ 0014 6E980010\[^\n\]*\n"   { set x [expr $x+1] }
459             -re " +\[0-9\]+ 0018 6C98\[^\n\]*\n"   { set x [expr $x+1] }
460             -re " +\[0-9\]+ 001a 3810\[^\n\]*\n"   { set x [expr $x+1] }
461             -re " +\[0-9\]+ 001c 6A880000\[^\n\]*\n"   { set x [expr $x+1] }
462             eof                                 { break }
463         }
464     }
465
466     # This was intended to do any cleanup necessary.  It kinda looks like it
467     # isn't needed, but just in case, please keep it in for now.
468     gas_finish
469
470     # Did we find what we were looking for?  If not, flunk it.
471     if [expr $x == 12] then { pass $testname } else { fail $testname }
472 }
473
474 proc do_h8300_movw {} {
475     set testname "movw.s: h8300 movw tests"
476     set x 0
477
478     gas_start "movw.s" "-al"
479
480     # Check each instruction bit pattern to verify it got
481     # assembled correctly.
482     while 1 {
483         expect {
484             -re " +\[0-9\]+ 0000 0D01\[^\n\]*\n"   { set x [expr $x+1] }
485             -re " +\[0-9\]+ 0002 79000010\[^\n\]*\n"   { set x [expr $x+1] }
486             -re " +\[0-9\]+ 0006 6910\[^\n\]*\n"   { set x [expr $x+1] }
487             -re " +\[0-9\]+ 0008 6F100010\[^\n\]*\n"   { set x [expr $x+1] }
488             -re " +\[0-9\]+ 000c 6D10\[^\n\]*\n"   { set x [expr $x+1] }
489             -re " +\[0-9\]+ 000e 6B000000\[^\n\]*\n"   { set x [expr $x+1] }
490             -re " +\[0-9\]+ 0012 6990\[^\n\]*\n"   { set x [expr $x+1] }
491             -re " +\[0-9\]+ 0014 6F900010\[^\n\]*\n"   { set x [expr $x+1] }
492             -re " +\[0-9\]+ 0018 6D90\[^\n\]*\n"   { set x [expr $x+1] }
493             -re " +\[0-9\]+ 001a 6B800000\[^\n\]*\n"   { set x [expr $x+1] }
494             eof                                 { break }
495         }
496     }
497
498     # This was intended to do any cleanup necessary.  It kinda looks like it
499     # isn't needed, but just in case, please keep it in for now.
500     gas_finish
501
502     # Did we find what we were looking for?  If not, flunk it.
503     if [expr $x == 10] then { pass $testname } else { fail $testname }
504 }
505
506 proc do_h8300_pushpop {} {
507     set testname "pushpop.s: h8300 pushpop tests"
508     set x 0
509
510     gas_start "pushpop.s" "-al"
511
512     # Check each instruction bit pattern to verify it got
513     # assembled correctly.
514     while 1 {
515         expect {
516             -re " +\[0-9\]+ 0000 6D70\[^\n\]*\n"   { set x [expr $x+1] }
517             -re " +\[0-9\]+ 0002 6DF0\[^\n\]*\n"   { set x [expr $x+1] }
518             eof                                 { break }
519         }
520     }
521
522     # This was intended to do any cleanup necessary.  It kinda looks like it
523     # isn't needed, but just in case, please keep it in for now.
524     gas_finish
525
526     # Did we find what we were looking for?  If not, flunk it.
527     if [expr $x == 2] then { pass $testname } else { fail $testname }
528 }
529
530 proc do_h8300_rotate_shift {} {
531     set testname "rotsh.s: h8300 rotate and shift tests"
532     set x 0
533
534     gas_start "rotsh.s" "-al"
535
536     # Check each instruction bit pattern to verify it got
537     # assembled correctly.
538     while 1 {
539         expect {
540             -re " +\[0-9\]+ 0000 1288\[^\n\]*\n"   { set x [expr $x+1] }
541             -re " +\[0-9\]+ 0002 1388\[^\n\]*\n"   { set x [expr $x+1] }
542             -re " +\[0-9\]+ 0004 1208\[^\n\]*\n"   { set x [expr $x+1] }
543             -re " +\[0-9\]+ 0006 1308\[^\n\]*\n"   { set x [expr $x+1] }
544             -re " +\[0-9\]+ 0008 1088\[^\n\]*\n"   { set x [expr $x+1] }
545             -re " +\[0-9\]+ 000a 1188\[^\n\]*\n"   { set x [expr $x+1] }
546             -re " +\[0-9\]+ 000c 1008\[^\n\]*\n"   { set x [expr $x+1] }
547             -re " +\[0-9\]+ 000e 1108\[^\n\]*\n"   { set x [expr $x+1] }
548             eof                                 { break }
549         }
550     }
551
552     # This was intended to do any cleanup necessary.  It kinda looks like it
553     # isn't needed, but just in case, please keep it in for now.
554     gas_finish
555
556     # Did we find what we were looking for?  If not, flunk it.
557     if [expr $x == 8] then { pass $testname } else { fail $testname }
558 }
559
560 proc do_h8300h_add_sub {} {
561     set testname "addsubh.s: h8300h add/sub tests"
562     set x 0
563
564     gas_start "addsubh.s" "-al"
565
566     # Check each instruction bit pattern to verify it got
567     # assembled correctly.
568     while 1 {
569         expect {
570             -re " +\[0-9\]+ 0000 8910\[^\n\]*\n"   { set x [expr $x+1] }
571             -re " +\[0-9\]+ 0002 0819\[^\n\]*\n"   { set x [expr $x+1] }
572             -re " +\[0-9\]+ 0004 79110020\[^\n\]*\n"   { set x [expr $x+1] }
573             -re " +\[0-9\]+ 0008 0912\[^\n\]*\n"   { set x [expr $x+1] }
574             -re " +\[0-9\]+ 000a 7A110000\[^\n\]*\n +\[0-9\]+ +0040\[^\n\]*\n"   { set x [expr $x+1] }
575             -re " +\[0-9\]+ 0010 0A92\[^\n\]*\n"   { set x [expr $x+1] }
576             -re " +\[0-9\]+ 0012 0B04\[^\n\]*\n"   { set x [expr $x+1] }
577             -re " +\[0-9\]+ 0014 0B85\[^\n\]*\n"   { set x [expr $x+1] }
578             -re " +\[0-9\]+ 0016 0B96\[^\n\]*\n"   { set x [expr $x+1] }
579             -re " +\[0-9\]+ 0018 0E89\[^\n\]*\n"   { set x [expr $x+1] }
580             -re " +\[0-9\]+ 001a 9210\[^\n\]*\n"   { set x [expr $x+1] }
581             -re " +\[0-9\]+ 001c 1889\[^\n\]*\n"   { set x [expr $x+1] }
582             -re " +\[0-9\]+ 001e 79310010\[^\n\]*\n"   { set x [expr $x+1] }
583             -re " +\[0-9\]+ 0022 1901\[^\n\]*\n"   { set x [expr $x+1] }
584             -re " +\[0-9\]+ 0024 7A310000\[^\n\]*\n +\[0-9\]+ +0040\[^\n\]*\n"   { set x [expr $x+1] }
585             -re " +\[0-9\]+ 002a 1A92\[^\n\]*\n"   { set x [expr $x+1] }
586             -re " +\[0-9\]+ 002c 1B04\[^\n\]*\n"   { set x [expr $x+1] }
587             -re " +\[0-9\]+ 002e 1B85\[^\n\]*\n"   { set x [expr $x+1] }
588             -re " +\[0-9\]+ 0030 1B96\[^\n\]*\n"   { set x [expr $x+1] }
589             -re " +\[0-9\]+ 0032 1E89\[^\n\]*\n"   { set x [expr $x+1] }
590             -re " +\[0-9\]+ 0034 B210\[^\n\]*\n"   { set x [expr $x+1] }
591             timeout                             { perror "timeout\n; break }
592             eof                                 { break }
593         }
594     }
595
596     # This was intended to do any cleanup necessary.  It kinda looks like it
597     # isn't needed, but just in case, please keep it in for now.
598     gas_finish
599
600     # Did we find what we were looking for?  If not, flunk it.
601     if [expr $x == 21] then { pass $testname } else { fail $testname }
602 }
603
604 proc do_h8300h_logical {} {
605     set testname "logicalh.s: h8300h logical tests"
606     set x 0
607
608     gas_start "logicalh.s" "-al"
609
610     # Check each instruction bit pattern to verify it got
611     # assembled correctly.
612     while 1 {
613         expect {
614             -re " +\[0-9\]+ 0000 E910\[^\n\]*\n"   { set x [expr $x+1] }
615             -re " +\[0-9\]+ 0002 1691\[^\n\]*\n"   { set x [expr $x+1] }
616             -re " +\[0-9\]+ 0004 79610020\[^\n\]*\n"   { set x [expr $x+1] }
617             -re " +\[0-9\]+ 0008 6611\[^\n\]*\n"   { set x [expr $x+1] }
618             -re " +\[0-9\]+ 000a 7A610000\[^\n\]*\n +\[0-9\]+ +0040\[^\n\]*\n"   { set x [expr $x+1] }
619             -re " +\[0-9\]+ 0010 01F06611\[^\n\]*\n"   { set x [expr $x+1] }
620             -re " +\[0-9\]+ 0014 0610\[^\n\]*\n"   { set x [expr $x+1] }
621             -re " +\[0-9\]+ 0016 C810\[^\n\]*\n"   { set x [expr $x+1] }
622             -re " +\[0-9\]+ 0018 1498\[^\n\]*\n"   { set x [expr $x+1] }
623             -re " +\[0-9\]+ 001a 79410020\[^\n\]*\n"   { set x [expr $x+1] }
624             -re " +\[0-9\]+ 001e 6411\[^\n\]*\n"   { set x [expr $x+1] }
625             -re " +\[0-9\]+ 0020 7A410000\[^\n\]*\n +\[0-9\]+ +0040\[^\n\]*\n"   { set x [expr $x+1] }
626             -re " +\[0-9\]+ 0026 01F06411\[^\n\]*\n"   { set x [expr $x+1] }
627             -re " +\[0-9\]+ 002a 0410\[^\n\]*\n"   { set x [expr $x+1] }
628             -re " +\[0-9\]+ 002c D810\[^\n\]*\n"   { set x [expr $x+1] }
629             -re " +\[0-9\]+ 002e 1589\[^\n\]*\n"   { set x [expr $x+1] }
630             -re " +\[0-9\]+ 0030 79510020\[^\n\]*\n"   { set x [expr $x+1] }
631             -re " +\[0-9\]+ 0034 6511\[^\n\]*\n"   { set x [expr $x+1] }
632             -re " +\[0-9\]+ 0036 7A510000\[^\n\]*\n +\[0-9\]+ +0040\[^\n\]*\n"   { set x [expr $x+1] }
633             -re " +\[0-9\]+ 003c 01F06511\[^\n\]*\n"   { set x [expr $x+1] }
634             -re " +\[0-9\]+ 0040 0510\[^\n\]*\n"   { set x [expr $x+1] }
635             -re " +\[0-9\]+ 0042 1788\[^\n\]*\n"   { set x [expr $x+1] }
636             -re " +\[0-9\]+ 0044 1790\[^\n\]*\n"   { set x [expr $x+1] }
637             -re " +\[0-9\]+ 0046 17B0\[^\n\]*\n"   { set x [expr $x+1] }
638             -re " +\[0-9\]+ 0048 1708\[^\n\]*\n"   { set x [expr $x+1] }
639             -re " +\[0-9\]+ 004a 1710\[^\n\]*\n"   { set x [expr $x+1] }
640             -re " +\[0-9\]+ 004c 1730\[^\n\]*\n"   { set x [expr $x+1] }
641             timeout                             { perror "timeout\n; break }
642             eof                                 { break }
643         }
644     }
645
646     # This was intended to do any cleanup necessary.  It kinda looks like it
647     # isn't needed, but just in case, please keep it in for now.
648     gas_finish
649
650     # Did we find what we were looking for?  If not, flunk it.
651     if [expr $x == 27] then { pass $testname } else { fail $testname }
652 }
653
654 proc do_h8300h_cbranch {} {
655     set testname "cbranchh.s: h8300h conditional branch tests"
656     set x 0
657
658     gas_start "cbranchh.s" "-al"
659
660     # Check each instruction bit pattern to verify it got
661     # assembled correctly.
662     while 1 {
663         expect {
664             -re " +\[0-9\]+ 0000 4000\[^\n\]*\n"   { set x [expr $x+1] }
665             -re " +\[0-9\]+ 0002 4000\[^\n\]*\n"   { set x [expr $x+1] }
666             -re " +\[0-9\]+ 0004 4100\[^\n\]*\n"   { set x [expr $x+1] }
667             -re " +\[0-9\]+ 0006 4100\[^\n\]*\n"   { set x [expr $x+1] }
668             -re " +\[0-9\]+ 0008 4200\[^\n\]*\n"   { set x [expr $x+1] }
669             -re " +\[0-9\]+ 000a 4300\[^\n\]*\n"   { set x [expr $x+1] }
670             -re " +\[0-9\]+ 000c 4400\[^\n\]*\n"   { set x [expr $x+1] }
671             -re " +\[0-9\]+ 000e 4400\[^\n\]*\n"   { set x [expr $x+1] }
672             -re " +\[0-9\]+ 0010 4500\[^\n\]*\n"   { set x [expr $x+1] }
673             -re " +\[0-9\]+ 0012 4500\[^\n\]*\n"   { set x [expr $x+1] }
674             -re " +\[0-9\]+ 0014 4600\[^\n\]*\n"   { set x [expr $x+1] }
675             -re " +\[0-9\]+ 0016 4700\[^\n\]*\n"   { set x [expr $x+1] }
676             -re " +\[0-9\]+ 0018 4800\[^\n\]*\n"   { set x [expr $x+1] }
677             -re " +\[0-9\]+ 001a 4900\[^\n\]*\n"   { set x [expr $x+1] }
678             -re " +\[0-9\]+ 001c 4A00\[^\n\]*\n"   { set x [expr $x+1] }
679             -re " +\[0-9\]+ 001e 4B00\[^\n\]*\n"   { set x [expr $x+1] }
680             -re " +\[0-9\]+ 0020 4C00\[^\n\]*\n"   { set x [expr $x+1] }
681             -re " +\[0-9\]+ 0022 4D00\[^\n\]*\n"   { set x [expr $x+1] }
682             -re " +\[0-9\]+ 0024 4E00\[^\n\]*\n"   { set x [expr $x+1] }
683             -re " +\[0-9\]+ 0026 4F00\[^\n\]*\n"   { set x [expr $x+1] }
684             -re " +\[0-9\]+ 0028 58000000\[^\n\]*\n"   { set x [expr $x+1] }
685             -re " +\[0-9\]+ 002c 58000000\[^\n\]*\n"   { set x [expr $x+1] }
686             -re " +\[0-9\]+ 0030 58100000\[^\n\]*\n"   { set x [expr $x+1] }
687             -re " +\[0-9\]+ 0034 58100000\[^\n\]*\n"   { set x [expr $x+1] }
688             -re " +\[0-9\]+ 0038 58200000\[^\n\]*\n"   { set x [expr $x+1] }
689             -re " +\[0-9\]+ 003c 58300000\[^\n\]*\n"   { set x [expr $x+1] }
690             -re " +\[0-9\]+ 0040 58400000\[^\n\]*\n"   { set x [expr $x+1] }
691             -re " +\[0-9\]+ 0044 58400000\[^\n\]*\n"   { set x [expr $x+1] }
692             -re " +\[0-9\]+ 0048 58500000\[^\n\]*\n"   { set x [expr $x+1] }
693             -re " +\[0-9\]+ 004c 58500000\[^\n\]*\n"   { set x [expr $x+1] }
694             -re " +\[0-9\]+ 0050 58600000\[^\n\]*\n"   { set x [expr $x+1] }
695             -re " +\[0-9\]+ 0054 58700000\[^\n\]*\n"   { set x [expr $x+1] }
696             -re " +\[0-9\]+ 0058 58800000\[^\n\]*\n"   { set x [expr $x+1] }
697             -re " +\[0-9\]+ 005c 58900000\[^\n\]*\n"   { set x [expr $x+1] }
698             -re " +\[0-9\]+ 0060 58A00000\[^\n\]*\n"   { set x [expr $x+1] }
699             -re " +\[0-9\]+ 0064 58B00000\[^\n\]*\n"   { set x [expr $x+1] }
700             -re " +\[0-9\]+ 0068 58C00000\[^\n\]*\n"   { set x [expr $x+1] }
701             -re " +\[0-9\]+ 006c 58D00000\[^\n\]*\n"   { set x [expr $x+1] }
702             -re " +\[0-9\]+ 0070 58E00000\[^\n\]*\n"   { set x [expr $x+1] }
703             -re " +\[0-9\]+ 0074 58F00000\[^\n\]*\n"   { set x [expr $x+1] }
704             timeout                             { perror "timeout\n; break }
705             eof                                 { break }
706         }
707     }
708
709     # This was intended to do any cleanup necessary.  It kinda looks like it
710     # isn't needed, but just in case, please keep it in for now.
711     gas_finish
712
713     # Did we find what we were looking for?  If not, flunk it.
714     if [expr $x == 40] then { pass $testname } else { fail $testname }
715 }
716 proc do_h8300h_bitops1 {} {
717     set testname "bitops1h.s: h8300h bitops tests #1"
718     set x 0
719
720     gas_start "bitops1h.s" "-al"
721
722     # Check each instruction bit pattern to verify it got
723     # assembled correctly.
724     while 1 {
725         expect {
726             -re " +\[0-9\]+ 0000 7608\[^\n\]*\n"   { set x [expr $x+1] }
727             -re " +\[0-9\]+ 0002 7C007600\[^\n\]*\n"   { set x [expr $x+1] }
728             -re " +\[0-9\]+ 0006 7E407600\[^\n\]*\n"   { set x [expr $x+1] }
729             -re " +\[0-9\]+ 000a 7208\[^\n\]*\n"   { set x [expr $x+1] }
730             -re " +\[0-9\]+ 000c 7D007200\[^\n\]*\n"   { set x [expr $x+1] }
731             -re " +\[0-9\]+ 0010 7F407200\[^\n\]*\n"   { set x [expr $x+1] }
732             -re " +\[0-9\]+ 0014 6298\[^\n\]*\n"   { set x [expr $x+1] }
733             -re " +\[0-9\]+ 0016 7D006290\[^\n\]*\n"   { set x [expr $x+1] }
734             -re " +\[0-9\]+ 001a 7F406290\[^\n\]*\n"   { set x [expr $x+1] }
735             -re " +\[0-9\]+ 001e 7688\[^\n\]*\n"   { set x [expr $x+1] }
736             -re " +\[0-9\]+ 0020 7C007680\[^\n\]*\n"   { set x [expr $x+1] }
737             -re " +\[0-9\]+ 0024 7E407680\[^\n\]*\n"   { set x [expr $x+1] }
738             -re " +\[0-9\]+ 0028 7788\[^\n\]*\n"   { set x [expr $x+1] }
739             -re " +\[0-9\]+ 002a 7C007780\[^\n\]*\n"   { set x [expr $x+1] }
740             -re " +\[0-9\]+ 002e 7E407780\[^\n\]*\n"   { set x [expr $x+1] }
741             timeout                             { perror "timeout\n; break }
742             eof                                 { break }
743         }
744     }
745
746     # This was intended to do any cleanup necessary.  It kinda looks like it
747     # isn't needed, but just in case, please keep it in for now.
748     gas_finish
749
750     # Did we find what we were looking for?  If not, flunk it.
751     if [expr $x == 15] then { pass $testname } else { fail $testname }
752 }
753
754 proc do_h8300h_bitops2 {} {
755     set testname "bitops2h.s: h8300h bitops tests #2"
756     set x 0
757
758     gas_start "bitops2h.s" "-al"
759
760     # Check each instruction bit pattern to verify it got
761     # assembled correctly.
762     while 1 {
763         expect {
764             -re " +\[0-9\]+ 0000 7488\[^\n\]*\n"   { set x [expr $x+1] }
765             -re " +\[0-9\]+ 0002 7C007480\[^\n\]*\n"   { set x [expr $x+1] }
766             -re " +\[0-9\]+ 0006 7E407480\[^\n\]*\n"   { set x [expr $x+1] }
767             -re " +\[0-9\]+ 000a 6788\[^\n\]*\n"   { set x [expr $x+1] }
768             -re " +\[0-9\]+ 000c 7D006780\[^\n\]*\n"   { set x [expr $x+1] }
769             -re " +\[0-9\]+ 0010 7F406780\[^\n\]*\n"   { set x [expr $x+1] }
770             -re " +\[0-9\]+ 0014 7588\[^\n\]*\n"   { set x [expr $x+1] }
771             -re " +\[0-9\]+ 0016 7C007580\[^\n\]*\n"   { set x [expr $x+1] }
772             -re " +\[0-9\]+ 001a 7E407580\[^\n\]*\n"   { set x [expr $x+1] }
773             -re " +\[0-9\]+ 001e 7708\[^\n\]*\n"   { set x [expr $x+1] }
774             -re " +\[0-9\]+ 0020 7C007700\[^\n\]*\n"   { set x [expr $x+1] }
775             -re " +\[0-9\]+ 0024 7E407700\[^\n\]*\n"   { set x [expr $x+1] }
776             timeout                             { perror "timeout\n; break }
777             eof                                 { break }
778         }
779     }
780
781     # This was intended to do any cleanup necessary.  It kinda looks like it
782     # isn't needed, but just in case, please keep it in for now.
783     gas_finish
784
785     # Did we find what we were looking for?  If not, flunk it.
786     if [expr $x == 12] then { pass $testname } else { fail $testname }
787 }
788
789 proc do_h8300h_bitops3 {} {
790     set testname "bitops3h.s: h8300h bitops tests #3"
791     set x 0
792
793     gas_start "bitops3h.s" "-al"
794
795     # Check each instruction bit pattern to verify it got
796     # assembled correctly.
797     while 1 {
798         expect {
799             -re " +\[0-9\]+ 0000 7108\[^\n\]*\n"   { set x [expr $x+1] }
800             -re " +\[0-9\]+ 0002 7D007100\[^\n\]*\n"   { set x [expr $x+1] }
801             -re " +\[0-9\]+ 0006 7F407100\[^\n\]*\n"   { set x [expr $x+1] }
802             -re " +\[0-9\]+ 000a 6198\[^\n\]*\n"   { set x [expr $x+1] }
803             -re " +\[0-9\]+ 000c 7D006190\[^\n\]*\n"   { set x [expr $x+1] }
804             -re " +\[0-9\]+ 0010 7F406190\[^\n\]*\n"   { set x [expr $x+1] }
805             -re " +\[0-9\]+ 0014 7008\[^\n\]*\n"   { set x [expr $x+1] }
806             -re " +\[0-9\]+ 0016 7D007000\[^\n\]*\n"   { set x [expr $x+1] }
807             -re " +\[0-9\]+ 001a 7F407000\[^\n\]*\n"   { set x [expr $x+1] }
808             -re " +\[0-9\]+ 001e 6098\[^\n\]*\n"   { set x [expr $x+1] }
809             -re " +\[0-9\]+ 0020 7D006090\[^\n\]*\n"   { set x [expr $x+1] }
810             -re " +\[0-9\]+ 0024 7F406090\[^\n\]*\n"   { set x [expr $x+1] }
811             timeout                             { perror "timeout\n; break }
812             eof                                 { break }
813         }
814     }
815
816     # This was intended to do any cleanup necessary.  It kinda looks like it
817     # isn't needed, but just in case, please keep it in for now.
818     gas_finish
819
820     # Did we find what we were looking for?  If not, flunk it.
821     if [expr $x == 12] then { pass $testname } else { fail $testname }
822 }
823
824 proc do_h8300h_bitops4 {} {
825     set testname "bitops4h.s: h8300h bitops tests #4"
826     set x 0
827
828     gas_start "bitops4h.s" "-al"
829
830     # Check each instruction bit pattern to verify it got
831     # assembled correctly.
832     while 1 {
833         expect {
834             -re " +\[0-9\]+ 0000 7408\[^\n\]*\n"   { set x [expr $x+1] }
835             -re " +\[0-9\]+ 0002 7C007400\[^\n\]*\n"   { set x [expr $x+1] }
836             -re " +\[0-9\]+ 0006 7E407400\[^\n\]*\n"   { set x [expr $x+1] }
837             -re " +\[0-9\]+ 000a 6708\[^\n\]*\n"   { set x [expr $x+1] }
838             -re " +\[0-9\]+ 000c 7D006700\[^\n\]*\n"   { set x [expr $x+1] }
839             -re " +\[0-9\]+ 0010 7F406700\[^\n\]*\n"   { set x [expr $x+1] }
840             -re " +\[0-9\]+ 0014 7308\[^\n\]*\n"   { set x [expr $x+1] }
841             -re " +\[0-9\]+ 0016 7C007300\[^\n\]*\n"   { set x [expr $x+1] }
842             -re " +\[0-9\]+ 001a 7E407300\[^\n\]*\n"   { set x [expr $x+1] }
843             -re " +\[0-9\]+ 001e 6398\[^\n\]*\n"   { set x [expr $x+1] }
844             -re " +\[0-9\]+ 0020 7C006390\[^\n\]*\n"   { set x [expr $x+1] }
845             -re " +\[0-9\]+ 0024 7E406390\[^\n\]*\n"   { set x [expr $x+1] }
846             -re " +\[0-9\]+ 0028 7508\[^\n\]*\n"   { set x [expr $x+1] }
847             -re " +\[0-9\]+ 002a 7C007500\[^\n\]*\n"   { set x [expr $x+1] }
848             -re " +\[0-9\]+ 002e 7E407500\[^\n\]*\n"   { set x [expr $x+1] }
849             timeout                             { perror "timeout\n; break }
850             eof                                 { break }
851         }
852     }
853
854     # This was intended to do any cleanup necessary.  It kinda looks like it
855     # isn't needed, but just in case, please keep it in for now.
856     gas_finish
857
858     # Did we find what we were looking for?  If not, flunk it.
859     if [expr $x == 15] then { pass $testname } else { fail $testname }
860 }
861
862 proc do_h8300h_branch {} {
863     set testname "branchh.s: h8300h branch tests"
864     set x 0
865
866     gas_start "branchh.s" "-al"
867
868     # Check each instruction bit pattern to verify it got
869     # assembled correctly.
870     while 1 {
871         expect {
872             -re " +\[0-9\]+ 0000 5500\[^\n\]*\n"   { set x [expr $x+1] }
873             -re " +\[0-9\]+ 0002 5C000000\[^\n\]*\n"   { set x [expr $x+1] }
874             -re " +\[0-9\]+ 0006 5A000000\[^\n\]*\n"   { set x [expr $x+1] }
875             -re " +\[0-9\]+ 000a 5900\[^\n\]*\n"   { set x [expr $x+1] }
876             -re " +\[0-9\]+ 000c 5B00\[^\n\]*\n"   { set x [expr $x+1] }
877             -re " +\[0-9\]+ 000e 5E000000\[^\n\]*\n"   { set x [expr $x+1] }
878             -re " +\[0-9\]+ 0012 5D00\[^\n\]*\n"   { set x [expr $x+1] }
879             -re " +\[0-9\]+ 0014 5F00\[^\n\]*\n"   { set x [expr $x+1] }
880             timeout                             { perror "timeout\n; break }
881             eof                                 { break }
882         }
883     }
884
885     # This was intended to do any cleanup necessary.  It kinda looks like it
886     # isn't needed, but just in case, please keep it in for now.
887     gas_finish
888
889     # Did we find what we were looking for?  If not, flunk it.
890     if [expr $x == 8] then { pass $testname } else { fail $testname }
891 }
892
893 proc do_h8300h_compare {} {
894     set testname "compareh.s: h8300h compare tests"
895     set x 0
896
897     gas_start "compareh.s" "-al"
898
899     # Check each instruction bit pattern to verify it got
900     # assembled correctly.
901     while 1 {
902         expect {
903             -re " +\[0-9\]+ 0000 A800\[^\n\]*\n"   { set x [expr $x+1] }
904             -re " +\[0-9\]+ 0002 1C08\[^\n\]*\n"   { set x [expr $x+1] }
905             -re " +\[0-9\]+ 0004 79200020\[^\n\]*\n"   { set x [expr $x+1] }
906             -re " +\[0-9\]+ 0008 1D01\[^\n\]*\n"   { set x [expr $x+1] }
907             -re " +\[0-9\]+ 000a 7A200000\[^\n\]*\n +\[0-9\]+ +0040\[^\n\]*\n"   { set x [expr $x+1] }
908             -re " +\[0-9\]+ 0010 1F81\[^\n\]*\n"   { set x [expr $x+1] }
909             timeout                             { perror "timeout\n; break }
910             eof                                 { break }
911         }
912     }
913
914     # This was intended to do any cleanup necessary.  It kinda looks like it
915     # isn't needed, but just in case, please keep it in for now.
916     gas_finish
917
918     # Did we find what we were looking for?  If not, flunk it.
919     if [expr $x == 6] then { pass $testname } else { fail $testname }
920 }
921
922 proc do_h8300h_decimal {} {
923     set testname "decimalh.s: h8300h decimal tests"
924     set x 0
925
926     gas_start "decimalh.s" "-al"
927
928     # Check each instruction bit pattern to verify it got
929     # assembled correctly.
930     while 1 {
931         expect {
932             -re " +\[0-9\]+ 0000 0F08\[^\n\]*\n"   { set x [expr $x+1] }
933             -re " +\[0-9\]+ 0002 1F08\[^\n\]*\n"   { set x [expr $x+1] }
934             eof                                 { break }
935         }
936     }
937
938     # This was intended to do any cleanup necessary.  It kinda looks like it
939     # isn't needed, but just in case, please keep it in for now.
940     gas_finish
941
942     # Did we find what we were looking for?  If not, flunk it.
943     if [expr $x == 2] then { pass $testname } else { fail $testname }
944 }
945
946 proc do_h8300h_incdec {} {
947     set testname "incdech.s: h8300h incdec tests"
948     set x 0
949
950     gas_start "incdech.s" "-al"
951
952     # Check each instruction bit pattern to verify it got
953     # assembled correctly.
954     while 1 {
955         expect {
956             -re " +\[0-9\]+ 0000 1A08\[^\n\]*\n"   { set x [expr $x+1] }
957             -re " +\[0-9\]+ 0002 1B50\[^\n\]*\n"   { set x [expr $x+1] }
958             -re " +\[0-9\]+ 0004 1BD0\[^\n\]*\n"   { set x [expr $x+1] }
959             -re " +\[0-9\]+ 0006 1B70\[^\n\]*\n"   { set x [expr $x+1] }
960             -re " +\[0-9\]+ 0008 1BF0\[^\n\]*\n"   { set x [expr $x+1] }
961             -re " +\[0-9\]+ 000a 0A08\[^\n\]*\n"   { set x [expr $x+1] }
962             -re " +\[0-9\]+ 000c 0B50\[^\n\]*\n"   { set x [expr $x+1] }
963             -re " +\[0-9\]+ 000e 0BD0\[^\n\]*\n"   { set x [expr $x+1] }
964             -re " +\[0-9\]+ 0010 0B70\[^\n\]*\n"   { set x [expr $x+1] }
965             -re " +\[0-9\]+ 0012 0BF0\[^\n\]*\n"   { set x [expr $x+1] }
966             eof                                 { break }
967         }
968     }
969
970     # This was intended to do any cleanup necessary.  It kinda looks like it
971     # isn't needed, but just in case, please keep it in for now.
972     gas_finish
973
974     # Did we find what we were looking for?  If not, flunk it.
975     if [expr $x == 10] then { pass $testname } else { fail $testname }
976 }
977
978 proc do_h8300h_divmul {} {
979     set testname "divmulh.s: h8300h divmul tests"
980     set x 0
981
982     gas_start "divmulh.s" "-al"
983
984     # Check each instruction bit pattern to verify it got
985     # assembled correctly.
986     while 1 {
987         expect {
988             -re " +\[0-9\]+ 0000 5181\[^\n\]*\n"   { set x [expr $x+1] }
989             -re " +\[0-9\]+ 0002 5301\[^\n\]*\n"   { set x [expr $x+1] }
990             -re " +\[0-9\]+ 0004 01D05181\[^\n\]*\n"   { set x [expr $x+1] }
991             -re " +\[0-9\]+ 0008 01D05301\[^\n\]*\n"   { set x [expr $x+1] }
992             -re " +\[0-9\]+ 000c 5081\[^\n\]*\n"   { set x [expr $x+1] }
993             -re " +\[0-9\]+ 000e 5201\[^\n\]*\n"   { set x [expr $x+1] }
994             -re " +\[0-9\]+ 0010 01C05081\[^\n\]*\n"   { set x [expr $x+1] }
995             -re " +\[0-9\]+ 0014 01C05201\[^\n\]*\n"   { set x [expr $x+1] }
996             eof                                 { break }
997         }
998     }
999
1000     # This was intended to do any cleanup necessary.  It kinda looks like it
1001     # isn't needed, but just in case, please keep it in for now.
1002     gas_finish
1003
1004     # Did we find what we were looking for?  If not, flunk it.
1005     if [expr $x == 8] then { pass $testname } else { fail $testname }
1006 }
1007
1008 proc do_h8300h_misc {} {
1009     set testname "misch.s: h8300h misc tests"
1010     set x 0
1011
1012     gas_start "misch.s" "-al"
1013
1014     # Check each instruction bit pattern to verify it got
1015     # assembled correctly.
1016     while 1 {
1017         expect {
1018             -re " +\[0-9\]+ 0000 7B5C598F\[^\n\]*\n"   { set x [expr $x+1] }
1019             -re " +\[0-9\]+ 0004 7BD4598F\[^\n\]*\n"   { set x [expr $x+1] }
1020             -re " +\[0-9\]+ 0008 0700\[^\n\]*\n"   { set x [expr $x+1] }
1021             -re " +\[0-9\]+ 000a 0308\[^\n\]*\n"   { set x [expr $x+1] }
1022             -re " +\[0-9\]+ 000c 01406900\[^\n\]*\n"   { set x [expr $x+1] }
1023             -re " +\[0-9\]+ 0010 01406F00\[^\n\]*\n +\[0-9\]+ +0010\[^\n\]*\n"   { set x [expr $x+1] }
1024             -re " +\[0-9\]+ 0016 01407800\[^\n\]*\n +\[0-9\]+ +6B200000\[^\n\]*\n +\[0-9\]+ +0020\[^\n\]*\n"   { set x [expr $x+1] }
1025             -re " +\[0-9\]+ 0020 01406D00\[^\n\]*\n"   { set x [expr $x+1] }
1026             -re " +\[0-9\]+ 0024 01406B00\[^\n\]*\n +\[0-9\]+ +0000\[^\n\]*\n"   { set x [expr $x+1] }
1027             -re " +\[0-9\]+ 002a 01406B20\[^\n\]*\n +\[0-9\]+ +00000000\[^\n\]*\n"   { set x [expr $x+1] }
1028             -re " +\[0-9\]+ 0032 0000\[^\n\]*\n"   { set x [expr $x+1] }
1029             -re " +\[0-9\]+ 0034 5670\[^\n\]*\n"   { set x [expr $x+1] }
1030             -re " +\[0-9\]+ 0036 5470\[^\n\]*\n"   { set x [expr $x+1] }
1031             -re " +\[0-9\]+ 0038 0180\[^\n\]*\n"   { set x [expr $x+1] }
1032             -re " +\[0-9\]+ 003a 0208\[^\n\]*\n"   { set x [expr $x+1] }
1033             -re " +\[0-9\]+ 003c 01406980\[^\n\]*\n"   { set x [expr $x+1] }
1034             -re " +\[0-9\]+ 0040 01406F80\[^\n\]*\n +\[0-9\]+ +0010\[^\n\]*\n"   { set x [expr $x+1] }
1035             -re " +\[0-9\]+ 0046 01407800\[^\n\]*\n +\[0-9\]+ +6BA00000\[^\n\]*\n +\[0-9\]+ +0020\[^\n\]*\n"   { set x [expr $x+1] }
1036             -re " +\[0-9\]+ 0050 01406D80\[^\n\]*\n"   { set x [expr $x+1] }
1037             -re " +\[0-9\]+ 0054 01406B80\[^\n\]*\n +\[0-9\]+ +0000\[^\n\]*\n"   { set x [expr $x+1] }
1038             -re " +\[0-9\]+ 005a 01406BA0\[^\n\]*\n +\[0-9\]+ +00000000\[^\n\]*\n"   { set x [expr $x+1] }
1039             eof                                 { break }
1040         }
1041     }
1042
1043     # This was intended to do any cleanup necessary.  It kinda looks like it
1044     # isn't needed, but just in case, please keep it in for now.
1045     gas_finish
1046
1047     # Did we find what we were looking for?  If not, flunk it.
1048     if [expr $x == 21] then { pass $testname } else { fail $testname }
1049
1050     setup_xfail "h8300*-*-*"
1051     fail "h8300h movfpe/movtpe tests"
1052 }
1053
1054 proc do_h8300h_movb {} {
1055     set testname "movbh.s: h8300h movb tests"
1056     set x 0
1057
1058     gas_start "movbh.s" "-al"
1059
1060     # Check each instruction bit pattern to verify it got
1061     # assembled correctly.
1062     while 1 {
1063         expect {
1064             -re " +\[0-9\]+ 0000 0C89\[^\n\]*\n"   { set x [expr $x+1] }
1065             -re " +\[0-9\]+ 0002 F810\[^\n\]*\n"   { set x [expr $x+1] }
1066             -re " +\[0-9\]+ 0004 6818\[^\n\]*\n"   { set x [expr $x+1] }
1067             -re " +\[0-9\]+ 0006 6E180010\[^\n\]*\n"   { set x [expr $x+1] }
1068             -re " +\[0-9\]+ 000a 78106A28\[^\n\]*\n +\[0-9\]+ +00000020\[^\n\]*\n"   { set x [expr $x+1] }
1069             -re " +\[0-9\]+ 0012 6C18\[^\n\]*\n"   { set x [expr $x+1] }
1070             -re " +\[0-9\]+ 0014 2810\[^\n\]*\n"   { set x [expr $x+1] }
1071             -re " +\[0-9\]+ 0016 6A080000\[^\n\]*\n"   { set x [expr $x+1] }
1072             -re " +\[0-9\]+ 001a 6A280000\[^\n\]*\n +\[0-9\]+ +0000\[^\n\]*\n"   { set x [expr $x+1] }
1073             -re " +\[0-9\]+ 0020 6898\[^\n\]*\n"   { set x [expr $x+1] }
1074             -re " +\[0-9\]+ 0022 6E980010\[^\n\]*\n"   { set x [expr $x+1] }
1075             -re " +\[0-9\]+ 0026 78106AA8\[^\n\]*\n +\[0-9\]+ +00000020\[^\n\]*\n"   { set x [expr $x+1] }
1076             -re " +\[0-9\]+ 002e 6C98\[^\n\]*\n"   { set x [expr $x+1] }
1077             -re " +\[0-9\]+ 0030 3810\[^\n\]*\n"   { set x [expr $x+1] }
1078             -re " +\[0-9\]+ 0032 6A880000\[^\n\]*\n"   { set x [expr $x+1] }
1079             -re " +\[0-9\]+ 0036 6AA80000\[^\n\]*\n +\[0-9\]+ +0000\[^\n\]*\n"   { set x [expr $x+1] }
1080             eof                                 { break }
1081         }
1082     }
1083
1084     # This was intended to do any cleanup necessary.  It kinda looks like it
1085     # isn't needed, but just in case, please keep it in for now.
1086     gas_finish
1087
1088     # Did we find what we were looking for?  If not, flunk it.
1089     if [expr $x == 16] then { pass $testname } else { fail $testname }
1090 }
1091
1092 proc do_h8300h_movw {} {
1093     set testname "movwh.s: h8300h movw tests"
1094     set x 0
1095
1096     gas_start "movwh.s" "-al"
1097
1098     # Check each instruction bit pattern to verify it got
1099     # assembled correctly.
1100     while 1 {
1101         expect {
1102             -re " +\[0-9\]+ 0000 0D01\[^\n\]*\n"   { set x [expr $x+1] }
1103             -re " +\[0-9\]+ 0002 79000010\[^\n\]*\n"   { set x [expr $x+1] }
1104             -re " +\[0-9\]+ 0006 6910\[^\n\]*\n"   { set x [expr $x+1] }
1105             -re " +\[0-9\]+ 0008 6F100010\[^\n\]*\n"   { set x [expr $x+1] }
1106             -re " +\[0-9\]+ 000c 78106B20\[^\n\]*\n +\[0-9\]+ +00000020\[^\n\]*\n"   { set x [expr $x+1] }
1107             -re " +\[0-9\]+ 0014 6D10\[^\n\]*\n"   { set x [expr $x+1] }
1108             -re " +\[0-9\]+ 0016 6B000000\[^\n\]*\n"   { set x [expr $x+1] }
1109             -re " +\[0-9\]+ 001a 6B200000\[^\n\]*\n +\[0-9\]+ +0000\[^\n\]*\n"   { set x [expr $x+1] }
1110             -re " +\[0-9\]+ 0020 6990\[^\n\]*\n"   { set x [expr $x+1] }
1111             -re " +\[0-9\]+ 0022 6F900010\[^\n\]*\n"   { set x [expr $x+1] }
1112             -re " +\[0-9\]+ 0026 78106BA0\[^\n\]*\n +\[0-9\]+ +00000020\[^\n\]*\n"   { set x [expr $x+1] }
1113             -re " +\[0-9\]+ 002e 6D90\[^\n\]*\n"   { set x [expr $x+1] }
1114             -re " +\[0-9\]+ 0030 6B800000\[^\n\]*\n"   { set x [expr $x+1] }
1115             -re " +\[0-9\]+ 0034 6BA00000\[^\n\]*\n +\[0-9\]+ +0000\[^\n\]*\n"   { set x [expr $x+1] }
1116             eof                                 { break }
1117         }
1118     }
1119
1120     # This was intended to do any cleanup necessary.  It kinda looks like it
1121     # isn't needed, but just in case, please keep it in for now.
1122     gas_finish
1123
1124     # Did we find what we were looking for?  If not, flunk it.
1125     if [expr $x == 14] then { pass $testname } else { fail $testname }
1126 }
1127
1128 proc do_h8300h_movl {} {
1129     set testname "movlh.s: h8300h movl tests"
1130     set x 0
1131
1132     gas_start "movlh.s" "-al"
1133
1134     # Check each instruction bit pattern to verify it got
1135     # assembled correctly.
1136     while 1 {
1137         expect {
1138             -re " +\[0-9\]+ 0000 0F81\[^\n\]*\n"   { set x [expr $x+1] }
1139             -re " +\[0-9\]+ 0002 7A000000\[^\n\]*\n +\[0-9\]+ +0040\[^\n\]*\n"   { set x [expr $x+1] }
1140             -re " +\[0-9\]+ 0008 01006910\[^\n\]*\n"   { set x [expr $x+1] }
1141             -re " +\[0-9\]+ 000c 01006F10\[^\n\]*\n +\[0-9\]+ +0010\[^\n\]*\n"   { set x [expr $x+1] }
1142             -re " +\[0-9\]+ 0012 01007810\[^\n\]*\n +\[0-9\]+ +6B200000\[^\n\]*\n +\[0-9\]+ +0020\[^\n\]*\n"   { set x [expr $x+1] }
1143             -re " +\[0-9\]+ 001c 01006D10\[^\n\]*\n"   { set x [expr $x+1] }
1144             -re " +\[0-9\]+ 0020 01006B00\[^\n\]*\n +\[0-9\]+ +0000\[^\n\]*\n"   { set x [expr $x+1] }
1145             -re " +\[0-9\]+ 0026 01006B20\[^\n\]*\n +\[0-9\]+ +00000000\[^\n\]*\n"   { set x [expr $x+1] }
1146             -re " +\[0-9\]+ 002e 01006990\[^\n\]*\n"   { set x [expr $x+1] }
1147             -re " +\[0-9\]+ 0032 01006F90\[^\n\]*\n +\[0-9\]+ +0010\[^\n\]*\n"   { set x [expr $x+1] }
1148             -re " +\[0-9\]+ 0038 01007890\[^\n\]*\n +\[0-9\]+ +6BA00000\[^\n\]*\n +\[0-9\]+ +0020\[^\n\]*\n"   { set x [expr $x+1] }
1149             -re " +\[0-9\]+ 0042 01006D90\[^\n\]*\n"   { set x [expr $x+1] }
1150             -re " +\[0-9\]+ 0046 01006B80\[^\n\]*\n +\[0-9\]+ +0000\[^\n\]*\n"   { set x [expr $x+1] }
1151             -re " +\[0-9\]+ 004c 01006BA0\[^\n\]*\n +\[0-9\]+ +00000000\[^\n\]*\n"   { set x [expr $x+1] }
1152             eof                                 { break }
1153         }
1154     }
1155
1156     # This was intended to do any cleanup necessary.  It kinda looks like it
1157     # isn't needed, but just in case, please keep it in for now.
1158     gas_finish
1159
1160     # Did we find what we were looking for?  If not, flunk it.
1161     if [expr $x == 14] then { pass $testname } else { fail $testname }
1162 }
1163
1164 proc do_h8300h_pushpop {} {
1165     set testname "pushpoph.s: h8300h pushpop tests"
1166     set x 0
1167
1168     gas_start "pushpoph.s" "-al"
1169
1170     # Check each instruction bit pattern to verify it got
1171     # assembled correctly.
1172     while 1 {
1173         expect {
1174             -re " +\[0-9\]+ 0000 6D70\[^\n\]*\n"   { set x [expr $x+1] }
1175             -re " +\[0-9\]+ 0002 01006D70\[^\n\]*\n"   { set x [expr $x+1] }
1176             -re " +\[0-9\]+ 0006 6DF0\[^\n\]*\n"   { set x [expr $x+1] }
1177             -re " +\[0-9\]+ 0008 01006DF0\[^\n\]*\n"   { set x [expr $x+1] }
1178             eof                                 { break }
1179         }
1180     }
1181
1182     # This was intended to do any cleanup necessary.  It kinda looks like it
1183     # isn't needed, but just in case, please keep it in for now.
1184     gas_finish
1185
1186     # Did we find what we were looking for?  If not, flunk it.
1187     if [expr $x == 4] then { pass $testname } else { fail $testname }
1188 }
1189
1190 proc do_h8300h_rotate_shift {} {
1191     set testname "rotshh.s: h8300h rotate and shift tests"
1192     set x 0
1193
1194     gas_start "rotshh.s" "-al"
1195
1196     # Check each instruction bit pattern to verify it got
1197     # assembled correctly.
1198     while 1 {
1199         expect {
1200             -re " +\[0-9\]+ 0000 1288\[^\n\]*\n"   { set x [expr $x+1] }
1201             -re " +\[0-9\]+ 0002 1290\[^\n\]*\n"   { set x [expr $x+1] }
1202             -re " +\[0-9\]+ 0004 12B0\[^\n\]*\n"   { set x [expr $x+1] }
1203             -re " +\[0-9\]+ 0006 1388\[^\n\]*\n"   { set x [expr $x+1] }
1204             -re " +\[0-9\]+ 0008 1390\[^\n\]*\n"   { set x [expr $x+1] }
1205             -re " +\[0-9\]+ 000a 13B0\[^\n\]*\n"   { set x [expr $x+1] }
1206             -re " +\[0-9\]+ 000c 1208\[^\n\]*\n"   { set x [expr $x+1] }
1207             -re " +\[0-9\]+ 000e 1210\[^\n\]*\n"   { set x [expr $x+1] }
1208             -re " +\[0-9\]+ 0010 1230\[^\n\]*\n"   { set x [expr $x+1] }
1209             -re " +\[0-9\]+ 0012 1308\[^\n\]*\n"   { set x [expr $x+1] }
1210             -re " +\[0-9\]+ 0014 1310\[^\n\]*\n"   { set x [expr $x+1] }
1211             -re " +\[0-9\]+ 0016 1330\[^\n\]*\n"   { set x [expr $x+1] }
1212             -re " +\[0-9\]+ 0018 1088\[^\n\]*\n"   { set x [expr $x+1] }
1213             -re " +\[0-9\]+ 001a 1090\[^\n\]*\n"   { set x [expr $x+1] }
1214             -re " +\[0-9\]+ 001c 10B0\[^\n\]*\n"   { set x [expr $x+1] }
1215             -re " +\[0-9\]+ 001e 1188\[^\n\]*\n"   { set x [expr $x+1] }
1216             -re " +\[0-9\]+ 0020 1190\[^\n\]*\n"   { set x [expr $x+1] }
1217             -re " +\[0-9\]+ 0022 11B0\[^\n\]*\n"   { set x [expr $x+1] }
1218             -re " +\[0-9\]+ 0024 1008\[^\n\]*\n"   { set x [expr $x+1] }
1219             -re " +\[0-9\]+ 0026 1010\[^\n\]*\n"   { set x [expr $x+1] }
1220             -re " +\[0-9\]+ 0028 1030\[^\n\]*\n"   { set x [expr $x+1] }
1221             -re " +\[0-9\]+ 002a 1108\[^\n\]*\n"   { set x [expr $x+1] }
1222             -re " +\[0-9\]+ 002c 1110\[^\n\]*\n"   { set x [expr $x+1] }
1223             -re " +\[0-9\]+ 002e 1130\[^\n\]*\n"   { set x [expr $x+1] }
1224             eof                                 { break }
1225         }
1226     }
1227
1228     # This was intended to do any cleanup necessary.  It kinda looks like it
1229     # isn't needed, but just in case, please keep it in for now.
1230     gas_finish
1231
1232     # Did we find what we were looking for?  If not, flunk it.
1233     if [expr $x == 24] then { pass $testname } else { fail $testname }
1234 }
1235
1236 proc do_h8300h_extend {} {
1237     set testname "extendh.s: h8300h extend tests"
1238     set x 0
1239
1240     gas_start "extendh.s" "-al"
1241
1242     # Check each instruction bit pattern to verify it got
1243     # assembled correctly.
1244     while 1 {
1245         expect {
1246             -re " +\[0-9\]+ 0000 17D0\[^\n\]*\n"   { set x [expr $x+1] }
1247             -re " +\[0-9\]+ 0002 17F0\[^\n\]*\n"   { set x [expr $x+1] }
1248             -re " +\[0-9\]+ 0004 1750\[^\n\]*\n"   { set x [expr $x+1] }
1249             -re " +\[0-9\]+ 0006 1770\[^\n\]*\n"   { set x [expr $x+1] }
1250             eof                                 { break }
1251         }
1252     }
1253
1254     # This was intended to do any cleanup necessary.  It kinda looks like it
1255     # isn't needed, but just in case, please keep it in for now.
1256     gas_finish
1257
1258     # Did we find what we were looking for?  If not, flunk it.
1259     if [expr $x == 4] then { pass $testname } else { fail $testname }
1260 }
1261
1262 proc do_h8300s_add_sub {} {
1263     set testname "addsubs.s: h8300s add/sub tests"
1264     set x 0
1265
1266     gas_start "addsubs.s" "-al"
1267
1268     # Check each instruction bit pattern to verify it got
1269     # assembled correctly.
1270     while 1 {
1271         expect {
1272             -re " +\[0-9\]+ 0000 8910\[^\n\]*\n"   { set x [expr $x+1] }
1273             -re " +\[0-9\]+ 0002 0819\[^\n\]*\n"   { set x [expr $x+1] }
1274             -re " +\[0-9\]+ 0004 79110020\[^\n\]*\n"   { set x [expr $x+1] }
1275             -re " +\[0-9\]+ 0008 0912\[^\n\]*\n"   { set x [expr $x+1] }
1276             -re " +\[0-9\]+ 000a 7A110000\[^\n\]*\n +\[0-9\]+ +0040\[^\n\]*\n"   { set x [expr $x+1] }
1277             -re " +\[0-9\]+ 0010 0A92\[^\n\]*\n"   { set x [expr $x+1] }
1278             -re " +\[0-9\]+ 0012 0B04\[^\n\]*\n"   { set x [expr $x+1] }
1279             -re " +\[0-9\]+ 0014 0B85\[^\n\]*\n"   { set x [expr $x+1] }
1280             -re " +\[0-9\]+ 0016 0B96\[^\n\]*\n"   { set x [expr $x+1] }
1281             -re " +\[0-9\]+ 0018 0E89\[^\n\]*\n"   { set x [expr $x+1] }
1282             -re " +\[0-9\]+ 001a 9210\[^\n\]*\n"   { set x [expr $x+1] }
1283             -re " +\[0-9\]+ 001c 1889\[^\n\]*\n"   { set x [expr $x+1] }
1284             -re " +\[0-9\]+ 001e 79310010\[^\n\]*\n"   { set x [expr $x+1] }
1285             -re " +\[0-9\]+ 0022 1901\[^\n\]*\n"   { set x [expr $x+1] }
1286             -re " +\[0-9\]+ 0024 7A310000\[^\n\]*\n +\[0-9\]+ +0040\[^\n\]*\n"   { set x [expr $x+1] }
1287             -re " +\[0-9\]+ 002a 1A92\[^\n\]*\n"   { set x [expr $x+1] }
1288             -re " +\[0-9\]+ 002c 1B04\[^\n\]*\n"   { set x [expr $x+1] }
1289             -re " +\[0-9\]+ 002e 1B85\[^\n\]*\n"   { set x [expr $x+1] }
1290             -re " +\[0-9\]+ 0030 1B96\[^\n\]*\n"   { set x [expr $x+1] }
1291             -re " +\[0-9\]+ 0032 1E89\[^\n\]*\n"   { set x [expr $x+1] }
1292             -re " +\[0-9\]+ 0034 B210\[^\n\]*\n"   { set x [expr $x+1] }
1293             timeout                             { perror "timeout\n; break }
1294             eof                                 { break }
1295         }
1296     }
1297
1298     # This was intended to do any cleanup necessary.  It kinda looks like it
1299     # isn't needed, but just in case, please keep it in for now.
1300     gas_finish
1301
1302     # Did we find what we were looking for?  If not, flunk it.
1303     if [expr $x == 21] then { pass $testname } else { fail $testname }
1304 }
1305
1306 proc do_h8300s_logical {} {
1307     set testname "logicals.s: h8300s logical tests"
1308     set x 0
1309
1310     gas_start "logicals.s" "-al"
1311
1312     # Check each instruction bit pattern to verify it got
1313     # assembled correctly.
1314     while 1 {
1315         expect {
1316             -re " +\[0-9\]+ 0000 E910\[^\n\]*\n"   { set x [expr $x+1] }
1317             -re " +\[0-9\]+ 0002 1691\[^\n\]*\n"   { set x [expr $x+1] }
1318             -re " +\[0-9\]+ 0004 79610020\[^\n\]*\n"   { set x [expr $x+1] }
1319             -re " +\[0-9\]+ 0008 6611\[^\n\]*\n"   { set x [expr $x+1] }
1320             -re " +\[0-9\]+ 000a 7A610000\[^\n\]*\n +\[0-9\]+ +0040\[^\n\]*\n"   { set x [expr $x+1] }
1321             -re " +\[0-9\]+ 0010 01F06611\[^\n\]*\n"   { set x [expr $x+1] }
1322             -re " +\[0-9\]+ 0014 0610\[^\n\]*\n"   { set x [expr $x+1] }
1323             -re " +\[0-9\]+ 0016 01410610\[^\n\]*\n"   { set x [expr $x+1] }
1324             -re " +\[0-9\]+ 001a C810\[^\n\]*\n"   { set x [expr $x+1] }
1325             -re " +\[0-9\]+ 001c 1498\[^\n\]*\n"   { set x [expr $x+1] }
1326             -re " +\[0-9\]+ 001e 79410020\[^\n\]*\n"   { set x [expr $x+1] }
1327             -re " +\[0-9\]+ 0022 6411\[^\n\]*\n"   { set x [expr $x+1] }
1328             -re " +\[0-9\]+ 0024 7A410000\[^\n\]*\n +\[0-9\]+ +0040\[^\n\]*\n"   { set x [expr $x+1] }
1329             -re " +\[0-9\]+ 002a 01F06411\[^\n\]*\n"   { set x [expr $x+1] }
1330             -re " +\[0-9\]+ 002e 0410\[^\n\]*\n"   { set x [expr $x+1] }
1331             -re " +\[0-9\]+ 0030 01410410\[^\n\]*\n"   { set x [expr $x+1] }
1332
1333             -re " +\[0-9\]+ 0034 D810\[^\n\]*\n"   { set x [expr $x+1] }
1334             -re " +\[0-9\]+ 0036 1589\[^\n\]*\n"   { set x [expr $x+1] }
1335             -re " +\[0-9\]+ 0038 79510020\[^\n\]*\n"   { set x [expr $x+1] }
1336             -re " +\[0-9\]+ 003c 6511\[^\n\]*\n"   { set x [expr $x+1] }
1337             -re " +\[0-9\]+ 003e 7A510000\[^\n\]*\n +\[0-9\]+ +0040\[^\n\]*\n"   { set x [expr $x+1] }
1338             -re " +\[0-9\]+ 0044 01F06511\[^\n\]*\n"   { set x [expr $x+1] }
1339             -re " +\[0-9\]+ 0048 0510\[^\n\]*\n"   { set x [expr $x+1] }
1340             -re " +\[0-9\]+ 004a 01410510\[^\n\]*\n"   { set x [expr $x+1] }
1341             -re " +\[0-9\]+ 004e 1788\[^\n\]*\n"   { set x [expr $x+1] }
1342             -re " +\[0-9\]+ 0050 1790\[^\n\]*\n"   { set x [expr $x+1] }
1343             -re " +\[0-9\]+ 0052 17B0\[^\n\]*\n"   { set x [expr $x+1] }
1344             -re " +\[0-9\]+ 0054 1708\[^\n\]*\n"   { set x [expr $x+1] }
1345             -re " +\[0-9\]+ 0056 1710\[^\n\]*\n"   { set x [expr $x+1] }
1346             -re " +\[0-9\]+ 0058 1730\[^\n\]*\n"   { set x [expr $x+1] }
1347             timeout                             { perror "timeout\n; break }
1348             eof                                 { break }
1349         }
1350     }
1351
1352     # This was intended to do any cleanup necessary.  It kinda looks like it
1353     # isn't needed, but just in case, please keep it in for now.
1354     gas_finish
1355
1356     # Did we find what we were looking for?  If not, flunk it.
1357     if [expr $x == 30] then { pass $testname } else { fail $testname }
1358 }
1359
1360 proc do_h8300s_cbranch {} {
1361     set testname "cbranchs.s: h8300s conditional branch tests"
1362     set x 0
1363
1364     gas_start "cbranchs.s" "-al"
1365
1366     # Check each instruction bit pattern to verify it got
1367     # assembled correctly.
1368     while 1 {
1369         expect {
1370             -re " +\[0-9\]+ 0000 4000\[^\n\]*\n"   { set x [expr $x+1] }
1371             -re " +\[0-9\]+ 0002 4000\[^\n\]*\n"   { set x [expr $x+1] }
1372             -re " +\[0-9\]+ 0004 4100\[^\n\]*\n"   { set x [expr $x+1] }
1373             -re " +\[0-9\]+ 0006 4100\[^\n\]*\n"   { set x [expr $x+1] }
1374             -re " +\[0-9\]+ 0008 4200\[^\n\]*\n"   { set x [expr $x+1] }
1375             -re " +\[0-9\]+ 000a 4300\[^\n\]*\n"   { set x [expr $x+1] }
1376             -re " +\[0-9\]+ 000c 4400\[^\n\]*\n"   { set x [expr $x+1] }
1377             -re " +\[0-9\]+ 000e 4400\[^\n\]*\n"   { set x [expr $x+1] }
1378             -re " +\[0-9\]+ 0010 4500\[^\n\]*\n"   { set x [expr $x+1] }
1379             -re " +\[0-9\]+ 0012 4500\[^\n\]*\n"   { set x [expr $x+1] }
1380             -re " +\[0-9\]+ 0014 4600\[^\n\]*\n"   { set x [expr $x+1] }
1381             -re " +\[0-9\]+ 0016 4700\[^\n\]*\n"   { set x [expr $x+1] }
1382             -re " +\[0-9\]+ 0018 4800\[^\n\]*\n"   { set x [expr $x+1] }
1383             -re " +\[0-9\]+ 001a 4900\[^\n\]*\n"   { set x [expr $x+1] }
1384             -re " +\[0-9\]+ 001c 4A00\[^\n\]*\n"   { set x [expr $x+1] }
1385             -re " +\[0-9\]+ 001e 4B00\[^\n\]*\n"   { set x [expr $x+1] }
1386             -re " +\[0-9\]+ 0020 4C00\[^\n\]*\n"   { set x [expr $x+1] }
1387             -re " +\[0-9\]+ 0022 4D00\[^\n\]*\n"   { set x [expr $x+1] }
1388             -re " +\[0-9\]+ 0024 4E00\[^\n\]*\n"   { set x [expr $x+1] }
1389             -re " +\[0-9\]+ 0026 4F00\[^\n\]*\n"   { set x [expr $x+1] }
1390             -re " +\[0-9\]+ 0028 58000000\[^\n\]*\n"   { set x [expr $x+1] }
1391             -re " +\[0-9\]+ 002c 58000000\[^\n\]*\n"   { set x [expr $x+1] }
1392             -re " +\[0-9\]+ 0030 58100000\[^\n\]*\n"   { set x [expr $x+1] }
1393             -re " +\[0-9\]+ 0034 58100000\[^\n\]*\n"   { set x [expr $x+1] }
1394             -re " +\[0-9\]+ 0038 58200000\[^\n\]*\n"   { set x [expr $x+1] }
1395             -re " +\[0-9\]+ 003c 58300000\[^\n\]*\n"   { set x [expr $x+1] }
1396             -re " +\[0-9\]+ 0040 58400000\[^\n\]*\n"   { set x [expr $x+1] }
1397             -re " +\[0-9\]+ 0044 58400000\[^\n\]*\n"   { set x [expr $x+1] }
1398             -re " +\[0-9\]+ 0048 58500000\[^\n\]*\n"   { set x [expr $x+1] }
1399             -re " +\[0-9\]+ 004c 58500000\[^\n\]*\n"   { set x [expr $x+1] }
1400             -re " +\[0-9\]+ 0050 58600000\[^\n\]*\n"   { set x [expr $x+1] }
1401             -re " +\[0-9\]+ 0054 58700000\[^\n\]*\n"   { set x [expr $x+1] }
1402             -re " +\[0-9\]+ 0058 58800000\[^\n\]*\n"   { set x [expr $x+1] }
1403             -re " +\[0-9\]+ 005c 58900000\[^\n\]*\n"   { set x [expr $x+1] }
1404             -re " +\[0-9\]+ 0060 58A00000\[^\n\]*\n"   { set x [expr $x+1] }
1405             -re " +\[0-9\]+ 0064 58B00000\[^\n\]*\n"   { set x [expr $x+1] }
1406             -re " +\[0-9\]+ 0068 58C00000\[^\n\]*\n"   { set x [expr $x+1] }
1407             -re " +\[0-9\]+ 006c 58D00000\[^\n\]*\n"   { set x [expr $x+1] }
1408             -re " +\[0-9\]+ 0070 58E00000\[^\n\]*\n"   { set x [expr $x+1] }
1409             -re " +\[0-9\]+ 0074 58F00000\[^\n\]*\n"   { set x [expr $x+1] }
1410             timeout                             { perror "timeout\n; break }
1411             eof                                 { break }
1412         }
1413     }
1414
1415     # This was intended to do any cleanup necessary.  It kinda looks like it
1416     # isn't needed, but just in case, please keep it in for now.
1417     gas_finish
1418
1419     # Did we find what we were looking for?  If not, flunk it.
1420     if [expr $x == 40] then { pass $testname } else { fail $testname }
1421 }
1422 proc do_h8300s_bitops1 {} {
1423     set testname "bitops1s.s: h8300s bitops tests #1"
1424     set x 0
1425
1426     gas_start "bitops1s.s" "-al"
1427
1428     # Check each instruction bit pattern to verify it got
1429     # assembled correctly.
1430     while 1 {
1431         expect {
1432             -re " +\[0-9\]+ 0000 7608\[^\n\]*\n"   { set x [expr $x+1] }
1433             -re " +\[0-9\]+ 0002 7C007600\[^\n\]*\n"   { set x [expr $x+1] }
1434             -re " +\[0-9\]+ 0006 7E407600\[^\n\]*\n"   { set x [expr $x+1] }
1435             -re " +\[0-9\]+ 000a 6A100080\[^\n\]*\n +\[0-9\]+ +7600"   { set x [expr $x+1] }
1436             -re " +\[0-9\]+ 0010 6A300001\[^\n\]*\n +\[0-9\]+ +00007600"   { set x [expr $x+1] }
1437             -re " +\[0-9\]+ 0018 7208\[^\n\]*\n"   { set x [expr $x+1] }
1438             -re " +\[0-9\]+ 001a 7D007200\[^\n\]*\n"   { set x [expr $x+1] }
1439             -re " +\[0-9\]+ 001e 7F407200\[^\n\]*\n"   { set x [expr $x+1] }
1440             -re " +\[0-9\]+ 0022 6A180080\[^\n\]*\n +\[0-9\]+ +7200"   { set x [expr $x+1] }
1441             -re " +\[0-9\]+ 0028 6A380001\[^\n\]*\n +\[0-9\]+ +00007200"   { set x [expr $x+1] }
1442             -re " +\[0-9\]+ 0030 6298\[^\n\]*\n"   { set x [expr $x+1] }
1443             -re " +\[0-9\]+ 0032 7D006290\[^\n\]*\n"   { set x [expr $x+1] }
1444             -re " +\[0-9\]+ 0036 7F406290\[^\n\]*\n"   { set x [expr $x+1] }
1445             -re " +\[0-9\]+ 003a 6A180080\[^\n\]*\n +\[0-9\]+ +6290"   { set x [expr $x+1] }
1446             -re " +\[0-9\]+ 0040 6A380001\[^\n\]*\n +\[0-9\]+ +00006290"   { set x [expr $x+1] }
1447             -re " +\[0-9\]+ 0048 7688\[^\n\]*\n"   { set x [expr $x+1] }
1448             -re " +\[0-9\]+ 004a 7C007680\[^\n\]*\n"   { set x [expr $x+1] }
1449             -re " +\[0-9\]+ 004e 7E407680\[^\n\]*\n"   { set x [expr $x+1] }
1450             -re " +\[0-9\]+ 0052 6A100080\[^\n\]*\n +\[0-9\]+ +7680"   { set x [expr $x+1] }
1451             -re " +\[0-9\]+ 0058 6A300001\[^\n\]*\n +\[0-9\]+ +00007680"   { set x [expr $x+1] }
1452             -re " +\[0-9\]+ 0060 7788\[^\n\]*\n"   { set x [expr $x+1] }
1453             -re " +\[0-9\]+ 0062 7C007780\[^\n\]*\n"   { set x [expr $x+1] }
1454             -re " +\[0-9\]+ 0066 7E407780\[^\n\]*\n"   { set x [expr $x+1] }
1455             -re " +\[0-9\]+ 006a 6A100080\[^\n\]*\n +\[0-9\]+ +7780"   { set x [expr $x+1] }
1456             -re " +\[0-9\]+ 0070 6A300001\[^\n\]*\n +\[0-9\]+ +00007780"   { set x [expr $x+1] }
1457             timeout                             { perror "timeout\n; break }
1458             eof                                 { break }
1459         }
1460     }
1461
1462     # This was intended to do any cleanup necessary.  It kinda looks like it
1463     # isn't needed, but just in case, please keep it in for now.
1464     gas_finish
1465
1466     # Did we find what we were looking for?  If not, flunk it.
1467     if [expr $x == 25] then { pass $testname } else { fail $testname }
1468 }
1469
1470 proc do_h8300s_bitops2 {} {
1471     set testname "bitops2s.s: h8300s bitops tests #2"
1472     set x 0
1473
1474     gas_start "bitops2s.s" "-al"
1475
1476     # Check each instruction bit pattern to verify it got
1477     # assembled correctly.
1478     while 1 {
1479         expect {
1480             -re " +\[0-9\]+ 0000 7488\[^\n\]*\n"   { set x [expr $x+1] }
1481             -re " +\[0-9\]+ 0002 7C007480\[^\n\]*\n"   { set x [expr $x+1] }
1482             -re " +\[0-9\]+ 0006 7E407480\[^\n\]*\n"   { set x [expr $x+1] }
1483             -re " +\[0-9\]+ 000a 6A100080\[^\n\]*\n +\[0-9\]+ +7480"   { set x [expr $x+1] }
1484             -re " +\[0-9\]+ 0010 6A300001\[^\n\]*\n +\[0-9\]+ +00007480"   { set x [expr $x+1] }
1485             -re " +\[0-9\]+ 0018 6788\[^\n\]*\n"   { set x [expr $x+1] }
1486             -re " +\[0-9\]+ 001a 7D006780\[^\n\]*\n"   { set x [expr $x+1] }
1487             -re " +\[0-9\]+ 001e 7F406780\[^\n\]*\n"   { set x [expr $x+1] }
1488             -re " +\[0-9\]+ 0022 6A180080\[^\n\]*\n +\[0-9\]+ +6780"   { set x [expr $x+1] }
1489             -re " +\[0-9\]+ 0028 6A380001\[^\n\]*\n +\[0-9\]+ +00006780"   { set x [expr $x+1] }
1490
1491             -re " +\[0-9\]+ 0030 7588\[^\n\]*\n"   { set x [expr $x+1] }
1492             -re " +\[0-9\]+ 0032 7C007580\[^\n\]*\n"   { set x [expr $x+1] }
1493             -re " +\[0-9\]+ 0036 7E407580\[^\n\]*\n"   { set x [expr $x+1] }
1494             -re " +\[0-9\]+ 003a 6A100080\[^\n\]*\n +\[0-9\]+ +7580"   { set x [expr $x+1] }
1495             -re " +\[0-9\]+ 0040 6A300001\[^\n\]*\n +\[0-9\]+ +00007580"   { set x [expr $x+1] }
1496             -re " +\[0-9\]+ 0048 7708\[^\n\]*\n"   { set x [expr $x+1] }
1497             -re " +\[0-9\]+ 004a 7C007700\[^\n\]*\n"   { set x [expr $x+1] }
1498             -re " +\[0-9\]+ 004e 7E407700\[^\n\]*\n"   { set x [expr $x+1] }
1499             -re " +\[0-9\]+ 0052 6A100080\[^\n\]*\n +\[0-9\]+ +7700"   { set x [expr $x+1] }
1500             -re " +\[0-9\]+ 0058 6A300001\[^\n\]*\n +\[0-9\]+ +00007700"   { set x [expr $x+1] }
1501             timeout                             { perror "timeout\n; break }
1502             eof                                 { break }
1503         }
1504     }
1505
1506     # This was intended to do any cleanup necessary.  It kinda looks like it
1507     # isn't needed, but just in case, please keep it in for now.
1508     gas_finish
1509
1510     # Did we find what we were looking for?  If not, flunk it.
1511     if [expr $x == 20] then { pass $testname } else { fail $testname }
1512 }
1513
1514 proc do_h8300s_bitops3 {} {
1515     set testname "bitops3s.s: h8300s bitops tests #3"
1516     set x 0
1517
1518     gas_start "bitops3s.s" "-al"
1519
1520     # Check each instruction bit pattern to verify it got
1521     # assembled correctly.
1522     while 1 {
1523         expect {
1524             -re " +\[0-9\]+ 0000 7108\[^\n\]*\n"   { set x [expr $x+1] }
1525             -re " +\[0-9\]+ 0002 7D007100\[^\n\]*\n"   { set x [expr $x+1] }
1526             -re " +\[0-9\]+ 0006 7F407100\[^\n\]*\n"   { set x [expr $x+1] }
1527             -re " +\[0-9\]+ 000a 6A180080\[^\n\]*\n +\[0-9\]+ +7100"   { set x [expr $x+1] }
1528             -re " +\[0-9\]+ 0010 6A380001\[^\n\]*\n +\[0-9\]+ +00007100"   { set x [expr $x+1] }
1529             -re " +\[0-9\]+ 0018 6198\[^\n\]*\n"   { set x [expr $x+1] }
1530             -re " +\[0-9\]+ 001a 7D006190\[^\n\]*\n"   { set x [expr $x+1] }
1531             -re " +\[0-9\]+ 001e 7F406190\[^\n\]*\n"   { set x [expr $x+1] }
1532             -re " +\[0-9\]+ 0022 6A180080\[^\n\]*\n +\[0-9\]+ +6190"   { set x [expr $x+1] }
1533             -re " +\[0-9\]+ 0028 6A380001\[^\n\]*\n +\[0-9\]+ +00006190"   { set x [expr $x+1] }
1534             -re " +\[0-9\]+ 0030 7008\[^\n\]*\n"   { set x [expr $x+1] }
1535             -re " +\[0-9\]+ 0032 7D007000\[^\n\]*\n"   { set x [expr $x+1] }
1536             -re " +\[0-9\]+ 0036 7F407000\[^\n\]*\n"   { set x [expr $x+1] }
1537             -re " +\[0-9\]+ 003a 6A180080\[^\n\]*\n +\[0-9\]+ +7000"   { set x [expr $x+1] }
1538             -re " +\[0-9\]+ 0040 6A380001\[^\n\]*\n +\[0-9\]+ +00007000"   { set x [expr $x+1] }
1539             -re " +\[0-9\]+ 0048 6098\[^\n\]*\n"   { set x [expr $x+1] }
1540             -re " +\[0-9\]+ 004a 7D006090\[^\n\]*\n"   { set x [expr $x+1] }
1541             -re " +\[0-9\]+ 004e 7F406090\[^\n\]*\n"   { set x [expr $x+1] }
1542             -re " +\[0-9\]+ 0052 6A180080\[^\n\]*\n +\[0-9\]+ +6090"   { set x [expr $x+1] }
1543             -re " +\[0-9\]+ 0058 6A380001\[^\n\]*\n +\[0-9\]+ +00006090"   { set x [expr $x+1] }
1544             timeout                             { perror "timeout\n; break }
1545             eof                                 { break }
1546         }
1547     }
1548
1549     # This was intended to do any cleanup necessary.  It kinda looks like it
1550     # isn't needed, but just in case, please keep it in for now.
1551     gas_finish
1552
1553     # Did we find what we were looking for?  If not, flunk it.
1554     if [expr $x == 20] then { pass $testname } else { fail $testname }
1555 }
1556
1557 proc do_h8300s_bitops4 {} {
1558     set testname "bitops4s.s: h8300s bitops tests #4"
1559     set x 0
1560
1561     gas_start "bitops4s.s" "-al"
1562
1563     # Check each instruction bit pattern to verify it got
1564     # assembled correctly.
1565     while 1 {
1566         expect {
1567             -re " +\[0-9\]+ 0000 7408\[^\n\]*\n"   { set x [expr $x+1] }
1568             -re " +\[0-9\]+ 0002 7C007400\[^\n\]*\n"   { set x [expr $x+1] }
1569             -re " +\[0-9\]+ 0006 7E407400\[^\n\]*\n"   { set x [expr $x+1] }
1570             -re " +\[0-9\]+ 000a 6A100080\[^\n\]*\n +\[0-9\]+ +7400"   { set x [expr $x+1] }
1571             -re " +\[0-9\]+ 0010 6A300001\[^\n\]*\n +\[0-9\]+ +00007400"   { set x [expr $x+1] }
1572             -re " +\[0-9\]+ 0018 6708\[^\n\]*\n"   { set x [expr $x+1] }
1573             -re " +\[0-9\]+ 001a 7D006700\[^\n\]*\n"   { set x [expr $x+1] }
1574             -re " +\[0-9\]+ 001e 7F406700\[^\n\]*\n"   { set x [expr $x+1] }
1575             -re " +\[0-9\]+ 0022 6A180080\[^\n\]*\n +\[0-9\]+ +6700"   { set x [expr $x+1] }
1576             -re " +\[0-9\]+ 0028 6A380001\[^\n\]*\n +\[0-9\]+ +00006700"   { set x [expr $x+1] }
1577             -re " +\[0-9\]+ 0030 7308\[^\n\]*\n"   { set x [expr $x+1] }
1578             -re " +\[0-9\]+ 0032 7C007300\[^\n\]*\n"   { set x [expr $x+1] }
1579             -re " +\[0-9\]+ 0036 7E407300\[^\n\]*\n"   { set x [expr $x+1] }
1580             -re " +\[0-9\]+ 003a 6A100080\[^\n\]*\n +\[0-9\]+ +7300"   { set x [expr $x+1] }
1581             -re " +\[0-9\]+ 0040 6A300001\[^\n\]*\n +\[0-9\]+ +00007300"   { set x [expr $x+1] }
1582             -re " +\[0-9\]+ 0048 6398\[^\n\]*\n"   { set x [expr $x+1] }
1583             -re " +\[0-9\]+ 004a 7C006390\[^\n\]*\n"   { set x [expr $x+1] }
1584             -re " +\[0-9\]+ 004e 7E406390\[^\n\]*\n"   { set x [expr $x+1] }
1585             -re " +\[0-9\]+ 0052 6A100080\[^\n\]*\n +\[0-9\]+ +6390"   { set x [expr $x+1] }
1586             -re " +\[0-9\]+ 0058 6A300001\[^\n\]*\n +\[0-9\]+ +00006390"   { set x [expr $x+1] }
1587             -re " +\[0-9\]+ 0060 7508\[^\n\]*\n"   { set x [expr $x+1] }
1588             -re " +\[0-9\]+ 0062 7C007500\[^\n\]*\n"   { set x [expr $x+1] }
1589             -re " +\[0-9\]+ 0066 7E407500\[^\n\]*\n"   { set x [expr $x+1] }
1590             -re " +\[0-9\]+ 006a 6A100080\[^\n\]*\n +\[0-9\]+ +7500"   { set x [expr $x+1] }
1591             -re " +\[0-9\]+ 0070 6A300001\[^\n\]*\n +\[0-9\]+ +00007500"   { set x [expr $x+1] }
1592             timeout                             { perror "timeout\n; break }
1593             eof                                 { break }
1594         }
1595     }
1596
1597     # This was intended to do any cleanup necessary.  It kinda looks like it
1598     # isn't needed, but just in case, please keep it in for now.
1599     gas_finish
1600
1601     # Did we find what we were looking for?  If not, flunk it.
1602     if [expr $x == 25] then { pass $testname } else { fail $testname }
1603 }
1604
1605 proc do_h8300s_branch {} {
1606     set testname "branchs.s: h8300s branch tests"
1607     set x 0
1608
1609     gas_start "branchs.s" "-al"
1610
1611     # Check each instruction bit pattern to verify it got
1612     # assembled correctly.
1613     while 1 {
1614         expect {
1615             -re " +\[0-9\]+ 0000 5500\[^\n\]*\n"   { set x [expr $x+1] }
1616             -re " +\[0-9\]+ 0002 5C000000\[^\n\]*\n"   { set x [expr $x+1] }
1617             -re " +\[0-9\]+ 0006 5A000000\[^\n\]*\n"   { set x [expr $x+1] }
1618             -re " +\[0-9\]+ 000a 5900\[^\n\]*\n"   { set x [expr $x+1] }
1619             -re " +\[0-9\]+ 000c 5B00\[^\n\]*\n"   { set x [expr $x+1] }
1620             -re " +\[0-9\]+ 000e 5E000000\[^\n\]*\n"   { set x [expr $x+1] }
1621             -re " +\[0-9\]+ 0012 5D00\[^\n\]*\n"   { set x [expr $x+1] }
1622             -re " +\[0-9\]+ 0014 5F00\[^\n\]*\n"   { set x [expr $x+1] }
1623             timeout                             { perror "timeout\n; break }
1624             eof                                 { break }
1625         }
1626     }
1627
1628     # This was intended to do any cleanup necessary.  It kinda looks like it
1629     # isn't needed, but just in case, please keep it in for now.
1630     gas_finish
1631
1632     # Did we find what we were looking for?  If not, flunk it.
1633     if [expr $x == 8] then { pass $testname } else { fail $testname }
1634 }
1635
1636 proc do_h8300s_compare {} {
1637     set testname "compares.s: h8300s compare tests"
1638     set x 0
1639
1640     gas_start "compares.s" "-al"
1641
1642     # Check each instruction bit pattern to verify it got
1643     # assembled correctly.
1644     while 1 {
1645         expect {
1646             -re " +\[0-9\]+ 0000 A800\[^\n\]*\n"   { set x [expr $x+1] }
1647             -re " +\[0-9\]+ 0002 1C08\[^\n\]*\n"   { set x [expr $x+1] }
1648             -re " +\[0-9\]+ 0004 79200020\[^\n\]*\n"   { set x [expr $x+1] }
1649             -re " +\[0-9\]+ 0008 1D01\[^\n\]*\n"   { set x [expr $x+1] }
1650             -re " +\[0-9\]+ 000a 7A200000\[^\n\]*\n +\[0-9\]+ +0040\[^\n\]*\n"   { set x [expr $x+1] }
1651             -re " +\[0-9\]+ 0010 1F81\[^\n\]*\n"   { set x [expr $x+1] }
1652             timeout                             { perror "timeout\n; break }
1653             eof                                 { break }
1654         }
1655     }
1656
1657     # This was intended to do any cleanup necessary.  It kinda looks like it
1658     # isn't needed, but just in case, please keep it in for now.
1659     gas_finish
1660
1661     # Did we find what we were looking for?  If not, flunk it.
1662     if [expr $x == 6] then { pass $testname } else { fail $testname }
1663 }
1664
1665 proc do_h8300s_decimal {} {
1666     set testname "decimals.s: h8300s decimal tests"
1667     set x 0
1668
1669     gas_start "decimals.s" "-al"
1670
1671     # Check each instruction bit pattern to verify it got
1672     # assembled correctly.
1673     while 1 {
1674         expect {
1675             -re " +\[0-9\]+ 0000 0F08\[^\n\]*\n"   { set x [expr $x+1] }
1676             -re " +\[0-9\]+ 0002 1F08\[^\n\]*\n"   { set x [expr $x+1] }
1677             eof                                 { break }
1678         }
1679     }
1680
1681     # This was intended to do any cleanup necessary.  It kinda looks like it
1682     # isn't needed, but just in case, please keep it in for now.
1683     gas_finish
1684
1685     # Did we find what we were looking for?  If not, flunk it.
1686     if [expr $x == 2] then { pass $testname } else { fail $testname }
1687 }
1688
1689 proc do_h8300s_incdec {} {
1690     set testname "incdecs.s: h8300s incdec tests"
1691     set x 0
1692
1693     gas_start "incdecs.s" "-al"
1694
1695     # Check each instruction bit pattern to verify it got
1696     # assembled correctly.
1697     while 1 {
1698         expect {
1699             -re " +\[0-9\]+ 0000 1A08\[^\n\]*\n"   { set x [expr $x+1] }
1700             -re " +\[0-9\]+ 0002 1B50\[^\n\]*\n"   { set x [expr $x+1] }
1701             -re " +\[0-9\]+ 0004 1BD0\[^\n\]*\n"   { set x [expr $x+1] }
1702             -re " +\[0-9\]+ 0006 1B70\[^\n\]*\n"   { set x [expr $x+1] }
1703             -re " +\[0-9\]+ 0008 1BF0\[^\n\]*\n"   { set x [expr $x+1] }
1704             -re " +\[0-9\]+ 000a 0A08\[^\n\]*\n"   { set x [expr $x+1] }
1705             -re " +\[0-9\]+ 000c 0B50\[^\n\]*\n"   { set x [expr $x+1] }
1706             -re " +\[0-9\]+ 000e 0BD0\[^\n\]*\n"   { set x [expr $x+1] }
1707             -re " +\[0-9\]+ 0010 0B70\[^\n\]*\n"   { set x [expr $x+1] }
1708             -re " +\[0-9\]+ 0012 0BF0\[^\n\]*\n"   { set x [expr $x+1] }
1709             eof                                 { break }
1710         }
1711     }
1712
1713     # This was intended to do any cleanup necessary.  It kinda looks like it
1714     # isn't needed, but just in case, please keep it in for now.
1715     gas_finish
1716
1717     # Did we find what we were looking for?  If not, flunk it.
1718     if [expr $x == 10] then { pass $testname } else { fail $testname }
1719 }
1720
1721 proc do_h8300s_divmul {} {
1722     set testname "divmuls.s: h8300s divmul tests"
1723     set x 0
1724
1725     gas_start "divmuls.s" "-al"
1726
1727     # Check each instruction bit pattern to verify it got
1728     # assembled correctly.
1729     while 1 {
1730         expect {
1731             -re " +\[0-9\]+ 0000 5181\[^\n\]*\n"   { set x [expr $x+1] }
1732             -re " +\[0-9\]+ 0002 5301\[^\n\]*\n"   { set x [expr $x+1] }
1733             -re " +\[0-9\]+ 0004 01D05181\[^\n\]*\n"   { set x [expr $x+1] }
1734             -re " +\[0-9\]+ 0008 01D05301\[^\n\]*\n"   { set x [expr $x+1] }
1735             -re " +\[0-9\]+ 000c 5081\[^\n\]*\n"   { set x [expr $x+1] }
1736             -re " +\[0-9\]+ 000e 5201\[^\n\]*\n"   { set x [expr $x+1] }
1737             -re " +\[0-9\]+ 0010 01C05081\[^\n\]*\n"   { set x [expr $x+1] }
1738             -re " +\[0-9\]+ 0014 01C05201\[^\n\]*\n"   { set x [expr $x+1] }
1739             eof                                 { break }
1740         }
1741     }
1742
1743     # This was intended to do any cleanup necessary.  It kinda looks like it
1744     # isn't needed, but just in case, please keep it in for now.
1745     gas_finish
1746
1747     # Did we find what we were looking for?  If not, flunk it.
1748     if [expr $x == 8] then { pass $testname } else { fail $testname }
1749 }
1750
1751 proc do_h8300s_misc {} {
1752     set testname "miscs.s: h8300s misc tests"
1753     set x 0
1754
1755     gas_start "miscs.s" "-al"
1756
1757     # Check each instruction bit pattern to verify it got
1758     # assembled correctly.
1759     while 1 {
1760         expect {
1761             -re " +\[0-9\]+ 0000 7B5C598F\[^\n\]*\n"   { set x [expr $x+1] }
1762             -re " +\[0-9\]+ 0004 7BD4598F\[^\n\]*\n"   { set x [expr $x+1] }
1763             -re " +\[0-9\]+ 0008 0700\[^\n\]*\n"   { set x [expr $x+1] }
1764             -re " +\[0-9\]+ 000a 0308\[^\n\]*\n"   { set x [expr $x+1] }
1765             -re " +\[0-9\]+ 000c 01410700\[^\n\]*\n"   { set x [expr $x+1] }
1766             -re " +\[0-9\]+ 0010 0318\[^\n\]*\n"   { set x [expr $x+1] }
1767             -re " +\[0-9\]+ 0012 01406900\[^\n\]*\n"   { set x [expr $x+1] }
1768             -re " +\[0-9\]+ 0016 01406F00\[^\n\]*\n +\[0-9\]+ +0010\[^\n\]*\n"   { set x [expr $x+1] }
1769             -re " +\[0-9\]+ 001c 01407800\[^\n\]*\n +\[0-9\]+ +6B200000\[^\n\]*\n +\[0-9\]+ +0020\[^\n\]*\n"   { set x [expr $x+1] }
1770             -re " +\[0-9\]+ 0026 01406D00\[^\n\]*\n"   { set x [expr $x+1] }
1771             -re " +\[0-9\]+ 002a 01406B00\[^\n\]*\n +\[0-9\]+ +0000\[^\n\]*\n"   { set x [expr $x+1] }
1772             -re " +\[0-9\]+ 0030 01406B20\[^\n\]*\n +\[0-9\]+ +00000000\[^\n\]*\n"   { set x [expr $x+1] }
1773             -re " +\[0-9\]+ 0038 01416900\[^\n\]*\n"   { set x [expr $x+1] }
1774             -re " +\[0-9\]+ 003c 01416F00\[^\n\]*\n +\[0-9\]+ +0010\[^\n\]*\n"   { set x [expr $x+1] }
1775             -re " +\[0-9\]+ 0042 01417800\[^\n\]*\n +\[0-9\]+ +6B200000\[^\n\]*\n +\[0-9\]+ +0020\[^\n\]*\n"   { set x [expr $x+1] }
1776             -re " +\[0-9\]+ 004c 01416D00\[^\n\]*\n"   { set x [expr $x+1] }
1777             -re " +\[0-9\]+ 0050 01416B00\[^\n\]*\n +\[0-9\]+ +0000\[^\n\]*\n"   { set x [expr $x+1] }
1778             -re " +\[0-9\]+ 0056 01416B20\[^\n\]*\n +\[0-9\]+ +00000000\[^\n\]*\n"   { set x [expr $x+1] }
1779             -re " +\[0-9\]+ 005e 0000\[^\n\]*\n"   { set x [expr $x+1] }
1780             -re " +\[0-9\]+ 0060 5670\[^\n\]*\n"   { set x [expr $x+1] }
1781             -re " +\[0-9\]+ 0062 5470\[^\n\]*\n"   { set x [expr $x+1] }
1782             -re " +\[0-9\]+ 0064 0180\[^\n\]*\n"   { set x [expr $x+1] }
1783             -re " +\[0-9\]+ 0066 0208\[^\n\]*\n"   { set x [expr $x+1] }
1784             -re " +\[0-9\]+ 0068 0218\[^\n\]*\n"   { set x [expr $x+1] }
1785             -re " +\[0-9\]+ 006a 01406980\[^\n\]*\n"   { set x [expr $x+1] }
1786             -re " +\[0-9\]+ 006e 01406F80\[^\n\]*\n +\[0-9\]+ +0010\[^\n\]*\n"   { set x [expr $x+1] }
1787             -re " +\[0-9\]+ 0074 01407800\[^\n\]*\n +\[0-9\]+ +6BA00000\[^\n\]*\n +\[0-9\]+ +0020\[^\n\]*\n"   { set x [expr $x+1] }
1788             -re " +\[0-9\]+ 007e 01406D80\[^\n\]*\n"   { set x [expr $x+1] }
1789             -re " +\[0-9\]+ 0082 01406B80\[^\n\]*\n +\[0-9\]+ +0000\[^\n\]*\n"   { set x [expr $x+1] }
1790             -re " +\[0-9\]+ 0088 01406BA0\[^\n\]*\n +\[0-9\]+ +00000000\[^\n\]*\n"   { set x [expr $x+1] }
1791             -re " +\[0-9\]+ 0090 01416980\[^\n\]*\n"   { set x [expr $x+1] }
1792             -re " +\[0-9\]+ 0094 01416F80\[^\n\]*\n +\[0-9\]+ +0010\[^\n\]*\n"   { set x [expr $x+1] }
1793             -re " +\[0-9\]+ 009a 01417800\[^\n\]*\n +\[0-9\]+ +6BA00000\[^\n\]*\n +\[0-9\]+ +0020\[^\n\]*\n"   { set x [expr $x+1] }
1794             -re " +\[0-9\]+ 00a4 01416D80\[^\n\]*\n"   { set x [expr $x+1] }
1795             -re " +\[0-9\]+ 00a8 01416B80\[^\n\]*\n +\[0-9\]+ +0000\[^\n\]*\n"   { set x [expr $x+1] }
1796             -re " +\[0-9\]+ 00ae 01416BA0\[^\n\]*\n +\[0-9\]+ +00000000\[^\n\]*\n"   { set x [expr $x+1] }
1797             eof                                 { break }
1798         }
1799     }
1800
1801     # This was intended to do any cleanup necessary.  It kinda looks like it
1802     # isn't needed, but just in case, please keep it in for now.
1803     gas_finish
1804
1805     # Did we find what we were looking for?  If not, flunk it.
1806     if [expr $x == 36] then { pass $testname } else { fail $testname }
1807
1808     setup_xfail "h8300*-*-*"
1809     fail "h8300s movfpe/movtpe tests"
1810 }
1811
1812 proc do_h8300s_movb {} {
1813     set testname "movbs.s: h8300s movb tests"
1814     set x 0
1815
1816     gas_start "movbs.s" "-al"
1817
1818     # Check each instruction bit pattern to verify it got
1819     # assembled correctly.
1820     while 1 {
1821         expect {
1822             -re " +\[0-9\]+ 0000 0C89\[^\n\]*\n"   { set x [expr $x+1] }
1823             -re " +\[0-9\]+ 0002 F810\[^\n\]*\n"   { set x [expr $x+1] }
1824             -re " +\[0-9\]+ 0004 6818\[^\n\]*\n"   { set x [expr $x+1] }
1825             -re " +\[0-9\]+ 0006 6E180010\[^\n\]*\n"   { set x [expr $x+1] }
1826             -re " +\[0-9\]+ 000a 78106A28\[^\n\]*\n +\[0-9\]+ +00000020\[^\n\]*\n"   { set x [expr $x+1] }
1827             -re " +\[0-9\]+ 0012 6C18\[^\n\]*\n"   { set x [expr $x+1] }
1828             -re " +\[0-9\]+ 0014 2810\[^\n\]*\n"   { set x [expr $x+1] }
1829             -re " +\[0-9\]+ 0016 6A080000\[^\n\]*\n"   { set x [expr $x+1] }
1830             -re " +\[0-9\]+ 001a 6A280000\[^\n\]*\n +\[0-9\]+ +0000\[^\n\]*\n"   { set x [expr $x+1] }
1831             -re " +\[0-9\]+ 0020 6898\[^\n\]*\n"   { set x [expr $x+1] }
1832             -re " +\[0-9\]+ 0022 6E980010\[^\n\]*\n"   { set x [expr $x+1] }
1833             -re " +\[0-9\]+ 0026 78106AA8\[^\n\]*\n +\[0-9\]+ +00000020\[^\n\]*\n"   { set x [expr $x+1] }
1834             -re " +\[0-9\]+ 002e 6C98\[^\n\]*\n"   { set x [expr $x+1] }
1835             -re " +\[0-9\]+ 0030 3810\[^\n\]*\n"   { set x [expr $x+1] }
1836             -re " +\[0-9\]+ 0032 6A880000\[^\n\]*\n"   { set x [expr $x+1] }
1837             -re " +\[0-9\]+ 0036 6AA80000\[^\n\]*\n +\[0-9\]+ +0000\[^\n\]*\n"   { set x [expr $x+1] }
1838             eof                                 { break }
1839         }
1840     }
1841
1842     # This was intended to do any cleanup necessary.  It kinda looks like it
1843     # isn't needed, but just in case, please keep it in for now.
1844     gas_finish
1845
1846     # Did we find what we were looking for?  If not, flunk it.
1847     if [expr $x == 16] then { pass $testname } else { fail $testname }
1848 }
1849
1850 proc do_h8300s_movw {} {
1851     set testname "movws.s: h8300s movw tests"
1852     set x 0
1853
1854     gas_start "movws.s" "-al"
1855
1856     # Check each instruction bit pattern to verify it got
1857     # assembled correctly.
1858     while 1 {
1859         expect {
1860             -re " +\[0-9\]+ 0000 0D01\[^\n\]*\n"   { set x [expr $x+1] }
1861             -re " +\[0-9\]+ 0002 79000010\[^\n\]*\n"   { set x [expr $x+1] }
1862             -re " +\[0-9\]+ 0006 6910\[^\n\]*\n"   { set x [expr $x+1] }
1863             -re " +\[0-9\]+ 0008 6F100010\[^\n\]*\n"   { set x [expr $x+1] }
1864             -re " +\[0-9\]+ 000c 78106B20\[^\n\]*\n +\[0-9\]+ +00000020\[^\n\]*\n"   { set x [expr $x+1] }
1865             -re " +\[0-9\]+ 0014 6D10\[^\n\]*\n"   { set x [expr $x+1] }
1866             -re " +\[0-9\]+ 0016 6B000000\[^\n\]*\n"   { set x [expr $x+1] }
1867             -re " +\[0-9\]+ 001a 6B200000\[^\n\]*\n +\[0-9\]+ +0000\[^\n\]*\n"   { set x [expr $x+1] }
1868             -re " +\[0-9\]+ 0020 6990\[^\n\]*\n"   { set x [expr $x+1] }
1869             -re " +\[0-9\]+ 0022 6F900010\[^\n\]*\n"   { set x [expr $x+1] }
1870             -re " +\[0-9\]+ 0026 78106BA0\[^\n\]*\n +\[0-9\]+ +00000020\[^\n\]*\n"   { set x [expr $x+1] }
1871             -re " +\[0-9\]+ 002e 6D90\[^\n\]*\n"   { set x [expr $x+1] }
1872             -re " +\[0-9\]+ 0030 6B800000\[^\n\]*\n"   { set x [expr $x+1] }
1873             -re " +\[0-9\]+ 0034 6BA00000\[^\n\]*\n +\[0-9\]+ +0000\[^\n\]*\n"   { set x [expr $x+1] }
1874             eof                                 { break }
1875         }
1876     }
1877
1878     # This was intended to do any cleanup necessary.  It kinda looks like it
1879     # isn't needed, but just in case, please keep it in for now.
1880     gas_finish
1881
1882     # Did we find what we were looking for?  If not, flunk it.
1883     if [expr $x == 14] then { pass $testname } else { fail $testname }
1884 }
1885
1886
1887 proc do_h8300s_movl {} {
1888     set testname "movls.s: h8300s movl tests"
1889     set x 0
1890
1891     gas_start "movls.s" "-al"
1892
1893     # Check each instruction bit pattern to verify it got
1894     # assembled correctly.
1895     while 1 {
1896         expect {
1897             -re " +\[0-9\]+ 0000 0F81\[^\n\]*\n"   { set x [expr $x+1] }
1898             -re " +\[0-9\]+ 0002 7A000000\[^\n\]*\n +\[0-9\]+ +0040\[^\n\]*\n"   { set x [expr $x+1] }
1899             -re " +\[0-9\]+ 0008 01006910\[^\n\]*\n"   { set x [expr $x+1] }
1900             -re " +\[0-9\]+ 000c 01006F10\[^\n\]*\n +\[0-9\]+ +0010\[^\n\]*\n"   { set x [expr $x+1] }
1901             -re " +\[0-9\]+ 0012 01007810\[^\n\]*\n +\[0-9\]+ +6B200000\[^\n\]*\n +\[0-9\]+ +0020\[^\n\]*\n"   { set x [expr $x+1] }
1902             -re " +\[0-9\]+ 001c 01006D10\[^\n\]*\n"   { set x [expr $x+1] }
1903             -re " +\[0-9\]+ 0020 01006B00\[^\n\]*\n +\[0-9\]+ +0000\[^\n\]*\n"   { set x [expr $x+1] }
1904             -re " +\[0-9\]+ 0026 01006B20\[^\n\]*\n +\[0-9\]+ +00000000\[^\n\]*\n"   { set x [expr $x+1] }
1905             -re " +\[0-9\]+ 002e 01006990\[^\n\]*\n"   { set x [expr $x+1] }
1906             -re " +\[0-9\]+ 0032 01006F90\[^\n\]*\n +\[0-9\]+ +0010\[^\n\]*\n"   { set x [expr $x+1] }
1907             -re " +\[0-9\]+ 0038 01007890\[^\n\]*\n +\[0-9\]+ +6BA00000\[^\n\]*\n +\[0-9\]+ +0020\[^\n\]*\n"   { set x [expr $x+1] }
1908             -re " +\[0-9\]+ 0042 01006D90\[^\n\]*\n"   { set x [expr $x+1] }
1909             -re " +\[0-9\]+ 0046 01006B80\[^\n\]*\n +\[0-9\]+ +0000\[^\n\]*\n"   { set x [expr $x+1] }
1910             -re " +\[0-9\]+ 004c 01006BA0\[^\n\]*\n +\[0-9\]+ +00000000\[^\n\]*\n"   { set x [expr $x+1] }
1911             eof                                 { break }
1912         }
1913     }
1914
1915     # This was intended to do any cleanup necessary.  It kinda looks like it
1916     # isn't needed, but just in case, please keep it in for now.
1917     gas_finish
1918
1919     # Did we find what we were looking for?  If not, flunk it.
1920     if [expr $x == 14] then { pass $testname } else { fail $testname }
1921 }
1922
1923 proc do_h8300s_pushpop {} {
1924     set testname "pushpops.s: h8300s pushpop tests"
1925     set x 0
1926
1927     gas_start "pushpops.s" "-al"
1928
1929     # Check each instruction bit pattern to verify it got
1930     # assembled correctly.
1931     while 1 {
1932         expect {
1933             -re " +\[0-9\]+ 0000 6D70\[^\n\]*\n"   { set x [expr $x+1] }
1934             -re " +\[0-9\]+ 0002 01006D70\[^\n\]*\n"   { set x [expr $x+1] }
1935             -re " +\[0-9\]+ 0006 6DF0\[^\n\]*\n"   { set x [expr $x+1] }
1936             -re " +\[0-9\]+ 0008 01006DF0\[^\n\]*\n"   { set x [expr $x+1] }
1937             eof                                 { break }
1938         }
1939     }
1940
1941     # This was intended to do any cleanup necessary.  It kinda looks like it
1942     # isn't needed, but just in case, please keep it in for now.
1943     gas_finish
1944
1945     # Did we find what we were looking for?  If not, flunk it.
1946     if [expr $x == 4] then { pass $testname } else { fail $testname }
1947 }
1948
1949 proc do_h8300s_rotate_shift {} {
1950     set testname "rotshs.s: h8300s rotate and shift tests"
1951     set x 0
1952
1953     gas_start "rotshs.s" "-al"
1954
1955     # Check each instruction bit pattern to verify it got
1956     # assembled correctly.
1957     while 1 {
1958         expect {
1959             -re " +\[0-9\]+ 0000 1288\[^\n\]*\n"   { set x [expr $x+1] }
1960             -re " +\[0-9\]+ 0002 12C8\[^\n\]*\n"   { set x [expr $x+1] }
1961             -re " +\[0-9\]+ 0004 1290\[^\n\]*\n"   { set x [expr $x+1] }
1962             -re " +\[0-9\]+ 0006 12D0\[^\n\]*\n"   { set x [expr $x+1] }
1963             -re " +\[0-9\]+ 0008 12B0\[^\n\]*\n"   { set x [expr $x+1] }
1964             -re " +\[0-9\]+ 000a 12F0\[^\n\]*\n"   { set x [expr $x+1] }
1965             -re " +\[0-9\]+ 000c 1388\[^\n\]*\n"   { set x [expr $x+1] }
1966             -re " +\[0-9\]+ 000e 13C8\[^\n\]*\n"   { set x [expr $x+1] }
1967             -re " +\[0-9\]+ 0010 1390\[^\n\]*\n"   { set x [expr $x+1] }
1968             -re " +\[0-9\]+ 0012 13D0\[^\n\]*\n"   { set x [expr $x+1] }
1969             -re " +\[0-9\]+ 0014 13B0\[^\n\]*\n"   { set x [expr $x+1] }
1970             -re " +\[0-9\]+ 0016 13F0\[^\n\]*\n"   { set x [expr $x+1] }
1971             -re " +\[0-9\]+ 0018 1208\[^\n\]*\n"   { set x [expr $x+1] }
1972             -re " +\[0-9\]+ 001a 1248\[^\n\]*\n"   { set x [expr $x+1] }
1973             -re " +\[0-9\]+ 001c 1210\[^\n\]*\n"   { set x [expr $x+1] }
1974             -re " +\[0-9\]+ 001e 1250\[^\n\]*\n"   { set x [expr $x+1] }
1975             -re " +\[0-9\]+ 0020 1230\[^\n\]*\n"   { set x [expr $x+1] }
1976             -re " +\[0-9\]+ 0022 1270\[^\n\]*\n"   { set x [expr $x+1] }
1977             -re " +\[0-9\]+ 0024 1308\[^\n\]*\n"   { set x [expr $x+1] }
1978             -re " +\[0-9\]+ 0026 1348\[^\n\]*\n"   { set x [expr $x+1] }
1979             -re " +\[0-9\]+ 0028 1310\[^\n\]*\n"   { set x [expr $x+1] }
1980             -re " +\[0-9\]+ 002a 1350\[^\n\]*\n"   { set x [expr $x+1] }
1981             -re " +\[0-9\]+ 002c 1330\[^\n\]*\n"   { set x [expr $x+1] }
1982             -re " +\[0-9\]+ 002e 1370\[^\n\]*\n"   { set x [expr $x+1] }
1983             -re " +\[0-9\]+ 0030 1088\[^\n\]*\n"   { set x [expr $x+1] }
1984             -re " +\[0-9\]+ 0032 10C8\[^\n\]*\n"   { set x [expr $x+1] }
1985             -re " +\[0-9\]+ 0034 1090\[^\n\]*\n"   { set x [expr $x+1] }
1986             -re " +\[0-9\]+ 0036 10D0\[^\n\]*\n"   { set x [expr $x+1] }
1987             -re " +\[0-9\]+ 0038 10B0\[^\n\]*\n"   { set x [expr $x+1] }
1988             -re " +\[0-9\]+ 003a 10F0\[^\n\]*\n"   { set x [expr $x+1] }
1989             -re " +\[0-9\]+ 003c 1188\[^\n\]*\n"   { set x [expr $x+1] }
1990             -re " +\[0-9\]+ 003e 11C8\[^\n\]*\n"   { set x [expr $x+1] }
1991             -re " +\[0-9\]+ 0040 1190\[^\n\]*\n"   { set x [expr $x+1] }
1992             -re " +\[0-9\]+ 0042 11D0\[^\n\]*\n"   { set x [expr $x+1] }
1993             -re " +\[0-9\]+ 0044 11B0\[^\n\]*\n"   { set x [expr $x+1] }
1994             -re " +\[0-9\]+ 0046 11F0\[^\n\]*\n"   { set x [expr $x+1] }
1995             -re " +\[0-9\]+ 0048 1008\[^\n\]*\n"   { set x [expr $x+1] }
1996             -re " +\[0-9\]+ 004a 1048\[^\n\]*\n"   { set x [expr $x+1] }
1997             -re " +\[0-9\]+ 004c 1010\[^\n\]*\n"   { set x [expr $x+1] }
1998             -re " +\[0-9\]+ 004e 1050\[^\n\]*\n"   { set x [expr $x+1] }
1999             -re " +\[0-9\]+ 0050 1030\[^\n\]*\n"   { set x [expr $x+1] }
2000             -re " +\[0-9\]+ 0052 1070\[^\n\]*\n"   { set x [expr $x+1] }
2001             -re " +\[0-9\]+ 0054 1108\[^\n\]*\n"   { set x [expr $x+1] }
2002             -re " +\[0-9\]+ 0056 1148\[^\n\]*\n"   { set x [expr $x+1] }
2003             -re " +\[0-9\]+ 0058 1110\[^\n\]*\n"   { set x [expr $x+1] }
2004             -re " +\[0-9\]+ 005a 1150\[^\n\]*\n"   { set x [expr $x+1] }
2005             -re " +\[0-9\]+ 005c 1130\[^\n\]*\n"   { set x [expr $x+1] }
2006             -re " +\[0-9\]+ 005e 1170\[^\n\]*\n"   { set x [expr $x+1] }
2007             eof                                 { break }
2008         }
2009     }
2010
2011     # This was intended to do any cleanup necessary.  It kinda looks like it
2012     # isn't needed, but just in case, please keep it in for now.
2013     gas_finish
2014
2015     # Did we find what we were looking for?  If not, flunk it.
2016     if [expr $x == 48] then { pass $testname } else { fail $testname }
2017 }
2018
2019 proc do_h8300s_extend {} {
2020     set testname "extends.s: h8300s extend tests"
2021     set x 0
2022
2023     gas_start "extends.s" "-al"
2024
2025     # Check each instruction bit pattern to verify it got
2026     # assembled correctly.
2027     while 1 {
2028         expect {
2029             -re " +\[0-9\]+ 0000 17D0\[^\n\]*\n"   { set x [expr $x+1] }
2030             -re " +\[0-9\]+ 0002 17F0\[^\n\]*\n"   { set x [expr $x+1] }
2031             -re " +\[0-9\]+ 0004 1750\[^\n\]*\n"   { set x [expr $x+1] }
2032             -re " +\[0-9\]+ 0006 1770\[^\n\]*\n"   { set x [expr $x+1] }
2033             eof                                 { break }
2034         }
2035     }
2036
2037     # This was intended to do any cleanup necessary.  It kinda looks like it
2038     # isn't needed, but just in case, please keep it in for now.
2039     gas_finish
2040
2041     # Did we find what we were looking for?  If not, flunk it.
2042     if [expr $x == 4] then { pass $testname } else { fail $testname }
2043 }
2044
2045 proc do_h8300s_mac {} {
2046     set testname "macs.s: h8300s mac tests"
2047     set x 0
2048
2049     gas_start "macs.s" "-al"
2050
2051     # Check each instruction bit pattern to verify it got
2052     # assembled correctly.
2053     while 1 {
2054         expect {
2055             -re " +\[0-9\]+ 0000 01A0\[^\n\]*\n"   { set x [expr $x+1] }
2056             -re " +\[0-9\]+ 0002 0324\[^\n\]*\n"   { set x [expr $x+1] }
2057             -re " +\[0-9\]+ 0004 0335\[^\n\]*\n"   { set x [expr $x+1] }
2058             -re " +\[0-9\]+ 0006 01606D45\[^\n\]*\n"   { set x [expr $x+1] }
2059             -re " +\[0-9\]+ 000a 0224\[^\n\]*\n"   { set x [expr $x+1] }
2060             -re " +\[0-9\]+ 000c 0235\[^\n\]*\n"   { set x [expr $x+1] }
2061             eof                                 { break }
2062         }
2063     }
2064
2065     # This was intended to do any cleanup necessary.  It kinda looks like it
2066     # isn't needed, but just in case, please keep it in for now.
2067     gas_finish
2068
2069     # Did we find what we were looking for?  If not, flunk it.
2070     if [expr $x == 6] then { pass $testname } else { fail $testname }
2071 }
2072
2073 proc do_h8300s_multiple {} {
2074     set testname "multiples.s: h8300s multiple tests"
2075     set x 0
2076
2077     gas_start "multiples.s" "-al"
2078
2079     # Check each instruction bit pattern to verify it got
2080     # assembled correctly.
2081     while 1 {
2082         expect {
2083             -re " +\[0-9\]+ 0000 01106D71\[^\n\]*\n"   { set x [expr $x+1] }
2084             -re " +\[0-9\]+ 0004 01206D72\[^\n\]*\n"   { set x [expr $x+1] }
2085             -re " +\[0-9\]+ 0008 01306D73\[^\n\]*\n"   { set x [expr $x+1] }
2086             -re " +\[0-9\]+ 000c 01106DF0\[^\n\]*\n"   { set x [expr $x+1] }
2087             -re " +\[0-9\]+ 0010 01206DF0\[^\n\]*\n"   { set x [expr $x+1] }
2088             -re " +\[0-9\]+ 0014 01306DF0\[^\n\]*\n"   { set x [expr $x+1] }
2089             -re " +\[0-9\]+ 0018 01106D73\[^\n\]*\n"   { set x [expr $x+1] }
2090             -re " +\[0-9\]+ 001c 01106DF2\[^\n\]*\n"   { set x [expr $x+1] }
2091             -re " +\[0-9\]+ 0020 01106D75\[^\n\]*\n"   { set x [expr $x+1] }
2092             -re " +\[0-9\]+ 0024 01206D76\[^\n\]*\n"   { set x [expr $x+1] }
2093             -re " +\[0-9\]+ 0028 01106DF4\[^\n\]*\n"   { set x [expr $x+1] }
2094             -re " +\[0-9\]+ 002c 01206DF4\[^\n\]*\n"   { set x [expr $x+1] }
2095
2096             eof                                 { break }
2097         }
2098     }
2099
2100     # This was intended to do any cleanup necessary.  It kinda looks like it
2101     # isn't needed, but just in case, please keep it in for now.
2102     gas_finish
2103
2104     # Did we find what we were looking for?  If not, flunk it.
2105     if [expr $x == 12] then { pass $testname } else { fail $testname }
2106 }
2107
2108 proc do_h8300h_mov32bug {} {
2109     set testname "mov32bug.s: h8300h mov32bug test"
2110     set x 0
2111
2112     if [gas_test_old "mov32bug.s" "" "Proper relocation for mov.l (part 1)"] then {
2113         objdump_start_no_subdir "a.out" "-r"
2114
2115         while 1 {
2116             expect {
2117                 -re "00000002\[^\n\]*32\[^\n\]*_a-0x77359400\[^\n\]*\n"
2118                                                 { set x [expr $x+1] }
2119                 timeout                         { perror "timeout\n; break }
2120                 eof                             { break }
2121             }
2122         }
2123     }
2124
2125     # This was intended to do any cleanup necessary.  It kinda looks like it
2126     # isn't needed, but just in case, please keep it in for now.
2127     objdump_finish
2128
2129     # Did we find what we were looking for?  If not, flunk it.
2130     if [expr $x == 1] then { pass $testname } else { fail $testname }
2131 }
2132
2133 proc do_h8300hn_addressgen {} {
2134     set testname "symaddgen.s: h8300hn symbol address generation"
2135     set x 0
2136
2137     gas_start "symaddgen.s" "-al"
2138
2139     # Check each instruction bit pattern to verify it got
2140     # assembled correctly.
2141     while 1 {
2142         expect {
2143             -re " +\[0-9\]+ .* 01006DF6\[^\n\]*\n"   { set x [expr $x+1] }
2144             -re " +\[0-9\]+ .* 0D76\[^\n\]*\n"       { set x [expr $x+1] }
2145             -re " +\[0-9\]+ .* 790207D0\[^\n\]*\n"   { set x [expr $x+1] }
2146             -re " +\[0-9\]+ .* 6B82F020\[^\n\]*\n"   { set x [expr $x+1] }
2147             -re " +\[0-9\]+ .* 79022710\[^\n\]*\n"   { set x [expr $x+1] }
2148             -re " +\[0-9\]+ .* 6B820000\[^\n\]*\n"   { set x [expr $x+1] }
2149             -re " +\[0-9\]+ .* 01006D76\[^\n\]*\n"   { set x [expr $x+1] }
2150             -re " +\[0-9\]+ .* 5470\[^\n\]*\n"       { set x [expr $x+1] }
2151             
2152             eof                                 { break }
2153         }
2154     }
2155     # This was intended to do any cleanup necessary.  It kinda looks like it
2156     # isn't needed, but just in case, please keep it in for now.
2157     gas_finish
2158     # Did we find what we were looking for?  If not, flunk it.
2159     if [expr $x == 8] then { pass $testname } else { fail $testname }
2160 }
2161
2162 proc do_h8300_addsubrxcheck {} {
2163     set testname "addsubrxcheck.s: h8300 check rx generation for adds subs instructions"
2164     set x 0
2165
2166     gas_start "addsubrxcheck.s" "-al"
2167
2168     # Check each instruction bit pattern to verify it got
2169     # assembled correctly.
2170     while 1 {
2171         expect {
2172             -re " +\[0-9\]+ .* 6DF6\[^\n\]*\n"       { set x [expr $x+1] }
2173             -re " +\[0-9\]+ .* 0D76\[^\n\]*\n"       { set x [expr $x+1] }
2174             -re " +\[0-9\]+ .* 1B87\[^\n\]*\n"       { set x [expr $x+1] }
2175             -re " +\[0-9\]+ .* 6F62FFFE\[^\n\]*\n"   { set x [expr $x+1] }
2176             -re " +\[0-9\]+ .* 1B82\[^\n\]*\n"       { set x [expr $x+1] }
2177             -re " +\[0-9\]+ .* 6FE2FFFE\[^\n\]*\n"   { set x [expr $x+1] }
2178             -re " +\[0-9\]+ .* 1922\[^\n\]*\n"       { set x [expr $x+1] }
2179             -re " +\[0-9\]+ .* 0D20\[^\n\]*\n"       { set x [expr $x+1] }
2180             -re " +\[0-9\]+ .* 0B87\[^\n\]*\n"       { set x [expr $x+1] }
2181             -re " +\[0-9\]+ .* 6D76\[^\n\]*\n"       { set x [expr $x+1] }
2182             -re " +\[0-9\]+ .* 5470\[^\n\]*\n"       { set x [expr $x+1] }
2183
2184             eof                                 { break }
2185         }
2186     }
2187     # This was intended to do any cleanup necessary.  It kinda looks like it
2188     # isn't needed, but just in case, please keep it in for now.
2189     gas_finish
2190     # Did we find what we were looking for?  If not, flunk it.
2191     if [expr $x == 11] then { pass $testname } else { fail $testname }
2192 }
2193
2194 if [istarget h8300*-*-*] then {
2195     # Test the basic h8300 instruction parser
2196     do_h8300_add_sub
2197     do_h8300_logical
2198     do_h8300_bitops1
2199     do_h8300_bitops2
2200     do_h8300_bitops3
2201     do_h8300_bitops4
2202     do_h8300_compare
2203     do_h8300_decimal
2204     do_h8300_incdec
2205     do_h8300_divmul
2206     do_h8300_misc
2207     do_h8300_movb
2208     do_h8300_movw
2209     do_h8300_pushpop
2210     do_h8300_rotate_shift
2211     do_h8300hn_addressgen
2212
2213     do_h8300_addsubrxcheck
2214
2215     # Now test the h8300h instruction parser
2216     do_h8300h_add_sub
2217     do_h8300h_logical
2218     do_h8300h_bitops1
2219     do_h8300h_bitops2
2220     do_h8300h_bitops3
2221     do_h8300h_bitops4
2222     do_h8300h_compare
2223     do_h8300h_decimal
2224     do_h8300h_incdec
2225     do_h8300h_divmul
2226     do_h8300h_misc
2227     do_h8300h_movb
2228     do_h8300h_movw
2229     do_h8300h_movl
2230     do_h8300_pushpop
2231     do_h8300h_rotate_shift
2232     do_h8300h_extend
2233
2234     # Now test the h8300s instruction parser
2235     do_h8300s_add_sub
2236     do_h8300s_logical
2237     do_h8300s_bitops1
2238     do_h8300s_bitops2
2239     do_h8300s_bitops3
2240     do_h8300s_bitops4
2241     do_h8300s_compare
2242     do_h8300s_decimal
2243     do_h8300s_incdec
2244     do_h8300s_divmul
2245     do_h8300s_misc
2246     do_h8300s_movb
2247     do_h8300s_movw
2248     do_h8300s_movl
2249     do_h8300_pushpop
2250     do_h8300s_rotate_shift
2251     do_h8300s_extend
2252     do_h8300s_mac
2253     do_h8300s_multiple
2254
2255     do_h8300h_mov32bug
2256
2257     # Now some random tests
2258     set svr4pic [expr [istarget *-*-elf*] || [istarget *-*-irix5*] ]
2259     set empic [expr [istarget *-*-ecoff*] || [istarget *-*-ultrix*] || [istarget *-*-irix\[1-4\]*] ]
2260     set aout [expr [istarget *-*-bsd*] || [istarget *-*-netbsd*]]
2261
2262     gas_test "cmpsi2.s" "" "" "cmpsi2.s"
2263
2264     run_dump_test "pr3134"
2265 }