1 # Copyright (C) 2012-2016 Free Software Foundation, Inc.
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.
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.
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.
18 # Some H8/300 coff tests
20 proc do_h8300_cbranch {} {
21 set testname "cbranch.s: h8300 conditional branch tests"
24 gas_start "cbranch.s" "-al"
26 # Check each instruction bit pattern to verify it got
27 # assembled correctly.
30 -re " +\[0-9\]+ 0000 4000\[^\n\]*\n" { set x [expr $x+1] }
31 -re " +\[0-9\]+ 0002 4000\[^\n\]*\n" { set x [expr $x+1] }
32 -re " +\[0-9\]+ 0004 4100\[^\n\]*\n" { set x [expr $x+1] }
33 -re " +\[0-9\]+ 0006 4100\[^\n\]*\n" { set x [expr $x+1] }
34 -re " +\[0-9\]+ 0008 4200\[^\n\]*\n" { set x [expr $x+1] }
35 -re " +\[0-9\]+ 000a 4300\[^\n\]*\n" { set x [expr $x+1] }
36 -re " +\[0-9\]+ 000c 4400\[^\n\]*\n" { set x [expr $x+1] }
37 -re " +\[0-9\]+ 000e 4400\[^\n\]*\n" { set x [expr $x+1] }
38 -re " +\[0-9\]+ 0010 4500\[^\n\]*\n" { set x [expr $x+1] }
39 -re " +\[0-9\]+ 0012 4500\[^\n\]*\n" { set x [expr $x+1] }
40 -re " +\[0-9\]+ 0014 4600\[^\n\]*\n" { set x [expr $x+1] }
41 -re " +\[0-9\]+ 0016 4700\[^\n\]*\n" { set x [expr $x+1] }
42 -re " +\[0-9\]+ 0018 4800\[^\n\]*\n" { set x [expr $x+1] }
43 -re " +\[0-9\]+ 001a 4900\[^\n\]*\n" { set x [expr $x+1] }
44 -re " +\[0-9\]+ 001c 4A00\[^\n\]*\n" { set x [expr $x+1] }
45 -re " +\[0-9\]+ 001e 4B00\[^\n\]*\n" { set x [expr $x+1] }
46 -re " +\[0-9\]+ 0020 4C00\[^\n\]*\n" { set x [expr $x+1] }
47 -re " +\[0-9\]+ 0022 4D00\[^\n\]*\n" { set x [expr $x+1] }
48 -re " +\[0-9\]+ 0024 4E00\[^\n\]*\n" { set x [expr $x+1] }
49 -re " +\[0-9\]+ 0026 4F00\[^\n\]*\n" { set x [expr $x+1] }
50 timeout { perror "timeout\n; break }
55 # This was intended to do any cleanup necessary. It kinda looks like it
56 # isn't needed, but just in case, please keep it in for now.
59 # Did we find what we were looking for? If not, flunk it.
60 if [expr $x == 20] then { pass $testname } else { fail $testname }
63 proc do_h8300_branch {} {
64 set testname "branch.s: h8300 branch tests"
67 gas_start "branch-coff.s" "-al"
69 # Check each instruction bit pattern to verify it got
70 # assembled correctly.
73 -re " +\[0-9\]+ 0000 5500\[^\n\]*\n" { set x [expr $x+1] }
74 -re " +\[0-9\]+ 0002 5A000000\[^\n\]*\n" { set x [expr $x+1] }
75 -re " +\[0-9\]+ 0006 5900\[^\n\]*\n" { set x [expr $x+1] }
76 -re " +\[0-9\]+ 0008 5B00\[^\n\]*\n" { set x [expr $x+1] }
77 -re " +\[0-9\]+ 000a 5E000000\[^\n\]*\n" { set x [expr $x+1] }
78 -re " +\[0-9\]+ 000e 5D00\[^\n\]*\n" { set x [expr $x+1] }
79 -re " +\[0-9\]+ 0010 5F00\[^\n\]*\n" { set x [expr $x+1] }
80 timeout { perror "timeout\n; break }
85 # This was intended to do any cleanup necessary. It kinda looks like it
86 # isn't needed, but just in case, please keep it in for now.
89 # Did we find what we were looking for? If not, flunk it.
90 if [expr $x == 7] then { pass $testname } else { fail $testname }
93 proc do_h8300h_cbranch {} {
94 set testname "cbranchh.s: h8300h conditional branch tests"
97 gas_start "cbranchh.s" "-al"
99 # Check each instruction bit pattern to verify it got
100 # assembled correctly.
103 -re " +\[0-9\]+ 0000 4000\[^\n\]*\n" { set x [expr $x+1] }
104 -re " +\[0-9\]+ 0002 4000\[^\n\]*\n" { set x [expr $x+1] }
105 -re " +\[0-9\]+ 0004 4100\[^\n\]*\n" { set x [expr $x+1] }
106 -re " +\[0-9\]+ 0006 4100\[^\n\]*\n" { set x [expr $x+1] }
107 -re " +\[0-9\]+ 0008 4200\[^\n\]*\n" { set x [expr $x+1] }
108 -re " +\[0-9\]+ 000a 4300\[^\n\]*\n" { set x [expr $x+1] }
109 -re " +\[0-9\]+ 000c 4400\[^\n\]*\n" { set x [expr $x+1] }
110 -re " +\[0-9\]+ 000e 4400\[^\n\]*\n" { set x [expr $x+1] }
111 -re " +\[0-9\]+ 0010 4500\[^\n\]*\n" { set x [expr $x+1] }
112 -re " +\[0-9\]+ 0012 4500\[^\n\]*\n" { set x [expr $x+1] }
113 -re " +\[0-9\]+ 0014 4600\[^\n\]*\n" { set x [expr $x+1] }
114 -re " +\[0-9\]+ 0016 4700\[^\n\]*\n" { set x [expr $x+1] }
115 -re " +\[0-9\]+ 0018 4800\[^\n\]*\n" { set x [expr $x+1] }
116 -re " +\[0-9\]+ 001a 4900\[^\n\]*\n" { set x [expr $x+1] }
117 -re " +\[0-9\]+ 001c 4A00\[^\n\]*\n" { set x [expr $x+1] }
118 -re " +\[0-9\]+ 001e 4B00\[^\n\]*\n" { set x [expr $x+1] }
119 -re " +\[0-9\]+ 0020 4C00\[^\n\]*\n" { set x [expr $x+1] }
120 -re " +\[0-9\]+ 0022 4D00\[^\n\]*\n" { set x [expr $x+1] }
121 -re " +\[0-9\]+ 0024 4E00\[^\n\]*\n" { set x [expr $x+1] }
122 -re " +\[0-9\]+ 0026 4F00\[^\n\]*\n" { set x [expr $x+1] }
123 -re " +\[0-9\]+ 0028 58000000\[^\n\]*\n" { set x [expr $x+1] }
124 -re " +\[0-9\]+ 002c 58000000\[^\n\]*\n" { set x [expr $x+1] }
125 -re " +\[0-9\]+ 0030 58100000\[^\n\]*\n" { set x [expr $x+1] }
126 -re " +\[0-9\]+ 0034 58100000\[^\n\]*\n" { set x [expr $x+1] }
127 -re " +\[0-9\]+ 0038 58200000\[^\n\]*\n" { set x [expr $x+1] }
128 -re " +\[0-9\]+ 003c 58300000\[^\n\]*\n" { set x [expr $x+1] }
129 -re " +\[0-9\]+ 0040 58400000\[^\n\]*\n" { set x [expr $x+1] }
130 -re " +\[0-9\]+ 0044 58400000\[^\n\]*\n" { set x [expr $x+1] }
131 -re " +\[0-9\]+ 0048 58500000\[^\n\]*\n" { set x [expr $x+1] }
132 -re " +\[0-9\]+ 004c 58500000\[^\n\]*\n" { set x [expr $x+1] }
133 -re " +\[0-9\]+ 0050 58600000\[^\n\]*\n" { set x [expr $x+1] }
134 -re " +\[0-9\]+ 0054 58700000\[^\n\]*\n" { set x [expr $x+1] }
135 -re " +\[0-9\]+ 0058 58800000\[^\n\]*\n" { set x [expr $x+1] }
136 -re " +\[0-9\]+ 005c 58900000\[^\n\]*\n" { set x [expr $x+1] }
137 -re " +\[0-9\]+ 0060 58A00000\[^\n\]*\n" { set x [expr $x+1] }
138 -re " +\[0-9\]+ 0064 58B00000\[^\n\]*\n" { set x [expr $x+1] }
139 -re " +\[0-9\]+ 0068 58C00000\[^\n\]*\n" { set x [expr $x+1] }
140 -re " +\[0-9\]+ 006c 58D00000\[^\n\]*\n" { set x [expr $x+1] }
141 -re " +\[0-9\]+ 0070 58E00000\[^\n\]*\n" { set x [expr $x+1] }
142 -re " +\[0-9\]+ 0074 58F00000\[^\n\]*\n" { set x [expr $x+1] }
143 timeout { perror "timeout\n; break }
148 # This was intended to do any cleanup necessary. It kinda looks like it
149 # isn't needed, but just in case, please keep it in for now.
152 # Did we find what we were looking for? If not, flunk it.
153 if [expr $x == 40] then { pass $testname } else { fail $testname }
156 proc do_h8300h_branch {} {
157 set testname "branchh.s: h8300h branch tests"
160 gas_start "branchh-coff.s" "-al"
162 # Check each instruction bit pattern to verify it got
163 # assembled correctly.
166 -re " +\[0-9\]+ 0000 5500\[^\n\]*\n" { set x [expr $x+1] }
167 -re " +\[0-9\]+ 0002 5C000000\[^\n\]*\n" { set x [expr $x+1] }
168 -re " +\[0-9\]+ 0006 5A000000\[^\n\]*\n" { set x [expr $x+1] }
169 -re " +\[0-9\]+ 000a 5900\[^\n\]*\n" { set x [expr $x+1] }
170 -re " +\[0-9\]+ 000c 5B00\[^\n\]*\n" { set x [expr $x+1] }
171 -re " +\[0-9\]+ 000e 5E000000\[^\n\]*\n" { set x [expr $x+1] }
172 -re " +\[0-9\]+ 0012 5D00\[^\n\]*\n" { set x [expr $x+1] }
173 -re " +\[0-9\]+ 0014 5F00\[^\n\]*\n" { set x [expr $x+1] }
174 timeout { perror "timeout\n; break }
179 # This was intended to do any cleanup necessary. It kinda looks like it
180 # isn't needed, but just in case, please keep it in for now.
183 # Did we find what we were looking for? If not, flunk it.
184 if [expr $x == 8] then { pass $testname } else { fail $testname }
187 proc do_h8300s_cbranch {} {
188 set testname "cbranchs.s: h8300s conditional branch tests"
191 gas_start "cbranchs.s" "-al"
193 # Check each instruction bit pattern to verify it got
194 # assembled correctly.
197 -re " +\[0-9\]+ 0000 4000\[^\n\]*\n" { set x [expr $x+1] }
198 -re " +\[0-9\]+ 0002 4000\[^\n\]*\n" { set x [expr $x+1] }
199 -re " +\[0-9\]+ 0004 4100\[^\n\]*\n" { set x [expr $x+1] }
200 -re " +\[0-9\]+ 0006 4100\[^\n\]*\n" { set x [expr $x+1] }
201 -re " +\[0-9\]+ 0008 4200\[^\n\]*\n" { set x [expr $x+1] }
202 -re " +\[0-9\]+ 000a 4300\[^\n\]*\n" { set x [expr $x+1] }
203 -re " +\[0-9\]+ 000c 4400\[^\n\]*\n" { set x [expr $x+1] }
204 -re " +\[0-9\]+ 000e 4400\[^\n\]*\n" { set x [expr $x+1] }
205 -re " +\[0-9\]+ 0010 4500\[^\n\]*\n" { set x [expr $x+1] }
206 -re " +\[0-9\]+ 0012 4500\[^\n\]*\n" { set x [expr $x+1] }
207 -re " +\[0-9\]+ 0014 4600\[^\n\]*\n" { set x [expr $x+1] }
208 -re " +\[0-9\]+ 0016 4700\[^\n\]*\n" { set x [expr $x+1] }
209 -re " +\[0-9\]+ 0018 4800\[^\n\]*\n" { set x [expr $x+1] }
210 -re " +\[0-9\]+ 001a 4900\[^\n\]*\n" { set x [expr $x+1] }
211 -re " +\[0-9\]+ 001c 4A00\[^\n\]*\n" { set x [expr $x+1] }
212 -re " +\[0-9\]+ 001e 4B00\[^\n\]*\n" { set x [expr $x+1] }
213 -re " +\[0-9\]+ 0020 4C00\[^\n\]*\n" { set x [expr $x+1] }
214 -re " +\[0-9\]+ 0022 4D00\[^\n\]*\n" { set x [expr $x+1] }
215 -re " +\[0-9\]+ 0024 4E00\[^\n\]*\n" { set x [expr $x+1] }
216 -re " +\[0-9\]+ 0026 4F00\[^\n\]*\n" { set x [expr $x+1] }
217 -re " +\[0-9\]+ 0028 58000000\[^\n\]*\n" { set x [expr $x+1] }
218 -re " +\[0-9\]+ 002c 58000000\[^\n\]*\n" { set x [expr $x+1] }
219 -re " +\[0-9\]+ 0030 58100000\[^\n\]*\n" { set x [expr $x+1] }
220 -re " +\[0-9\]+ 0034 58100000\[^\n\]*\n" { set x [expr $x+1] }
221 -re " +\[0-9\]+ 0038 58200000\[^\n\]*\n" { set x [expr $x+1] }
222 -re " +\[0-9\]+ 003c 58300000\[^\n\]*\n" { set x [expr $x+1] }
223 -re " +\[0-9\]+ 0040 58400000\[^\n\]*\n" { set x [expr $x+1] }
224 -re " +\[0-9\]+ 0044 58400000\[^\n\]*\n" { set x [expr $x+1] }
225 -re " +\[0-9\]+ 0048 58500000\[^\n\]*\n" { set x [expr $x+1] }
226 -re " +\[0-9\]+ 004c 58500000\[^\n\]*\n" { set x [expr $x+1] }
227 -re " +\[0-9\]+ 0050 58600000\[^\n\]*\n" { set x [expr $x+1] }
228 -re " +\[0-9\]+ 0054 58700000\[^\n\]*\n" { set x [expr $x+1] }
229 -re " +\[0-9\]+ 0058 58800000\[^\n\]*\n" { set x [expr $x+1] }
230 -re " +\[0-9\]+ 005c 58900000\[^\n\]*\n" { set x [expr $x+1] }
231 -re " +\[0-9\]+ 0060 58A00000\[^\n\]*\n" { set x [expr $x+1] }
232 -re " +\[0-9\]+ 0064 58B00000\[^\n\]*\n" { set x [expr $x+1] }
233 -re " +\[0-9\]+ 0068 58C00000\[^\n\]*\n" { set x [expr $x+1] }
234 -re " +\[0-9\]+ 006c 58D00000\[^\n\]*\n" { set x [expr $x+1] }
235 -re " +\[0-9\]+ 0070 58E00000\[^\n\]*\n" { set x [expr $x+1] }
236 -re " +\[0-9\]+ 0074 58F00000\[^\n\]*\n" { set x [expr $x+1] }
237 timeout { perror "timeout\n; break }
242 # This was intended to do any cleanup necessary. It kinda looks like it
243 # isn't needed, but just in case, please keep it in for now.
246 # Did we find what we were looking for? If not, flunk it.
247 if [expr $x == 40] then { pass $testname } else { fail $testname }
250 proc do_h8300s_branch {} {
251 set testname "branchs.s: h8300s branch tests"
254 gas_start "branchs-coff.s" "-al"
256 # Check each instruction bit pattern to verify it got
257 # assembled correctly.
260 -re " +\[0-9\]+ 0000 5500\[^\n\]*\n" { set x [expr $x+1] }
261 -re " +\[0-9\]+ 0002 5C000000\[^\n\]*\n" { set x [expr $x+1] }
262 -re " +\[0-9\]+ 0006 5A000000\[^\n\]*\n" { set x [expr $x+1] }
263 -re " +\[0-9\]+ 000a 5900\[^\n\]*\n" { set x [expr $x+1] }
264 -re " +\[0-9\]+ 000c 5B00\[^\n\]*\n" { set x [expr $x+1] }
265 -re " +\[0-9\]+ 000e 5E000000\[^\n\]*\n" { set x [expr $x+1] }
266 -re " +\[0-9\]+ 0012 5D00\[^\n\]*\n" { set x [expr $x+1] }
267 -re " +\[0-9\]+ 0014 5F00\[^\n\]*\n" { set x [expr $x+1] }
268 timeout { perror "timeout\n; break }
273 # This was intended to do any cleanup necessary. It kinda looks like it
274 # isn't needed, but just in case, please keep it in for now.
277 # Did we find what we were looking for? If not, flunk it.
278 if [expr $x == 8] then { pass $testname } else { fail $testname }
281 if { [istarget h8300*-*-coff]
282 || [istarget h8300*-*-hms*]
283 || [istarget h8300*-*-rtemscoff*] } then {
285 # Test the basic h8300 instruction parser
289 # Now test the h8300h instruction parser
293 # Now test the h8300s instruction parser
297 # Now some random tests
298 run_dump_test "ffxx1-coff"